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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于89C51单片机电子数字时钟的设计.docx

1、基于89C51单片机电子数字时钟的设计摘要本次实训是基于AT89C51单片机电子钟的设计,对时、分、秒的显示的控制,时、分、秒用六位数码管显示LED数码管时钟电路采用24小时计时方式。该电路采用AT89C51单片机,使用5V电池供电,只使用一个按键进行复位状态的控制以及正常显示等状态。LED显示采用静态扫描方式实现,采用6M晶振。最常见的电子钟通常使用单片机模块控制,一种用单片机原理实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有硬件成本低、计时准确、更长的使用寿命特点,因此得到了广泛的使用。本次设计通过用单片机为主控制,通过电路仿真而实现。首先使用Pro

2、teus Professional软件进行绘制硬件电路图,用keil软件进行编程与调试,最终生成hex文件,传入单片机内部,从而实现仿真效果。第一章 电子时钟的总体设计1.1 设计目的1.1.1 课程设计 使我们能够深入理解单片机系统的工作原理接口电路的设计及调试方法,培养综合运用所学理论知识分析和解决实际问题的能力。1.1.2 AT89C51芯片的串口功能 利用六片8位并行输出串行移位寄存器74LS164,实现时,分,秒的显示。1.1.3用keil软件进行编程与调试 利用Proteus 7 Professional软件进行绘制硬件电路图且进行仿真。1.2 设计任务1.2.1根据具体题目要求,

3、设计以单片机为控制核心的测量系统或控制系统,完成对指定目标或对象的测量及控制。1.2.2设计单片机与测量及控制对象的接口并进行硬件调试。1.2.3针对要求测量或控制的对象完成程序的编制。1.2.4硬件软件联调,完成题目所要求的功能。1.2.5设计能支持时、分、秒的时钟,时钟要具有时间调整功能。1.3 设计思路电子钟的计时器的硬件电路如图所示,采用AT89C51单片机,最小化应用设计;此次设计,我们采用静态显示的方案来完成电子钟的设计。采用共阳八段LED显示器,用74LS164来驱动 LED数码管,采用6M晶振,有利于提高计时的精确性。主要功能:设计一个时钟系统,时钟时间在六位数码管上进行显示,

4、从左到右依次为“时:分:秒”。一上电,数码管显示起始时间为0时0分0秒,即数码管显示00.00.00,以后每秒钟时钟系统加1,最大显示值为23.59.59。本次设计中,我们只用到了一个按键,此按键是用来控制电路复位的,我们将设计好的复位电路直接接在单片机的复位引脚(RST)上,这样程序在运行过程中就会自动查询该引脚上的电平,当该引脚电平为高电平时,则电路恢复初始状态,反之,则程序正常运行。 第二章 硬件系统的设计2.1电路原理图设计2.1.1 电子钟的硬件电路框图 2.2 AT89C51引脚及其功能2.2.1 AT89C51的原理及说明AT89C51是美国Intel公司生产的低电压,高性能CH

5、MOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和蔼可亲128 bytes的随机存取数据存储器(RAM),器件采用Intel公司的高密度、非易失性存储技术生产,片内置通用4位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机适合于许多较为复杂控制应用场合。AT89C51引脚图2.2.2 引脚功能Vcc(40):电源电压 GND(20):接地P3.0 RXD(串行输入口) P3.1 TXD(串行输出口)RST(9):复位信号输入端。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。/EA/VPP:当/EA保持低电平时,则在此

6、期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1(18):振荡器反相放大器的及内部时钟发生器的输入端。XTAL2(19):振荡器反相放大器的输出端。通过XTAL1、XTAL2外接晶振后,即可构成自激振荡器,驱动内部时钟发生器向主机提供时钟信号。23驱动部件本设计的驱动电路采用74LS164,74LS164是最常见的移位寄存器,移位寄存器是暂时记忆数据的“寄存器”,其特征是具有将数据向左或向右移动的功能。移

