单片机计时时钟制作.docx
- 文档编号:6870332
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:27
- 大小:26.58KB
单片机计时时钟制作.docx
《单片机计时时钟制作.docx》由会员分享,可在线阅读,更多相关《单片机计时时钟制作.docx(27页珍藏版)》请在冰豆网上搜索。
单片机计时时钟制作
一、课题内容简介………………………………………………(3)
二、通过设计和实作,所能达到的效果………………………(3)
三、要求………………………………………………………(3)
四、电路组成及工作原理………………………………………(4)
五、单片机系统…………………………………………………(4)
六、AT89C51的主要性能参数………………………………(4-5)
七、显示部分……………………………………………………(5-6)
八、 系统调试……………………………………………………(6)
九、时钟计时检测…………………………………………………(6)
十、数码管动态显示汇编程序例子,显示12(时)34(分)………(6-9)
十一、秒信号程序………………………………………………(10)
十二、时分秒时钟程序………………………………………(10-13)
十三、键盘控制时钟程序…………………………………(13-17)
十四.时钟………………………………………(17-22)
一、课题内容简介:
可行性分析,方案确定,硬件设计,软件设计,软硬件调整,使用说明及软硬件测试等全部开发过程。
在
开发过程中,培养学生独立思考、独立分析问题、独立解决问题的能力,一次实习,终生受益。
实习内容 :
(1)protel99se设计.
(2)印刷电路板设计 (3)汇编语言程序编写 (4)单片机系统开发
(5)编程器的使用 (6)软硬件调试及测试
I/O说明:
P1.0~P1.7为八个LED
P3.2,P3.3,P3.4,P3.5为四个按键
P0.0~P0.7为数码管的A,B,C,D,E,F,G,DP
P2.0为继电器控制
P2.1为蜂鸣器控制
P2.2,P2.3,P2.4,P2.5为四个数码管控制
二、通过设计和实作,所能达到的效果:
1、通过课程设计,加深对《单片机原理与接口技术》知识理解,巩固和提高学过的理论与专业知识,并予以适当的深化。
2、进一步掌握定时器的使用和编程方法及中断处理程序的编程方法。
3、掌握单片机控制系统设计的一般方法,包括硬、软件设计;计算机仿真技术等。
实验板I/O说明:
P1.0~P1.7为八个LED
P3.2,P3.3,P3.4,P3.5为四个按键
P0.0~P0.7为数码管的A,B,C,D,E,F,G,DP
P2.0为继电器控制
P2.1为蜂鸣器控制
P2.2,P2.3,P2.4,P2.5为四个数码管位选控制
三、要求:
1基本要求:
(每个同学要求)
1)采用STC89C51单片机,4位7段数码管显示,5伏供电。
2)具有显示“时时分分”
3)按键功能:
分调整,时调整。
2发挥部分:
1)能设定闹钟功能。
2)能演奏音乐。
四、电路组成及工作原理
本文时钟设计原理主要利用AT89C51单片机,由单片机的P0口控制数码管的位显示,P2口控制数码管的段显示,P1口与按键相接用于时间的校正。
在设计中引入两个电源电路,一个是外部电源系统产生+5V电压,用于给CPU及显示电路提供工作电压,这是数字时钟正常工作时的总电压。
另一个是备用电源,当外部电源关断时由它提供工作电压使CPU继续工作,利用单片机的空闲方式降低功耗,数码管不显示但能使计时保持正常,不会造成掉电时计时清零的现象。
针对内外两个电源情况又加入了MC34064电压检测电路,用于时实判断是哪各电源在工作。
整个系统工作时,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。
“时计数器”采用24进制计时器,可实现对一天24小时的累计。
显示电路将“时”、“分”、“秒”计数器的输出,通过六个七段LED显示器显示出来。
校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”电路组成及工作原理
五、单片机系统
单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可能还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换器及A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。
这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。
本文采用的单片机为AT89C51,AT89C51是一种低功耗、高性能的片内含有4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
它的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
六、AT89C51的主要性能参数:
与MCS-51产品指令系统完全兼容
4k字节可重擦写FLASH闪速存储器
1000次擦写周期
全静态操作:
0Hz—24MHz
三级加密程序存储器
128×8字节内部RAM
32个可编程I/O口线
2个16位定时/计数器
6个中断源
可编程串行URAR通道
低功耗空闲和掉电模式
AT89C51提供以下标准功能:
4k字节FLASH闪速存储器,128字节内部RAM,32个I/O口线,2个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51降至0Hz的静态逻辑操作,并支持两种可选的节电工作模式。
空闲方式体制CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器体制工作并禁止其他所有不见工作直到下一个硬件复
七、显示部分
单片机应用系统中使用的显示器主要有发光二极管显示器,简称LED(LightEmittingDiode);
它具有显示清晰、亮度高、使用电压低、寿命长的特点
单片机中通常用七段LED构成字型“8”,另外,还有一个小数点发光二极管以显示小数位!
这种显示器有共阴和共阳两种!
发光二极管的阳极连在一起的(公共端)称为共阳极显示器,阴极连在一起的称为共阴极显示器。
(如下图所示)
一位显示器由8个发光二极管组成,其中,7个发光二极管构成字型“8”的各个笔划(段)
a_g,另一个小数点为dp发光二极管。
当在某段发光二极管上施加一定的正向电压时,该段笔画即亮;不加电压则暗。
为了保护各段LED不被损坏,需外加限流电阻。
由于共阴极连接需加驱动,故在这里我采用的是共阳阳极连接。
以共阳极LED为例,如图(b)所示,各LED公共阳极K0接高电平,若向各控制端a,b, ┄,g,dp顺次送入00011110信号,则该显示器显示“⒎”字型。
共阴极7段LED显示数字0~F、文字、符号及小数点的编码(a段为最地位,dp点为最高位)如(图2-1)所示。
共阴极7段LED显示字型编码表
显示字符 共阴极段选码 显示字符 共阴极段选码
0 3FH 5 6DH
1 06H 6 7DH
2 5BH 7 07H
3 4FH 8 7FH
4 66H 9 6FH
“灭”(黑) 00H
LED显示器接口及显示方式
LED显示器有静态显示方式和动态显示方式两种。
静态显示就是当显示器显示某个字符时,相应的段恒定的导通或截止,直到显示另一个字符为止。
LED显示器工作于静态显示方式时,各位的共阴极接地;若为共阳极则接+5V电源。
每位的段选线分别与一个8位锁存器的输出口相连,显示器中的各位相互独立,而且各位的显示字符一经确定,相应锁存的输出将维持不变。
正因为如此,静态显示器的亮度较高。
这种显示方式编程容易,管理也较简单,但占用I/O口线资源较多。
因此,在显示位数较多的情况下,一般都采用动态显示方式。
由于所有6位段皆由一个I/O口控制,因此,在每一瞬间,6位LED会显示相同的字符。
要想每位显示不同的字符,就必须采用扫描方法流点亮各位LED,即在每一瞬间只使某一位显示字符。
在此瞬间,段选控制I/O口输出相应字符段选码(字型码),而位选则控制I/O口在该显示位送入选通电平(因为LED为共阴,故应送低电平),以保证该位显示相应字符。
如此轮流,使每位分时显示该位应显示字符。
例如,要求显示“LL0-20”时,I/O1和I/O2轮流送入段选码、位选码
八、 系统调试
硬件调试:
主要检查了电路板有无虚焊、短路、连线是否正常,尤其是单片机的各使能端的接线,I/O接口连线是否有误。
由于我们采用了六个数码管并联接入P2口的段选端,因此接线较多,经常容易出现管脚间短路现象。
这是硬件设计不足之处,今后将注意元件的选配使设计更简洁实用。
软件调试:
在LCA51仿真机上,对定时中断程序、显示子程序、按键中断子程序进行了分段调试,结果功能正常。
九、时钟计时检测
通过与其它计时器对比观察发现数字时钟走时过快,检查定时中断程序发现T0的初始值设定有误,因此重新设置:
根据T0选择工作模式1,定时时间为50ms, focs=12MHz,
由 T=(2^16-T0初始值)×振荡周期×12
设T0的初始值为X,
则:
(2^16-X)×1/12×10^6s×12=50ms
X=15625,
转化二进制值为:
X=0011110010111010, 即TH=#3CH,TL=#0BAH
十、数码管动态显示汇编程序例子,显示12(时)34(分)
H10 EQU35H
H1 EQU36H
M10 EQU37H
M1 EQU38H
SHOUR EQU39H
SMIN EQU3AH
DISH10EQU3FH
DISH1 EQU40H
DISM10EQU41H
DISM1 EQU42H
MEMA EQU 45H
MEMB EQU 49H
ORG 0000H
AJMP STAR
ORG 0030H
数码管数据表格
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H
DB90H,88H,83H,0C6H,0A1H,86H,8EH
ORG0050H
STAR:
MOVSHOUR,#12;设为12时
MOVSMIN,#34;设为34分
MOVMEMA,#0
MOVMEMB,#0
MOVSP,#60H
MOVPSW,#00H
MAIN:
MOVSP,#60H
MOVPSW,#00H
MOVMEMA,SHOUR
MOVMEMB,SMIN
ACALLTLED;把要显示的数转换成数码管代码
ACALLDISPLAY;显示小时,分钟
MOVP0,#0FFH
MOVP2,#0FFH
AJMPMAIN
显示小时,分钟
DISPLAY:
MOVP0,DISH10
MOVP2,#11011111B
ACALLD1MS
MOVP0,DISH1
MOVP2,#11101111B
ACALLD1MS
MOVP0,DISM10
MOVP2,#11110111B
ACALLD1MS
MOVP0,DISM1
MOVP2,#11111011B
ACALLD1MS
RET
把要显示的数转换成数码管代码
TLED:
MOVP0,#0FFH
MOVA,MEMA
MOVB,#10
DIVAB
MOVH10,A
MOVH1,B
MOVA,MEMB
MOVB,#10
DIVAB
MOVM10,A
MOVM1,B
MOVA,H10
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDISH10,A
MOVA,H1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDISH1,A
MOVA,M10
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDISM10,A
MOVA,M1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDISM1,A
RET
延时
D1MS:
MOVR7,#0AH
LOOP1:
MOVR6,#32H
LOOP2:
DJNZR6,LOOP2
DJNZR7,LOOP1
RET
END
新的12时34分显示程序
ORG0000H
MAIN:
MOVSP,#60H
MOVPSW,#00H
AA:
MOVR2,#1
MOVDPTR,#TAB
MOVA,R2
MOVCA,@A+DPTR
MOVP0,A
MOVR1,#11011111B
MOVP2,R1
ACALLD1MS
MOVR2,#2
MOVDPTR,#TAB
MOVA,R2
MOVCA,@A+DPTR
MOVP0,A
MOVR1,#11101111B
MOVP2,R1
ACALLD1MS
MOVR2,#3
MOVDPTR,#TAB
MOVA,R2
MOVCA,@A+DPTR
MOVP0,A
MOVR1,#11110111B
MOVP2,R1
ACALLD1MS
MOVR2,#4
MOVDPTR,#TAB
MOVA,R2
MOVCA,@A+DPTR
MOVP0,A
MOVR1,#11111011B
MOVP2,R1
ACALLD1MS
LJMPAA
D1MS:
MOVR7,#0AH
LOOP1:
MOVR6,#32H
LOOP2:
DJNZR6,LOOP2
DJNZR7,LOOP1
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H
DB90H,88H,83H,0C6H,0A1H,86H,8EH
END
十一、秒信号程序
ORG0000H
LJMPMain
ORG000BH
Ljmplto
Org0100h
Main:
MOVtmod,#01h
MOVth0,#0d8h
MOVtl0,#0f0h
MOVie,#10000010b
MOVr3,#100
Setbtr0
Sjmp$
Org0200h
Lto:
MOVth0,#0d8h
MOVtl0,#0f0h
Djnzr3,goret
Cplp1.0
MOVr3,#100
Goret:
reti
End
十二、时分秒时钟程序
h10equ35h
h1equ36h
m10equ37h
m1equ38h
dh10equ3fh
dh1equ40h
dm10equ41h
dm1equ42h
saequ45h
sbequ49h
org00h
ljmpstart
org0bh
ljmptime0
;数码管数据表格
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H
DB90H,88H,83H,0C6H,0A1H,86H,8EH;0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
ORG0050H
start:
movr1,#0;秒计数器清零
movr2,#0;分计数器清零
movr3,#0;时计数器清零
movr4,#0;10ms计数器清0
movsa,#0
movsb,#0
movsp,#60h
movpsw,#00h
movtmod,#01h;定时器0,方式1
movth0,#0d8h;定时初值为10ms
movtl0,#0f0h
movie,#82h
setbtr0
main:
movsa,r3
movsb,r2
acalltled
acalldisplay
movp0,#0ffh
movp2,#0ffh
ajmpmain
display:
movp0,dh10
movp2,#11011111b
acalld1ms
movp0,dh1
movp2,#11101111b
acalld1ms
movp0,dm10
movp2,#11110111b
acalld1ms
movp0,dm1
movp2,#11111011b
acalld1ms
ret
tled:
movp0,#0ffh
mova,sa
movb,#10
divab
movh10,a
movh1,b
mova,sb
movb,#10
divab
movm10,a
movm1,b
mova,h10
movdptr,#tab
movca,@a+dptr
movdh10,a
mova,h1
movdptr,#tab
movca,@a+dptr
movdh1,a
mova,m10
movdptr,#tab
movca,@a+dptr
movdm10,a
mova,m1
movdptr,#tab
movca,@a+dptr
movdm1,a
ret
time0:
pushacc
pushpsw
movth0,#0d8h
movtl0,#0f0h
mova,r4
inca
movr4,a
cjnea,#100,loop
cplp1.0
movr4,#00
mova,r1
inca
movr1,a
cjnea,#60,loop
movr1,#00
mova,r2
inca
movr2,a
cjnea,#60,loop
movr2,#00
mova,r3
inca
movr3,a
cjnea,#24,loop
movr3,#00
djnzr5,loop;中断100次到否
movr5,#100
cplp1.0
loop:
poppsw;中断返回
popacc
ret
d1ms:
movr7,#0ah
loop1:
movr6,#32h
loop2:
djnzr6,loop2
djnzr7,loop1
ret
end
十三、键盘控制时钟程序
SECOND10MSEQU33H
SECONDEQU34
H10EQU35H
H1EQU36H
M10EQU37H
M1EQU38H
SHOUREQU39H
SMINEQU3AH
DISH10EQU3FH
DISH1EQU40H
DISM10EQU41H
DISM1EQU42H
MEMAEQU45H
MEMBEQU49H
ORG0000H
AJMPSTART
ORG000BH
LJMPTIME0
ORG0030H
;数码管数据表格
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H
DB90H,88H,83H,0C6H,0A1H,86H,8EH;0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
ORG0050H
START:
MOVSECOND10MS,#00
MOVSECOND,#00
MOVSHOUR,#00;设为00时
MOVSMIN,#00;设为00分
MOVMEMA,#0
MOVMEMB,#0
MOVSP,#60H
MOVPSW,#00H
MOVTMOD,#01H
MOVTL0,#0F0H
MOVTH0,#0D8H
MOVIE,#82H
SETBTR0
MAIN:
MOVMEMA,SHOUR
MOVMEMB,SMIN
ACALLTLED;把要显示的数转换成数码管代码
ACALLDISPLAY;显示小时,分钟
JNBP3.2,HOURSET
JNBP3.3,MINSET
MOVP0,#0FFH
MOVP2,#0FFH
AJMPMAIN
HOURSET:
LCALLDELAY10MS
JBP3.2,MAIN
JNBP3.2,$
INCSHOUR
MOVA,SHOUR
CJNEA,#24,MAIN
MOVSHOUR,#00
LJMPMAIN
MINSET:
LCALLDELAY10MS
JBP3.3,MAIN
JNBP3.3,$
INCSMIN
MOVA,SMIN
CJNEA,#60,MAIN
MOVSMIN,#00
LJMPMAIN
;显示小时,分钟
DISPLAY:
MOVP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 计时 时钟 制作