简易数字电压表教案文档格式.docx
《简易数字电压表教案文档格式.docx》由会员分享,可在线阅读,更多相关《简易数字电压表教案文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
掌握A/D转换的三个子程序编写原则即,初始化子程序、数据读取子程序及数据处理子程序,会根据项目要求的精确值把数据合理地显示;
会根据项目要求的电路板大小及安装环境设计控制电路板的大小、形状;
能对电子产品设计过程中的相关软件工具熟练使用。
项目完成后,学生完成作品仿真文件、硬件作品、项目设计任务单、项目总结设计文档。
教学重点与难点
本项目教学重点内容有:
1、项目电路原理图的详细设计(要针对单片机的资源分配)
2、单片机的A/D转换相关寄存器位的意义
3、A/D转换程序框架结构的组成
本项目教学难点内容有:
1、A/D与普通I/O口的功能转换
2、A/D转换的基准电压含义
3、A/D初始化的子程序
4、A/D转换数据的读取
5、Float型变量含义
6、数据类型的强制转换
7、10位二进制转换数据在处理成习惯的十进制数据
8、数据拆分方法
教学方法与手段
1、行动导向、任务驱动教学为主
2、任课老师可根据个人授课特点开展讨论法等其他方法教学
3、小组学习、培养团队合作意识
简易数字电压表设计与制作教案
第一节课(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程序下载接口
结论:
液晶1602只能有PB、PD口来驱动(完成下表)
1602对应管脚
/RS
R/W
E
D0---D7
MEGA16I/O资源
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初始化程序编程:
A/D初始化程序名称()
{
关闭A/D的转换功能;
选择基准电压源与模拟量输入通道;
启动A/D转换功能与A/D的时钟分频系数;
}
学生动手:
学生按照ADMUX与ADCSRA寄存器的描述,练习编写初始化程序(10分钟)
参考程序:
2、单次转换与一次转换结束等的处理(5分钟)
老师讲解:
示范用“或”逻辑功能编写启动一次A/D转换的语句,ADCSRA|=(1〈〈ADSC〉;
提示学生还有没有其他的语句能实现这样的功能。
比如:
#defineA/D_startADCSRA|=(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=(unsignedint)ADCL;
AD_value|=((unsignedint)(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分钟)
三、本节课总结(5分钟)
1、只调试A/D部分
2、断点调试察看变量值
3、系统的概念,可以考虑加入显示程序