7、位寄存器有各种形式。按存数据的位数有4位、8位等,按“输入/输出数据”形式有“串入/串出”、“串入/并出”、“并入/串出”、“并入/并入”等。图3(a)是串行输入/并行(串行)输出移位寄存器74LS164的管脚排列图。其功能表见表2所示。74LS164有两个串行数据DA、DB输入端,使用时一般把它们连在一起;为清零输入端,低电平有效,当该端加入低电平时,寄存器输出Q0Q7全为低电平。在正常情况下,清零输入端接高电平,当CP信号上升沿到来时,数据右移一位;Q0Q7为并行数据输出端,同时Q7端也是串行数据输出端,对于串行输入的数据,最后进入的从Q0输出。CP为移位脉冲。最先输入的从Q7输出,74L

8、S164管脚图74LS164真值表 24 显示部分由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便又经济。LED有共阴极和共阳极两种。如图4所示。二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为dp发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段LED不被损坏,需外加限流电阻。LED数码管结构原理图需说明的是当用数据口连接LED数码管adp引脚时,不同的连接方法,各段码位与显示段有不同的

9、对应关系。通常数据口的D0位与a段连接,D1位与b段连接,D7位与dp段连接,如表3所示,表4为用于LED数码管显示的十六进制数和空白字符与P的显示段码。LED显示段码字型共阳极段码共阴极段码字型共阳极段码共阴极段码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3BOH4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H空白FFH00H880H7FHP8CH73H注:(1)本表所列各字符的显示段码均为小数点不亮的情况。 (2)“空白”字符即没有任何显示。第三章 软件系统的设计本次实训的软件部

10、分由主程序,静态显示子程序,中断服务程序,时、分、秒加1子程序,时、分、秒单元清零子程序组成。3.1 电子钟的主程序本设计中,计时采用定时器T0中断完成,其余状态循环调用显示子程序,当端口开关按下时,转入相应功能程序。其主程序执行流程见下图。主程序代码如下:;主程序 使用资源:R3,6位显示的指针。 ;R0,显示缓冲地址指针。 ;DPTR,段码表指针。 START:MOV SP,#60H ;设置堆栈 MOV COUNT,#00H MOV TMOD,#01H ;T0,方式1,定时100ms MOV TH0,#3CH MOV TL0,#0B0H SETB EA ;开放T0中断 SETB ET0 S

11、ETB TR0 ;启动T0 MOV SCON,#00H ;串口方式0 MOV R3,#06H MOV DPTR,#TABLE MOV R0,#30H MOV SEC,#0 ;秒,分,时清0 MOV MIN,#0 MOV HOUR,#0 MOV SECL,#00H ;显示缓冲区单元清0 MOV SECH,#00H MOV MINL,#00H MOV MINH,#00H MOV HOURL,#00H MOV HOURH,#00H DISP1:MOV A,R0 ;初始化显示00.00.00 MOVC A,A+DPTR MOV SBUF,A WAIT1:JNB TI,WAIT1 CLR TI INC

12、R0 DJNZ R3,DISP1 MOV R0,#30H MOV R3,#06H LOOP:SJMP LOOP 3.2电子钟的显示子序显示子程序代码如下:;- - -显示子程序- - - ;入口参数:(R0)= 显示缓冲区地址 ;(R3)=显示位数 ;占用资源:ACC,DPTR,R0,R3 DISP:MOV A,R0 MOVC A,A+DPTR CJNE R3,#2,A1 ANL A,#7FH A1: MOV SBUF,A WAIT:JNB TI,WAIT CLR TI INC R0 DJNZ R3,DISP MOV R0,#30H MOV R3,#06H POP PSW POP ACC RE

