当前位置:文档之家› 简易数字电压表教案

简易数字电压表教案

简易数字电压表设计与制作教案
第一节课(45分钟)
一、新课导入(2分钟)
主要讲述内容,模拟量转换成数字量的意义:数字量是计算机能处理的量,但是自然界的许多物理量都是模拟量,把模拟量转换成数字量是现在信息技术能广泛应用的基础。

二、本项目作品演示(10分钟)
1、告诉同学们,本项目作品的功能:0---5V的直流电压测量范围;精确到小数点后两位;液晶显示。

2、简要叙述电子产品控制电路的设计步骤:方案设计、原理图设计、驱动程序设计、电路仿真、PCB图设计、硬件装配与调试、性能确定与设计文档总结
三、方案设计(5分钟)
四、电路原理图详细设计(20分钟)
1、MEGA16的关于A/D转换部分的管脚认识(5分钟)
2、让学生动手对MEGA16的I/O口进行分配(10分钟)
PA口:已经作为模拟数字转换不能用作普通I/O口PC口:用作JTAGE程序下载接口
3、原理图设计分析(5分钟)
五、本节课总结(8分钟)
1、A/D管脚
2、显示电路管脚分配(后面的驱动程序要用到)
3、重点同学遇到问题分析
简易数字电压表设计与制作教案
第二节课(45分钟)
驱动程序设计
一、运用以前学过的知识在液晶1602指定位置显示特定的字符(10分钟)
学生可以在一行、两行的指定位置对上述的数据字符显示。

教师可自己演示一下
重要提示:小数点前空一位,小数点后面空两位。

有的同学不能达到要求的,课后在继续练习。

二、A/D转换程序设计(30分钟)
1、概述(5分钟)
2、 A/D 模块特点简要概述,重点在基准电压、10位数据、通道选择、第二功能启用 单次启动转换、转换结束标志、A/D 工作时钟等。

(5分钟)
3、ADMUX (10分钟)
4、学生练习(5分钟)
练习题1:基准电压选择5V ,数据右对齐、从通道0输入模拟电压量 练习题2:基准电压选择5V ,数据左对齐、从通道1输入模拟电压量 练习题3:基准电压选择2.56V ,数据右对齐、从通道2输入模拟电压量 练习题4:基准电压选择5V ,数据右对齐、从通道3输入模拟电压量 练习题5:基准电压选择2.56V ,数据右对齐、从通道4输入模拟电压量
重点提示:学生一定要在原显示子程序的基础上,新建一个A/D 初始化子程序名字,在这个初始化子程序中,写入上述的对应程序语句。

三、本次课总结(5分钟)
1、由总体设计-------------------具体设计
2、三个子程序
3、ADMUX 寄存器
简易数字电压表设计与制作教案
第三节课(45分钟)
驱动程序设计
一、ADCSRA 寄存器
1、第二功能与普通I/O 口之间的切换使用、A/D 转换的时钟(5分钟)
普通I/O 口与第二功能口的切换(重点提示)
A/D 转换的时间65-260us ,所以A/D 的时钟需要控制一下。

