单片机定时闹钟值得看看文档格式.docx
- 文档编号:16414455
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:40
- 大小:144.47KB
单片机定时闹钟值得看看文档格式.docx
《单片机定时闹钟值得看看文档格式.docx》由会员分享,可在线阅读,更多相关《单片机定时闹钟值得看看文档格式.docx(40页珍藏版)》请在冰豆网上搜索。
j键:
P3.6口年、月、日的显示
四、[主要电路原理与设计]
(1)系统硬件电路的设计:
电路是由控制部分和显示部分两大部分组成。
利用单片机程序进行控制,单片机以晶体振荡器的振荡周期(或外部引入的时钟周期)为最小的时序单位,片内的各种微操作都以此周期为时序基准。
振荡频率二分频后形成状态周期或称s周期,所以,1个状态周期包含有2个振荡周期。
振荡频率foscl2分频后形成机器周期MC。
所以,1个机器周期包含有6个状态周期或12个振荡周期。
1个到4个机器周期确定一条指令的执行时间,这个时间就是指令周期。
AT89S52单片机指令系统中,各条指令的执行时间都在1个到4个机器周期之间。
,并通过数码管进行显示单片机普遍采用锁相环技术,使单片机的时钟频率可由程序控制。
锁相环允许用户在片外使用频率较低的晶振,可以很大地减小板级噪声;
而且,由于时钟频率可由程序控制,系统时钟可以在一个很宽的范围内调整,总线频率往往能升得很高。
但是,使用锁相环也会带来额外的功率消耗。
单就时钟方案来讲,使用外部晶振且不使用锁相环是功率消耗最小的一种。
AT89S52单片机的时钟信号通常用两种电路形式得到:
内部振荡方式和外部振荡方式。
在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。
内部振荡方式的外部电路如下图所示。
图中,电容器C01,C02起稳定振荡频率、快速起振的作用,其电容值一般在5-30pF。
晶振频率的典型值为12MH2,采用6MHz的情况也比较多。
内部振荡方式所得的时钟情号比较稳定,实用电路中使用较多。
外部振荡方式是把外部已有的时钟信号引入单片机内。
这种方式适宜用来使单片机的时钟与外部信号保持同步。
外部振荡方式的外部电路如下图所示。
如图所示:
各模块分析:
显示模块——电路先通过电源电路送出+5V电压,单片机AT89S52通过74LS47和CD4515(4—16译码器)驱动数码管显示数值,显示部分采用普通共阳极数码管显示,采用动态扫描,以减少硬件电路。
考虑到一次扫描12位数码管显示时会出现闪烁情况,设计时分两排显示,一排显示时间和年月日,一排显示星期和温度,共阳极数码管中8个发光二极管的阳极(二极管正端)连在一起。
通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。
当某段驱动电路的输入端为低电平时,该端所连接的字段导通并点亮。
根据发光字段的不同组合可显示出各种数字或字符。
此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
采用动态显示方式,比较节省I/O口,硬件电路也较静态显示简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多时间。
为了提供共阳LED数码管的驱动电压,用三极管9012作电源驱动输出。
采用12MHz晶振,有利于提高秒计时的精确性。
三极管采用9012。
数码管采用红色的共阳型LED数码管,亮度高些,因为是扫描的显示方式,所以各个数码管的abcdefg各脚采用了总线并联,改动510欧姆的电阻可以改变显示亮度;
时钟模块——利用芯片内部的振荡器,然后在引脚XTAL1和引脚
XTAL2两端接晶体谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部的时钟电路,如图外接晶振时,C1和C2的值通常选择30pF;
C1、C2对频率有微调作用,晶体谐振器的频率12MHz。
为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。
设置了12—24两种显示状态,调整计时的按键、设置定时的按键且定时设置了3次定时、还另加载了星期、年、月、日的调整及闰年的自动调整;
温度模块——主要由18B20通过单片机AT89S52中的温度程序不断的检测温度来显示温度温度传感器DS18B20采集温度信号送该给单片机处理,存储器通过单片机对某些时间点的数据进行存储;
音乐模块——通过LM386N-1给扬声器信号来发出音乐,这个模块主要是为时钟定时到时发出音乐闹铃,而在软件部分设置了可以一次设置3次定时,每次定时到时,音乐程序中编了6种音乐,它可以自动选择6种音乐中的任一音乐响1分钟,如果中间不想让闹铃响可以按一按键,闹铃就立刻停止
;
复位模块——单片机复位电路是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从该状态开始工作,例如复位后PC=0000H,使单片机从第一个单元取指令。
无论是在单片机刚接上电源时,还是断电后或者发生故障后都要复位;
单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。
单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值,见下表。
值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的韧始化部分是十分必要的。
说明:
表中符号*为随机状态;
A=00H,表明累加器已被清零;
特殊功能寄存器
初始状态
A
00H
TMOD
B
TCON
PSW
TH0
SP
07H
TL0
DPL
TH1
DPH
TL1
P0~P3
FFH
SBUF
不定
IP
***00000B
SCON
IE
0**00000B
PCON
0*******B
PSW=00H,表明选寄存器0组为工作寄存器组;
SP=07H,表明堆栈指针指向片内RAM07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;
Po-P3=FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出;
IP=×
×
00000B,表明各个中断源处于低优先级;
IE=0×
00000B,表明各个中断均被关断;
系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。
51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。
光识模块——同样也是为定时服务的,只要定时到,组成心字的18只发光二极管就会按程序先做左移位,再全亮全灭3次,然后再右移,再全亮全灭3次如此循环1分钟;
安全省电模式——电源电路上装了保险管只要电流大于额定电流保险就断来保护电路,省电模式:
不看时显示不亮,看时,按下一键显示就亮,尽量达到人性化。
五、[软件系统设计]
计时程序是实现电子时钟的核心内容,本程序用中断time0来控制,计时显示的单元从50h开始,50h=秒的个位,51h=秒的十位,52h=分的个位,53h=分的十位,54h=时的个位,55h=时的十位
org000bh
jmptime0
movtmod,#00010001b
movie,#10001010b
movip,#00000010b
movth0,#(65536-2000)/256
movtl0,#low(65536-2000)
mov4fh,#02;
两个中断250次为1秒
定时报警程序
作用是判断时间是否与设置的闹钟时间相等,如相等则开启闹钟。
单片机内定时振铃开关使用软件开关,即用标志寄存器,且程序设置了3次定时,可见要使电子时钟定时打铃,必须同时具备两个条件,第一:
定时振铃开;
第二:
当前定时项数不为0项。
因为要使电子时钟定时打铃,必须同时具备上述的两个条件,所以在单片机执行查询定时各项的程序之前,主程序会首先查询这两个条件是否同时满足,如果满足的话,则进行一轮查询,所谓一轮查询定时,即将当前时间与定时各项一一比较,看是否相符,如果查到某项相符,则调用音乐程序。
每查完一项,寄存器中的值会自动减1(即为定时时间的项数)。
当定时时间的项数值自动减为0时,则表示这一轮查询定时时间完毕,只要条件允许(定时音乐开且定时项数不为0),有可以进行一轮新的查询定时时间。
定时1:
33h=分,34h=时,定时2:
35h=分,36h=时,定时3:
37h=分,38h=时,定时状态=39h;
定时显示的单元从60h开始,60h=定时状态,61h=此时;
定时状态的音乐种类,62h=分的个位,63h=分的十位;
64h=时的个位,65h=时的十位
温度程序:
57h=温度的十位,58h=温度的个位,
wendu:
CALLREST;
调复位
MOVA,#0CCH
CALLWRITE调写程序
MOVA,#4EH
CALLWRITE
MOVA,#00H
MOVA,#7FH
CALLREST
MOVA,#0CCH
MOVA,#44H
MOVR0,#20
LOOP5:
MOVR1,#100
LOOP6:
MOVR2,#250
DJNZR2,$
DJNZR1,LOOP6
DJNZR0,LOOP5
MOVA,#0BEH
CALLREAD2;
调读程序
MOVA,#0ECH
CALLHUAN
clr20h.3
ret
******初始化*************************************
org0000h;
计时显示的单元从50h开始,50h=秒的个位,51h=秒的十位,52h=
jmpmain;
分的个位,53h=分的十位,54h=时的个位,55h=时的十位,56h=
org000bh;
星期,57h=温度的十位,58h=温度的个位,30h=秒,31h=分,32h=时,定时1:
33h=分,34h=时,
jmptime0;
定时2:
37h=分,38h=时,定时状态=39h
org001bh
jmptime1
************主程序********************************main:
movr0,#00;
等待
djnzr0,$
movsp,#6ah;
定时显示的单元从60h开始,60h=定时状态,61h=此时
movtmod,#00010001b;
定时状态的音乐种类,62h=分的个位,63h=分的十位
movie,#10001010b;
64h=时的个位,65h=时的十位
movip,#00000010b
mov4eh,#00;
光报警
mov2dh,#250;
中断250次为0.5秒
mov2fh,#00h;
设置计时显示数码管的编号
mov2eh,#00h;
设置定时显示数码管的编号
mov24h,#00h;
设置年月日显示数码管的编号
mov30h,#00h;
设置时间的初值
mov31h,#00h
mov32h,#12h
mov56h,#01h;
设置星期初值
mov33h,#00h;
设置定时初值
mov34h,#01h
mov35h,#00h
mov36h,#02h
mov37h,#00h
mov38h,#03h
mov39h,#01h;
设置定时状态初始值
mov3ah,#01h;
设置定时状态1时音乐的初始值
mov3bh,#02h;
设置定时状态2时音乐的初始值
mov3ch,#03h;
设置定时状态3时音乐的初始值
mov21h,#00h;
设置年初值,00表示2000年
mov22h,#01h;
设置月初值
mov23h,#01h;
设置日初值
setb20h.0;
12,24标志位,1表示12小时制,0表示24小时制
setb20h.1;
定时,计时标志位,1表示计时,0表示定时
clr20h.2;
定时到否标志位,1表示到,0表示不到
setb20h.3;
是否允许检测温度标志位,1表示允许
clr20h.4;
年标志位,1表示闰年
setb20h.5;
1表示31天,0表示30天
clr20h.6;
1表示显示年月日
setbp3.0;
上下午标志位,1表示上午,0表示下午
clrp1
setbtr0
*************星期设置程序*************************************
start:
jbp2.0,q1;
调整星期
calldel;
消除抖动
mova,56h
adda,#01h
cjnea,#07h,z1
mov56h,#08h
jmpa1
z1:
cjnea,#09h,z2
mov56h,#01h
z2:
mov56h,a
a1:
calldel
jnbp2.0,a1
jmpstart
*************设置12--24小时转换程序********************************
q1:
jbp2.1,q2;
12,24小时制转换
消除抖动
jnb20h.0,b1
jnbp3.0,b2;
将12小时制转换为24小时制
jmpa2
b2:
mova,32h
adda,#12h
daa
cjnea,#24h,b3
mov32h,#00h
setbp3.0
jmpa2
b3:
mov32h,a
b1:
mova,32h;
将24小时制转换为12小时制
cjnea,#00h,b7
mov32h,#12h
clrp3.0
b7:
cjnea,#20h,b8
mov32h,#08h
b8:
cjnea,#21h,b9
mov32h,#09h
clrp3.0
b9:
cjnea,#12h,b4
b4:
jncb5
b5:
subba,#12h
mov32h,a
a2:
cpl20h.0
b6:
jnbp2.1,b6
jmpstart
*************定时计时调整程序*************************************
q2:
jbp2.2,q3;
定时,计时转换
cpl20h.1
a3:
jnbp2.2,a3
q3:
jbp2.3,q4;
调整定时,计时的时,年
jnb20h.6,c00
callyearyear
jmpa4
c00:
jnb20h.1,c1
jb20h.0,c2;
计时调整
mova,32h
cjnea,#24h,c3
mov32h,#00h
jmpa4
c3:
c2:
cjnea,#13h,c4
mov32h,#01h
cplp3.0
c4:
c1:
mova,39h;
定时调整
cjnea,#01h,c5
movr0,#34h
jmpc10
c5:
cjnea,#02h,c6
movr0,#36h
c6:
movr0,#38h
c10:
jb20h.0,c7
mova,@r0
cjnea,#24h,c8
mov@r0,#00h
c8:
mov@r0,a
c7:
mova,@r0
cjnea,#13h,c9
mov@r0,#01h
c9:
a4:
jnbp2.3,a4
q4:
jbp2.4,q5;
调整定时,计时的分,月
calldel
jnb20h.6,d00
callyueyue
jmpa5
d00:
jnb20h.1,d1
mova,31h;
计时分调整
cjnea,#60h,d2
d2:
mov31h,a
d1:
mova,39h;
定时分调整
cjnea,#01h,d3
movr0,#33h
jmpd5
d3:
cjnea,#02h,d4
movr0,#35h
d4:
movr0,#37h
d5:
cjnea,#60h,d6
d6:
a5:
jnbp2.4,a5
q5:
jbp2.5,q6;
调整计时的秒和定时的状态,日
jnb20h.6,e00
callri
jmpa6
e00:
jnb20h.1,e1
mova,30h;
调整计时的秒
cjnea,#60h,e2
mov30h,#00h
e2:
mov30h,a
e1:
调整定时状态
cjnea,#04h,e3
mov39h,#01h
e3:
mov39h,a
a6:
jnbp2.5,a6
*************调整定时的报警音乐,省电模式*********************************
q6:
jbp2.6,q7
jnb20h.1,gh
cplp3.4
jmpi3
gh:
mova,39h
cjnea,#01h,i1
mova,3ah
mov3ah,a
cjnea,#07h,i3
mov3ah,#01h
i1:
cjnea,#02h,i2
mova,3bh
adda,#01H
mov3bh,a
mov3bh,#01h
i2:
mova,3ch
mov3ch,a
mov3ch,#01h
i3:
jnbp2.6,i3
************定时报警
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 定时 闹钟 值得 看看