王瀚增,姜欣欣
(延邊大學 工學院,吉林 延吉 133002)
隨著電子技術行業的迅猛發展,電子產品的市場需求量增多,許多傳統產品受到前所未有的沖擊。電子鐘是日常生活中的必需品,但傳統電子鐘功能單一,不能很好地滿足人們日常的需求。多功能電子鐘解決了這些問題,不僅擁有傳統電子鐘的功能,還擁有顯示日期、溫度測試、電子鬧鐘等常用功能,大大滿足了人們的需求。
多功能電子鐘不僅制作成本低廉,而且具有廣闊的市場前景。它的成本低廉主要體現在元器件價格較低,其中C51單片機不僅價格低廉,而且編程簡單、功能強大。
ATMEL公司開發的AT89C51單片機是一款具有低電壓、高性能指標的CMOS8位單片機[1]。片內集成有4 kB的Flash存儲器和128 B的數據存儲器,具有速度快、可靠性高、實時性好等特點,被廣泛應用于電子領域。
AT89C51擁有40個引腳,其中包括4個8位并行I/O端口(P0口、P1口、P2口、P3口)、5個中斷源、3個程序加密鎖、2個16位可編程定時器/計數器中斷、1個全雙工的異步串行口、1個看門狗定時器和26個特殊功能寄存器[2]。
(1)顯時。切換按鍵,使四個七段數碼管顯示時間、日期以及溫度等信息。
(2)測溫。利用DS18B20測量溫度。
(3)調時??衫冒存I,任意調整時間和日期。(4)報時。分為鬧鐘報時和整點報時,可使用對應的按鍵開啟。
本設計將系統的硬件分成7個模塊:主控模塊(AT89C51)、直流電源模塊、七段顯示器顯示模塊、按鍵電路、時鐘電路(DS1302)、數字溫度傳感器(DS18B20)和蜂鳴器報時模塊,具體系統設計如圖1所示。
圖1 系統框架
主控模塊是系統的核心,通過DS18B20收集、測量室內的溫度;按鍵進行電路控制,時鐘電路接收主控模塊的命令,調整時間,并將獲取的時間信息送至主控模塊;主控模塊將信息送至七段數碼管顯示;一旦到鬧鐘或者整點時位,蜂鳴器模塊啟動報時功能。
DS1302是由美國DALLAS開發研制,具有時間調節、日期調節等相關功能,其中12個寄存器與之相關。DS1302模塊與C51單片機之間通過串行時鐘、I/O、復位三根線實現連接。如果向該模塊輸入正確的數據,需要在時鐘脈沖信號上升沿到來前確認輸入數據是否正確。當脈沖信號上升沿到達時,將數據寫進DS1302內(由最低位到最高位依次寫入)[3]。若要讀出DS1302數據,則需要等到時鐘脈沖信號下降沿到來時讀出(由最低位到最高位依次讀出)[2]。如表1所示,為DS1302的控制字。寫入數據時,控制字的最高位置1;第6位置1時表示存取RAM中的數據,置0時表示存取日歷時鐘數據;第5位到第1位(A4~A0),表示相關寄存器的地址;第0位表示進行讀寫操作。
表1 DS1302控制字
DS18B20是一種性能穩定、反應快的數字溫度傳感器,測溫范圍為-55~+125℃,具有可編程9~12位A/D轉換精度。相比于傳統的溫度傳感器,DS18B20本身攜帶A/D轉換功能,可以直接通過總線與單片機P3.4口相連,實現將數字量輸入到單片機中的功能。DS18B20進行溫度轉化必須經過初始化(復位脈沖)、發送ROM指令、發送存儲器指令的過程。
按鍵模塊采用S1與S2組合按鍵形式。按住復位按鍵可實現返回時間顯示主界面的功能,按動S2鍵切換調節的對象(溫度、時間、年、月、日)配合S1的調節(增1操作),在增1的過程中達到數值最大值時歸0。實驗結果顯示,兩者配合達到預期效果,具體操作如表2所示。
表2 按鍵操作效果
本實驗程序含有主程序、延時子程序、DS18B20讀取溫度子程序、DS1302時鐘子程序、數碼管顯示子程序、切換調解模式程序、調節設置(時間調整)程序和蜂鳴器報時子程序。各個程序相互協調,執行相應功能,并完成系統所要求的各項功能。具體程序設計流程如圖2所示。
下面是I/O接口定義以及相關變量定義的代碼:
#include <reg52.h>
#define uint unsignedint
#define uchar unsigned char
sbit DS1302_CLK=P3^5;//設置DS1302相應接口
sbit DS1302_IO=P3^6;
sbit DS1302_RST=P3^7;
sbit ACC0=ACC^0;//內部累加器賦值
sbit ACC7=ACC^7;
sbit S2=P1^0;//設置按鍵S2
sbit S1=P1^1;//設置按鍵S1
sbitbz=P1^7;//設置蜂鳴器接口
sbit DQ=P3^4;//定義DS18B20總線接口
unsigned char sec,min,hour,week,day,mon,year,nz_min=0,nz_hour=8,zdn_hour=10,zdf_hour=23;
bit flag_xianshi;//定義所需變量
char mode;
bit show;
uchar last;
uintwendu;
bitflag_nz=1;
bitflag_zd;
bitnz_ok;
由Lab center Electronics公司推出的Proteus軟件,可以專門對單片機系統進行仿真[4]。本實驗調用Proteus中元件庫中的元器件,設計完系統后,調整元器件的位置并連線。修改元器件的屬性及名稱,使之符合設計要求。最后,核實電路圖是否正確。
將生成的hex類型的文件載入AT89C51單片機,點擊Proteus軟件左下角的運行鍵,即可進行仿真,結果如圖3所示。
本實驗以AT89C51單片機為核心,通過對多功能電子鐘內部結構的分析,利用C51語言對所要實現的功能進行編程。利用Proteus軟件進行仿真,設計可以實現顯時、調時、測溫、報時功能于一體的多功能電子鐘,成功實現了預期功能。設計的多功能電子鐘具有廣闊的市場前景,但在使用便利性方面還有較大提升空間,后續將會將繼續研究,以不斷給予完善和優化。
圖3 Proteus仿真結果
參考文獻:
[1] 易麗華,黃 俊.基于AT89C51單片機與DS18B20的溫度測量系統[J].電子與封裝,2009,9(5):39-43.
[2] 張毅剛.單片機原理及接口技術(C51編程)[M].第2版.北京:人民郵電出版社,2016.
[3] 祝鳳蓮.基于DS1302的數字鐘設計[J].科技廣場,2012,(7):126-128.
[4] 李世瑾.基于單片機的智能電子時鐘的設計與應用[J].信息通信,2016,(6):90-92.