注意:在A/D 初始化程序中,首先要关闭A/D 转换的功能,然后才能对寄存器进行设置
老师:完成汉语编程,完整的A/D 初始化程序编程:(5分钟)
A/D 初始化程序名称() {
关闭A/D 的转换功能;
选择基准电压源与模拟量输入通道;
启动A/D 转换功能与A/D 的时钟分频系数; }
学生动手:学生按照ADMUX 与ADCSRA 寄存器的描述,练习编写初始化程序(10分钟)
参考程序:
2、单次转换与一次转换结束等的处理(5分钟)
老师讲解:示范用“或”逻辑功能编写启动一次A/D 转换的语句,ADCSRA|=(1〈〈ADSC 〉; 提示学生还有没有其他的语句能实现这样的功能。

比如:#define A/D_start ADCSRA|=(1〈〈ADSC 〉;就可以用前面的语句代替了,这给大型程序维护修改带来了方便。

3、如何等待与判断一次A/D 转换结束(15分钟)
难点内容:学生最不好理解的程序语句之一 while (!(ADCSRA&(1<<ADIF)));
老师要对过程演算一边。

二、本次课总结(5分钟)
1、ADCSRA 寄存器的位功能
2、两句C 语句的重点理解
3、这是读取A/D 转换数据的子程序中的重要语句
简易数字电压表设计与制作教案
第四节课(45分钟)
驱动程序设计
一、A/D转换数据寄存器(10分钟)
老师:10位的二进制数怎么装入16位的存储器中呢?
ADCH与ADCL两个8位的寄存器是A/D转换的结果保存容器。

二、怎么读取呢(10分钟)
重点内容:读取原则,先读取低8位,然后再读取高2位数据
难点内容:数据类型强制转换
AD_value=(unsigned int)ADCL;
AD_value|=((unsigned int)(ADCH&0x03))<<8;
老师:详细解释
ADCL是8位寄存器,AD_value是事先定义的16位数据寄存器所以必须对数据类型进行转换。

难点:把10位数据合并装入16位变量中,
三、数据读取子程序编程练习(20分钟)
数据读取子程序名()(学生练习编程)
{
定义一个16位整型变量,准备存储转换值
启动一次A/D转换
等待这次A/D转换结束
读取低8位
读取高2位
合并成10位
返回A/D值
}
老师演示:单步操作,让学生能看到AD_value的值
参考:
四、本次课总结(5分钟)
1、强制数据类型转换
2、完整的数据读取子程序
3、单步断点调试,察看变量值
简易数字电压表设计与制作教案
第五节课(45分钟)
驱动程序设计
一、A/D转换数据的处理(重点与难点内容)
1、学生要明白0—5V的模拟电压量与转换成的10位二进制数之间的关系(15分钟)
转换的关系为:MEGA16的10位A/D转换模块把基准电压分成平均1024份,每一份的数值是5/1024=0.0048828125V,转换的结果是模拟输入的电压量是0.0048828125的多少份,这个多少份就是转换成的数字量。

2、为什么要对数字量进行处理(5分钟)
这是因为,我们最熟悉的还是十进制的数值,数字量的处理就是把人们不熟悉的二进制数字量再转换成人们数字的十进制数值最终用液晶1602直观显示出来。

3、数字量的处理过程(20分钟)
数字量处理的最终结果,是按照项目提出的要求精确到小数点后两位,这样,我们就知道要显示的数值是除小数点外,我们要把3个十进制数字找出来送到1602的指定位置上显示。

难点内容:float型变量,32位二进制数值,能表示小数点后7位。

为什么要用到float型变量?
这是因为:0—1023之间的二进制数字量乘0.0048828125的时候,结果肯动会带小数点。

根据实际的要求我们要舍弃小数点后面的一些数据。

只保留小数点后2位就可以了。

数据处理子程序名称()
{
定义一个float型变量;为什么?学生思考
定义一个int 型变量;为什么?学生思考
定义一个包含3个变量的字符数组;为什么?学生思考
把转换的二进制量乘0.0048828125后赋给float型变量;数据含义是什么?
把float乘100后型变量赋给int型变量;要强制数据类型转换,舍弃小数点后两位以后的数
据,为什么?
把“百位数据”、“十位数据”、“个位数据”分拆后送到3个字符数组中存储;注意要变换成
ASCII码,为什么?
}
参考:
二、本节课总结(5分钟)
1、模拟量与转换的数字量之间的关系
2、二进制数与人们习惯的十进制转换
3、数据的处理过程
4、数据拆分
简易数字电压表设计与制作教案
第六节课(45分钟)
驱动程序设计
一、程序合成(加上库文件)(30分钟)
二、在PROTEUS中断点调试(10分钟)
2.65V
三、本节课总结(5分钟)
1、只调试A/D部分
2、断点调试察看变量值
3、系统的概念,可以考虑加入显示程序。

相关主题