历史上的今天
今天是:2025年05月26日(星期一)
2020年05月26日 | 51单片机在智能时钟控制系统中的应用设计
2020-05-26 来源:elecfans
随着电子技术产业结构调整,生产工艺的飞速发展,人们生活水平的不断提高,家用电器逐渐普及,市场对于智能时钟控制系统的需求也越来越大。本文所述智能时钟控制系统主要指时钟显示、时间设置、闹铃及家用电器定时开关机(可扩展功能)等控制系统。
本文采用进入市场时间早、总线开放、仿真开发设备多、芯片及其开发设备价格低廉、速度较快、电磁兼容性较好的MCS-51型单片机为核心实现智能时钟控制。
硬件系统设计
智能时钟控制系统以MCS-51兼容单片机AT89C51微处理器为核心,由时钟显示模块、定时控制模块、电源模块等电路组成。
AT89C51微处理器
AT89C51是一款采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容的单片机,其主要性能特点有:
(1)高性能、低功耗的8Byte微控制器,RISC精简指令集机构,指令功能强大,且多数为单周期指令,具有低功耗的闲置和掉电控制模式、5个中断源、两个16位定时器/计数器等功能。
(2)片内集成4KB可编程闪烁存储器,可进行1000次以上写/擦循环操作,数据保留时间可达10年,支持三级程序存储器锁定。
(3)丰富强大的外部接口性能:32可编程I/O线,可编程串行通道,片内振荡器和时钟电路。

