电子时钟课程设.docx
- 文档编号:24631534
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:20
- 大小:132.70KB
电子时钟课程设.docx
《电子时钟课程设.docx》由会员分享,可在线阅读,更多相关《电子时钟课程设.docx(20页珍藏版)》请在冰豆网上搜索。
电子时钟课程设
电子时钟课程设计
系别:
电气信息工程系
班级:
电子信息工程技术
姓名:
贺艳博、李盼杰、韩书毅
时间:
2011年6月29日
1.设计目的……………………………………………………3
2.课程总体设计方案…………………………………………3
3.电子时钟的设计要求………………………………………4
4.设备及工作环境……………………………………………4
5.设计思路……………………………………………………4
6.各模块功能的简介…………………………………………4
7.硬件设计系统………………………………………………11
8.软件设计系统………………………………………………12
9.心得体会……………………………………………………15
10.程序清单……………………………………………………16
11.参考资料……………………………………………………20
电子时钟课程设计
一:
设计目的
通过整整一个学期的对《单片机原理》的学习,我们收获了很多很多。
但为了更好的检测一下自己的实际动手能力,也为了更好的锻炼我们,考察一下我们处理和解决问题的能力和遇到复杂情况的应对能力,按照课程设计的要求,在《单片机原理》这门课程即将结束之际,我们系特意安排我们进行了电子时钟制作,以检测我们的能力。
二:
课程总体设计方案
单片机芯片作为控制系统的核心部件,它除了具备微机CPU的数值计算功能外,还具有灵活强大的控制功能,以便实时检测系统的输入量、控制系统的输出量,实现自动控制。
在本次设计中采用单片机技术来实现数字钟的功能。
方案的设计可以从以下几个方面来确定。
微处理器的选择,AT89S51、52是2003年ATMEL推出的新型品种,除了完全兼容8051外,还多了编程功能。
但是AT89S52的存储器容量比AT89S51的大。
在本次设计中采用AT89S52单片机;显示电路的设计,随着科技的发展,数码显示的使用越来越方便,已被普遍的使用。
由于数码显示与驱动都容易集成在一个芯片上,因此使用起来很方便。
校时和定时电路的设计;实时控制电路是时钟电路的一个重要组成部分,采用的是一个时钟芯片,单片机从中读取数据送到显示器上显示,从而实现数字钟的功能;还有一些其他控制电路如复位电路、时钟电路等。
通过这些控制电路的连接构成了完整的电路。
三:
电子时钟的设计要求
1.本电子时钟采用AT89S52单片机的定时器实现
1系统硬件设计:
根据任务要求,完成单片机最小系统及其扩展设计,组成功能完整的系统。
2系统软件设计:
根据数字电子计时器功能,完成控制软件的编写与调试,并对数码显示进行控制。
2.用6位数码管显示时、分、秒,如:
XXXXXX
3.开始显示的时间
开机时,电子钟从12:
00:
00开始自动计时。
设置按键,能对时、分、秒进行调整。
可以用复位键来直接对时钟进行复位处理。
4.时间可以通过键盘修改程序来进行修改。
5.数码管显示的驱动电路可以任选。
6.带ISP下载接口。
7.要求电路板上能进行直流5V稳压处理。
8.编程要求:
汇编或C语言。
不过按照自己的能力大小来进行编写。
四:
设备及工作环境
1.硬件:
计算机一台
2.软件:
Windows操作系统、单片机编译软件,仿真软件。
五:
设计思路
电子计时器主要由AT89C51、显示模块、控制模块和计时运算模块四大部分组成。
其中控制模块和计时运算模块主要对时、分、秒的数值显示和调整进行操作,并且秒计算到60时,自动清零并向分进1;分计算到60时,自动清零并向时进1,并且蜂鸣器自动报时;时计算到24时,自动清零。
这样,就形成了循环计时,显示模块主要用来显示当前计数值。
A89C51是整个设计的核心,主要用来产生定时中断,传输数据和控制各个部件工作。
六:
各功能的简介
1.整体功能说明
在LED数码管上能实现数字计时器的时、分、秒显示,并能对时、分、秒进行加1校对和清零,并且到整点的时候能自动报时.通过控制键控制计时器的开始,暂停,继续和清零.并且开机时时钟时从12:
00:
00开始计时的。
程序的起始时间可以通过键盘来修改程序修改。
2.模块功能说明
(1)AT89S52简介,如下图
图一:
AT89S52
①TMOD定时器/计数器方式寄存器
定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为89H,无位地址。
②TCON定时器/计数器控制寄存器
TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H--8FH,由于有位地址,十分便于进行位操作。
③定时器/计数器的初始化
由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作.初始货的步骤一般如下:
1、确定工作方式(即对TMOD赋值),预置定时或计数的初值。
2、根据需要开放定时器/计数器的中断(直接对IE位赋值)。
3、启动定时器/计数器。
(2)时钟电路简介,如下图
图二:
时钟电路
AT89C52芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
(4)复位电路简介
图三:
复位电路电路图
如图所示为复位电路原理图,复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序,并使其它功能单元处于一个确定的初始状态。
本复位电路采用的是按键复位,它是通过复位端经电阻与VCC电源接通而实现的,它兼具上电复位功能。
因本系统的晶振的频率为12MHz,所以,复位信号持续时间应当超过2μS才能完成复位操作。
(5)键盘工作原理
图四:
键盘工作原理
本系统采用的是独立式键盘结构,每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。
它的软件是采用查询式结构,首先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。
(6)数码管的简介,如下图:
图四:
共阳极数码管
:
数码管按单元连接单位可分为:
共阳极数码管和共阴极数码管。
共阳极数码管是将所有的发光二极管的阳极连在一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共阳极(COM)连接到+5V的直流电源上。
当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
我们在做电子时钟实验的时候选用的是共阳极的数码管。
:
驱动方式
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。
动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。
图中的三极管作为驱动器,而7个560欧姆电阻则起限流作用。
而在做这个实验的时候,我们选用用六个三极管来分别驱动六段数码管。
如下图:
图四:
三极管驱动数码管来工作
(4)下面是整体的电路图:
图五:
整体实验电路图
七:
硬件设计系统
1.根据我们的实验设计要求,我们通过AltiumDesign6.9所制作的原理图如下:
图六:
电路原理图
2.通过以上电路原理图所绘制的pcb面板如下:
图七:
pcb电路原理图
八:
软件设计
系统软件采用汇编语言按模块化方式进行设计,然后通过KeilC51软件开发平台将程序转变成十六进制程序语言,接着使用Proteous进行仿真,其次,按照Proteous的仿真电路图,在Protel99SE中完成电路板的逻辑布局及布线。
系统程序主要包括主程序,读出时钟子程序和显示数据刷新子程序。
1.时钟程序流程图
开始
显示子程序
计时开始
秒到60
分计数器加1
分到60
时计数器加1
时到24
时清零
图六:
时钟程序流程图
2.定时器中断服务程序
定时器T0用于时间计时。
定时计数个数为50000,由于采用12MHz晶体振荡器,所以定时溢出中断周期为5000us=5ms。
为了保证计时的准确性,进入中断服务程序时应立即重设计数初值。
在中断程序中还要判断是否计时1s,若是,还应通过调用其他子程序作时、分、秒值的相应处理。
中断程序流程图如下:
3.
开始
现场保护
计数器重新加载
是否满二百次
秒值加1
是否60秒
秒值存储单元清0
分值加1
1
1
是否60分
分值存储单元清0
时值加1
是否24小时
时值存储单元清0
显示内容送显示缓存区
返回
程序调试说明
把编好的程序输入新建在软件keilc51里的工程里,保存,运行,数码管显示当前的时间值12:
00:
00。
建立一个新工程,输入上面的源程序,最后编译得到一个dianzhishizhong.hex目标文件,用编程器把dianzhishizhong.hex写入单片AT89S52中,插到实验板把电路板与+5V稳压电源连接,把芯片插入电路板,打开电源,四个显象管分别显示时和分的十位和个位,通过电路把四个显象管调为零,通过两个开关分别调时分的十位,个位。
调为23,把分调59,然后等一分钟,如果显象管的时分的十位,个位都显示为0,那就说明调试成功,在测试工程中,不但要认真观察和检测,还要认真记录,包括记录观察的现象,测量的数据,通过数据才能把实际观察的现象和理论预计的结果加以定量比较,从中发现问题,加以改进,最终完成设计。
在这个设计中主要测试时间是否正确,是否能符合设计的要求。
九:
心得体会
本次的课程设计是以我们所学《单片机原理与应用》为基础而开展的,时间为两周,第一周我们主要是对整个电路原理图的软件系统和硬件系统进行规划和而已,第二周我们就开始进行实际的焊接和运用了。
虽说这门课程老师已经对书上的大部分内容进行了教学,但想要在实际中灵活的运用,在下面的学习中不下苦功夫还是很难把它学好的。
在这个实训的过程中我们用了三个软件,第一个就是AltiumDesign6.9,我们用这个软件主要是进行电路板的制作,第二个就是KEIL,我们可以用这个软件来实现对整个程序的设计和调试。
第三个是Proteus,我们可以基于这个软件来对整个电路图进行仿真。
但在实际的应该过程中我们还是遇到了很多很多的问题。
为了解决这些问题,花费了很大的功夫,通过上网搜资料和图书馆查阅资料和问电子创新实验室的人,最终在我们的共同努力下,顺利地完成了本次的课程设计。
短短的半个月课程设计时间已经接近尾声,感觉这二周我们收获还是很多的,但最重要的是这是一个学习的过程。
在完成设计的过程中,遇到了许多的死角,我们也曾经放弃过,可是想到我们应该为了我们的将来想想,我们又很快的打消了这个念头。
我知道这也是对自己的锻炼。
但这次课程设计让我感触最深的还是知识的不牢固与缺乏,如果没有对相关的知识的掌握,甚至不能理解一条简单的指令,看着参考书上密密麻麻的指令,只会感到头疼,更不要说能灵活的运用。
硬件设计是比较简单的,可是要能通过硬件系统而编写出相关的软件系统,没有牢靠的基础是行不通的。
知识需要不断的累积,没有知识会使我们寸步难行,但我们也不能只满足于课堂上所学的,那只是冰山一角。
而且对我们而言很多已学的知识只是纸上谈兵,不能实际应用,这也是不可取的,所以对于我而言,每次的课程设计都让我受益匪浅,让我真正的感受到知识的魅力所在。
做单片机需要的是一个积累,做的东西少,在下面不去动手制作,会遇到各种各样的困难的也自然不会形成一些感觉。
还有就是通过这两个周的学习,我们也认识到自身的不足,比如说:
知识学的不扎实,自身存在这样或那样的毛病等等。
只有我们发现了这些毛病,我们才可能在今后的学习中更好的改正,我们也才能学到更多的知道,从而来完善自身的价值。
总体感觉,在这两个周的单片机实训中我的收获还是很大的。
也在些感谢我们的老师和同学给我作了耐心的辅导!
十:
程序清单
SCANEQU28H
ZDLEDBITP0.7
ORG0000H
LJMPSTART
ORG0BH
LJMPTIM0
ORG0030H
START:
MOVSP,#70H
MOV2AH,#0CH;时
MOV2BH,#00H;分
MOV2CH,#00H;秒
MOV20H,#00H
MOV21H,#00H
MOV22H,#00H
MOV23H,#00H
MOV24H,#00H
MOV25H,#00H
MOVTMOD,#01H
MOVTH0,#4DH;赋初值
MOVTL0,#8FH
SETBZDLED
MOVIE,#10000010B
MOV41H,#20
SETBTR0
LOOP:
CLREA
JBP0.0,N2;K0键未按下,转N2
LCALLDELAY;显示
JBP0.0,N2
MOVA,2CH
INCA;
MOV2CH,A;
CJNEA,#60,N1;是否到60秒?
MOV2CH,#00;是,清0
N1:
LCALLDISPLAY
JNBP0.0,N1;等待K0释放
LCALLCLOCK2
N2:
JBP0.1,N4;K1未按下,转N4
LCALLDELAY
JBP0.1,N4
MOVA,2BH
INCA
MOV2BH,A
CJNEA,#60,N3;是否到60分?
MOV2BH,#00;是,清0
N3:
LCALLDISPLAY
JNBP0.1,N3;等待K1释放
LCALLCLOCK2
N4:
JBP0.2,N6;K2未按下,转N6
LCALLDELAY
JBP0.2,N6
MOVA,2AH
INCA
MOV2AH,A
CJNEA,#24,N5;是否到24时?
MOV2AH,#00;是,清0
N5:
LCALLDISPLAY
JNBP0.2,N5;等待K2释放
LCALLCLOCK2
N6:
LCALLDISPLAY
SETBEA
LCALLZDBS
JMPLOOP
;============================
;定时子程序
;============================
TIM0:
MOVTH0,#4DH;重赋初值
MOVTL0,#8FH
PUSHACC
PUSHB
PUSHPSW
SETBRS0
DJNZ41H,X2
MOV41H,#20
CPLP3.2
LCALLCLOCK1
LCALLCLOCK2
X2:
POPPSW
POPB
POPACC
RETI
;=======================================
;时钟处理子程序
;=======================================
CLOCK1:
MOVA,2CH
INCA
MOV2CH,A
CJNEA,#60,X4
MOV2CH,#00
MOVA,2BH
INCA
MOV2BH,A
CJNEA,#60,X4
MOV2BH,#00
MOVA,2AH
INCA
MOV2AH,A
CJNEA,#24,X4
MOV2AH,#00
X4:
RET
;=========================================
;显示预处理子程序
;=========================================
CLOCK2:
MOVA,2CH
MOVB,#10
DIVAB
MOV20H,B
MOV21H,A
MOVA,2BH
MOVB,#10
DIVAB
MOV22H,B
MOV23H,A
MOVA,2AH
MOVB,#10
DIVAB
MOV24H,B
MOV25H,A
RET
;==========================================
;时钟显示子程序
;==========================================
DISPLAY:
MOVR0,#20H
MOVSCAN,#0FEH
MOVA,SCAN
LD0:
MOVP2,A
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP1,A
ACALLDL1MS
INCR0
MOVA,SCAN
JNBACC.5,LD1
RLA
MOVSCAN,A
AJMPLD0
LD1:
RET
;==============================================
;数码管代码表
;==============================================
TAB:
DB28H,0EEH,32H,0A2H,0E4H,0A1H
DB21H,0EAH,20H,0A0H,60H,0FFH
;==============================================
;1ms延时子程序
;==============================================
DL1MS:
MOVR6,#14H
DL1:
MOVR7,#19H
DL2:
DJNZR7,DL2
DJNZR6,DL1
RET
;==============================================
;延时程序
;==============================================
DELAY:
MOVR6,#10
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
;================================
;整点报时
;================================
ZDBS:
MOVA,2BH
CJNEA,#0,ZDBS_1
JCZDBS_1
MOVA,2CH
CJNEA,#0,ZDBS_1
CLRP0.7
RET
ZDBS_1:
SETBZDLED
RET
END
十一:
参考资料:
1.《单片机高级教程》
2.《单片机实验与实践教程》
3.《单片机实验与实践教程》
4.《手把手教你学单片机》
5.《单片机基础》
6.《单片机高级语言》
7.《单片微型计算机原理及接口应用系统》
8.《单片机原理及应用》
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 时钟 课程
![提示](https://static.bdocx.com/images/bang_tan.gif)