ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:262.90KB ,
资源ID:150378      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-150378.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的电子时钟6位LED数码管显示.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于单片机的电子时钟6位LED数码管显示.docx

1、基于单片机的电子时钟6位LED数码管显示数码管显示电子时钟设计一功能要求1数字电子时钟最主要是LED数码管显示功能,以24小时为一个周期,显示时间时、分、秒。2.具有校时功能,可以对时、进行单独校对,使其校正到标准时间。二方案论证1.数字时钟方案数字时钟是本设计的最主要的部分。根据需要,可利用两种方案实现。方案一:本方案采用Dallas公司的专用时钟芯片DS12887AO该芯片部采用 石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因 此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网 电压不足或突然掉电等突发情况下仍能正常工作,芯片部包含锂电池。当

2、电网电 压不足或突然掉电时,系统自动转换到部锂电池供电系统。而且即使系统不上电, 程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。方案二:本方案完全用软件实现数字时钟。原理为:在单片机部存储器设三 个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中 断,每产生一次中断,存储器相应的秒值加1;若秒值达到60,则将其清零,并 将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若 时值达到24,则将十字节清零。该方案具有硬件电路简单的特点。但由于每次 执行程序时,定时器都要重新赋初值,所以该时钟精度不高。而且,由于是软件 实现,当单片机不上

3、电,程序不执行时,时钟将不工作。基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。2.数码管显示方案方案一:静态显示。所谓靜态显示,就是当显示器显示某一字符时,相应的发光二极 管恒定的导通或截止。该方式每一位都需要一个8位输出口控制。静态显示时较小的电流 能获得较高的亮度,且字符不闪烁。但当所显示的位数较多时,静态显示所需的I/O 口太多, 造成了资源的浪费。方案二:动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每 一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证 扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与

4、间隔时 间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了 I/O 口,降低了能耗。 从节省I/O 口和降低能耗出发,本设计采用方案二。3.计时方案利用AT89S51单片机部的定时/计数器进行中断时,配合软件延时实现时、 分、秒的计时。该方案节省硬件成本,且能使读者在定时/计数器的使用、中断 及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而 对学好单片机技术这门课程起到一定的作用。4.控制方案AT89S51的P0 口和P2 口外接由八个LED数码管(LED8LED1)构成的显示器, 用P0 口作LED的段码输出口,P2 口作八个LED数码管的位控输出线,P1

5、口外接 四个按键A、B、C构成键盘电路。AT89S51是一种低功耗,高性能的CMOS 8位微型计算机。它带有8K Flash 可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存 储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。简易电子钟的功能不 复杂,采用其现有的I/O便可完成,所以本设计中采用此的设计方案。三系统硬件电路的设计根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:单片机 模块、数码显示模块与按键模块,模块之间的关系图如下面得方框电路图1所示图1硬件电路方

6、框图1.单片机模块设计1. 1芯片分析AT89C51单片机引脚图如下:图2 AT89C51引脚图MCS-51单片机是标准的40引脚双列直插式集成电路芯片,其各引脚功能如 下:VCC: +5V 电源。VSS:接地。RST:复位信号。当输入的复位信号延续两个机器周期以上的髙电平时即为 有效,用完成单片机的复位初始化操作。XTAL1和XTAL2:外接晶体引线端。当使用芯片部时钟时,此二引线端用于 外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。P0 口: P0 口为一个8位漏极开路双向I/O 口,当作输出口使用时,必须接 上拉电阻才能有高电平输出;当作输入口使用时,必须先向电路中的

7、锁存器写入 1”,使FET截止,以避免锁存器为0”状态时对引脚读入的干扰。P1 口: P1 口是一个部提供上拉电阻的8位双向I/O 口,它不再需要多路转 接电路MUX;因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使 用时,同样也需先向其锁存器写1”,使输出驱动电路的FET截止。P2 口: P2 口电路比P1 口电路多了一个多路转接电路MUX,这又正好与P0 口一样。P2 口可以作为通用的I/O 口使用,这时多路转接电路开关倒向锁丰存 器Q端。P3 口: P3 口待点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。 当作为I/O 口使用时,第二功能信号引线应保持高电平,与

8、非门开通,以维持从锁存器到输 出端数据输出通路的畅通。当输出第二功能信号时,该位应应置“1”,使与非门对第二功 能信号的输出是畅通的,从而实现第二功能信号的输出。MCS-51单片机共有4个双向的8位并行I/O端口 (Port),分别记作P0-P3, 共有32根口线,各口的每一位均由锁存器、输出驱动器和输入缓冲器所组成。 实际上P0-P3已被归入特殊功能寄存器之列。这四个口除了按字节寻址以外,还 可以按位寻址。由于它们在结构上有一些差异,故各口的性质和功能有一些差异。P0 口是双向8位三态I/O 口,此口为地址总线(低8位)及数据总线分时复用口,可 驱动8个LS型TTL负载。P1 口是8位准双向

9、I/O 口,可驱动4个LS型负载。P2 口是8位 准双向I/O 口,与地址总线(高8位)复用,可驱动4个LS型TTL负载。P3 口是8位准双 向I/O 口,是双功能复用口,可驱动4个LS型TTL负载。P1 口、P2 口、P3 口各I/O 口线 片均有固定的上拉电阻,当这3个准双向I/O 口做输入口使用时,要向该口先写“1”,另外 准双向I/O 口无高阻的“浮空”状态,故称为双向三态I/O 口。时钟电路用于产生MCS-51单片机工作时所必需的时钟信号。MCS-51单片机 本身就是一个复杂的同步时序电路,为保证同步工作方式的实现,MCS-51单片 机应在唯一的时钟信号控制下,严格地按时序执行进行工

