单片机应用技术(C语言 第二版)课件:简易数字钟_第1页
单片机应用技术(C语言 第二版)课件:简易数字钟_第2页
单片机应用技术(C语言 第二版)课件:简易数字钟_第3页
单片机应用技术(C语言 第二版)课件:简易数字钟_第4页
单片机应用技术(C语言 第二版)课件:简易数字钟_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务一LED数码管的静态显示任务二LED数码管的动态显示任务三简易数字钟用数码管显示数据时,显示的数字字符根据实际应用场合可能是一位,也可能是多位。需要根据显示参数内容和系统成本来选择数码管,并确定单片机控制数码管显示的驱动电路。任务提出任务一LED数码管的静态显示在实际中,若仅显示少量数字字符,常对数码管采用静态显示驱动电路;若需要多只数码管显示,则可采用动态显示方式。当然,在需要高亮度显示字符的电路中,多只数码管也会采用扩展硬件电路驱动数码管的静态显示方式。本任务的内容是使用单片机控制两只数码管显示两位数码。显示的内容为00~99,每秒钟显示内容的值加1,超过99后回到00。根据任务目标,数码显示系统只需要单片机最小系统、数码管及数码显示驱动电路,故整个系统的框图如图所示。任务分析数码显示系统框图选用静态显示方式驱动数码管时,数码管要显示的内容(数据)应用锁存器锁存,并保持数据输入到显示驱动电路,驱动数码管显示。单片机更新显示内容后,新的数据送出,更新显示。本任务的程序流程图如图所示。数码显示系统流程图一、LED数码管的工作原理1.LED数码管的结构LED数码管是由发光二极管组合排列而成的数码显示器件,按显示段数常分为8字形和米字形,如图所示。单只7段数码管的封装如图所示,数码管的每段LED分别引出一个引脚,引出电极分别为a、b、c、d、e、f、g、h,其中h是小数点段的引出电极,并将每一个LED的另一个引出电极连接在一起,称为公共端com的引出电极,如图所示。相关知识数码管实物图LED数码管的结构a)数码管封装示意图

b)共阴极结构

c)共阳极结构2.7段数码管的段码LED数码管分为共阴极和共阳极两种不同的形式,将LED的阴极连在一起即为共阴极数码管,而将LED的阳极连在一起即为共阳极数码管。如上图所示为共阴极7段数码管的等效原理电路,如上图所示为共阳极7段数码管的等效原理电路。根据LED的工作原理,在共阴极数码管中,点亮任何一段都需要在数码管的公共端接低电平,同时在对应段的引脚上接高电平,否则都将使该段不会被点亮。在程序中将高电平用1表示,低电平用0表示,把显示各种字符的电平所对应的数据称为数码管的段码。按段a为最低位依次排列的7段数码管的常用编码见表。在表中,共阴极、共阳极数码管分别用二进制和十六进制表示段码。7段数码管常用编码表7段数码管常用编码表7段数码管常用编码表二、静态显示原理所谓静态显示,是各只数码管的各段均有独立的锁存驱动电路,数码管的公共端接固定电平,所有数码管一直维持点亮。单片机驱动数码管静态显示一般有两种方式:一种是利用单片机输出端口具有的数据锁存功能驱动数码管,这种方式的特点是每一只数码管都要单独占用单片机的一个I/O端口,该端口一直静态地保持该数据输出,维持数码管的字符显示,直到端口数据改变,I/O端口又保持显示下一数据。另一种方式是在单片机的端口外接具有数据锁存功能的芯片,由单片机将显示段码传送给数据锁存器,由数据锁存器维持数码管显示所需的段码,仅当单片机提供给锁存器的段码发生改变后,显示字符才发生变化。由于能够提供具有锁存功能的器件很多,因此对应有多种静态显示电路方案。1.单片机端口驱动的静态显示数码管的内部是多只LED按指定的形状组合起来的组合器件,就电路原理而言,和多只独立的LED是完全相同的。单片机端口是一个内部特殊寄存器,具有数据锁存功能,在程序中将输出数据写到端口就可改变端口数据(对应位引脚电平随之改变),并且端口各位电平也会一直维持到下一次程序改变端口输出数据为止。单片机引脚还具有一定的电流驱动能力,在数码管所需要的电流较小时,可以用单片机端口直接驱动数码管。将单片机端口的8个引脚直接连接在数码管的8个引脚上(h端为小数点),控制数码管的各段LED点亮或熄灭,即可显示出各种数码或字符。图a所示为单片机端口驱动一只共阳极数码管的原理电路,与图b所示的电路的工作原理是完全一致的,因而其驱动程序也是相同的。数码管的静态显示电路a)电路原理图

