单片机电子时钟课程设计.docx
- 文档编号:14670479
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:15
- 大小:107.05KB
单片机电子时钟课程设计.docx
《单片机电子时钟课程设计.docx》由会员分享,可在线阅读,更多相关《单片机电子时钟课程设计.docx(15页珍藏版)》请在冰点文库上搜索。
单片机电子时钟课程设计
基于单片机的电子钟的设计
学院:
班级:
姓名:
学号:
小组成员:
姓名:
学号:
指导老师:
目录
一、设计要求…………………………………………2
二、设计方案和论证…………………………………2
(一)总设计原理图…………………………………2
(二)设计方案的选择………………………………2
(3)硬件部分………………………………………4
(4)软件部分………………………………………8
三、设计总结…………………………………………26
四、参考文献…………………………………………26
一、设计要求
1、准确计时,以数字形式显示时、分、秒的时间。
2、小时以24小时计时形式,分秒计时为60进位。
3、校正时间功能,即能随意设定走时时间。
4、设计5V直流电源,系统时钟电路、复位电路。
二、设计方案和论证
本次设计时钟电路,使用了ATC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:
键盘、芯片、扬声器、LED显示即可满足设计要求。
(一)总设计原理框图如下图所示:
(二)设计方案的选择
1.计时方案
方案1:
采用实时时钟芯片
现在市场上有很多实时时钟集成电路,如DS1287、DS12887、DS1302等。
这些实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需要程序干预。
因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能。
方案2:
使用单片机内部的可编程定时器。
利用单片机内部的定时计数器进行中端定时,配合软件延时实现时、分、秒的计时。
该方案节省硬件成本,但程序设计较为复杂。
2.显示方案
对于实时时钟而言,显示显然是另一个重要的环节。
通常LED显示有两种方式:
动态显示和静态显示。
静态显示的优点是程序简单、显示亮度有保证、单片机CPU的开销小,节约CPU的工作时间。
但占有I/O口线多,每一个LED都要占有一个I/O口,硬件开销大,电路复杂。
需要几个LED就必须占有几个并行口,比较适用于LED数量较少的场合。
当然当LED数量较多的时候,可以使用单片机的串行口通过移位寄存器的方式加以解决,但程序编写比较麻烦。
LED动态显示硬件连接简单,但动态扫描的显示方式需要占有CPU较多的时间,在单片机没有太多实时测控任务的情况下可以采用。
本系统需要采用6位LED数码管来分别显示时、分、秒,因数码管个数较多,故本系统选择动态显示方式。
(三)硬件部分
1、STC89C51单片机介绍
STC89C51单片机是由深圳宏晶公司代理销售的一款MCU,是由美国设计生产的一种低电压、高性能CMOS8位单片机,片内含8kbytes的可反复写的FlashROM和128bytes的RAM,2个16位定时计数器[5]。
STC89C51单片机内部主要包括累加器ACC(有时也简称为A)、程序状态字PSW、地址指示器DPTR、只读存储器ROM、随机存取存储器RAM、寄存器、并行I/O接口P0~P3、定时器/计数器、串行I/O接口以及定时控制逻辑电路等。
这些部件通过内部总线联接起来,构成一个完整的微型计算机。
其管脚图如图所示。
STC89C51单片机管脚结构图
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编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/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)。
2、上电按钮复位电路
本设计采用上电按钮复位电路:
首先经过上电复位,当按下按键时,RST直接与VCC相连,为高电平形成复位,同时电解电容被电路放电;按键松开时,VCC对电容充电,充电电流在电阻上,RST依然为高电平,仍然是复位,充电完成后,电容相当于开路,RST为低电平,单片机芯片正常工作。
其中电阻R2决定了电容充电的时间,R2越大则充电时间长,复位信号从VCC回落到0V的时间也长。
3、晶振电路
本设计晶振电路采用12M的晶振。
晶振的作用是给单片机正常工作提供稳定的时钟信号。
单片机的晶振并不是只能用12M,只要不超过20M就行,在准许的范围内,晶振越大,单片机运行越快,还有用12M的就是好算时间,因为一个机器周期为1/12时钟周期,所以这样用12M的话,一个时钟周期为12us,那么定时器计一次数就是1us了,电容范围在20-40pF之间,这里连接的是30pF的电容。
机器周期=10*晶振周期=12*系统时钟周期
4.下载端口
设计用到的STC89C52单片机芯片的ISP下载线是通过单片机的TXD,RXD引脚把程序烧进去的。
管脚TXD和RXD用于异步串行通信。
其实STC89C52单片机的ISP下载线就是一个max232芯片连接STC和计算机的串行通信口。
计算机把程序从九针串口送到max232芯片,电平转换后送进单片机的串行口,也就是TXD和RXD。
然后单片机的串行模块把数据送到程序区。
5、显示电路
就时钟而言,通常可采用液晶显示或数码管显示。
由于一般的段式液晶屏,需要专门的驱动电路,而且液晶显示作为一种被动显示,可视性相对较差;对于具有驱动电路和微处理器接口的液晶显示模块(字符或点阵),一般多采用并行接口,对微处理器的接口要求较高,占用资源多。
另外,89C2051本身无专门的液晶驱动接口,因此,本时钟采用数码管显示方式。
数码管作为一种主动显示器件,具有亮度高、价格便宜等优点,而且市场上也有专门的时钟显示组合数码管。
对于实时时钟而言,显示显然是另一个重要的环节。
通常LED显示有两种方式:
动态显示和静态显示。
静态显示的优点是程序简单、显示亮度有保证、单片机CPU的开销小,节约CPU的工作时间。
但占有I/O口线多,每一个LED都要占有一个I/O口,硬件开销大,电路复杂。
需要几个LED就必须占有几个并行口,比较适用于LED数量较少的场合。
当然当LED数量较多的时候,可以使用单片机的串行口通过移位寄存器的方式加以解决,但程序编写比较麻烦。
LED动态显示硬件连接简单,但动态扫描的显示方式需要占有CPU较多的时间,在单片机没有太多实时测控任务的情况下可以采用。
本系统需要采用6位LED数码管来分别显示时、分、秒,因数码管个数较多,故本系统选择动态显示方式。
程序:
ORG0000H
AJMPMAIN
ORG000BH
AJMPTIME
ORG0300H
MAIN:
mov20h,#00h
MOV21H,#00H
MOV22H,#00H
MOV23H,#00H
MOVIP,#02H;IP,IE初始化
MOVIE,#82H
MOVTMOD,#01H;设定定时器工作方式?
MOVTL0,#0B0H
MOVTH0,#3CH
SETBTR0;启动定时?
MOVSP,#40H;重设堆栈指针
NEXT:
LCALLDISP;调用显示子程序?
LCALLKEY;调用按键检测子程序
JZNEXT;
LCALLANKEY;调用按键处理子程序
SJMPNEXT;重新循环
NOP
NOP
NOP
;定时中断处理程序:
TIME:
PUSHACC;保护现场
PUSHPSW
MOVTL0,#0B4H;赋定时初值
MOVTH0,#3CH
INC20H;
MOVA,20H
CJNEA,#20,RETI1
MOV20H,#00H;一秒钟时间到
MOVA,21H
ADDA,#01H
DAA
MOV21H,A
CJNEA,#60H,RETI1
MOV21H,#00H;一分钟时间到
MOVA,22H
ADDA,#01H
DAA
MOV22H,A
CJNEA,#60H,RETI1
MOV22H,#00H;一小时时间到
MOVA,23H
ADDA,#01H
DAA
MOV23H,A
CJNEA,#24H,RETI1
MOV23H,#00H;到时间达到24小时,清零.
RETI1:
POPPSW;恢复现场
POPACC
RETI;中断返回?
NOP
NOP
;显示子程序
DISP:
ANL2FH,#10H;处理小数点
MOVA,21H;处理秒21H-->2DH,2EH
ANLA,#0FH
ORLA,2FH
MOV2FH,A
MOVA,21H
ANLA,#0F0H
SWAPA
MOV2EH,A
ANL2DH,#10H
MOVA,22H;处理分钟22H-->2CH,2DH
ANLA,#0FH
ORLA,2DH
MOV2DH,A
MOVA,22H
ANLA,#0F0H
SWAPA
MOV2CH,A
ANL2BH,#10H
MOVA,23H;处理小时23H-->2AH,2BH
ANLA,#0FH
ORLA,2BH
MOV2BH,A
MOVA,23H
ANLA,#0F0H
SWAPA
MOV2AH,A
MOVR0,#2FH;显示偏移量
MOVR3,#06H
MOVDPTR,#TABLE
MOVA,#0BFH
LOOP1:
MOVB,A;
MOVP2,a
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,a;送显示
MOVR2,#80H;延时
DJNZR2,$
DECR0
MOVA,B
RRA
DJNZR3,LOOP1;循环显示
RET
TABLE:
db28h,7eh,0a2h,62h,74h,61h,21h;不带小数点
DB7ah,20h,60h,00,00,00,00,00,00
DB8H,5eH,82H,42H,54H,41H,1H,5aH;带小数点
DB00H,40H,00,00,00,00,00,00
NOP
NOP
;按键判断程序
KEY:
MOVP3,#0FFH;
MOVA,P3
CPLA
ANLA,#3CH
JZRETX;无键按下则返回
LCALLDISP;
LCALLDISP
MOVA,P3
CPLA
ANLA,#3CH
JZRETX;键盘去抖动。
MOVR6,A;将键值存入R6。
LOOP2:
LCALLDISP;
MOVA,P3
CPLA
ANLA,#3CH
JNZLOOP2;等待键释放
MOVA,R6
RETX:
RET
NOP
NOP
;按键处理子程序
ANKEY:
CLREA;关中断
LX:
MOVA,R6
JBACC.2,L1;是功能键转L1
JBACC.3,L2;是确认键转L2
JBACC.4,L3;是减1键转L3
JNBACC.5,L12;不是增1键,转L12
JB2BH.4,L6;判断使哪一位(时、分、秒)的值加1
JB2DH.4,L8
JB2FH.4,L9
L12:
LCALLDISP
LCALLDISP
LCALLKEY;判断有无键按下。
JZL12
LJMPLX
L2:
MOV25H,#00H;确认键处理程序
CLR2BH.4
CLR2DH.4
CLR2FH.4
SETBEA
RET
L3:
JB2BH.4,L61;增一键处理程序
JB2DH.4,L81
JB2FH.4,L91
AJMPL12
L1:
MOVA,25H;功能键处理程序
JZLB1
JBACC.0,LB2
JBACC.1,LB3
JNBACC.2,L12
LB1:
MOV25H,#01H;25H单元是标志位,(25H)=01H调节时单元的值
SETB2BH.4
CLR2DH.4
CLR2FH.4
AJMPL12
LB3:
MOV25H,#04H;25H单元是标志位,(25H)=01H调节秒单元的值
SETB2FH.4
CLR2DH.4
CLR2BH.4
AJMPL12
LB2:
MOV25H,#02H;25H单元是标志位,(25H)=01H调节分单元的值
SETB2DH.4
CLR2BH.4
CLR2FH.4
AJMPL12
L61:
AJMPL611;
L81:
AJMPL811;
L91:
AJMPL911
L6:
MOVA,23H;时加一
ADDA,#01H
DAA
MOV23H,A
CJNEA,#24H,L15
L15:
JCL112
MOV23H,#00H
L112:
AJMPL12
L8:
MOVA,22H;分加一
ADDA,#01H
DAA
MOV22H,A
CJNEA,#60H,L16
L16:
JCL112
MOV22H,#00H
AJMPL12
L9:
MOVA,21H;秒加一
ADDA,#01H
DAA
MOV21H,A
CJNEA,#60H,L17
L17:
JCL112
MOV21H,#00H
AJMPL12
L611:
MOVA,23H;时减一
ADDA,#99H
DAA
MOV23H,A
CJNEA,#99H,L112
MOV23H,#23H
AJMPL12
L811:
MOVA,22H;分减一
ADDA,#99H
DAA
MOV22H,A
CJNEA,#99H,L112
MOV22H,#59H
AJMPL12
L911:
MOVA,21H;秒减一
ADDA,#99H
DAA
MOV21H,A
CJNEA,#99H,L112
MOV21H,#59H
AJMPL12
NOP
NOP
END
3、设计总结
做了两周的课程设计,有很多的心得体会,有关于单片机的,也有关于模电数电等基础科目的。
因为单片机已经很久没复习,刚拿到题目,不知道从哪入手,后来通过对书本的回顾,加深了对单片机的记忆。
有些知识会迁移和联系模电数电。
课堂教学考虑到大多数同学的需求,主要强调“基本”——基本知识、基本理论、基本方法、基本技能。
而这次设计正是为我们提供了一个深入学习、探索的机会,成为课堂教学的有益补充。
我们正面临就业问题,这次课设给了我们一个机会去试验。
单片机理论的学习是为课程的设计作准备的,但有时学习的理论也解决不了实践中的问题。
实践中获得的知识能让我对单片机的知识有更好的认识和理解。
虽然这次的课程设计我参考了一些文献资料,没有做到创新,但在对程序的读写过程中我明白了许多。
这次课程设计的最大收获是只有把理论用到实践中我们才能真正掌握好所学知识。
参考文献、资料索引
文献、资料名称
编著者
出版单位
《51系列单片机高级实例开发指南》
《MCS—51/96系列单片机原理及应用》
《AT89系列单片机原理与接口技术》
《单片机原理及应用》
《C程序设计》
《单片机原理与实用技术》
《电子技术基础》
《电路基础》
《电路与电子技术》
《电路基本分析》
李军
孙涵芳
王幸之
欧阳斌林
潭浩强
付晓光
邹寿彬
许熙文
卢尔健
石生
北京航空航天大学出版社
北京航空航天大学出版社
北京航空航天大学出版社
中国水利水电出版社
北京航空航天出版社
清华大学出版社
清华大学出版社
高等教育出版社
科学技术出版社
高等教育出版社
业出版社,2006.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子 时钟 课程设计