13、TI3.3定时器中断服务程序定时器TO用于时间计时,定时溢出中断周期设为100ms,中断进入后,判断是否到1秒钟,到了,则调用加法子程序对秒进行加1处理,处理完后返回断点地址,同时判断秒是否到了60秒,到了则对秒单元清零,同时对分进行加1操作,同样对分进行判断,到60分则对分单元清零,同时对时加1,同样也对时进行判断,到24小时,则对时单元清零,最后中断返回。 T0中断服务程序执行流程见下图: 保护现场 赋初值 N Y秒值加1 N Y秒清0分加1 N Y分清0小时加1 N Y小时清0恢复现场中断服务程序如下:;- - -中断服务子程序- - - - TIMER0:PUSH ACC ;保护现场

14、PUSH PSW MOV TH0,#3CH ;赋初值 MOV TL0,#0B0H INC COUNT ;秒计时单元增1,10次到1秒 MOV A,COUNT XRL A,#10 ;1秒到否? JZ T0_0 T0_01:POP PSW ;恢复现场 POP ACC RETI T0_0:MOV COUNT,#00H ;1秒到 INC SEC ;秒单元增1 MOV A,SEC XRL A,#60 ;60秒(1分钟)到否? JZ T0_1 MOV A,SEC ;转换为BCD码 MOV B,#10 DIV AB MOV SECL,B ;秒的个位存入SECL MOV SECH,A ;秒的十位存入SECH

15、LJMP DISP ;转显示子程序 T0_1:MOV SEC,#00H ;1分到,秒单元清0 MOV SECL,#00H ;秒个位清0 MOV SECH,#00H ;秒十位清0 INC MIN ;分单元加1 MOV A,MIN XRL A,#60 JZ T0_2 ;1分到否? MOV A,MIN MOV B,#10 ;分转换为BCD码 DIV AB MOV MINL,B ;存分的个位 MOV MINH,A ;存分的十位 LJMP DISP ;转显示子程序 T0_2:MOV MIN,#00H ;1分到,分单元清0 MOV MINL,#00H ;分个位清0 MOV MINH,#00H ;分十位清0

16、 INC HOUR ;时单元加1 MOV A,HOUR XRL A,#24 JZ T0_3 ;1小时到否? MOV A,HOUR ;时转换为BCD码 MOV B,#10 DIV AB MOV HOURL,B ;存时个位 MOV HOURH,A ;存时十位 LJMP DISP ;转显示子程序 T0_3:MOV HOUR,#00H ;时单元清0 MOV HOURL,#00H ;时个位清0 MOV HOURH,#00H ;时十位清0 LJMP DISP ;转显示子程序 TABLE:DB 02H,9FH,24H,0CH,99H,48H,40H,1EH,01H,08H /0 1 2 3 4 5 6 7

17、8 9 END 3.4电子时钟设计程序清单 ;时钟,计数初值00.00.00 静态显示,定时100ms ;- - -内存单元分配- - - SECL EQU 30H /秒 SECH EQU 31H MINL EQU 32H /分 MINH EQU 33H HOURL EQU 34H /小时 HOURH EQU 35H SEC EQU 36H MIN EQU 37H HOUR EQU 38H COUNT EQU 39H /计时到1秒;1s=10100ms ORG 0000H LJMP START ORG 000BH LJMP TIMER0 ORG 0030H ;主程序。使用资源:R3,6位显示的

18、指针。 ;R0,显示缓冲地址指针。 ;DPTR,段码表指针。 START:MOV SP,#60H ;设置堆栈 MOV COUNT,#00H MOV TMOD,#01H ;T0,方式1,定时100ms MOV TH0,#3CH MOV TL0,#0B0H SETB EA ;开放T0中断 SETB ET0 SETB TR0 ;启动T0 MOV SCON,#00H ;串口方式0 MOV R3,#06H MOV DPTR,#TABLE MOV R0,#30H MOV SEC,#0 ;秒,分,时清0 MOV MIN,#0 MOV HOUR,#0 MOV SECL,#00H ;显示缓冲区单元清0 MOV

