龔虹瑞,黃小莉
(西華大學(xué)電氣信息學(xué)院,四川 成都 610039)
隨著科技的不斷發(fā)展,人們的生活節(jié)奏越來越快。在忙碌的現(xiàn)代生活中,人們經(jīng)常會(huì)忘記做一些重要的事情。記憶力和身體狀況不佳的老年病人,常常會(huì)忘記服藥或者錯(cuò)過正確的服藥時(shí)間;年輕的上班族也可能會(huì)因?yàn)榉泵Φ墓ぷ魍浄帽=∷幤贰?/p>
針對(duì)以上問題,本文利用STC89C52單片機(jī)設(shè)計(jì)了一套智能藥盒系統(tǒng)。該系統(tǒng)是將電子時(shí)鐘和普通藥盒結(jié)合,是一種具備定時(shí)提醒服藥功能的電子家居用品,面向需要每天服藥、服用保健品的人士使用。當(dāng)預(yù)先設(shè)定的服藥時(shí)間到時(shí),提醒聲音就會(huì)響起,以便服藥者準(zhǔn)時(shí)服藥。
系統(tǒng)以STC89C52單片機(jī)為核心,采用+5V電源供電,通過DS1302時(shí)鐘芯片計(jì)時(shí),由LED顯示,通過GSM模塊發(fā)送短信,外圍輔以按鍵調(diào)整電路、復(fù)位晶振電路等。其原理框圖如圖1所示。
圖 1 智能藥盒系統(tǒng)框圖
為滿足系統(tǒng)時(shí)鐘數(shù)據(jù)的高精度和高性價(jià)比的要求,時(shí)鐘電路部分采用Dallas公司研發(fā)的DS1302時(shí)鐘芯片。該芯片是一種低功耗、高性能、并帶有RAM的時(shí)鐘芯片。它可對(duì)秒、分、時(shí)、周、日、月、年等進(jìn)行計(jì)時(shí),有閏年補(bǔ)償?shù)墓δ埽捎萌€接口,可一次性傳送多字節(jié)的RAM數(shù)據(jù)或者時(shí)鐘信號(hào),也能與CPU進(jìn)行同步通信[1],工作電壓為2.5~5.5 V。
DS1302為DS1202的一款升級(jí)產(chǎn)品,并能與DS1202相互兼容, 增加了雙電源的引腳,同時(shí)還具備對(duì)后背電源進(jìn)行涓流充電的能力。DS1302的2個(gè)電源分別是主電源Vcc2和后備電源Vcc1。這樣可保證當(dāng)主電源處于關(guān)閉狀態(tài)時(shí),時(shí)鐘也能正常連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電[2-3]。當(dāng)Vcc2大于(Vcc1+0.2)V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。DS1302有2個(gè)振蕩源X1和X2,外接32.768 kHz晶振。
DS1302采用三線接口與單片機(jī)進(jìn)行同步通信。其中,RST是復(fù)位/片選線,通過把RST輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送,I/O為數(shù)據(jù)輸入輸出腳,SCLK為時(shí)鐘信號(hào)輸出腳。該模塊的電路圖如圖2所示。
圖 2 DS1302時(shí)鐘芯片電路
GSM(global system for mobile communications)是當(dāng)前應(yīng)用最廣泛的數(shù)字移動(dòng)通信標(biāo)準(zhǔn)。本系統(tǒng)采用西門子公司開發(fā)的一款雙頻900/1 800 MHz高度集成的芯片TC35來實(shí)現(xiàn)該標(biāo)準(zhǔn)下的通信[4]。
如圖3所示,GSM模塊采用TC35作為短信發(fā)送芯片,MAX232作為串口電路,由此實(shí)現(xiàn)單片機(jī)與TC35的通信。
圖 3 GSM模塊與串口通信電路
如圖4所示,主程序流程可分為以下幾部分。1)初始化。聲明子函數(shù)、全局變量,打開、設(shè)定相關(guān)中斷,設(shè)置波特率,以及DS1302的相關(guān)初始化。2)建立DS1302與單片機(jī)的通信協(xié)議,調(diào)入DS1302的函數(shù),獲取一個(gè)當(dāng)前的時(shí)間值,并保存到相應(yīng)數(shù)組中。3)進(jìn)行按鍵掃描。若沒有按鍵按下,直接顯示時(shí)間[5-7];若按下鬧鐘模式鍵,顯示鬧鐘值,并且可繼續(xù)通過按鍵進(jìn)行鬧鐘的設(shè)定以及對(duì)應(yīng)的顯示(某位閃爍代表被選中)。4)進(jìn)入報(bào)警系統(tǒng)的掃描判斷。若當(dāng)前時(shí)間值等于鬧鐘的設(shè)定值,便報(bào)警1 min,若1 min內(nèi)沒有取消報(bào)警,則通過GSM模塊發(fā)送短信。5)程序返回到時(shí)間獲取的子程序。如此循環(huán)執(zhí)行。
圖 4 主程序流程圖
將單片機(jī)的P1口對(duì)應(yīng)位置1,P3口對(duì)應(yīng)位置0。當(dāng)系統(tǒng)第1次監(jiān)測(cè)到有按鍵被按下時(shí),為防止硬件電路的抖動(dòng)引起的誤斷,需要在一定的延時(shí)之后進(jìn)行第2次按鍵判斷。若結(jié)果仍然是被按下,則判斷為人為按鍵,將按鍵標(biāo)志位Z置1,并判斷出是哪個(gè)按鍵被按下,然后跳出子程序,進(jìn)入主程序循環(huán),如圖5所示。當(dāng)下一次進(jìn)入按鍵子程序時(shí),若未抬手,繼續(xù)將Z置1,跳出子程序;若已抬手,則判斷標(biāo)志位Z。Z為1,表示有鍵按下,然后先將Z置0,再執(zhí)行對(duì)應(yīng)的按鍵功能。傳統(tǒng)按鍵程序通常會(huì)采用一個(gè)while死循環(huán)等待按鍵抬起[8-9],這就導(dǎo)致在按鍵時(shí)系統(tǒng)停留在按鍵子程序,無法進(jìn)入其他子程序。雖然按鍵的時(shí)間看上去很短,但對(duì)于單片機(jī)來說已經(jīng)停留太久,從而導(dǎo)致顯示中斷,這就是通常按鍵時(shí)會(huì)出現(xiàn)顯示屏閃爍的原因。本設(shè)計(jì)的按鍵程序,利用一個(gè)標(biāo)志位Z解決了這個(gè)問題。雖然這種設(shè)計(jì)也使讀鍵時(shí)間變長(zhǎng);但由于整個(gè)程序較短,這種影響不明顯。兩者相比較,本設(shè)計(jì)采用的方法比傳統(tǒng)方法對(duì)于該系統(tǒng)的穩(wěn)定性更高。
圖 5 按鍵程序流程圖
首先初始化串口:REN=1,允許接收;SMOD=0,波特率不加倍;T1為方式2;波特率設(shè)置為9 600。然后判斷是否按下取消鬧鐘聲音提醒鍵,如果沒有按下,表示服藥者沒有按時(shí)服藥,系統(tǒng)則會(huì)自動(dòng)調(diào)用GSM模塊發(fā)送1條提示短信到服藥者監(jiān)護(hù)人手機(jī)上。具體程序流程是首先設(shè)置發(fā)送數(shù)據(jù)格式(通常為TEXT格式),然后設(shè)置目的手機(jī)號(hào)碼,最后發(fā)送要求的字符串,如圖6所示。另外,還有2點(diǎn)值得說明:TC35采用AT指令,要使用C語言編寫程序,必須先轉(zhuǎn)化;TC35和單片機(jī)通過串口通信,因此必須先建立通信協(xié)議,采用ASCII碼發(fā)送數(shù)據(jù)到TC35芯片上。
圖 6 GSM模塊程序流程圖
根據(jù)上述思想原理,并結(jié)合實(shí)際需要,采用仿真軟件PROTUES對(duì)整個(gè)系統(tǒng)進(jìn)行了仿真,效果圖如圖7所示。
圖 7 智能藥盒系統(tǒng)仿真圖
在仿真的過程中,分別對(duì)時(shí)間的顯示和鬧鐘的設(shè)置進(jìn)行了測(cè)試。
1)時(shí)間測(cè)試。8位數(shù)碼管從左到右分別顯示月、日、時(shí)、分,測(cè)試結(jié)果如圖7中所示,時(shí)鐘各位顯示正確,并且能夠正常運(yùn)行。
2)鬧鐘測(cè)試。8位數(shù)碼管從左到右分別顯示:鬧鐘編號(hào)(第1位),預(yù)設(shè)4個(gè)鬧鐘,編號(hào)范圍為1~4;鬧鐘的開關(guān)狀態(tài)顯示(第2、3、4位),用于顯示該編號(hào)鬧鐘的開關(guān)狀態(tài)(ON或OFF);鬧鐘時(shí)位(第5、6位);鬧鐘分位(第7、8位)。測(cè)試結(jié)果如圖8所示。
圖 8 鬧鐘設(shè)置仿真圖
在仿真成功的基礎(chǔ)上,設(shè)計(jì)出實(shí)物,如圖9所示。經(jīng)過一系列的軟硬件調(diào)試,整個(gè)智能藥盒系統(tǒng)的功能已經(jīng)基本實(shí)現(xiàn)。
圖 9 智能藥盒系統(tǒng)實(shí)物圖
1)實(shí)現(xiàn)了設(shè)置鬧鐘狀態(tài)下的閃爍顯示。在設(shè)置鬧鐘的狀態(tài)下,某位閃爍表示被選中,這時(shí)可以通過按鍵對(duì)被選中位進(jìn)行加減,也可以移動(dòng)被選位,
從而實(shí)現(xiàn)鬧鐘的設(shè)置。這個(gè)功能是本設(shè)計(jì)的一個(gè)難點(diǎn),它的實(shí)現(xiàn),使系統(tǒng)的顯示更加直觀。
2)實(shí)現(xiàn)了多鬧鐘功能。在軟件程序的設(shè)計(jì)上采用4個(gè)5位數(shù)組使系統(tǒng)最多可設(shè)置4個(gè)鬧鐘。每個(gè)數(shù)組都包括月、日、時(shí)、分4位數(shù)據(jù),另有一位控制每個(gè)鬧鐘的開關(guān)狀態(tài),使每個(gè)鬧鐘都有獨(dú)立的開關(guān)。
3)實(shí)現(xiàn)了短信提醒功能。在鬧鐘報(bào)警沒有得到響應(yīng)的情況下,系統(tǒng)會(huì)調(diào)用GSM短信子程序,單片機(jī)將AT指令以ASCII碼的形式通過串口發(fā)送到TC35芯片上,TC35便會(huì)發(fā)送1條提示短信到服藥者監(jiān)護(hù)人的手機(jī)上。這是本次設(shè)計(jì)的另一難點(diǎn),也是一個(gè)創(chuàng)新點(diǎn)。
本文利用經(jīng)濟(jì)實(shí)用的單片機(jī)及簡(jiǎn)單的時(shí)鐘芯片等設(shè)計(jì)了一套智能藥盒系統(tǒng)。該系統(tǒng)能夠設(shè)置4個(gè)鬧鐘,可正確顯示日期和時(shí)間,并能夠在服藥者未響應(yīng)鬧鐘的情況下,自動(dòng)發(fā)送1條提示短信到服藥者的監(jiān)護(hù)人手機(jī)上,從而讓使用者不再延誤服藥,進(jìn)一步提高了藥盒的實(shí)用性、方便了服藥者的生活。
[1]張曉東.多功能鐘控語音提醒器[J].電子制作,2005,13(5):13-14.
[2]易志明,林凌,郝麗宏.基于IIC1.0的時(shí)鐘芯片應(yīng)用程序設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2002,2(9):25-28.
[3]張韻詩,蔡佩璇,周庭碩.智慧型藥盒與RFID藥罐提醒準(zhǔn)時(shí)服藥[J].中國(guó)防偽報(bào)道,2009,8(8):16-18.
[4]亓浩名,王利,武毅,等.基于單片機(jī)的GSM短信收發(fā)模塊設(shè)計(jì)[J].電子測(cè)試,2012,19(3):63-68.
[5]崔瑞林.電子藥盒提醒器[J].現(xiàn)代營(yíng)銷:創(chuàng)富信息版,2004,2(3):15.
[6]蘭景軒.保健藥盒的自述[J].金秋,2003,12(6):52-53.
[7]宣彩平,王皓,鄒國(guó)良.利用GSM無線模塊發(fā)送短消息[J].計(jì)算機(jī)應(yīng)用,2004,24(5):148-150.
[8]謝自美.電子線路設(shè)計(jì)、實(shí)驗(yàn)、測(cè)試[M].武漢:華中科技大學(xué)出版社,2009:15-20.
[9]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2009:37-42.