基于AT89C51单片机的数字电子时钟设计.docx
- 文档编号:11114262
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:26
- 大小:254.11KB
基于AT89C51单片机的数字电子时钟设计.docx
《基于AT89C51单片机的数字电子时钟设计.docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的数字电子时钟设计.docx(26页珍藏版)》请在冰豆网上搜索。
基于AT89C51单片机的数字电子时钟设计
/安徽工程大学机电学院
单片机课程设计
题目:
数字电子时钟设计
指导老师:
***
制作人员:
范超
学号:
************
班级:
自动化2132
日期:
7月13日-7月24日
总评成绩:
课程任务设计书
设计题目:
数字电子时钟的设计
设计任务:
1.设计一款时,分,秒可调数字电子时钟可整点报时;
2.设计三个按键K1,K2和K3,用于调节时钟的时间;
3.用8个、七段LED数码管作为显示设备,开机显示00-00-00;
摘要
本设计采用AT89C51单片机为核心器件。
具有电子钟显示,时间调整,整点报时等功能。
此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。
根据60秒为一分、60分为1小时的计数周期,构成秒、分、时的计数,实现计时的功能。
而且能显示清晰、直观的数字符号。
针对数字钟会产生误差的现象,就设计有校准时间的功能。
AT89C51单片机控制的数字钟的硬件结构与软件设计,给出了汇编语言源程序。
此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。
它的计时周期为24小时,显示满刻度为24时00分00秒,另外应有校时功能。
电路由时钟脉冲发生器、时钟计数器、译码驱动电路和数字显示电路以及时间调整电路组成。
用晶体振荡器产生时间标准信号,这里采用石英晶体振荡器。
根据60秒为1分、60分为1小时、24小时为1天的计数周期,分别组成两个60进制(秒、分)、一个24进制(时)的计数器。
显示器件选用LED八段数码管。
在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。
针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。
关键字:
Proteus,KeiluVision,AT89C51,电子钟,整点报时
摘要3
第1章概述..............................................................................................................5
1.1设计背景.........................................................................................................5
1.2系统方案论证与设计………………………………………………..………5
第2章系统硬件设计..............................................................................................7
2.2最小系统设计9
2.3发声电路的选择与设计10
2.4按键电路的选择与设计11
2.5显示电路的选择与设计11
第3章系统软件设计12
3.1系统流程图12
3.2子程序的介绍13
3.2.1显示子程序13
3.2.2按键扫描程序14
第4章软件仿真16
4.1Protues软件的介绍16
4.2keil软件的介绍16
4.3仿真电路图17
4.4仿真结果与分析17
参考文献20
附录A电路图21
附录B程序21
第1章概述
1.1设计背景
单片机是20世纪70年代中期发展起来的一种大规模集成电路器件。
它在一块硅芯片内集成了各种计算机功能部件,构成一种单片式的微型计算机。
20世纪80年代以来,随着国际上单片机迅速发展,其应用不断深入,新技术层出不穷。
也因为其体积小,功能强,成本地,尤其是随着CMOS工艺的发展,耗电也大大低于其它相似的电子产品,被广泛应用于智能产品和工业控制之中。
其中最著名的生产商就是INTEL公司,其开发的51系列单片机是目前市场上最典型和最有代表性的一种,也是国内市场用的最多的单片机。
在其之后,世界上许多著名的半导体厂商相继生产和这个系列兼容的单片机,这就使得其产品型号不断地增加,品种不断丰富,功能不断增强。
在国内外单片机应用中占有非常重要的地位。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案
1.2系统方案论证与设计
方案一:
由若干个74LS160、电阻、开关、电容、LED数码管、与非门和74153组成。
这个方案较复杂,组成部件较多,连线复杂,不够简洁;但是思路清晰。
方案二:
由主芯片AT89C51、电阻、电容、8个8段LED数码管、开关组成。
这个方案较为简化,应用部件少,连线简单。
为了节约时间成本,所以在本设计中采用方案二来设计数字时钟电路。
第2章系统硬件设计
2.1系统总电路的设计
2.1.1系统的组成与总框图
数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路,由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的1MHZ时间信号必须做到准确稳定,通常使用石英晶体振荡器电路构成数字钟。
时钟电路由主芯片AT89C51和时钟电路,复位电路,按键电路,LED显示,声响电路组成。
数字钟系统的总框图如图2.1所示:
图2.1系统的总框图
2.1.2芯片的选择
通过对多种单片机性能的分析,最终认为AT89C51是最理想的电子时钟开发芯片。
所以本设计采用AT89C51芯片,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。
图2.2AT89C51
AT89C51:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0
输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地
址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
2.2最小系统设计
2.2.1时钟电路的选择与设计
时钟电路是产生CPU校准时序,是单片机的控制核心。
AT89C51的时钟信号可通过内部振荡方式和外部振荡方式两种方式得到。
本次设计使用的是片内振荡方式,通过外接12MHz的晶振来实现时钟电路的时序控制。
在使用片内振荡器时,XTAL1和XTAL2分别为反向放大器的输入端和输出端。
外接晶体以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。
当使用外部时钟驱动时,XTAL2引脚应悬空,而由XTAL1引脚上的信号驱动,或者XTAL1引脚应悬空,而由XTAL2引脚上的信号驱动。
外部振荡器再通过一个2分频的触发器来形成内部时钟所需要的信号。
具体的电路接法如图2.3:
图2.3时钟电路
2.2.2复位电路的选择与设计
根据应用的要求,复位操作通常由上电复位和开关复位2种基本形式。
本系统使用的复位电路是在基本复位电路的基础上所改进的一种混合方法,使其两种形式巧妙地糅合在一起,即做到了上电复位,又可以在发生预料之外的问题时,随时进行开关复位单片机。
具体的电路连接接法如图2.4:
图2.4复位电路
单片机复位后的状态:
单片机的复位操作使单片机进入初始化过程,其中包括使程序计数器PC=0000H,P0~P3=FFH,SP=07H,其他寄存器处于零。
这表明程序从0000H地址单元开始执行。
单片机复位后不改变片内RAM区中的内容。
2.3发声电路的选择与设计
报时器一端p1.0,一端接地,当分显示到达60,报时器报时。
图2.5发声电路
2.4按键电路的选择与设计
P2.6/A14,P2.7/A15,P3.0/RXD,P3.5/T1,P3.6/WR,P3.7/RD并联接开关再接地。
按ST按键计时开始;PA为复位按键,开始复位;CL为清零按键,全部清零,S为秒按键,按下秒加1;M为分按键,按下分加1;H为小时按键,按下小时加1
图2.6按键电路
2.5显示电路的选择与设计
系统默认的电源是5V,AT89C51也是5V,可以直接接入。
第3章系统软件设计
3.1系统流程图
+
图3.1系统流程图
3.2子程序的介绍
3.2.1显示子程序
T0INT:
MOVTH0,#03CH;定时中断子程序。
重装定时常数
MOVTL0,#0B0H;TL0=0B0H
MOVR4,#20;R4=20
DJNZR4,T0INTR;50msX20=1S,未满20次,跳出中断子程序
INC26H;1S,秒存储单元内数+1
INCR0;响铃时间
MOVA,26H;A=26H
CJNEA,#60,T0INTR;未满60S,跳出中断。
MOV26H,#0;满60S,秒单元清零
INC27H;分+1
MOVA,27H;A=27H
CJNEA,#60,T0INTR;比较立即数和A,不相等则转移
MOV27H,#0;27H=0
INC28H;28H=28H+1
MOVA,28H;A=28H
CJNEA,#24,T0INTR;比较立即数和A,不相等则转移
MOV28H,#0;28H=0
3.2.2按键扫描程序
kS:
ACALLDISP;调用子程序DISP
ACALLALARM;调用子程序ALARM
JBSEC,KM;秒调整按键
ACALLDISP;调用子程序DISP
JNBSEC,$-2;直接寻址位为“0”,则转移
AJMPSINC;绝对转移
kM:
JBMIN,KH;分调整按键
ACALLDISP;调用子程序DISP
JNBMIN,$-2;直接寻址位为“0”,则转移
AJMPMINC;绝对转移
KH:
JBHOUR,K1;时调整按键
ACALLDISP;调用子程序DISP
JNBHOUR,$-2;直接寻址位为“0”,则转移
AJMPHINC;绝对转移
第四章软件仿真
4.1Protues软件的介绍
Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前比较好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
一台计算机、一套电子仿真软件,在加上一本虚拟实验教程,就可相当于一个设备先进的实验室。
以虚代实、以软代硬,就建立一个完善的虚拟实验室。
在计算机上学习电工基础,模拟电路、数字电路、单片机应用系统等课程,并进行电路设计、仿真、调试等。
基本操作步骤:
1.打开PROTEUS操作界面。
2.选择“P”,从元件库中提取需要的元器件(选中双击),选择完点OK。
3.在编辑区画电路图,修改元件参数。
4.进行电路仿真。
5.保存文件。
4.2keil软件的介绍
KeilC51是美国KeilSoftware公司出品的51系列兼单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括c编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
本次设计采用的keiluvision4。
它是2009年2月发布的,KeilμVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。
新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。
4.3仿真电路图
该电路图是由AT89C51和时钟电路,复位电路,按键电路,LED显示,声响电路组成。
图4.1仿真电路图
4.4仿真结果与分析
图4.2开始电路图
当摁下H键时显示结果01-00-00,如下图所示:
图4.3时钟显示01-00-00
并且摁下分钟键,分钟也会相应加一,秒钟也是如此。
ST为开始按键,摁下后始终开始运行,P键为复位键,CL键为清除键,摁下后时钟显示为00-00-00。
小结
本设计与论文用了近两个星期的时间,系统设计以单片机AT89系列为核心的控制模块,充分利用了所学知识,单片机最小系统,LED数码管显示模块电路,以及信号的控制,从而实现了时分秒显示和时间显示调整,以及整点报时。
然而在因为对程序总在很多忙点,因此产生了很多浅显的错误,导致仿真结果不能正确显示,甚至直接失败。
后来通过老师和同学的指导以及查阅资料,解决了大部分问题,最终完成设计。
由于时间有限,还存在一些不足之处,在功能上的扩展还没实现。
在做设计的过程中遇到了这样或那样的问题,但通过老师和同学的帮助总的来说还算顺利。
通过查询有关方面的书籍和网页,增强了自已分析处理电路设计过程中的问题的能力。
在毕业设计的这段时间我复习了很多知识,对以前的数字电路又有了一定的新认识,在以后的学习生活过程中,我会更加的努力学习专业技能以及积极向上的生活态度。
在此我要感谢我的小组组长,组长给了我相对自由的空间,锻炼了我独立思考的能力树立了对自己工作能力的信心,当我需要帮助时组长会耐心的帮我讲解,使我的设计能够顺利完成。
再次感谢在此次设计中给我很多帮助的指导老师和同学。
参考文献
[1]胡辉,单片机应用系统设计与训练,中国水利水电出版社,2004.9155-163
[2]曹巧媛,单片机原理及应用,北京:
电子工业出版社,1997.7364-370
[3]赵秀珍,单永磊,单片微型计算机原理及其应用,北京:
中国水利水电出版社,2001.8546-552
[4]张毅刚,修林成,胡振江,MCS-51单片机应用设计,哈尔滨:
哈尔滨工业大学出版社,1990.8256-235
[5]张洪润,兰清华,单片机应用技术教程,北京:
清华大学出版社,1997.11375-386
附录A电路图
附录B程序
STRTEQUP2.6;引脚定义
STPEQUP2.7
CLRREQUP3.0
SECEQUP3.5
MINEQUP3.6
HOUREQUP3.7
ORG00H
AJMPMAIN
ORG0BH
AJMPT0INT
ORG1BH
AJMPT1INT
ORG30H
MAIN:
MOVSP,#60H
MOVR4,#20
MOVTMOD,#11H
MOVTH0,#03CH;12M晶振时定时初值取#3CB0H
MOVTL0,#0B0H
MOVTH1,#0FEH
MOVTL1,#0CH
SETBEA
SETBET0
SETBET1
kS:
ACALLDISP
ACALLALARM
JBSEC,KM;秒调整按键
ACALLDISP
JNBSEC,$-2
AJMPSINC
kM:
JBMIN,KH;分调整按键
ACALLDISP
JNBMIN,$-2
AJMPMINC
KH:
JBHOUR,K1;时调整按键
ACALLDISP
JNBHOUR,$-2
AJMPHINC
SINC:
JB7FH,SINC_A
INC26H;秒调整
MOVA,26H
CJNEA,#60,SINC0
MOV26H,#0
AJMPSINC0
SINC_A:
INC36H;闹秒调整
MOVA,36H
CJNEA,#60,SINC0
MOV36H,#0
SINC0:
AJMPKS
MINC:
JB7FH,MINC_A
INC27H;分调整
MOVA,27H
CJNEA,#60,MINC0
MOV27H,#0
MINC_A:
INC37H;闹分调整
MOVA,37H
CJNEA,#60,MINC0
MOV37H,#0
MINC0:
AJMPKM
HINC:
JB7FH,HINC_A
INC28H;时调整
MOVA,28H
CJNEA,#24,HINC0
MOV28H,#0
HINC_A:
INC38H;闹时调整
MOVA,38H
CJNEA,#24,HINC0
MOV38H,#0
HINC0:
AJMPKH
k1:
ACALLDISP;开始键
JBSTRT,K2
ACALLDISP
JNBSTRT,$-2
AJMPSTART
k2:
JBSTP,K3;暂停键
ACALLDISP
JNBSTP,STOP
AJMPCL_AL
K3:
JBCLRR,KS0
ACALLDISP
JNBCLRR,CLEAR;清零键
KS0:
AJMPKS
START:
CPLTR0;开始/暂停
SETB7DH;7DH为开始键按下标志,此作为允许闹铃标志
AJMPK1
STOP:
CLRTR0
AJMPK2
CL_AL:
CPL7FH;7FH作时钟和闹铃标志位
AJMPK2
CLEAR:
CLRTR0;清零
MOVA,#0
MOV26H,A
MOV27H,A
MOV28H,A
MOV36H,A
MOV37H,A
MOV38H,A
CLR7DH
AJMPKS
DISP:
JB7FH,DISP_A
MOV29H,26H;秒送秒显示缓存
MOV2AH,27H
MOV2BH,28H
AJMPDISP1
DISP_A:
MOV29H,36H
MOV2AH,37H
MOV2BH,38H
DISP1:
MOVA,29H
MOVB,#10
DIVAB
MOV20H,B;余数(秒个位数)
MOV21H,A;商(秒十位数)
MOVA,2AH
MOVB,#10
DIVAB
MOV22H,B;余数(分个位数)
MOV23H,A;商(分十位数)
MOVA,2BH
MOVB,#10
DIVAB
MOV24H,B;余数(时个位数)
MOV25H,A;商(时十位数)
MOVA,20H;秒个位
ACALLSEG7
MOVP0,A
CLRP2.0
ACALLDLY
SETBP2.0
MOVA,21H;秒十位
ACALLSEG7
MOVP0,A
CLRP2.1
ACALLDLY
SETBP2.1
MOVA,22H;分个位
ACALLSEG7
MOVP0,A
CLRP2.2
ACALLDLY
SETBP2.2
MOVA,23H;分十位
ACALLSEG7
MOVP0,A
CLRP2.3
ACALLDLY
SETBP2.3
MOVA,24H;时个位
ACALLSEG7
MOVP0,A
CLRP2.4
ACALLDLY
SETBP2.4
MOVA,25H;时十位
ACALLSEG7
MOVP0,A
CLRP2.5
ACALLDLY
SETBP2.5
CLRP1.1;显示分隔符
MOVA,#40H
MOVP0,A
ACALLDLY
SETBP1.1
CLRP1.2;显示分隔符
MOVA,#40H
MOVP0,A
ACALLDLY
SETBP1.2
RET
ALARM:
JNB7DH,RT;开始键未按下跳出
MOVA,28H;开机时,时分秒都为0,跳出
JZAL0M
AJMPALARM1
AL0M:
MOVA,27H
JZAL0S
AJMPALARM1
AL0S:
MOVA,26H
JZRT
ALARM1:
MOVA,28H;比较小时
CJNEA,38H,AL;不等返回,相等,转分钟比较
MOVA,27H;比较分钟
CJNEA,37H,AL
MOVA,26H;比较秒
CJNEA,36H,AL
AJMPALARM2;转闹铃
AL:
MOVA,28H;整点提醒
JZRT;小时不是00,判分是不是00
MOVA,27H
JNZRT;分不是00,跳出
MOVA,26H
JNZRT
AJMPALARM3;秒不为00,跳出。
为00,整点提醒
ALARM2:
SETBTR1;闹铃3S
MOVR0,#0
AJMPRT
ALARM3:
SETBTR1;整点提醒1S
MOVR0,#2
RT:
RET
T0INT:
MOVTH0,#03CH;定时中断子程序。
重装定时常数
MOVTL0,#0B0H
MOVR4,#20
DJNZR4,T0INTR;50msX20=1S,未满20次,跳出中断子程序
INC26H;1S,秒存储单元内数+1
INCR0;响铃时间
MOVA,26H
CJNEA,#6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C51 单片机 数字 电子 时钟 设计