邱樺霖
(貴陽學院 電子與通信工程學院,貴州貴陽,550002)
隨著單片機的價格不斷降低,單片機變得十分普及,功能越來越強大,運行也越來越穩(wěn)定,它具有體積小,面向控制,高性價比等優(yōu)點。當今世界,單片機已經無處不在,本次設計采用ESP8266作為時鐘的主控,它的價格低廉,集成了常用的WiFi功能,且能夠提供穩(wěn)定高效的連接,當網絡通暢時可以與調配好的服務器進行通信,當失去網絡連接時,可以搭配DS1302模塊可以繼續(xù)走時,當網絡恢復時便能自動校時。在開發(fā)時,使用Arduino的IDE便可對其進行編程,代碼轉化效率高,便于后期的開發(fā)升級。在顯示方面,該電子時鐘采用了發(fā)明于上世紀50年代的輝光管,亦稱“冷陰極離子管”或“冷陰極充氣管”,是一種利用氣體輝光放電原理而工作的離子管,在電子電路中指示、穩(wěn)壓等作用。由于它在21世紀的今天具有一定的收藏和觀賞價值。所以本設計將歷史的輝光管與現(xiàn)代的單片機進行融合,制作獨一無的,歷史與現(xiàn)代融合產物——輝光鐘。
本次輝光鐘的設計所采用的ESP8266主控是一款擁有高性能的無線芯片,它擁有超低功耗的32位微型MCU,同時具有16位縮減模式,主頻支持80MHz和160MHz,支持RTOS,集成了WiFi MAC/BB/RF/PA/LNA,板載天線。最主要的是ESP8266可以實現(xiàn)遠程控制、OTA升級等。這大大降低了開發(fā)成本,縮短了開發(fā)周期。作為與ESP8266同樣重要的時鐘芯片,本次所采用的是DS1302,它是由美國的DALLAS公司開發(fā)的時鐘電路,其優(yōu)點為高性能、低功耗、并自帶RAM的時鐘電路,不僅可以對基本時間進行計時,還能夠進行閏年補償,可以自動對少于31天的月份日期進行調整。DS1302在與ESP8266的連接上也十分的方便,除去供電接口外,只需三條線便能進行串行通信。ESP8266與DS1302構成了本次設計中主要的控制部分即“產生時間”。在“發(fā)送時間”的設計中,由于ESP8266端口有限,所以筆者選用了74HC595芯片來進行“節(jié)約端口”,74HC595是單片機系統(tǒng)中常用的芯片,它是一個8位串行輸入、并行輸出的位移緩存器,能夠將串行信號轉化為并行信號,并具有一定的驅動能力,可以去除掉三極管等放大電路(后文會介紹詳細功能)。在驅動顯示方面,由于輝光管的驅動特殊性,筆者在查閱大量資料后,發(fā)現(xiàn)常用到的輝光管BCD譯碼驅動芯片有SN74141和K155ID1,本次設計中所采用的是K155ID1。K155ID1在功能上與常見的BCD譯碼芯片幾乎沒有區(qū)別,唯一的一點是因為輝光管的驅動需要170~180V的高壓,維持點亮的電壓約為120V,K155ID1的輸出耐壓為60V左右,所以完全滿足高壓經過電阻和輝光管串聯(lián)之后的電路。以上就是本次設計的總體布局,后文會對每個模塊進行詳細的功能介紹。系統(tǒng)總體設計方案框圖如圖1所示。
圖1 系統(tǒng)方框圖
該電子時鐘以ESP8266為主控,利用WiFi進行自動對時,無需手動調節(jié),在失去網絡連接時,可利用DS1302模塊進行精準的走時,ESP8266讀取DS1302的時間,進行顯時。
2.1.1 主控模塊
根據ESP8266的系統(tǒng)(SoC)設計,其內部包含了處理器芯片等組件,處理器大約有16條GPIO線路,其中一些GPIO規(guī)定默認用于與其他內部組件進行通信,比如與內部閃存的通信等。在實際應用中大約還有11個GPIO引腳可按常規(guī)GPIO進行使用,在這11個針腳中,又有2個針腳預留給串口RX和TX。因此,最后只剩下9個通用I/O引腳,即D0到D8。在本次設計中由于使用了74HC595,所以在發(fā)送時間數(shù)據時,只使用了D2、D3、D4引腳。D5、D6、D7引腳用于連接DS1302模塊。其余引腳為供電引腳。所使用的引腳如表1所示。
表1
2.1.2 DS1302 模塊
DS1302有一塊備用電池以預防斷電情況發(fā)生,VCC接在ESP8266的3V3端口,當ESP8266突然斷電時,DS1302也能繼續(xù)走時。ESP8266的D5、D6、D7分別與 DS1302的 CLK、DATA、RST連接。 其中CLK 用來產生 DS1302 的讀寫信號,DATA用來和單片機進行數(shù)據傳輸。如圖2所示的DS1302模塊接線圖。
圖2 控制部分原理圖
2.1.3 74HC595 芯片
由于ESP8266端口有限無法傳輸時鐘所使用的時、分、信息。故采用74HC595來解決這一問題。前文相信讀者已經稍微了解到74HC595,它是一個8位串行輸入、平行輸出的位移緩存器:平行輸出為三態(tài)輸出。在SCK的上升沿,單行數(shù)據由SDL輸入到內部的8位位移緩存器,并由Q7'輸出,而平行輸出則是在LCK的上升沿將在8位位移緩存器的數(shù)據存入到8位平行輸出緩存器。當串行數(shù)據輸入端OE的控制信號為低使能時,平行輸出端的輸出值等于平行輸出緩存器所存儲的值。而當OE為高電位,也就是輸出關閉時,平行輸出端會維持在高阻抗狀態(tài)。就本次設計中所用到的功能,簡明的說:Q0~Q7負責發(fā)送時鐘所需要顯示的時、分信息。DS級聯(lián)下一塊74HC595并將移位命令傳輸至下一片,SH_CP 高電平觸發(fā)控制移位動作,ST_CP高電平觸發(fā)并行輸出,OE低電平輸出有效。74HC595的主要優(yōu)點是具有數(shù)據存儲寄存器,在移位的過程中,輸出端的數(shù)據可以保持不變。這在串行速度慢的場合很有用處,數(shù)碼管沒有閃爍感。74HC595真值表、引腳功能表如表2和表3所示。
表2 74HC595真值表
表3 74HC595引腳功能表
2.1.4 K155ID1 芯片
一片74HC595可控制兩片K155ID1,分別顯示小時和分鐘。K155ID1芯片為輝光管的驅動芯片同時也是一個簡單的BCD譯碼芯片也被稱為二—十進制譯碼器,通過4位二進制輸入,可輸出0~9的十進制數(shù)字,用于輝光管的顯示。K155ID1真值表、引腳功能表如表4和表5所示。
表4 K155ID1真值表
表5 K155ID1 引腳功能表
2.1.5 IN12A 輝光管
輝光管也叫陰冷極輝光放電指示管,誕生于50年代左右,由一家名為海頓兄弟實驗室的小型真空管制造商制造出來,并在1955年被美國寶來公司收購之后開始推向市場。美國寶來公司將這種陰冷極輝光放電指示管命名為NIXIE,雖然后來這種陰冷極輝光放電指示管有很多種名稱出現(xiàn),業(yè)界一般統(tǒng)稱為陰冷極氖讀數(shù)管,但是大多數(shù)還是以美國寶來公司的NIXIE這個名字作統(tǒng)稱,因此后來大部分都是用Nixie tube這個詞來表示。本次設計采用的是IN12A輝光管,如圖3、圖4所示,其開啟電壓為170V,電流為1mA。其管腳和顯示原理圖如圖5、圖6所示,將HIV端接入170V,再將各個管腳對應接入K155ID1的輸出端上即可。
圖3 輝光管 側視圖
圖4 輝光管正視圖
圖6 輝光管顯示原理圖
本次設計采用Arduino IDE編譯,由于Arduino中有非常方便的開發(fā)環(huán)境,方便后期的調試升級,大大增加了程序的可維護性和可靠性 在本設計中,使用了NTP協(xié)議來獲取時間,在獲取時間后,程序將獲得的時間發(fā)送給DS1302,在ESP8266斷電后依然能夠穩(wěn)定走時,方便在下次啟動時獲得時間。在發(fā)送時間時,由于使用了74HC595移位寄存器所以在進行時間信息的傳送時首先要給74HC595的ST_CP口上加低電平,來讓芯片準備接收數(shù)據;通過shiftOut()函數(shù)將信息傳輸,然后給予ST_CP口高電平結束這一過程。由于考慮到輝光管存在陰極中毒的特殊性,所以在每一次數(shù)字變化時,ESP8266把輝光管全部的數(shù)字迅速點亮一遍,以防陰極中毒,這樣大大的增加了輝光管的使用壽命。在時鐘的網絡方面,筆者使用了WiFi Manager庫文件,時鐘的每一次啟動,都會自動連接上次已經連接過的WiFi,如果連接失敗,首先讀取DS1302時間并開放自身熱點,讓用戶自行連接并配置。主程序流程圖如圖7 所示。
圖7 程序流程圖
本次設計把現(xiàn)實中常見的LED數(shù)碼管電子時鐘的顯示改為輝光管。時鐘采用ESP8266為主控,DS1302為時鐘芯片,兩片74HC595和四片K155ID1芯片來驅動輝光管顯示時、分。該時鐘實現(xiàn)了WiFi自動對時和輝光管防陰極中毒,并實現(xiàn)了歷史與現(xiàn)代的完美融合,這大大提高了輝光管在21世紀的知名度,在輝光管的微光中透著工業(yè)時代的輝煌,它的光亮在向人們講述一個時代的歷史。
圖8 實物圖(1)
圖9 實物圖(2)