资源简介 中小学教育资源及组卷应用平台项目二 按键计数器一、教学目标1.了解键盘检测的电路结构和原理、键盘作用、如何实现键盘检测、消抖、键盘编码等内容。2.掌握独立按键控制、消抖动等基本原理与程序设计方法。3.了解4×4按键矩阵构成及按键扫描程序。4.认识各种数码管,包括数码管的种类、显示原理、段码。5.掌握多位数码管静态显示数字或字母的程序设计。二、课时分配本项目共4个任务,安排8课时。三、教学重点通过本项目的学习,让学生学习按键输入检测、单只数码管显示、多位数码管显示、按键计数器制作与调试等概念;本项目的学习和实践,我们掌握按键检测、消抖的程序设计方法;数码管结构类型、段码、静态与动态显示程序设计方法。四、教学难点1.掌握单只数码管静态显示数字或字母的程序设计。2.掌握多位数码管静态显示数字或字母的程序设计。3.了解多位数码管动态扫描显示原理,能读懂动态扫描显示程序。五、教学内容任务一 按键输入检测知识准备在很多项目中都会用到按键,如图所示的电子秤。一、 键盘的分类键盘分编码键盘和非编码键盘两种。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。而靠软件编程来识别的称为非编码键盘,在单片机组成的各种系统中,用得最多的是非编码键盘。非编码键盘分为行列式(又称为矩阵式)键盘和独立按键。本次任务,我们选择的是独立按键。二、 独立按键连接图独立按键连接电路有两种,一种是按键的公共端接地,当按键按下时,单片机的控制引脚输入低电平“0”,如图所示。另一种是按键的公共端接电源,这样当按键按下时,单片机的控制引脚接高电平“1”,如图所示。三、 按键抖动通常的按键所用开关多为机械弹性开关,当机械触点断开、闭合时,电压信号波形如图所示。四、 按键程序编写由于按键按下后,会出现抖动,单片机应该避开这段时间,待键盘稳定后,再对键盘的信息进行识别。任务实施一、 绘制原理图在PROTEUS软件中绘制的原理图,如图所示。二、 编写源程序三、 程序分析① 按键识别的步骤: 先判断按键是否按下,如果没按,直接退出。如果按下,此时还不能确定是否为有效按下,有可能是抖动,此时应去抖动,调用延时函数。② 本程序将灯亮还是灭分成两个状态。在亮的时候,如果按键按下,灯灭。在灭的时候,如果按键按下,灯亮。这里的led_flag就是作灯状态的一个标记。四、 编译与仿真将上述源程序在KEIL C中编译并生成HEX文件,在PROTEUS中作原理图仿真。知识拓展试编写程序: 按键按下灯亮,松开灯灭。目标检测任务二 单只数码管显示知识准备数码管作为一种应用十分普遍的显示器件可以在各种各样的设备上见到,图就是电子钟显示的效果图。一、 数码管数码管也叫LED数码显示器,其实是由多个LED排列封装而成,图给出了一些常见数码管的实物图,其引脚如图所示。二、 LED七段数码管结构原理LED七段数码管通常由8个LED发光二极管组成,其中7个发光LED二极管构成7笔字形,一个构成小数点,通称七段LED数码管。三、 LED七段数码管显示字符和字母的方法如果我们要显示“6”,并不是给数码管写个“6”就行了,而是点亮这个数码管的相应的一些LED发光二极管,即点亮a,c,d,e,f,g段,其余段灭。任务实施一、 绘制原理图在PROTEUS中画好的原理图,如图所示。本图中我们省去单片机的复位电路和晶振电路。但是在制作电路板的时候,还是要加进去,不能省去。二、 编写源程序共阳数码管显示09数码管的输入端接在P0端口上三、 程序分析① port_0=table[count]: 当count=0时,port_0=table[0],相当于把“0”的段码通过单片机的P0端口送到数码管上,数码管显示“0”。② delay_time()是个延时函数: 控制前后两次显示的切换的快慢。③ 在任务一和任务二中,我们都调用到了一个delay_time()的延时函数,程序中,delay_time()函数的定义如果出现在main()函数前,就不需要对delay_time()做说明而直接使用。四、 编译与仿真将上述源程序在KEIL C中编译并生成HEX文件,在PROTEUS中作原理图仿真。PROTEUS对单片机的仿真结果见图。知识拓展① 推导共阴和共阳数码管显示“H”的时候的段码。② 通过修改延时函数,观察数码管显示。③ 本次任务选择的是共阳数码管,如选择共阴数码管,如何编写程序?目标检测任务三 多位数码管显示知识准备由于很多项目中都会用到多位数码管,多位数码管的显示一般有两种方法: 静态显示和动态显示。一、 静态显示所谓静态显示,是指当显示器显示某个字符时,相应位的发光二极管处于恒定的导通或截止状态,直到需要显示另一个字符为止。二、 动态显示原理LED数码管显示的基本原理是利用人眼的“视觉暂留”效应和发光二极管的余晖现象来工作的。接口电路把所有数码管的8个笔画段a~dp的各同名端相互连接在一起,并把它们接到输出口上,每个数码管的公共端COM各自独立地受控制。三、 数码管静态显示驱动电路将单片机的管脚直接和数码管相连,当然中间需要增加限流电阻,如图所示。对于共阳数码管,公共端需要接上高电平,要想显示什么字符,只需单片机输出该字符的显示段码就可以了。四、 数码管动态显示驱动电路单片机的管脚和动态数码管相连,中间加上限流电阻,这个和静态显示电路一样。任务实施一、 静态显示00~59s循环计时1. 绘制原理图在PROTEUS软件中绘制的原理图2. 编写源程序3. 程序分析(1) 程序运行的时候,数码管要求显示00,接着1s到后,数码管显示01。所以初始化需要加上这几句 second=0; port_2=table[second%10]; port_0=table[second/10]。(2) 当second=29的时候,second%10=9,那么table[second%10]=table[9],而table[9]=0X90,正好对应了9的段码,通过执行port_2=table[second%10]语句,数码管个位显示9。4. 编译与仿真将上述源程序在KEIL C中编译并生成HEX文件,在PROTEUS中作原理图仿真。正确的编译结果如图所示。PROTEUS对单片机的仿真结果二、 动态显示电路图1. 绘制原理图在PROTEUS软件中绘制的原理图,如图所示。2. 编写源程序3. 编译与仿真知识拓展试修改程序并仿真,看能否动态显示59到00倒计数。目标检测任务四 按键计数器制作与调试知识准备本次任务是在前面几个任务的基础上,制作一个按键计数器电路,并能够根据控制要求编写单片机程序。具体的功能要求为: 系统刚上电时,数码管显示“00”,每次按动加法键,数码管显示数据增加1,每次按动减法按钮,显示数据减1,通过按键设置,让数码管显示范围在“00~20”之间变化。一、 绘制原理图在Proteus软件中绘制的原理图,如图所示。二、 编写源程序三、 编译与仿真将上述源程序在KEIL C中编译并生成HEX文件,在PROTEUS中作原理图仿真。PROTEUS对单片机的仿真结果四、 实物展示知识拓展尝试修改程序,等按键松开后,让显示的数值发生改变。目标检测六、课后习题完成每个任务的目标检测。21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)21世纪教育网(www.21cnjy.com) 展开更多...... 收起↑ 资源预览