基于AT89C51单片机的电子钟设计.docx
- 文档编号:14374143
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:26
- 大小:429.21KB
基于AT89C51单片机的电子钟设计.docx
《基于AT89C51单片机的电子钟设计.docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的电子钟设计.docx(26页珍藏版)》请在冰点文库上搜索。
基于AT89C51单片机的电子钟设计
摘要:
以单片机设计了一个基于AT89C51的作息时间控制器系统。
我们采用的是六位数码管静态显示方案来实现的。
该电子主要由AT89C51、74L164、六位数码管等构成的。
采用晶振电路作为驱动电路,有延时程序和循环程序作为一秒定时,达到时分秒的计时。
用keil进行代码编译,用proteus的ISIS软件进行仿真。
,单片机体积小设计成本低,且抗干扰能力很强,可以实现分式各分部控制的优点,让单片机很大的发展前景。
本次设计采用的就是现在性能最好的AT89C51单片机设计而成的最小系统。
它在我们生活中有很广泛的应用。
关键词:
单片机电子钟静态显示
第一章:
引言
1.1设计要求…………………………………………………………………………第2页
1.2设计目的…………………………………………………………………………第2页
1.3设计思路…………………………………………………………………………第2页
1.4主控制系统………………………………………………………………………第2页
第二章:
硬件系统
2.1硬件原理图………………………………………………………………………第3页
2.2晶振电路…………………………………………………………………………第3页
2.3复位电路…………………………………………………………………………第4页
2.4驱动电路…………………………………………………………………………第4页
2.5显示电路…………………………………………………………………………第5页
2.6硬件原理及说明…………………………………………………………………第6页
2.7主要性能及参数…………………………………………………………………第6页
第三章:
软件系统设计……………………………………………………………………….第7页
3.1主程序…………………………………………………………………………….第7页
3.2显示子程序……………………………………………………………………….第8页
3.3定时中断子程序………………………………………………………………….第10页
3.4软件仿真………………………………………………………………………….第12页
第四章:
系统调试…………………………………………………………………………….第14页
4.1硬件调试………………………………………………………………………….第14页
第五章:
实验心得…………………………………………………………………………….第14页
参考文献……………………………………………………………………………...第14页
附录……………………………………………………………………………………第15页
第一章引言
1.1设计要求:
系统上电和复位后能自动显示时间,能根据预先设定的时间进行打铃,响铃时间为15秒。
设计一个六位数码管的额显示电路,能够显示“时、分、秒”
1.2设计目的:
1.2.1通过课程设计能让我们更加深入的了解单片机的基本原理,各电路的设计及其仿真调试。
1.2.2使用AT89C51芯片的串口功能,利用寄存器74LS164实现时分秒的显示。
1.2.3用keil原件进行编程和调试,再利用proteus进行仿真制作电路图。
1.3设计思路:
1.3.1该设计选用单片机来实现,要进行各个芯片的选择
1.3.2采用AT89C51芯片,其为高性能CMOS8位单片机,该芯片内含有4Kbytes的可反复擦写的只读存储器、128bytes的随机存取数据存储器、32位可编程I/O口线、2个16位定时/计数器、6个中断源、可编程串行UART通道及低功耗空闲和掉电模式。
因此,我们采用AT89C51。
1.3.3采用6位数码管显示,显示较为清楚直观,便于观察与调试。
1.3.4直接采用单片机定时计数提供秒信号。
使用程序实现时分秒的计数,采用此种芯片可以减少芯片的使用,节约成本,实现的时间误差较小。
1.4综上方案对此次电子钟选定为AT89C51芯片采用串行输出静态显示作为主控制系统,来实现时分秒的显示。
第二章硬件系统的设计
2.1硬件原理图
采用AT89C51作为主芯片,用定时计数器提供时钟,利用LED作为时间显示。
2.2晶振电路
晶振电路运用单片机的18、19脚与晶振和瓷片电容相连接,由2个30pF电容C1、C2和一个6MHz的晶振X1组成。
它能产生一个高精度且稳定的振荡信号,即频率为6MHz的方波信号,此信号为单片机提供一个时钟信号,以供定时器定时用。
2.3复位电路
复位电路是运用单片机的9脚,实现的按键与上电复位。
该电路中的复位电路为上电与按键均有效的复位,上电瞬间RST引脚获得高电平,随电容C1的充电,RST引脚的高电平将逐渐下降。
RST引脚上的高电平只能保持两个机器周期的时间,单片机就可以进行复位操作。
单片机在运行期间,我们可以利用按键开关来完成复位。
当按键开关按下瞬间,RST上的电平立即变为高电平,即可进行复位
2.4驱动部分
74LS164是最常见的移位寄存器,移位寄存器是暂时记忆数据的“寄存器”,其特征是具有将数据向左或向右移动的功能。
移位寄存器有各种形式。
按存数据的位数有4位、8位等,按“输入/输出数据”形式有“串入/串出”、“串入/并出”、“并入/串出”、“并入/并入”等。
芯片管脚图如图所示:
74ls164是一个串入并出的8位移位寄存器,它常用于单片机系统中,图6是串行输入/并行(串行)输出移位寄存器74LS164的管脚排列图。
其功能表见表1所示。
74LS164有两个串行数据DA、DB输入端,使用时一般把它们连在一起;
为清零输入端,低电平有效,当该端加入低电平时,寄存器输出Q0~Q7全为低电平。
在正常情况下,清零输入端接高电平,当CP信号上升沿到来时,数据右移一位;Q0~Q7为并行数据输出端,同时Q7端也是串行数据输出端,对于串行输入的数据,最后进入的从Q0输出。
CP为移位脉冲。
最先输入的从Q7输出,
段控部分
位控部分
2.5显示电路部分
对于数字显示电路,通常采用液晶显示或数码管显示。
本设计的显示电路采用6位一体数码管作为显示介质。
数码管显示可以分为静态显示和动态显示两种。
由于本设计静态显示则占用的口线多,硬件电路复杂。
所以采用动态显示。
2.6硬件原理及说明
AT89C51是美国Intel公司生产的低电压,高性能CHMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器(PEROM)和蔼可亲128bytes的随机存取数据存储器(RAM),器件采用Intel公司的高密度、非易失性存储技术生产,片内置通用4位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机适合于许多较为复杂控制应用场合。
2.7主要性能参数
与MCS-51产品指令和引脚完全兼容
4k字节可重擦写Flash闪速存储器
1000次擦写周期
全静态操作:
0Hz—24MHz
三级加密程序存储器
128×8字节内部RAM
32个可编程I/O口线
2个16位定时/计数器
5个中断源
可编程串行UART通道
低功耗空闲和掉电模式
第三章软件系统设计
有主程序;静态显示子程序;中断服务程序;时、分、秒加1子程序;时分秒单元清零子程序。
3.1主程序
;功能:
系统初始化,按键扫描子程序循环调用
;*************************************************************
START:
MOVSECOND,#00;时钟初值为00.00.00
MOVMINITE,#59
MOVHOUR,#00
MOVDISPBIT,#00H;
MOVT2SCNTA,#00H
MOVT2SCNTB,#00H
MOVTEMP,#0FEH
LCALLDISP;调显示程序
MOVTMOD,#01H;T0方式1,定时5ms
;MOVTH0,#((65536-20000)/256);T0赋初值
;MOVTL0,#((65536-20000)MOD256)
MOVTH0,#0ECH
MOVTL0,#78H
SETBTR0;启动T0
SETBET0;开放T0中断
SETBEA
MLP:
LCALLWT;调按键扫描子程序
SJMPMLP
3.2显示子程序
显示子程序流程图:
显示子程序:
;入口参数:
时、分、秒值分别放在HOUR、MINITE和SECOND单元中;
;出口信息:
(47H)=BCD码时高位;(46H)=BCD码时低位;
;(44H)=BCD码分高位;(43H)=BCD码分低位;
;(41H)=BCD码秒高位;(40H)=BCD码秒低位;
;(45H)=(42H)=0AH(“-”的位控码)
;**************************************************************
DISP:
MOVA,#DISPBUF
ADDA,#8
DECA
MOVR1,A
MOVA,HOUR;取“时”值
MOVB,#10;“时”转换为BCD码
DIVAB
MOV@R1,A;BCD码“时”高位存入47H单元
DECR1
MOVA,B;BCD码“时”低位存入46H单元
MOV@R1,A
DECR1
MOVA,#10
MOV@R1,A;45H单元存入0AH
DECR1
MOVA,MINITE;取“分”值
MOVB,#10
DIVAB;“分”转换为BCD码
MOV@R1,A;BCD码“分”高位存入44H单元
DECR1
MOVA,B
MOV@R1,A;BCD码“分”低位存入43H单元
DECR1
MOVA,#10
MOV@R1,A;42H单元存入0AH
DECR1
MOVA,SECOND;取“秒”值
MOVB,#10
DIVAB;“秒”转换为BCD码
MOV@R1,A;BCD码“秒”高位存入41H单元
DECR1
MOVA,B
MOV@R1,A;BCD码“秒”低位存入40H单元
DECR1
RET
3.3定时中断子程序
定时器TO用于时间计时,定时溢出中断周期设为100ms,中断进入后,判断是否到1秒钟,到了,则调用加法子程序对秒进行加1处理,处理完后返回断点地址,同时判断秒是否到了60秒,到了则对秒单元清零,同时对分进行加1操作,同样对分进行判断,到60分则对分单元清零,同时对时加1,同样也对时进行判断,到24小时,则对时单元清零,最后中断返回。
中断服务程序:
;功能:
定时器定时10ms。
1s=2×50×10ms。
;每2ms进入一次中断,刷新对应的两位显示器;
;按规定调整200ms、1000ms、秒、分、时单元的值
;**************************************************************
INT_T0:
;MOVTH0,#((65536-20000)/256);重赋初值
;MOVTL0,#((65536-20000)MOD256)
MOVTH0,#0ECH
MOVTL0,#78H
MOVA,#DISPBUF;取显示缓冲单元
ADDA,DISPBIT
MOVR0,A
MOVA,@R0;取对应显示位
MOVDPTR,#TABLE
MOVCA,@A+DPTR;查表取段码值
CPLA
MOVP2,A;P1口输出对应位段码值
MOVA,DISPBIT;显示位地址
MOVDPTR,#TAB
MOVCA,@A+DPTR;查表取位控码
MOVP3,A;P3口输出位控码
LCALLDELY5MS;延时2.5MS,稳定(必须加入,系统才能稳定显示)
MOVP3,#0FFH;位控码全灭(必须加入,否则扫描时位控码不关闭,会输出错误代码)
INCDISPBIT;位控码增1
MOVA,DISPBIT
CJNEA,#08H,KNA;位控码到8了吗?
MOVDISPBIT,#00H;位控码到8,则清0
KNA:
INCT2SCNTA;200ms单元加1
MOVA,T2SCNTA
CJNEA,#100,DONE;500ms到了吗?
MOVT2SCNTA,#00H;200ms到,200ms单元清0
INCT2SCNTB;1000ms单元加1
MOVA,T2SCNTB
CJNEA,#02H,DONE;1000ms到了吗?
MOVT2SCNTB,#00H;1000ms到,1000ms单元清0
INCSECOND;秒单元加1
MOVA,SECOND
SETBP1.0
CJNEA,#60,NEXT;60秒到了吗
MOVSECOND,#00H;60s到,60s单元清0
INCMINITE;分单元加1
MOVA,MINITE
CJNEA,#60,NEXT;60分到了吗?
MOVMINITE,#00H;60分到,分单元清0
INCHOUR;时单元增1
CLRP1.0
MOVA,HOUR
CJNEA,#24,NEXT;24小时到了吗?
MOVHOUR,#00H;24小时到,时单元清0
NEXT:
LCALLDISP;调显示转换程序
DONE:
RETI
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H;0~9,“-”共阴极代码,代码从高位到低位为dpgfedcba
TABLE:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH;0~9,“-”共阳极代码,代码从高位到低位为dpgfedcba
TABLE1:
DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H,02H;0~9,“-”共阴极代码,代码从高位到低位为abcdefgdp
TAB:
DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH;动态扫描代码
END
3.4软件仿真:
本次实训通过Kei和protues仿真软件仿佛进行调试与连调,确定各个程序模块正确无误
第四章系统调试
硬件调试
用protues软件画出电路,用keil软件把代码进行编译。
如果有错,对程序进行修改和调试。
当没有错时生成HEX文件,在protues中添加源程序,在进行调试。
调试成功后执行程序看仿真效果。
第五章实验心得
通过这次实验更加深入的了解到了单片机的基本工作原理,对于接口电路和调试的方法有了进一步的提高,对单片机的程序有了更加深刻的认识。
在今后的工作一定会有很大的帮助。
在这次实验中,通过与同学的协作完成了这次课程设计,大家都说出了自己的想法,增加了同学间的团结协作。
这次课程设计实行的块结构,这个思想将会应用的以后的工作中。
本次试验我学到了很多自己的动手能力得到了很大的提高在以后的课程中应该更加的努力好好完成试验。
参考文献:
《单片机原理及应用》谢辉化学工业出版社
《电子技术基础试验》陈大钦高等教育出版社
《电路基础》许熙文高等教育出版
《单片机应用技术》北京理工大学出版社主编倪志连
《单片机原理与应用系统设计》电子工业出版社主编张琦
《51系列单片机高级实例开发指南》李军北京航空航天大学出版
《单片机原理及应用》姜志海电子工业出版社
《C程序设计》潭浩强北京航空航天出版社
《51系列单片机C语言程序设计与应用》于京中国电力出版社
附录:
完整程序:
SECONDEQU30H;秒单元
MINITEEQU31H;分单元
HOUREQU32H;时单元
HOURKBITP0.2;时按键
MINITEKBITP0.1;分按键
SECONDKBITP0.0;秒按键
DISPBUFEQU40H;显示缓冲区
DISPBITEQU48H;显示位控码
T2SCNTAEQU49H;200ms存放单元
T2SCNTBEQU4AH;1000ms存放单元
TEMPEQU4BH
ORG00H
LJMPSTART
ORG0BH
LJMPINT_T0
;**************************************************************
;主程序:
;功能:
系统初始化,按键扫描子程序循环调用
;*************************************************************
START:
MOVSECOND,#00;时钟初值为00.00.00
MOVMINITE,#00
MOVHOUR,#00
MOVDISPBIT,#00H;
MOVT2SCNTA,#00H
MOVT2SCNTB,#00H
MOVTEMP,#0FEH
LCALLDISP;调显示程序
MOVTMOD,#01H;T0方式1,定时5ms
;MOVTH0,#((65536-20000)/256);T0赋初值
;MOVTL0,#((65536-20000)MOD256)
MOVTH0,#0ECH
MOVTL0,#78H
SETBTR0;启动T0
SETBET0;开放T0中断
SETBEA
MLP:
LCALLWT;调按键扫描子程序
SJMPMLP
;**************************************************************
;按键扫描子程序:
;功能:
判断秒、分、时按键是否按下。
;“秒”键按下,每按一次加1秒;
;“分”键按下,每按一次加1分;
;“时”键按下,每按一次加1个小时;
;**************************************************************
WT:
JBSECONDK,NK1;秒按键按下否?
;LCALLDELY10MS;延时10ms,消抖
JBSECONDK,NK1;抖动,转NK1
INCSECOND;秒单元加1
MOVA,SECOND
CJNEA,#60,NS60;60秒到否?
MOVSECOND,#00H;60s到,秒单元清0
NS60:
LCALLDISP;调显示程序
JNBSECONDK,$;判断秒按键释放否?
NK1:
JBMINITEK,NK2;分按键按下否?
;LCALLDELY10MS;延时10ms,消抖
JBMINITEK,NK2;抖动,转NK2
INCMINITE;分单元加1
MOVA,MINITE
CJNEA,#60,NM60;60分到否?
MOVMINITE,#00H;60分到,分单元清0
NM60:
LCALLDISP;调显示程序
JNBMINITEK,$;判断分按键释放否?
NK2:
JBHOURK,NK3;时按键按下否?
;LCALLDELY10MS;延时10ms,消抖
JBHOURK,NK3;抖动,转NK3
INCHOUR;时单元加1
CLRP1.0
MOVA,HOUR
CJNEA,#24,NH24;24小时到否?
MOVHOUR,#00H;24小时到,时单元清0
NH24:
LCALLDISP;调显示程序
JNBHOURK,$;判断时按键释放否?
NK3:
RET;**************************************************************
;10MS延时子程序。
(晶振12MHz)
;**************************************************************
DELY10MS:
MOVR6,#20
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
;**************************************************************
;*******************************************************
;2.5MS延时子程序。
(晶振12MHz)
;**************************************************************
DELY5MS:
MOVR6,#6
D5:
MOVR7,#50
DJNZR7,$
DJNZR6,D5
RET
;**************************************************************
;显示转换子程序
;入口参数:
时、分、秒值分别放在HOUR、MINITE和SECOND单元中;
;出口信息:
(47H)=BCD码时高位;(46H)=BCD码时低位;
;(44H)=BCD码分高位;(43H)=BCD码分低位;
;(41H)=BCD码秒高位;(40H)=BCD码秒低位;
;(45H)=(42H)=0AH(“-”的位控码)
;**************************************************************
DISP:
MOVA,#DISPBUF
ADDA,#8
DECA
MOVR1,A
MOVA,HOUR;取“时”值
MOVB,#10;“时”转换为BCD码
DIVAB
MOV@R1,A;BCD码“时”高位存入47H单元
DECR1
MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C51 单片机 电子钟 设计
文档标签
- 基于AT89C51单片机数字
- 基于AT89C51单片机双机
- 基于AT89C51单片机LED
- 基于单片机AT89C51数字
- 基于AT89C51单片机水位
- 毕业设计基于AT89C51单片机
- 课程设计基于AT89C51单片机
- 基于at89c51单片机数字
- 基于AT89C51单片机多点
- 基于单片机系统电子钟
- 基于AT89C51单片机最小
- 单片机AT89C51设计一个
- 基于AT89C51单片机电子
- 基于单片机电子钟设计
- 基于AT89C51单片机蔬菜
- 基于单片机AT89C51电子琴
- 精品基于单片机AT89C51
- 基于单片机数字温度计
- 基于单片机数字温度计
- 基于单片机数字温度计
- 基于单片机数字温度计
- AT89C51基于单片机温度
- 基于单片机数字温度
- 基于单片机数字温度计