b)等效原理图数码管的静态显示电路a)电路原理图

b)等效原理图单片机端口的每一位与数码管的一个引脚相连接,相当于单片机的一个引脚外接一只发光二极管,数字显示就如同用发光二极管组成的图案。因此,完全可以采用任务四的端口循环控制2程序来完成数字的显示,将程序中的显示彩灯的数组更换为LED数码管显示数字所需要的字型码数据,当程序将这些数据送到端口时,数码管就显示出对应的数字。2.锁存器驱动的静态显示电路锁存器的输出仅在锁存时与输入信号有关,其余时间与输入信号无关,这时的单片机端口可作为其他用途,即单片机的端口可以复用。锁存器有多位同时锁存的并行锁存器,也有串行的移位锁存器。8D锁存器74HC573可作为显示锁存和电流驱动器件。采用74HC573锁存段码的4位静态显示电路如图所示。锁存器74573驱动的静态显示电路原理图上图中,每片74HC573的8个Q端对应连接一只数码管的各段,所有74HC573输入端D端共用单片机P0端口,而各片的锁存使能控制端LE受单片机P2端口的各位分别控制,以实现各片74HC573独立锁存各个数码的段码。从74HC573各Q端将锁存数据(字型码)输出送入数码管,使数码管保持显示数字。3.译码器驱动的静态显示电路除了单片机端口直接输出数码管的段码外,还可以采用7段译码器将BCD码转换为数码管的7段码。采用译码器7448驱动的静态显示电路如图所示。7448是共阴极数码管的7段显示译码器,与之连接的数码管应为共阴极数码管。在图中,将单片机端口P2高、低四位提供的BCD码分别接U2和U3的输入端,7448的输出端接数码管,驱动数码管显示数字。7448译码的静态显示电路原理图一、硬件设计按任务目标,需要显示两位数码,即需要两只数码管同时显示不同内容。在本任务中,选择单片机的两个端口直接驱动两只数码管的16个段,因单片机的每个引脚的输出信号都是独立的电平,所以能够保证两只数码管的每一段都能分别控制,即可以显示任意的两位数码。任务实施这里选择P0口直接驱动一只数码管,作为显示数码的十位,P2口直接驱动另一只数码管,作为显示数码的个位。任务中的硬件电路如图所示,这是典型的单片机端口直接驱动数码管的静态显示电路,其中数码管为共阳极型,其公共端通过限流电阻接电源正极。单片机端口直接驱动共阳极数码管的静态显示电路原理图二、软件设计在图中,单片机P0和P2口分别连接一只数码管。由于只有两位数码管,在程序中,设置全局变量num,其值的允许范围为0~99,对应显示的数码,其类型可以使用字符型。静态显示流程图三、Proteus仿真1.打开ProteusISIS软件,按照硬件原理图绘制Proteus仿真电路,仔细检查,保证电路连接无误。2.在Keil软件开发环境下,创建项目,编辑源程序,将编译生成的HEX文件装载到Proteus虚拟仿真硬件电路中的AT89C51芯片。3.运行仿真,仔细观察运行结果,如果有不符合设计要求的情况,调整源程序并重复步骤1、2,直至完全符合本项目提出的各项设计要求。单片机端口直接驱动的静态显示仿真效果图在实际的电子系统中,往往需要同时显示多位数码。一般来说,对多位数码的显示,均采用动态显示。本任务的内容是使用单片机控制数码管一直显示8位数码:12345678。任务提出任务二