19、SECH,#00H MOV MINL,#00H MOV MINH,#00H MOV HOURL,#00H MOV HOURH,#00H DISP1:MOV A,R0 ;初始化显示00.00.00 MOVC A,A+DPTR MOV SBUF,A WAIT1:JNB TI,WAIT1 CLR TI INC R0 DJNZ R3,DISP1 MOV R0,#30H MOV R3,#06H LOOP:SJMP LOOP ;- - -显示子程序- - - ;入口参数:(R0)= 显示缓冲区地址 ;(R3)=显示位数 ;占用资源:ACC,DPTR,R0,R3 DISP:MOV A,R0 MOVC A,A

20、+DPTR CJNE R3,#2,A1 ANL A,#7FH A1: MOV SBUF,A WAIT:JNB TI,WAIT CLR TI INC R0 DJNZ R3,DISP MOV R0,#30H MOV R3,#06H POP PSW POP ACC RETI ;- - -中断服务子程序- - - - TIMER0:PUSH ACC ;保护现场 PUSH PSW MOV TH0,#3CH ;赋初值 MOV TL0,#0B0H INC COUNT ;秒计时单元增1,10次到1秒 MOV A,COUNT XRL A,#10 ;1秒到否? JZ T0_0 T0_01:POP PSW ;恢复现

21、场 POP ACC RETI T0_0:MOV COUNT,#00H ;1秒到 INC SEC ;秒单元增1 MOV A,SEC XRL A,#60 ;60秒(1分钟)到否? JZ T0_1 MOV A,SEC ;转换为BCD码 MOV B,#10 DIV AB MOV SECL,B ;秒的个位存入SECL MOV SECH,A ;秒的十位存入SECH LJMP DISP ;转显示子程序 T0_1:MOV SEC,#00H ;1分到,秒单元清0 MOV SECL,#00H ;秒个位清0 MOV SECH,#00H ;秒十位清0 INC MIN ;分单元加1 MOV A,MIN XRL A,#6

22、0 JZ T0_2 ;1分到否? MOV A,MIN MOV B,#10 ;分转换为BCD码 DIV AB MOV MINL,B ;存分的个位 MOV MINH,A ;存分的十位 LJMP DISP ;转显示子程序 T0_2:MOV MIN,#00H ;1分到,分单元清0 MOV MINL,#00H ;分个位清0 MOV MINH,#00H ;分十位清0 INC HOUR ;时单元加1 MOV A,HOUR XRL A,#24 JZ T0_3 ;1小时到否? MOV A,HOUR ;时转换为BCD码 MOV B,#10 DIV AB MOV HOURL,B ;存时个位 MOV HOURH,A

23、;存时十位 LJMP DISP ;转显示子程序 T0_3:MOV HOUR,#00H ;时单元清0 MOV HOURL,#00H ;时个位清0 MOV HOURH,#00H ;时十位清0 LJMP DISP ;转显示子程序 TABLE:DB 02H,9FH,24H,0CH,99H,48H,40H,1EH,01H,08H /0 1 2 3 4 5 6 7 8 9 END 3.5程序进行编译仿真3.5.1 89C51程序根据AT89C51单片机灌电流能力强,拉电流能力弱的特点,我们选用共阳数码管。将AT89C51的P3.0P3.1分别与74LS164的数据输入口和时钟信号输入口相连,74LS164

24、是8位串入并出移位寄存器,负责将P3.0输出的串行数据转换成并行信号。显然,这种方式显示同样的位数使用单片机的口线大大减少,即可以让LED当前时间数值,数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式。为节省端口,本系统采用静态扫描显示方式。系统的时分显示部件由6只7段共阳LED数码管构成,前两只用于时的显示,中间两只用于分的显示,最后两只用于秒的显示。每个LED数码管由相对应的74LS164驱动,数码管的a,b,c,d,e,f,g,h,分别分别74LS164的QA,QB,QC,QD,QE,QF,QH相连。具体设计ptotues仿真原理图及实物PCB图见下图所示:protues仿真

