新闻  |   论坛  |   博客  |   在线研讨会
基于MCS-51单片机的智能时钟控制系统设计
yanqin | 2009-04-17 14:52:41    阅读:1078   发布文章

  随着电子技术产业结构调整,生产工艺的飞速发展,人们生活水平的不断提高,家用电器逐渐普及,市场对于智能时钟控制系统的需求也越来越大。

  本文所述智能时钟控制系统主要指时钟显示、时间设置、闹铃及家用电器定时开关机(可扩展功能)等控制系统。

  本文采用进入市场时间早、总线开放、仿真开发设备多、芯片及其开发设备价格低廉、速度较快、电磁兼容性较好的MCS-51型单片机为核心实现智能时钟控制。

  硬件系统设计

  智能时钟控制系统以MCS-51兼容单片机AT89C51微处理器为核心,由时钟显示模块、定时控制模块、电源模块等电路组成,电路原理图和组装图如图1、图2所示。

  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芯片实现智能时钟控制功能。由于系统软件主要完成时钟显示、闹铃、时间设置等功能。源程序主要包括主程序、中断子程序、显示子程序、定时子程序、延时子程序等。

  实现程序如下:
……

;**************************;以下为主程序(检测各键是否按下)
;***************************MainLoop:
jbAlarmSetKey,CheckMinuteKey
callDelay
jbAlarmSetKey,CheckMinuteKey
setbClockMode
callAlarmSet
CheckMinuteKey:
jbMinuteKey,CheckHourKey
mova,Minute
adda,#1
movMinute,a
cjnea,#3ch,NotOver1
movMinute,#0
NotOver1:
jnbMinuteKey,$
CheckHourKey:
jbHourKey,CheckAlarmA
mova,Hour
adda,#1
movHour,a
cjnea,#18h,NotOver2
movHour,#0
NotOver2:
jnbHourKey,$
CheckAlarmA:
jnbAlarmTimeOnA,CheckAlarmP
callStartPc;callAlarmProcess
ajmpToReturn
CheckAlarmP:
jnbAlarmTimeOnP,ToReturn
callShutPc
ToReturn:
ajmpMainLoop
;**************************;定时器Timer0中断服务程序(此程序每8ms执行一次)
;***************************
TimeInt:
movth0,#0E0h
movtl0,#0bfh
pushacc
pushpsw
setbrs0
clrrs1
djnzOneSecondCounter,NotoneSecond
movOneSecondCounter,#125
callClock
callConvertoBuffer
NotoneSecond:
callScanDisplay
poppsw
popacc
reti
;***************************
;扫描显示子程序
;***************************
ScanDisplay:
movr1,#DisplayBuffer
movR4,#11111011b
play:
mova,R4
movP2,A
movA,@R1
movDPTR,#TAB
movcA,@A+DPTR
movP0,A
lcallDelay
incR1
movA,R4
jnbACC.7,ENDOUT
rlA
movR4,A
ajmpPLAY
endout:SETBP2.7
movP0,#0FFHret
TAB:DB0C0H,0F9H,0A4H,0B0H,
99H,92H,82H,0F8H,80H,90H,7FH,
0B7H,0FFH
;***************************
;时钟内容加1秒的子程序
;***************************
Clock:
mova,Second
adda,#1
movSecond,a
cjnea,#3cH,NotOverFlow
movSecond,#0
mova,Minute
adda,#1
movMinute,a
cjnea,#3cH,NotOverFlow
movMinute,#0
mova,Hour
adda,#1
movHour,a
cjnea,#18H,NotOverFlow
movHour,#0
NotOverFlow:
mova,Second
jnzNotAlarm
jnbAlarmAOnOff,PAlarm
mova,Minute
cjnea,AlarmAMinute,PAlarm
mova,Hour
cjnea,AlarmPHour,PAlarm
ajmpalarming
PAlarm:
jnbAlarmPOnOff,NotAlarm
mova,Minute
cjnea,AlarmPMinute,NotAlarm
mova,Hour
cjnea,AlarmPHour,NotAlarm
ajmpAlarming1
Alarming:
setbAlarmTimeOnA
ajmpNotAlarm
Alarming1:
setbAlarmTimeOnP;
NotAlarm:
ret
;***************************
;将时钟内容或闹时设置值转换到显示缓冲区子程序
;***************************
ConvertoBuffer:
movr1,#DisplayBuffer
jbClockMode,DispAlarmSet
mova,Second
movDispSecond,a
mova,Minute
movDispminute,a
mova,Hour
movDispHour,a
ajmpConvert
DispAlarmSet:
jbAlarmAOnOff,AlarmAOn
movDispSecond,#00h
jbAlarmPOnOff,AlarmPOn
movDispSecond,#00h
ajmpConvert
AlarmAOn:
movDispSecond,#11
NextA:
mova,AlarmAMinute
movDispminute,a
mova,AlarmAHour
movDispHour,a
ajmpConvert
AlarmPOn:
movDispSecond,#11
NextP:
mova,AlarmPMinute
movDispminute,a
mova,AlarmPHour
movDispHour,a
Convert:
mova,DispSecond
movb,#10
divab
mov@r1,b
incr1
mov@r1,a
incr1
mova,DispMinute
movb,#10
divab
mov@r1,b
incr1
mov@r1,a
incr1
mova,DispHour
movb,#10
divab
mov@r1,b
incr1
mov@r1,a
ret

  结束语

  该智能时钟控制系统,以AT89C51微处理器为核心,具有集成度高、性能稳定、抗干扰能力强、性价比高的优点。经软件仿真和实际功能验证,证明设计可靠、设计方案可行,在实际应用中有较大的实用价值。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客