隨著電子技術產業結構調整,生產工藝的飛速發展,人們生活水平的不斷提高,家用電器逐漸普及,市場對于智能時鐘控制系統的需求也越來越大。本文所述智能時鐘控制系統主要指時鐘顯示、時間設置、鬧鈴及家用電器定時開關機(可擴展功能)等控制系統。 本文采用進入市場時間早、總線開放、仿真開發設備多、芯片及其開發設備價格低廉、速度較快、電磁兼容性較好的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: 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微處理器為核心,具有集成度高、性能穩定、抗干擾能力強、性價比高的優點。經軟件仿真和實際功能驗證,證明設計可靠、設計方案可行,在實際應用中有較大的實 用價值。 |