LED数码管的动态显示根据任务目标,整个系统的硬件需要在单片机最小系统的基础之上,增加数码管的驱动电路,并连接数码管。如果采用静态显示电路,采用单片机的端口直接驱动明显是不行的;用硬件扩展实现静态显示的硬件成本比较高。因此,在本任务中采用动态显示驱动电路。当然,动态显示电路的构成有很多,本任务中采用由晶体管驱动8位共阴极数码管实现任务中的硬件电路。任务分析在动态显示电路中,所有数码管的各段分别连接在一起,每只数码管显示的内容不相同,对每一只数码管而言,只有采用分时显示。即首先为第一只数码管提供段码和位码,当第一只数码管显示一段时间后,再为第二只数码管提供段码和位码,第二只数码管显示一段时间后,再为第三只数码管提供段码和位码……直到最后一只数码管显示一段时间,再重复显示第一只、第二只到最后一只数码管,这样周而复始显示。当重复频率超过50Hz时,人眼看到的所有数码管就相当于同时显示。因而,动态显示电路的软件系统流程如图所示。动态显示系统流程图a)主函数流程图

b)显示函数流程图一、动态显示原理所谓动态显示,是利用人眼的视觉暂留现象,快速地轮流显示单个数码的显示方式。具体来说,是将各数码管的相同段的输入端连接在一起,使用同一锁存电路驱动,为数码管提供需要显示数字的段码,而通过控制数码管的公共端使数字在不同的数码管上显示。连续地在段码端输入要显示的数字段码,位码使公共端轮流接通,所有数码管依次循环点亮,只要显示的速度足够快,人眼就能看到稳定的显示字符,从而实现动态的字符显示。相关知识图是4位数码管动态显示连接示意图,4位数码管的a~h分别连接在一起作为数码管的段码输入线,将每只数码管的公共端作为数码管的位码输入线。段码控制数码管显示字形,位码控制4只数码管中的哪一只数码管显示该内容。单片机数码管动态显示a)4位数码管动态显示连接示意图

b)动态显示控制电路示意图单片机数码管动态显示a)4位数码管动态显示连接示意图

