89C51Proteus仿真数字闹钟报告.docx
《89C51Proteus仿真数字闹钟报告.docx》由会员分享,可在线阅读,更多相关《89C51Proteus仿真数字闹钟报告.docx(22页珍藏版)》请在冰豆网上搜索。
89C51Proteus仿真数字闹钟报告
数字电子钟
一、LED数字电子钟介绍
一、设计LED数字电子钟的目的
目前市场上提供的不管是机械钟仍是石英钟在晚上无照明的情形下都是不可见的。
要明白当前的时刻,必需先开灯,故较为不便。
此刻市场上也显现了一些电子钟,它以六只LED数码管来显示时分秒,与传统的以指针显示秒的方式不同,违抗了人们传统的适应与理念,而且这种电子钟一样是采纳大型显示器件,适合于银行、车站等公开场合,且外观设计欠美观,很少进入百姓家庭,另外,不管是机械钟、石英钟仍是电子钟。
都存在着一起的问题:
时刻误差。
针对以上存在的问题,咱们设计了一款采纳LED显示器件显示的电子时钟,有效克服了时钟存在的误差问题。
二、LED数字电子钟的特点和功能
(1)、设计特点:
本LED电子按时闹钟是一种基于单片机技术的多功能、多用途的电子产品,有电子时钟、按时闹铃功能。
采纳LED显示加倍直观,是一个比较有效的电子产品。
(2)、要紧功能:
能够显示24小时制“不时—分分—秒秒”,LED显示;能够方便的设定定不时刻闹铃功能,预设定不时刻到将发出闹铃声;能够修改时钟时刻的时、分、秒。
二、系统整体方案及硬件设计
1、整体方案设计
本LED电子数字闹钟,是以单片机及外围接口电路作为核心硬件,辅之外围硬件电路,用汇编语言设计的程序来设计并实现的。
依照AT89C51单片机的外围接口特点扩展成相应的硬件电路,然后依照单片机的指令设计出数字钟相应的软件,在利用软件来执行必然的程序实现数字钟的功能。
之因此用单片机来制作电子钟,是因为如此在设计制作简单而且功能多、精准度高,也可方便的扩充其他功能。
这次设计是利用AT89C51单片机为主控芯片,由七段数码管、晶振、电容、开关、喇叭等元件组成硬件电路,通过编写软件程序来实现和操纵的数字按时闹钟。
二、硬件设计
整体的硬件系统结构框图如以下图所示:
图1:
硬件电路概念示用意
图2:
硬件电路框图
3、主控芯片AT89C51
AT89C51单片机由微处置器,存储器,I/O口和特殊功能寄放器SFR等部份组成。
其存储器在物理上设计成程序存储器和数据存储器两个独立的空间,片内程序存储器的容量为4KB,片内数据存储器为128个字节。
89C51单片机有4个8位的并行I/O口:
P0口,P1口,P2口,P3口。
各个接口均由接口锁存器,输出驱动器,和输入缓冲器组成。
P1口是唯一的单功能口,仅能用作通用的数据输入/输出口。
P3口是双功能口除具有数据输入/输出功能外,每条接口还具有不同的第二功能,如是串行输入口线,口是串行输出口线。
在需要外部程序存储器和数据存储器扩展时,P0可作为分时复用的低8位地址/数据总线,P2口可作为高8位的地址总线。
P3口也能够作为AT89C51的一些特殊功能口,同时为闪烁编程和编程校验接收一些操纵信号。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
RXD(串行输入口)
TXD(串行输出口)
/INT0(外部中断0)
/INT1(外部中断1)
T0(记时器0外部输入)
T1(记时器1外部输入)
/WR(外部数据存储器写选通)
/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些操纵信号。
RST:
复位输入。
当振荡器复位器件时,要维持RST脚两个机械周期的高电平常刻。
ALE/PROG:
当访问外部存储器时,地址锁存许诺的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平常,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于按时目的。
但是要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
现在,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
若是微处置器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每一个机械周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不显现。
EA/VPP:
当/EA维持低电平常,那么在此期间外部程序存储(0000H-FFFFH),不管是不是有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端维持高电平常,其间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
AT89C51单片机的封装及管脚散布如图三:
图3:
AT89C51单片机封装及管脚散布图
4、时钟电路部份
AT89C51系列的单片机的时钟方式分为内部方式和外部方式。
内部方式确实是在单片机的XTAL1和XTAL2的两引脚外接晶振,就够成了自激振荡器在单片机内部产生时钟脉冲信号。
外部时钟方式是把外部已经有的时钟信号引入到单片机内部。
时钟电路在运算机系统中起着超级重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:
一是指为保障系统正常工作的基准振荡按时信号,要紧由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢:
二是指系统的标准定不时钟,即定不时刻。
本LED电子闹钟设计是采纳内部的时钟方式,用一个12MHz晶振和两个30Pf瓷片电容组成,为单片机提供标准时钟,其中两个瓷片电容起微调作用,其中电路图如下:
图4:
时钟电路
之因此采纳高性能的振荡电路,因为:
(1)单片机电子钟的计时脉冲基准是由外部晶振的频率通过12分频后提供,采纳内部的按时/计数器来实现计时功能。
因此,外接晶振频率精准度直接阻碍电子钟计时的准确性。
(2)单片机电子钟利用内部按时/计数器溢出产生中断(12M晶振一样为50ms)再乘以相应的倍率来实现秒、分、时的转换。
大伙儿明白从按时/计数器产生中断请求到响应中断需要3-8个机械周期,按时中断子程序中的数据入栈和重装按时/计数器的初值还需要占用数个机械周期,还有从中断入口转到中断子程序也要占用必然的机械周期。
五、LED显示电路部份
数码管显示工作原理
数码管是一种把多个LED显示段集成在一路的显示设备。
有两种类型,一种是共阳型,一种是共阴型。
共阳型确实是把多个LED显示段的阳极接在一路,又称为公共端。
共阴型确实是把多个LED显示段的阴极接在一路,即为公共商。
阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。
通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,别离为A、B、C、D、E、F、G、DP,其中DP是小数点位段。
而多位数码管,除某一名的公共端会连接在一路,不同位的数码管的相同端也会连接在一路。
即,所有的A段都会连在一路,其它的段也是如此,这是实际最经常使用的用法。
数码管显示方式可分为静态显示和动态显示两种。
静态显示确实是数码管的8段输入及其公共端电平一直有效。
动态显示的原理是,各个数码管的相同段连接在一路,一起占用8位段引管线;每位数码管的阳极连在一路组成公共端。
利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清楚显示出来。
图5:
共阴数码管7SEG-MPX8-CC-BLUE
六、喇叭部份的电路
扬声器的电路部份比较简单,如图,通过单片机发出的操纵信号通过简单的放大和处置后直接操纵LS1喇叭。
图6:
SPEAKER部份电路图
7、键盘电路设计
该设计用了三个按钮,别离为调剂按钮、增加按钮、减少按钮,调剂按钮能够选定小时、分钟和秒,然后按增加、减少按钮的调剂,达到时刻调剂的目的。
按三次调剂按钮能够进入设计闹钟模式,能够看到显示小时的LED闪烁,这时别离设置时、分、秒,按增加、减少键设置闹钟响的时刻。
图7:
操纵键
八、整个电路图
图8:
系统电路原理图
三、操纵系统的软件设计
一、本系统的软件系统要紧可分为主程序、按时计数中断程序、时刻调整程序、延时程序四大模块。
在程序设计进程中,增强了部份软件抗干扰方法,下面对部份模块作介绍。
TEMPEQU30H
KEQU31H
MEQU32H
S_FLAGEQU33H
HOUEQU34H
MINEQU35H
SECEQU36H
HOU1EQU37H
MIN1EQU38H
ORG0000H
RESET:
LJMPMAIN
ORG000BH
LJMPTIMER0
ORG0100H
MAIN:
MOVDPTR,#TABLE
MOVM,#0;模式位
MOVS_FLAG,#1;闪烁标志位
MOVTEMP,#0;计数位
MOVHOU,#23
MOVMIN,#59
MOVSEC,#0
MOVTMOD,#01H;定时器0以方式1定时
MOVTH0,#(65536-50000)/256;按时50ms
MOVTL0,#(65536-50000)MOD256
SETBTR0
SETBET0
SETBEA
LOOP:
LCALLDISPLAY
LCALLKEY_PRC
LJMPLOOP
TIMER0:
MOVTH0,#(65536-50000)/256;定时中断
MOVTL0,#(65536-50000)MOD256
INCTEMP;循环次数,配合定时器0定时1s
MOVA,TEMP
MOVB,#5
DIVAB
MOVA,B
CJNEA,#0,LOOP3;每250ms
MOVA,S_FLAG;闪烁标志位取反
CPLA
MOVS_FLAG,A
LOOP3:
MOVR1,TEMP
CJNER1,#20,LOOP1
MOVTEMP,#0
INCSEC
LOOP1:
MOVA,SEC
CJNEA,#60,LOOP2
MOVSEC,#0
MOVA,MIN
CJNEA,#59,L1
MOVMIN,#0
MOVA,HOU
CJNEA,#23,L2
MOVHOU,#0
LJMPLOOP2
L1:
INCMIN
LJMPLOOP2
L2:
INCHOU
LOOP2:
MOVA,HOU
CJNEA,HOU1,LOOP4
MOVA,MIN
CJNEA,MIN1,LOOP4;闹钟时间到,闹1min
CPL;鸣笛位取反
LOOP4:
RETI
KEY_PRC:
JB,J2
J1:
LCALLDELAY;延时去抖
JB,J3;确有按键按下,按模式键进行模式切换
INCM
MOVA,M
CJNEA,#5,J3
MOVM,#0
J3:
LCALLDISPLAY
JNB,J3;等待按键释放
J2:
MOVA,M
CJNEA,#0,Y1
LJMPRETURN
Y1:
MOVA,M;模式1——调时
CJNEA,#1,Y2
JB,Y3
LCALLDELAY;延时去抖
JB,Y5;加键按下
MOVA,HOU
CJNEA,#23,Y4
MOVHOU,#0
LJMPY5
Y4:
INCHOU
Y5:
LCALLDISPLAY
JNB,Y5;等待按键释放
Y3:
JB,Y2
LCALLDELAY;延时去抖
JB,Y6;减键按下
MOVA,HOU
CJNEA,#0,Y7
MOVHOU,#23
LJMPY6
Y7:
DECHOU
Y6:
LCALLDISPLAY
JNB,Y6;等待按键释放
Y2:
MOVA,M;模式2——调分
CJNEA,#2,W2
JB,W3
LCALLDELAY;延时去抖
JB,W5;加键按下
MOVA,MIN
CJNEA,#59,W4
MOVMIN,#0
LJMPW5
W4:
INCMIN
W5:
LCALLDISPLAY
JNB,W5;等待按键释放
W3:
JB,W2
LCALLDELAY;延时去抖
JB,W6;减键按下
MOVA,MIN
CJNEA,#0,W7
MOVMIN,#59
LJMPW6
W7:
DECMIN
W6:
LCALLDISPLAY
JNB,W6;等待按键释放
W2:
MOVA,M;模式3——闹钟调时
CJNEA,#3,K2
JB,K3
LCALLDELAY;延时去抖
JB,K5;加键按下
MOVA,HOU1
CJNEA,#23,K4
MOVHOU1,#0
LJMPK5
K4:
INCA
MOVHOU1,A
K5:
LCALLDISPLAY
JNB,K5;等待按键释放
K3:
JB,K2
LCALLDELAY;延时去抖
JB,K6;减键按下
MOVA,HOU1
CJNEA,#0,K7
MOVHOU1,#23
LJMPK6
K7:
DECHOU1
K6:
LCALLDISPLAY
JNB,K6;等待按键释放
K2:
MOVA,M;模式4——闹钟调分
CJNEA,#4,RETURN
JB,Q3
LCALLDELAY;延时去抖
JB,Q5;加键按下
MOVA,MIN1
CJNEA,#59,Q4
MOVMIN1,#0
LJMPQ5
Q4:
INCMIN1
Q5:
LCALLDISPLAY
JNB,Q5;等待按键释放
Q3:
JB,RETURN
LCALLDELAY;延时去抖
JB,Q6;减键按下
MOVA,MIN1
CJNEA,#0,Q7
MOVMIN1,#59
LJMPQ6
Q7:
DECMIN1
Q6:
LCALLDISPLAY
JNB,Q6;等待按键释放
RETURN:
RET
DISPLAY:
MOVA,M
CJNEA,#1,D1
MOVA,S_FLAG
CJNEA,#1,D2
MOVA,HOU;显示正常走时的时钟十位
LJMPD6
D2:
MOVP1,#0X00//第一个数码管熄灭(闪烁)
MOVP2,#0FEH
LCALLDELAY
MOVP2,#0FFH
MOVP1,#0X00//第二个数码管熄灭(闪烁)
MOVP2,#0FDH
LCALLDELAY
MOVP2,#0FFH
LJMPD7
D1:
MOVA,M
CJNEA,#3,D3
MOVA,S_FLAG
CJNEA,#1,D2
MOVA,HOU1;显示闹钟的时钟十位
LJMPD6
D3:
MOVA,M
CJNEA,#4,D5
MOVA,HOU1
LJMPD6
D5:
MOVA,HOU;显示正常走时的时钟十位
D6:
MOVB,#10
DIVAB;A/B->A(商),余数->B
MOVR0,B;暂存余数
MOVCA,@A+DPTR
MOVP1,A;第一个数码管显示,显示小时的十位
MOVP2,#0FEH
LCALLDELAY
MOVP2,#0FFH
MOVA,R0
MOVCA,@A+DPTR
MOVP1,A;第二个数码管显示,显示小时的个位
MOVP2,#0FDH
LCALLDELAY
MOVP2,#0FFH
D7:
MOVP1,#40H;横杠
MOVP2,#0FBH
LCALLDELAY
MOVP2,#0FFH
MOVA,M
CJNEA,#2,E1
MOVA,S_FLAG
CJNEA,#1,E2
MOVA,MIN;显示正常走时的分钟十位
LJMPE6
E2:
MOVP1,#0X00//第四个数码管熄灭(闪烁)
MOVP2,#0F7H
LCALLDELAY
MOVP2,#0FFH
MOVP1,#0X00//第五个数码管熄灭(闪烁)
MOVP2,#0EFH
LCALLDELAY
MOVP2,#0FFH
LJMPE7
E1:
MOVA,M
CJNEA,#4,E3
MOVA,S_FLAG
CJNEA,#1,E2
MOVA,MIN1;显示闹钟的分钟十位
LJMPE6
E3:
MOVA,M
CJNEA,#3,E5
MOVA,MIN1
LJMPE6
E5:
MOVA,MIN;显示正常走时的分钟十位
E6:
MOVB,#10
DIVAB;A/B->A(商),余数->B
MOVR3,B
MOVCA,@A+DPTR
MOVP1,A;第四个数码管显示,显示分钟的十位
MOVP2,#0F7H
LCALLDELAY
MOVP2,#0FFH
MOVA,R3
MOVCA,@A+DPTR
MOVP1,A;第五个数码管显示,显示分钟的个位
MOVP2,#0EFH
LCALLDELAY
MOVP2,#0FFH
LJMPE7
E7:
MOVP1,#40H;横杠
MOVP2,#0DFH
LCALLDELAY
MOVP2,#0FFH
MOVA,M
CJNEA,#3,F1
F3:
MOVP1,#76H;显示H
MOVP2,#0BFH
LCALLDELAY
MOVP2,#0FFH
MOVP1,#77H;显示A
MOVP2,#07FH
LCALLDELAY
MOVP2,#0FFH
LJMPF4
F1:
CJNEA,#4,F2
LJMPF3
F2:
MOVA,SEC;显示正常走时的秒钟十位
MOVB,#10
DIVAB;A/B->A(商),余数->B
MOVR4,B
MOVCA,@A+DPTR
MOVP1,A;第七个数码管显示,显示秒钟的十位
MOVP2,#0BFH
LCALLDELAY
MOVP2,#0FFH
MOVA,R4
MOVCA,@A+DPTR
MOVP1,A;第八个数码管显示,显示秒钟的个位
MOVP2,#07FH
LCALLDELAY
MOVP2,#0FFH
LJMPF4
F4:
RET
DELAY:
MOVR5,#20
V0:
MOVR6,#10
V1:
MOVR7,#15
DJNZR7,$
DJNZR6,V1
DJNZR5,V0
RET
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H,00H,76H,77H;用标号概念0-九、横杠、全灭H和A
END
二、程序流程图
图9:
主程序流程图
3、闹钟的实现
闹钟功能的实现涉及到两个方面:
闹铃时刻设定和是不是闹铃判别与相应处置。
闹铃时刻设定模块的设计可参照时刻设定模块,那个地址着重论述闹铃判别与处置模块的设计问题。
闹铃判别与闹铃处置的关键在于判别何时要进行闹铃。
那时十位、时个位、分十位、分个位中任一名发生改变(进位)时,就必需进行闹铃判别。
程序设计思路如图。
图10闹钟实现思想流程图
4、仿真结果
图10:
开始运行程序仿真图
图11:
闹钟模式
四、心得体会
单片机是运算机技术进展的产物,是经济有效开发简便的高科技产品,在此刻工业操纵、家电等领域占据普遍的市场。
通过这次单片机课程设计来设计,我设计简单的数字闹钟,进一步巩固了自己学习的单片机知识,来初步了解小型单片机系统的设计和运用,并提高自己实际动手能力。
课程设计进程也使我了解自己能力的不足,只是通过在网上搜集资料和文献查询等方式,找出了设计进程中的一些问题和解决问题的方式,从而比较顺利的完成了那个设计任务。
这次课程设计也让我进一步学习Proteus7软件的利用,用Proteus7软件仿真能直观向咱们证明书本上的理论知识,减少了材料的浪费,缩短了咱们完成设计的时刻。
总之,这次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中考验自己,使自己适应于以后的竞争,同时在查找资料的进程中我也学到了许多新的知识,在和同窗协作进程中增进同窗间的友谊,使我对团队精神的踊跃性和重要性有了加倍充分的明白得。
相信这对我以后的课程设计将会有专门大的帮忙!
最后衷心感激教师在课程设计中给我的指导。
五、参考文献
一、朱定华,《单片机原理及接口技术》,电子工业出版社2001年4月
二、李光才,《单片机课程设计实例指导》,北京航空航天大学出版社2004
3、大学生电子实验室,实验课程设计合作成员:
袁淡勋、骆宏伟