黃浩鵬 鄭譽(yù)煌
摘要:該文通過當(dāng)下流行的Arduino單片機(jī)設(shè)計(jì)了一套實(shí)現(xiàn)電子時(shí)鐘的方案,使用Proteus8.6進(jìn)行仿真和本身自帶的編程環(huán)境進(jìn)行Arduino程序編寫,從而實(shí)現(xiàn)帶有循環(huán)顯示和調(diào)時(shí)功能的電子時(shí)鐘。該文闡述了電子時(shí)鐘硬件中的時(shí)鐘模塊、復(fù)位模塊、按鍵模塊等,進(jìn)行模塊化設(shè)計(jì),編程方面也采用同樣的思想進(jìn)行實(shí)現(xiàn)。
關(guān)鍵詞:電子時(shí)鐘;Arduino;電路
中圖分類號(hào):TP338 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)22-0282-02
1 背景
Proteus是當(dāng)今著名的EDA工具,包含了時(shí)下流行的Arduino單片機(jī)仿真功能,還可以直接在基于原理圖的虛擬原型上編程,實(shí)現(xiàn)了實(shí)時(shí)調(diào)試,為電子專業(yè)愛好者提供了完備的電子設(shè)計(jì)開發(fā)環(huán)境。該文提出了基于Arduino的電子時(shí)鐘設(shè)計(jì)方案,并在Proteus8.6里面仿真成功。
2 設(shè)計(jì)方案
如圖1所示,該文使用Arduino單片機(jī)進(jìn)行電子時(shí)鐘設(shè)計(jì),使用模塊化的方式組合成電子時(shí)鐘。
鍵盤電路如圖2所示。采用三個(gè)按鈕,分別實(shí)現(xiàn)光標(biāo)選擇、加和減的功能,三個(gè)按鍵分別與Arduino單片機(jī)的三個(gè)端口相連接,通過程序控制單片機(jī)判斷鍵是否按下,進(jìn)而將信號(hào),輸出控制時(shí)間的變化。
顯示部分采用LCD1602。LCD1602不僅可以顯示數(shù)字,還能顯示字母符號(hào)等,最佳工作電壓為5V,耗能和成本也低。LCD1602與Arduino單片機(jī)連接如圖3所示。
3 控制原理
3.1 文件創(chuàng)建
該文使用Proteus8.6進(jìn)行仿真,程序編寫也是使用Proteus8.6進(jìn)行實(shí)時(shí)調(diào)試。在安裝Proteus8.6的前提下,使用該軟件新建一個(gè)Project,在創(chuàng)建Project firmware時(shí)選擇ARDUINO,如圖4所示。確定后,自動(dòng)產(chǎn)生Arduino最小系統(tǒng)仿真原理圖和程序框架文件,即可進(jìn)行編程。
3.2 程序流程
持續(xù)流程圖如圖5所示。由于使用到LCD液晶顯示屏,在程序的最開始需調(diào)用LCD1302顯示頭文件,該文件是Arduino程序中所包含的一個(gè)函數(shù),用來定義LCD的接口。接下來敘述編程使用到的主要函數(shù):
1)Setup函數(shù):Setup函數(shù)作為首先執(zhí)行的函數(shù),在每次運(yùn)行時(shí)只執(zhí)行一次。在此程序中,把Arduino單片機(jī)與按鍵電路相連接的三個(gè)端口初始化,LCD也進(jìn)行初始化。
2)FormatDisplay函數(shù):此函數(shù)用于格式化輸出,通過lcd.print函數(shù)向LCD1602輸出指定格式的內(nèi)容。
3)time、Day、Month、Year、Week函數(shù):分別根據(jù)實(shí)際年、月、日、周、時(shí)、分、秒的規(guī)律單獨(dú)編寫以上函數(shù)。
4)Display函數(shù):調(diào)用time、Day、Month、Year、Week函數(shù)顯示時(shí)間、日期、星期。
5)DisplayCursor函數(shù):此函數(shù)用于顯示光標(biāo)(一條下劃線)。
6)set函數(shù):此函數(shù)中分別將time、Day、Month、Year、Week賦值為0,已達(dá)到初始化時(shí)間。
7)Set_Time函數(shù):此函數(shù)用于實(shí)現(xiàn)調(diào)時(shí)功能,使用if語句判斷add端和munis是否輸入低電平。即按下add鍵加一,按下munis鍵減一。
8)Set_Clock函數(shù):此函數(shù)用于光標(biāo)位置的調(diào)節(jié),運(yùn)用了if語句判斷選擇光標(biāo)移動(dòng)到哪一個(gè)位置,每按一次choose鍵,光標(biāo)分別從年、月、日、周、時(shí)、分、秒跳動(dòng)。
9)loop函數(shù):在以上函數(shù)編寫好的基礎(chǔ)上,執(zhí)行l(wèi)oop函數(shù),此函數(shù)相當(dāng)于標(biāo)準(zhǔn)C語言中的main函數(shù)。在此函數(shù)中首先使用millis函數(shù)獲取單片機(jī)當(dāng)前運(yùn)行時(shí)間,再分別調(diào)用Display函數(shù)和Set_Clock函數(shù)。
4 結(jié)束語
經(jīng)過一段時(shí)間的仿真,達(dá)到了預(yù)期的目的,實(shí)現(xiàn)了動(dòng)態(tài)循環(huán)計(jì)時(shí)和調(diào)時(shí)的功能。該文的方法只需使用Proteus8.6軟件即可實(shí)現(xiàn),需要在創(chuàng)建出的Arduino最小系統(tǒng)中添加時(shí)鐘電路、鍵盤電路、LCD顯示電路即可。相比使用廣泛的51系列單片機(jī)而言,并不需要使用DS1302時(shí)鐘電路,減少了這方面所花的時(shí)間。并且該文使用了Arduino封裝的大量函數(shù),在編寫程序上也減少了不少時(shí)間。
參考文獻(xiàn):
[1] 梁巧儀, 鄭譽(yù)煌, 李國豪, 等. 基于Arduino的六軸舞獅機(jī)器人[J]. 電腦知識(shí)與技術(shù), 2017, 13(8): 90-91.
[2] 楊陽, 李華. 基于DS1302芯片的數(shù)字時(shí)鐘設(shè)計(jì)[J]. 無線互聯(lián)科技, 2017(3): 77-78.
[3] 馮大捷. 基于DS1302電子時(shí)鐘的設(shè)計(jì)[J]. 科技視界, 2012(3): 119-121.
【通聯(lián)編輯:謝媛媛】