25、:3.5.2用PROTEUS ISIS进行电子万年历的仿真测试添加Keil中编写的代码文件单击工具栏中的SourceAdd/Remove Source files.,弹出一个对话框,分别单击“New” ,然后选择在Keil中编写的数字电压表.ASM汇编语言程序,单击“OK” ,完成添加代码文件。编译源程序,生成.HEX目标代码文件单击SourceBuild All。如果编译结果没有错误,图5-8加载.HEX目标代码文件通过如图5-9所示的对话框,选择刚才编译生成的.HEX文件。设置使单片机的运行频率为6MHz 。对仿真结果的调试功能由于使用的是汇编语言编写的程序,如果在测量的时候测量值显示错误

26、,说明程序中存在问题,这个问题只用在仿真测量的时候才能被发现,这时可以使用PROTEUS对程序进行调试。单击按钮,再单击菜单栏中的Debug,可以在最下面选择打开内存观察窗口,寄存器值观察窗口,汇编语言源代码窗口等等。在汇编语言源代码窗口中,也可以在所需要设置断点的语句前双击设置断点,当设置断点的时候,程序运行到所设断点处停止,从而可以在内存、寄存器等的值的变化,从而找出程序出错的地方。第四章 对89C51设计的电子时钟的总结本次课程设计是用AT89C51单片机CPU及LCM1602设计一个数字时钟,经过一个星期的调试,结果满足设计要求,验证无误。通过单片机硬件电路的调试,实现了预先设定的功能

27、,设计主要用到的元件不多,最主要的是程序也比较长比较麻烦,同时也遇到了少量困难,尤其是关于校时模块的设计实现。关于显示模块,在以前的实验中做过,所以问题很容易解决。学以致用,将从书本上学到的知识应用于实践,学会了初步的电子电路仿真设计,虽然过程中遇到了一些困难,但是在解决这些问题的过程无疑也是对自己自身专业素质的一种提高。当最终调试成功的时候也是对自己的一种肯定。此次的设计作业不仅增强了自己在专业设计方面的信心,鼓舞了自己,更是一次兴趣的培养,为自己以后的学习方向的明确了重点。 另外在这次实验中我们遇到了不少的问题针对不同的问题我们采取不同的解决方法,最终一一解决设计中遇到的问题。在我们曾经遇

28、到不懂的问题时,利用网上的资源,搜索查找得到需要的信息。参考文献1微型计算机原理与接口技术M. 赵长德.北京:机械工业出版社,1999:98-350.2单片机的原理与接口技术M. 苏平.北京:电子工业出版社,2006:1-113.3微型计算机原理M. 王忠民.西安:西安科技大学出版社,2003:15-55.4计算机组成原理M. 胡戴明.北京:经济科学出版社,2005:43-56.5单片机外围器件使用手册M. 纪宗南.北京:北京航空航天大学出版社,622-655.6模拟电子技术M 周雪.西安: 西安电子科技大学出版社,2005:81-95.7电子与模拟电子技术M. 左金生.北京:电子工业出版社,

29、2004:105-131.8单片机开发环境Vision2的开发指南M. 尹勇. 北京:北京航空航天大学出版社,2004:173-199.9单片机系统Proteus设计与仿真M. 张斌武.北京:电子工业出版社,2005:52-89.10单片机应用系统设计系统配置与接口技术M. 何立民. 北京航空航天大学出版社,2001年11单片机实验与实践教程(三)M. 周立功. 北京航空航天大学出版社,2006年12单片机原理及其接口技术(第3版)M. 胡汉才. 清华大学出版社,2010年13单片机原理及其接口技术学习辅导与实践教程M. 胡汉才. 清华大学出版社,2010年14例说51 单片机(C 语言版)M. 张义和. 人民邮电出版社,2008年15基于PROTEUS的电路及单片机设计与仿真(第2

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1