简易数字钟的设计.docx
- 文档编号:5472704
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:19
- 大小:677.69KB
简易数字钟的设计.docx
《简易数字钟的设计.docx》由会员分享,可在线阅读,更多相关《简易数字钟的设计.docx(19页珍藏版)》请在冰豆网上搜索。
简易数字钟的设计
单片机课程设计论文
设计题目:
简易数字钟单片机设计
学院:
汽车学院
班级:
电气工程及其自动化三班
成员名单:
指导教师:
王春梅
课程设计时间:
2012年5月14----2012年5月25
摘要
数字钟已经成为人们日常生活中不可缺少的必需品,广发应用于家庭及办公室等公共场所,给人们的生活、学习、工作及娱乐带来了极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使得数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用方便,但鉴于单片机的定时器功能也可以完成数字钟的设计,因此进行数字的设计是必要的。
在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。
单片机具有体积小、功能强、可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和生活的各个角落,有力地推动了各行各业的技术改造和产品的更新换代,应用前景广阔。
本次做的数字钟是以单片机(AT89C51)为核心,结合相关的元器件(共阴极LED数码显示器等),再配以相应的软件,达到制作简易数字钟的目的。
硬件部分采用了单片机原理实验室的实验箱进行合理接线调试;软件部分通过keil进行了C程序的修改编译,protues软件仿真等。
最终在实验箱上实现了与仿真结果相同的实际效果。
关键词单片机定时功能、AT89C51、共阴LED、Keil、Protues软件。
1设计任务描述
1.1设计目的
熟练使用Keil开发环境,具备编写单片机程序(汇编语言或C语言)的初步能力,通
过完成本课题的软硬件设计,使同学们了解单片机实例的整个开发流程。
1.2基本要求
简要说明
用单片机设计出一个数字钟。
此数字钟完成自动走时和时间调整的功能。
任务和要求
设计简易的数字钟,该数字钟满足以下要求:
1.开机时,显示12:
00:
00的时间开始计时;
2.P0.0/AD0控制“秒”的调整,每按一次加1秒;
3.P0.1/AD1控制“分”的调整,每按一次加1分;
4.P0.2/AD2控制“时”的调整,每按一次加1个小时
该数字钟基本功能:
使用单片机的定时/计数器实现数字中的定时计数功能,秒计60次成分,分计60次成小时,小时计24次则计满一天。
本设计LED显示部分采用动态显示,其中2个LED显示器显示秒,2个LED显示器显示分钟,2个LED显示器显示小时。
同时为了使用方便,本题目还需要设计几个简单按键,可以通过按键实现时、分的调整,这样在主程序中需要加入键盘设置子程序。
2设计思路
基于单片机的简易数字钟设计主要可以分为以下几个模块来考虑:
对于单片机AT89C51的T0,T1定时中断部分。
本次设计中的单片机晶振频率采用了精准的11.0592MHZ。
故对T1初值设定为:
DC00h,实现了10ms的定时,然后C程序中通过定义一个变量i,对i进行i++的100次循环,如此即可达到最小1S的实现。
而后在这个1S程序段的基础之上,我们可以分别编写出对时,分的程序段。
对于定时器T0,我们可以将其用来作为数码管动态扫描的定时中断,本次设计设为50ms左右,初值为FC17h。
这个取值通过最后的仿真及实际效果看出合理,不会出现闪烁等情况。
校时电路。
本次设计要求了该简易数字钟必须具备时、分的调整功能。
故必须接入3个简单的按键(本设计设置问p0.2调时、p0.1调分、p0.0调秒,按键为实验箱单次脉冲按键模块),并且在软件部分必须引入这3个独立按键的子程序。
显示电路。
考虑采用动态显示部分,用P1口作为数码管数据(段选),P2口作为数码管控制(位选)。
动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任意时刻都只有一位数码管被点亮,但由于人眼存在视觉暂留效应,只要每位数码管间隔时间足够短,就可以给人以通俗显示的感觉。
上面第一部分已提到,我们采用了50ms左右的时间间隔,并且是合理的。
6位数码管,实验室的硬件是共阴极的,故我们的数码表采用{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
晶振电路。
在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
复位电路。
这部分设计用来完成对单片机的复位。
以上是对本次设计课题的初步分析,以下将对各部分模块设计进行详细阐述。
3设计方框图
3.1数字钟硬件部分示意图
该简易数字钟硬件部分主要由晶振、手动复位、单片机AT89C51、数码管显示、时间调整按键模块组成。
框图如下:
图3.1数字钟硬件系统示意图
3.2数字钟软件部分组成框图
3.2.1时间调整的程序流程
图3.2时间调整程序流程框图
3.2.2时钟显示程序流程
图3.324小时时钟
4各部分模块介绍
4.1单片机AT89C51芯片分析
AT89C51单片机引脚图如下:
图4.1AT89C51引脚图
该单片机是标准的40引脚双列直插式集成电路芯片,其各个引脚功能如下:
VCC:
+5V电源。
VSS:
接地。
RST:
复位信号。
当输入的复位信号延续两个周期以上的高电平时即为有效,用来完成单片机的初始化操作。
XTAL1和XTAL2:
外接晶体引线端。
当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
PO口:
P0口作为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉电阻才有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”时对引脚输入的干扰。
本次设计采用P0口作为数码管段选输出使用。
P2口:
内部有上拉电阻的8位I/O口,本次设计中作为数码管位选输出使用。
4.2晶振电路模块
在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
图4.2晶振电路
4.3复位电路模块
单片机复位的条件是:
必须使RST/VPD或RST引脚加上两个机器周期(即24个振荡周期)的高电平。
例如,若时钟频率为12MHz,每个机器周期为1us,则只需要2us以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。
单片机常见的复位如图所示。
电路为上电复位,它利用电容充电来实现的。
在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。
只要保证RESET为
高电平的时间大于两个机器周期,便能正常复位。
该电路除具有上电复位功能外,若要复
位,只需按图中的RESET键,此时电源VCC经电阻分压,在RESET端产生一个复位高
电平。
图4.3复位电路
4.4显示模块
考虑采用动态显示部分,用P1口作为数码管数据(段选),P2口作为数码管控制(位选)。
动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任意时刻都只有一位数码管被点亮,但由于人眼存在视觉暂留效应,只要每位数码管间隔时间足够短,就可以给人以通俗显示的感觉。
上面第一部分已提到,我们采用了50ms左右的时间间隔,并且是合理的。
6位数码管,实验室的硬件是共阴极的,故我们的数码表采用{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
图4.4显示模块
4.5时间校对按键模块
本次设计要求了该简易数字钟必须具备时、分的调整功能。
故必须接入2个简单的按键(本设计设置问p0.2调时、p0.1调分,按键为实验箱单次脉冲按键模块),并且在软件部分必须引入这2个独立按键的子程序。
图4.5时间校对按键电路
5简易数字钟源程序
汇编源程序
SECONDEQU30H
MINITEEQU31H
HOUREQU32H
HOURKBITP0.0
MINITEKBITP0.1
SECONDKBITP0.2
DISPBUFEQU40H
DISPBITEQU48H
T2SCNTAEQU49H
T2SCNTBEQU4AH
TEMPEQU4BH
ORG00H
LJMPSTART
ORG0BH
LJMPINT_T0
START:
MOVSECOND,#00H
MOVMINITE,#00H
MOVHOUR,#12
MOVDISPBIT,#00H
MOVT2SCNTA,#00H
MOVT2SCNTB,#00H
MOVTEMP,#0FEH
LCALLDISP
MOVTMOD,#01H
MOVTH0,#(65536-2000)/256
MOVTL0,#(65536-2000)MOD256
SETBTR0
SETBET0
SETBEA
WT:
JBSECONDK,NK1
LCALLDELY10MS
JBSECONDK,NK1
INCSECOND
MOVA,SECOND
CJNEA,#60,NS60
MOVSECOND,#00H
NS60:
LCALLDISP
JNBSECONDK,$
NK1:
JBMINITEK,NK2
LCALLDELY10MS
JBMINITEK,NK2
INCMINITE
MOVA,MINITE
CJNEA,#60,NM60
MOVMINITE,#00H
NM60:
LCALLDISP
JNBMINITEK,$
NK2:
JBHOURK,NK3
LCALLDELY10MS
JBHOURK,NK3
INCHOUR
MOVA,HOUR
CJNEA,#24,NH24
MOVHOUR,#00H
NH24:
LCALLDISP
JNBHOURK,$
NK3:
LJMPWT
DELY10MS:
MOVR6,#10
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
DISP:
MOVA,#DISPBUF
ADDA,#8
DECA
MOVR1,A
MOVA,HOUR
MOVB,#10
DIVAB
MOV@R1,A
DECR1
MOVA,B
MOV@R1,A
DECR1
MOVA,#10
MOV@R1,A
DECR1
MOVA,MINITE
MOVB,#10
DIVAB
MOV@R1,A
DECR1
MOVA,B
MOV@R1,A
DECR1
MOVA,#10
MOV@R1,A
DECR1
MOVA,SECOND
MOVB,#10
DIVAB
MOV@R1,A
DECR1
MOVA,B
MOV@R1,A
DECR1
RET
INT_T0:
MOVTH0,#(65536-2000)/256
MOVTL0,#(65536-2000)MOD256
MOVA,#DISPBUF
ADDA,DISPBIT
MOVR0,A
MOVA,@R0
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP1,A
MOVA,DISPBIT
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP3,A
INCDISPBIT
MOVA,DISPBIT
CJNEA,#08H,KNA
MOVDISPBIT,#00H
KNA:
INCT2SCNTA
MOVA,T2SCNTA
CJNEA,#100,DONE
MOVT2SCNTA,#00H
INCT2SCNTB
MOVA,T2SCNTB
CJNEA,#05H,DONE
MOVT2SCNTB,#00H
INCSECOND
MOVA,SECOND
CJNEA,#60,NEXT
MOVSECOND,#00H
INCMINITE
MOVA,MINITE
CJNEA,#60,NEXT
MOVMINITE,#00H
INCHOUR
MOVA,HOUR
CJNEA,#24,NEXT
MOVHOUR,#00H
NEXT:
LCALLDISP
DONE:
RETI
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H
TAB:
DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
END
6数字钟源程序的仿真
6.1编译、连接
将数字钟源程序输入到keil软件,建立工程项目,添加完成程序的编译、连接,通过后无错误。
如图所示:
图6.1编译、连接图
6.2仿真
6.2.1生成HEX文件
利用keil将编译、连接无误的源程序生成hex文件,准备与protues联调进行仿真。
图6.2.1从keil里生成十六进制文件
6.2.2仿真结果
在protues里面将HEX文件导入单片机,运行。
得到仿真如下:
图6.2.2仿真结果显示
7数字钟硬件原理图
1.把“单片机系统”区域中的P1.0-P1.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上;
2.把“单片机系统:
区域中的P2.0-P2.7端口用8芯排线连接到“动态数码显示”区域中的端口上;
3.把“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接到“独立式键盘”区域中的SP3、SP2、SP1端口上;
8主要原器件清单
元件名称
规格型号/参数
数量
单片机
AT89C51
1
电容
15pF
2
晶振
11.0592MHz
1
电容
10uF
1
数码管
7SEG-MPX6-CC-RED
1
电阻
10K
12
按键
BUTTON
3
小结
本次课程设计我们小组选择的课题是简易数字钟的设计。
主要的设计思路是运用5个单元模块的组合来实现符合设计要求的数字钟。
五大模块设置合理,各自发挥自己的作用,成为一个整体。
分模块来调试,最终实现。
课程设的三周是忙碌、充实而又紧张的。
虽然临近期末考试早已结束近一个月之久,但我们不仅没有把这当成一种考试后的娱乐,去随意对待,反而调整好自己心态,把这次课程设计当作一次难得的全面复习机会。
通过这次课程设计,我学会了很多书本上学不到的知识,熟练掌握了Keil的开发环境,也加深了软件的使用。
这个课设从自己找相关软件、装软件、学软件再到仿真,充满许多艰辛,付出了很多汗水和时间,在同组人员互相鼓励,互相探讨,互相竞争的团队协作下,克服这探索道路上的种种困难,最后终于做成了一份完整的课程设计。
心里还是不免有一种成功后的喜悦之情。
刚开始拿到题目,心中不免有一丝欣喜,因为对于数字钟这个课题,我想我们大部分人拿来就会有很清晰的思路,因为我们已经做了很多运用单片机来进行定时、计数的相关习题。
后来经过查找一些资料,写出了定时、循环计数、动态扫描等各部分程序段。
硬件部分由于是焊接好的实验箱,极大方便了本次设计。
但是在软硬件融合的阶段还是遇到了一些难题,经过几天反复的调试,最后发现是动态扫描的程序段,在循环移位的时候出现了问题,最后终于调试出来了希望得到的实际效果。
对于自己的设计,最大的败笔就是最后想加入一个跑秒程序段没能调出来,虽然基本满足设计的要求,但还是有点不甘心,造成这一现象的原因经过分析讨论认为是程序中对于此项功能的中断设置不合理,一个中断源不应该同时应用2个功能程序段。
最后由于时间等方面因素,我放弃了加这一项功能。
总之,回顾这一次单片机原理及应用的课程设计,让人感慨颇多,既为这门学科知识之深奥、奇妙所吸引,更为那些设计出那些经典程序的前人所折服。
学习的道路是没有尽头的,也是艰辛的,但只要我们能够独立去思考、去想、去做,那么我们总能学到真正的实用知识。
参考文献
[1]单片机原理及应用,黄勤、李楠、杨天怡编著,清华大学出版社。
[2]单片机程序设计及应用,杨将新、李华军、刘东骏编著,电子工业出版社。
[3]基于PROTEUS的电路及单片机仿真,周景润等著,北京航空航天工业出版社。
[4]C程序设计(第二版),谭浩强编著,清华大学出版社。
[5]TCP/IP,W.RichardStevens编,范建华译.机械工业出版社。
[6]计算机网络(第4版),AndrowS.tanenbaum编,机械工业出版社。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 数字 设计