b)动态显示控制电路示意图4位共阴极数码管动态显示“1357”的过程二、常见动态显示电路1.三极管反相+端口直接驱动的动态显示电路数码管的段电流较小时,可以直接使用单片机端口驱动。而数码管公共端的电流较大,可以采用三极管驱动。具体来说,将单片机输出的高低电平通过限流电阻后接三极管基极,控制三极管工作在饱和状态和截止状态,饱和导通时数码管点亮,截止状态数码管熄灭。采用三极管驱动的动态扫描电路如图所示。当然,采用集成反相器的电路原理与三极管类似,利用其输出电流较大的方式驱动数码管的公共端。采用三极管驱动的动态扫描电路原理图电路中用的是4位共阳极数码管,其内部已将4只数码管各阴极分别连接到外部引脚A~G、DP(DP就是小数点的外部引脚)上,将字形码送到这些引脚将控制数码管显示相应的数字或字符;4只数码管的公共端分别接到外部引脚上,公共端流过电流将使对应的数码管点亮。2.锁存器驱动的动态显示电路在数码管的动态显示电路中,需要段码和位码的锁存驱动,可以直接使用8D锁存器74573或移位寄存器74164等电路锁存数据驱动。采用74573驱动的动态扫描电路如图所示。图中,两片74573的输入端都连接到单片机的同一个端口P0,其中一片74573为各只数码管锁存字型码数据,即实现段码控制,另一片74573的输出端连接到各只数码管的公共端(共阴极或共阳极端),以选通各数码管,即实现位码控制。图所示电路结构的特点是点亮数码管所需段码和位码由单片机的一个端口输出,采用分时输出段码和位码,占用端口少。采用锁存器的动态扫描电路原理图一、硬件设计显示多位数码需要多只数码管,采用静态显示的成本太高,一般情况下都采用动态显示电路。动态显示是将多只数码管的段连接在一起作为统一的段,控制数码管显示的字形;把各只数码管的公共端分别作为控制端,控制哪些数码管上显示内容。本任务中需要显示8位数码,这里以共阴极型数码管为显示器件,采用动态显示电路。任务实施一般来说,单片机的端口不能提供足够的电流驱动数码管显示。在本任务中,数码管的段电流采用总线驱动集成电路74LS245实现驱动。共阴极数码管的公共端需要较大的流出电流,任务中选择3-8译码器74LS138实现位译码,因TTL电路允许的灌电流很大,因此可以直接用74LS138驱动数码管的公共端,实现动态显示的位码输出。采用74LS138和74LS245驱动的动态显示电路如图所示,电路中没有画出单片机最小系统及74LS138和74LS245的供电电路。74LS138驱动的动态显示电路原理图二、软件设计按任务目标,在如图所示的电路中,使用8只数码管显示8位数,分别是1~8。这里虽然是显示8个固定的数码,但考虑到显示内容的任意性,在程序中,采用一个数组来保存显示内容。或者说,用该数组中的每一个单元对应一个数码管的显示内容,只要在程序中修改这个数组中的任一单元的内容就能改变数码管的显示。那么,在扩展程序功能时,只需要考虑在何时修改数组内容及怎么样修改即可,不需要关心显示的细节。在本任务中,使用数组disp来存放显示数据,共8个单元。动态显示函数要完成的任务就是控制所有数码轮流显示一次。通过不断调用动态显示函数也就实现了数码管的动态显示。为了确保显示稳定,要求每秒至少调用动态显示函数50次以上,即所有数码管轮流显示一遍所用的时间总和不超过20ms。一般情况下都会在1s内调用上百次动态显示函数。上图中,74LS245相当于逻辑直通方式,单片机只需要将段码送到P0口即可驱动数码管。数码管的选通是通过74LS138译码实现,故仅需要在P2的最低三位输出第几只数码管显示的二进制电平即可。图是采用3-8译码器的动态扫描函数流程图。采用3-8译码器的动态扫描显示函数流程图三、Proteus仿真1.打开ProteusISIS软件,按照硬件原理图绘制Proteus仿真电路,仔细检查,保证电路连接无误。2.在Keil软件开发环境下,创建项目,编辑源程序,将编译生成的HEX文件装载到Proteus虚拟仿真硬件电路中的AT89C51芯片中。3.运行仿真,仔细观察运行结果,如果有不完全符合设计要求的情况,调整源程序并重复步骤1、2,直至完全符合本项目提出的各项设计要求。74138和74245驱动的动态显示仿真效果图本任务的内容是完成一个简易数字钟,其功能是显示小时、分和秒以及计数。其中秒和分为60进制,小时为24进制(也可用12进制)计数。任务提出任务三

简易数字钟根据任务目标,数字钟需要显示小时、分钟和秒钟,即最少需要显示6个数码。系统硬件可以采用动态显示电路。任务中没有时钟的调节等其他要求,所以整个系统只需要单片机最小系统、数码管及动态显示驱动电路即可。任务分析为了确定1s,首先要确定动态显示一次所需要的时间,如果每一只数码管显示的时间为0.5ms,则一次动态显示(任务中以8只LED数码管为例)的时间约为4ms,所以数码管每显示250次约为1s。即整个数字钟需要调用显示函数250次后调整一次时间。需要说明的是,这里之所以说是简易数字钟,主要是用程序运行来计算时间,这样用程序来确定出1s的时间精度很有限,所以整个时钟的精度不高。如果要提高计时精度,可用后面介绍的定时器来实现较为精确的时钟,这个题目就留给读者在学习了中断和定时器后自己完成。在C51中,数组中每一个数组元素相当于一个独立的变量,除了在定义数组时赋给的初始值之外,还可以在程序中以赋值语句给各个数组元素分别赋值。需要强调的是:数组元素的下标是从0开始的,不能大于或等于数组宽度。相关知识一、硬件设计从任务分析可知,整个数字钟由单片机最小系统和动态显示电路两部分组成。其中动态显示电路要显示至少6位数码,在本任务中选择两只4位共阴极数码管作为显示器件,仅利用其中的6位作为数字钟的显示。任务实施动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论