时钟显示模块
显示模块采用LG2841BH数码管,动态扫描,8550三极管位选驱动 , AT89C51微处理器P0口直接段选实现小时、分钟显示,具有显示亮度强、稳定性能好、显示误差少等优点。
定时控制模块
该模块配合相应程序可实现时间调整、闹铃、家用电器定时开关机等功能。P3.2为时间调整模式选择键、P3.3为小时调整键、P3.5为分钟调整键;定时控制通过继电器JZC-32F和JRC-Z7F实现控制功能,且通过修改程序可进行定时控制功能扩展,实现家用电器定时开关机等功能。
电源模块
电源模块设计的质量直接关系到单片机系统的稳定性,设计系统中由于单片机、控制继电器等元器件均可采用直流+5V供电,可选用稳压性能较好的三端稳压集成电路LM7805实现。
软件系统设计
系统利用伟福6000编写源代码,MEP500烧写AT89C51芯片实现智能时钟控制功能。由于系统软件主要完成时钟显示、闹铃、时间设置等功能。源程序主要包括主程序、中断子程序、显示子程序、定时子程序、延时子程序等。
实现程序如下:
……
;*
jb HourKey,CheckAlarmA
mov a,Hour
add a,#1
mov Hour,a
cjne a,#18h,NotOver2
mov Hour,#0
NotOver2:
jnb HourKey,$
CheckAlarmA:
jnb AlarmTimeOnA,CheckAlarmP
call StartPc; call AlarmProcess
ajmp ToReturn
CheckAlarmP:
jnb AlarmTImeOnP,ToReturn
call ShutPc
ToReturn:
ajmp MainLoop
;**************************; 定时器TImer0中断服务程序(此程序每8ms执行一次)
;***************************
TImeInt:
mov th0,#0E0h
mov tl0,#0bfh
push acc
push psw
SETB rs0
clr rs1
d jnz OneSecondCounter,NotoneSecond
mov OneSecondCounter,#125
call Clock
call ConvertoBuffer
NotoneSecond:
call ScanDisplay
pop psw
pop acc
reTI
; ***************************
; 扫描显示子程序
;***************************
ScanDisplay:
mov r1,#DisplayBuffer
mov R4,#11111011b
play:
mov a,R4
mov P2,A
mov A,@R1
mov DPTR,#TAB
movc A,@A+DPTR
mov P0,A
lcall Delay
inc R1
mov A,R4
jnb ACC.7,ENDOUT
rl A
mov R4,A
ajmp PLAY
endout: SETB P2.7
mov P0,#0FFH ret
TAB:DB 0C0H,0F9H,0A4H,0B0H,
99H,92H,82H,0F8H,80H,90H,7FH,
0B7H,0FFH
;***************************
; 时钟内容加1秒的子程序
;***************************
Clock:
mov a,Second
add a,#1
mov Second,a
cjne a,#3cH,NotOverFlow
mov Second,#0
mov a,Minute
add a,#1
mov Minute,a
cjne a,#3cH,NotOverFlow
mov Minute,#0
mov a,Hour
add a,#1
mov Hour,a
cjne a,#18H,NotOverFlow
mov Hour,#0
NotOverFlow:
mov a,Second
jnz NotAlarm
jnb AlarmAOnOff,PAlarm
mov a,Minute
cjne a,AlarmAMinute,PAlarm
mov a,Hour
cjne a,AlarmPHour,PAlarm
ajmp alarming
PAlarm:
jnb AlarmPOnOff,NotAlarm
mov a,Minute
cjne a,AlarmPMinute,NotAlarm
mov a,Hour
cjne a,AlarmPHour,NotAlarm
ajmp Alarming1
Alarming:
setb AlarmTimeOnA
ajmp NotAlarm
Alarming1:
setb AlarmTimeOnP;
NotAlarm:
ret
;***************************
; 将时钟内容或闹时设置值转换到显示缓冲区子程序
;***************************
ConvertoBuffer:
mov r1,#DisplayBuffer
jb ClockMode,DispAlarmSet
mov a,Second
mov DispSecond,a
mov a,Minute
mov Dispminute,a
mov a,Hour
mov DispHour,a
ajmp Convert
DispAlarmSet:
jb AlarmAOnOff,AlarmAOn
mov DispSecond,#00h
jb AlarmPOnOff,AlarmPOn
mov DispSecond,#00h
ajmp Convert
AlarmAOn:
mov DispSecond,#11
NextA:
mov a,AlarmAMinute
mov Dispminute,a
mov a,AlarmAHour
mov DispHour,a
ajmp Convert
AlarmPOn:
mov DispSecond,#11
NextP:
mov a,AlarmPMinute
mov Dispminute,a
mov a,AlarmPHour
mov DispHour,a
Convert:
mov a,DispSecond
mov b,#10
div ab
mov @r1,b
inc r1
mov @r1,a
inc r1
mov a,DispMinute
mov b,#10
div ab
mov @r1,b
inc r1
mov @r1,a
inc r1
mov a,DispHour
mov b,#10
div ab
mov @r1,b
inc r1
mov @r1,a
ret
结束语
该智能时钟控制系统,以AT89C51微处理器为核心,具有集成度高、性能稳定、抗干扰能力强、性价比高的优点。经软件仿真和实际功能验证,证明设计可靠、设计方案可行,在实际应用中有较大的实 用价值。
上一篇:基于51单片机嵌入式系统仿真设计
史海拾趣
|
分享给大家 LM3S8962 驱动程序模块 。 资料件附件1 附件包括CT24C02的PDF 和 连接CT2402的电路图 以及 标准的程序,是TI提供的 分享周立功先生提供的 两个I2C模块程序 1。 利用GPIO 的PB2,PB3自己模拟的程序,经过验证OK的 ...… 查看全部问答> |
|
求助,maplab ide 下mcc编译怎么不能声明int型变量啊? 早明变量就报错,这是怎么回事? 原代码: #include void main(void){ TRISC = 0b00000000; PORTC = 0b00000000; PORTCbits.RC1 = 1; PORTCbits.RC3 = 1; unsigned ...… 查看全部问答> |
|
以下是通信数据 写:7EFF03C021010100130206000000000305C223050802070266217E 读:7EFF03C021040100090305C2230547E17E 写:7EFF03C0210102000E02060000000008020702B60B7E 读:7EFF03C0210202000E0206000000000802070288887E 读:7EFF03C02101300 ...… 查看全部问答> |
|
头文件中定义AIC_SMR[0]是这样定义的:AT91_REG AIC_SMR[32]; // Source Mode Register。 程序如下 #incluude #include int _irq_FIQ(void) {   ...… 查看全部问答> |
|
Raw os的事件触发系统有以下特点: 1 基于UML的状态机理念设计,实现了有限状态机(fsm)以及层次状态机(HSM)。 2 实现了活动对象(ACTIVE OBJECT)的特性,一个活动对象包含了一个消息队列以及一个状态机。活动对象是具有优先级的,这样任务的实时性 ...… 查看全部问答> |
|
大家好, 我现在在做TMS570LS3137的Ethernet模块,硬件用的是TI的TMS570LS3137开发板。我下载了Ethernet Drivers LWIP Demo,并将该工程导入CCS里面,我把程序中的mac地址改成我电脑(上位机 ...… 查看全部问答> |
|
职场潜规则之不能说的话:在职场上一句不经意的话都可能让同事或上司误解你和动机,所以要管好嘴巴,留心对别人说出的每一个字。尤其要记得,下面这五句话被打上了绝对禁言的标志,如果总有意无意把它们挂在嘴边,那么也许你就能找到职场人缘差 ...… 查看全部问答> |




