×
嵌入式 > 技术百科 > 详情

MCS-51单片机的智能时钟控制系统设计

发布时间:2023-06-12 发布时间:
|
随着电子技术产业结构调整,生产工艺的飞速发展,人们生活水平的不断提高,家用电器逐渐普及,市场对于智能时钟控制系统的需求也越来越大。本文所述智能时钟控制系统主要指时钟显示、时间设置、闹铃及家用电器定时开关机(可扩展功能)等控制系统。 本文采用进入市场时间早、总线开放、仿真开发设备多、芯片及其开发设备价格低廉、速度较快、电磁兼容性较好的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芯片实现智能时钟控制功能。由于系统软件主要完成时钟显示、闹铃、时间设置等功能。源程序主要包括主程序、中断子程序、显示子程序、定时子程序、延时子程序等。

实现程序如下: ……

;**************************; 以下为主程序 (检测各键是否按下) ;***************************MainLoop: jb AlarmSetKey,CheckMinuteKey call Delay jb AlarmSetKey,CheckMinuteKey setb ClockMode call AlarmSet CheckMinuteKey: jb MinuteKey,CheckHourKey mov a,Minute add a,#1 mov Minute,a cjne a,#3ch,NotOver1 mov Minute,#0 NotOver1: jnb MinuteKey,$ CheckHourKey: 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微处理器为核心,具有集成度高、性能稳定、抗干扰能力强、性价比高的优点。经软件仿真和实际功能验证,证明设计可靠、设计方案可行,在实际应用中有较大的实 用价值。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
家庭网络:从带宽共享走向内容共享