10、作,而时序所研究的是 指令执行中各个信号的关系。在执行指令时,CPU首先要到程序存储器中取出需要执行的指令操作码,然后译码,并 由时序电路产生一系列控制信号去完成指令所规定的操作。CPU发出的时序信号有两类,一 类用于片对各个功能部件的控制,这列信号很多。另一类用于片外存储器或I/O端口的控制, 这部分时序对于分析、设计硬件接口电路至关重要。这也是单片机应用系统设计者普遍关心 的问题。1.2数码显示模块设计系统采用动态显示方式,用P0 口来控制LED数码管的段控线,而用P2 口来 控制其位控线。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每 一个数码管,这样虽然在任何时刻都只有一位数

11、码管被点亮,但由于人眼存在视 觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。图3数码显示电路1.3按键模块下图为按键模块电路原理图,A为复位键,B为时钟调控键,C为分钟调控键。图4按键模块电路原理图4.系统程序的设计软件设计分析显示的效果为动态显示,利用CPU控制数码管显示的选通和停止,通过定时器中断不断 扫描,从而实现数据的动态显示。在编程上,首先进行了初始化,定义程序的的入口地址以及中断的入口地址, 在主程序开始定义了一组固定单元用来储存计数的时.分.秒,在显示初值之后, 进入主循环。在主程序中,对不同的按键进行扫描,实现秒表,时间调整,复位 清零等功能,系统总流程

12、图如下图5:图5系统总体流程图5.调试及性能分析6.电子时钟主要的设计要能够实现时钟的一般功能,以及包括时间的调整功能,这个基于 单片机的电子时钟基本上实现了上述功能,能够通过时间调整电路对时间进行调整以及复 位。下述为18: 30: 30的仿真图:首先确保各器件的完好性,其次检测各芯片的电源线和地线是否接触良好,然后焊接 器件,接好电源用万用表检测各电源端、地端的状态是否正常。检查无误后插上AT89S51 并烧写一简易的程序,观察电路是否能协同工作。最后烧写工作程序,根据显示现象调试程 序直至成功。上电运行时,数码管开始显示00: 00: 00,时钟开始走时。程序的编写和调试是一个比较复杂的

13、过程。由于对C语言知识的薄弱,所以在编译过 程中总是有很多语法上的错误,但是在和同学一起讨论研究后,程序是编写出来了,但结合 到硬件调试中又出现各种问题。在调试过程中出现了很多问題,在第一次把程序烧到单片机 里,通电运行时,虽然控制时、分、秒的按钮能够对数码管显示进行调整,但是数码管全亮, 不能通过按键变化显示,更改程序中的问题,但是调时设置又没有用了。经过检查及修改, 终于完成了所做的设计,不容易啊。7.控制源程序清单#includereg51 h #include3bsacc. h#define uchar unsigned char itdefine uint unsigned int/

14、*七段共阴管显示定义*/uchar code dispcodeE = (0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x0710x7F10x6F,0xBF,0x86,0xCB,OxCF,OxEF,OxED.OxFD,0x87tOxFF.OxDF;/*定义并初始化变量权uchar seconde=0;uchar miniteO;uchar hour=12;uchar mstcnt二0;sbit Pl_0二P0; sbit pi i=pri;sbit Pl 2二P2;/*函数声明*/void delay(uchar k ); /延时子程序void time_pro( );

15、 /时间处理子程序void display ( ): /显示子程序void keyscan();键盘扫描子程序/*/*延时子程序*/*/ void delay (uchar k)uchar j; while(k-)!=0)for(j=0;j125;j+);/*/*时间处理子程序*/*/ void time pro( void)/秒钟设为60进制分钟设为60进制时钟设为24进制if (seconde60) seconde=0;minite+;if( minite=60) minite二0;hour+;if(hour=24)hour二0; /*/*显示子程序*/*/void display(voi

16、d)P2二Oxfe;P0=dispcodehour/10:delay (4);P2二Oxfd;P0=(dispcode(hour%10)10X80;delay (4);P2二Oxfb;PO=di spcodeminite/10:delay (4);/显示小时的十位/显示小时的个位/显示分的十位P2二0xf7;P0=(dispcodemini te%10)I 0X80; delay (4);P2=0xef;PO=dispcodeseconde/10: delay (4);P2二Oxdf;PO=di spcodeseconde%10: delay(4);/*/*键盘扫描子程序*/*/显示分的个位/

17、显示秒的十位/显示秒的个位void keyscan (void)(if(Pl 0=0)按键1秒的调整delay(30);if(Pl 0=0)if(Pl l=0)seconde+;if (seconde=60)seconde=0; /按键2分的调整delay(30);if(Pl_l=0)minite+;if(minite=60)minite二0;if(Pl_2=0) /按键3小时的调整delay(30):if(Pl_2=0)hour+;if(hour=24)hour=0; void timerO(void) interrupt 1 using 0 /定时器 0 方式 1, 50ms 中断一次TH

18、0=0x3c;TMOD = 0x11;mstcnt+;if(mstcnt=20)seconde+;mstcnt=0; /注意点。对计数单元的清零十分的重要,本次调试中就是 /因为忽略了这一点,给我早成了很大的被动。/Me*/*主函数*/Me*/void nuiin(void)( Pl=0xff; /初始化pl 口,全设为1TMOD = 0x11; /time0 为定时器,方式 1TH0二0x3c; /预置计数初值TL0=0xb0;EA=1;ETO二1;TRO二1;while (1)keyscan( ); /按键扫描time pro(); 时间处理 display(); 显示时间附录元器件清单序号元件名称规格型号/参数数量(个)备注1单片机AT89S5212显示驱动三极 管A101363电容30pF24电容22 nF15按键BUTTON36排阻RESPACK-8/10K1

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2