基于STM32的多功能電子萬年歷設(shè)計(jì)_第1頁
基于STM32的多功能電子萬年歷設(shè)計(jì)_第2頁
基于STM32的多功能電子萬年歷設(shè)計(jì)_第3頁
基于STM32的多功能電子萬年歷設(shè)計(jì)_第4頁
基于STM32的多功能電子萬年歷設(shè)計(jì)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

基于stm32的多功能電子萬年歷設(shè)計(jì)摘要:電子萬年歷是一種應(yīng)用十分廣泛的日常計(jì)時(shí)工具,時(shí)間的準(zhǔn)確性對(duì)于現(xiàn)代社會(huì)越來越重要。目前在市場(chǎng)上較為流行的萬年歷,通常采用傳統(tǒng)的模擬電路來實(shí)現(xiàn)對(duì)時(shí)間的計(jì)時(shí)。該類型的萬年歷存在著功能單一,計(jì)時(shí)不夠準(zhǔn)確,不可靠,不夠智能化等問題。本設(shè)計(jì)基于STM32單片機(jī),集成DS1302時(shí)間芯片實(shí)現(xiàn)精準(zhǔn)時(shí)間讀取,包括年、月、日、時(shí)、分、秒等,自動(dòng)調(diào)整每月天數(shù)和閏年天數(shù)。同時(shí),采用DHT11溫濕度模塊實(shí)時(shí)監(jiān)測(cè)環(huán)境狀態(tài),并通過OLED屏顯示時(shí)間、溫濕度信息。設(shè)計(jì)中還包含蜂鳴器實(shí)現(xiàn)整點(diǎn)報(bào)時(shí),以及按鍵模塊方便用戶設(shè)置萬年歷。整體而言,本設(shè)計(jì)為用戶提供了便捷的時(shí)間顯示和環(huán)境監(jiān)測(cè)系統(tǒng)。最后運(yùn)用keil軟件對(duì)系統(tǒng)程序進(jìn)行編寫,通過軟硬件聯(lián)合調(diào)試實(shí)現(xiàn)系統(tǒng)功能。本設(shè)計(jì)是采用單片機(jī)控制的多功能萬年歷,其可以實(shí)現(xiàn)實(shí)時(shí)溫度顯示、具有整點(diǎn)報(bào)時(shí)、顯示公農(nóng)歷等功能。關(guān)鍵詞:電子萬年歷;單片機(jī);DS1302ResearchquestioncategoryinLiaoningAnshandialectAbstract:Electronicperpetualcalendarisawidelyuseddailytimekeepingtool,theaccuracyoftimeismoreandmoreimportantformodernsociety.Themorepopularperpetualcalendarsonthemarketusuallyusetraditionalanaloguecircuitstoachievethetimekeeping.Thistypeofperpetualcalendarhasasinglefunction,timekeepingisnotaccurateenough,unreliable,notintelligentenoughandotherproblems.ThisdesignadoptsSTM32microcontrollerasthemaincontrolchipandDS1302timechipasthetimereadingmodule,whichhasabuilt-inreal-timeclock/calendartoreadthetimeoftheyear,month,day,hour,minute,second,etc.Thenumberofdaysinamonthandthenumberofdaysinaleapyearcanbeadjustedautomatically,andthereal-timeadjustmentcanbemadethroughthesoftwarealgorithmtocomputetheGregoriancalendar,andthenthetimecanberead;thetemperatureandhumidityarecollectedbyusingtheDHT11temperatureandhumiditymodule,andthenthetimeisread.DHT11temperatureandhumiditymoduleisusedtocollecttemperatureandhumidity,andthensenttothemicrocontrollerthroughasinglebusprotocol,thebuzzerisusedtoreportthewholetime,thekeymoduleisusedtosettheperpetualcalendar,andthedisplaymoduleadoptsOLEDtodisplaythetimeandtemperatureandhumidityinformationinrealtime.Finally,thekeilsoftwareisusedtowritethesystemprogram,andthesystemfunctionisrealisedthroughthejointdebuggingofhardwareandsoftware.Thisdesignisamultifunctionalperpetualcalendarcontrolledbymicrocontroller,whichcanrealisethereal-timetemperaturedisplay,havethewholetimechime,displaythelunarandpubliccalendarandotherfunctions.Ithasmanyadvantagessuchassmallsize,accuratetimekeeping,easyreading,intuitivedisplay,richfunctionality,simplecircuit,lowcostandsoon.Keywords:Electronicperpetualcalendar;microcontroller;DS1302第一章緒論1.1研究背景及意義隨著現(xiàn)代科學(xué)技術(shù)的高速發(fā)展,人們的生活也發(fā)生了翻天覆地地變化。多功能電子萬年歷與傳統(tǒng)萬年歷大不相同,前者更多的是以電子設(shè)備或者移動(dòng)APP形式出現(xiàn),并在其中附帶環(huán)境信息顯示、鬧鈴、公農(nóng)歷顯示等功能,而后者則以紙質(zhì)形式出現(xiàn)或者使用模擬電路構(gòu)建的電子萬年歷。后者與前者相比之下,多功能電子萬年歷也成為了現(xiàn)在社會(huì)流行的電子產(chǎn)品,并且得到了廣泛群眾的認(rèn)可與應(yīng)用,目前市場(chǎng)上流行的電子萬年歷可以說是不勝枚舉,但市場(chǎng)上大部分的該產(chǎn)品均只能顯示時(shí)間,不能對(duì)周圍環(huán)境智能顯示,也很少附有提示功能,并不能滿足現(xiàn)代人們的智能化需求[1]。1.2研究現(xiàn)狀基于STM32的多功能電子萬年歷設(shè)計(jì)在國內(nèi)外的研究現(xiàn)狀呈現(xiàn)出一個(gè)活躍且不斷發(fā)展的趨勢(shì)。在國內(nèi),隨著物聯(lián)網(wǎng)、智能家居等領(lǐng)域的快速發(fā)展,基于STM32的多功能電子萬年歷設(shè)計(jì)作為其中一個(gè)重要組成部分,受到了廣泛的關(guān)注和深入的研究。眾多學(xué)者和工程師致力于通過STM32微控制器實(shí)現(xiàn)萬年歷的智能化、多功能化,以滿足人們對(duì)于時(shí)間管理、生活便利等方面的需求。這些研究不僅涉及硬件設(shè)計(jì)、軟件開發(fā),還涵蓋了用戶界面優(yōu)化、功能拓展等多個(gè)方面。例如,有些研究注重提升萬年歷的顯示效果和交互性,通過采用高清液晶顯示屏和觸摸屏技術(shù),使得用戶能夠更加方便地查看和設(shè)置日期、時(shí)間等信息;還有些研究則著力于增加萬年歷的實(shí)用功能,如加入溫濕度監(jiān)測(cè)、節(jié)日提醒、鬧鐘設(shè)置等,從而使其在日常生活中發(fā)揮更大的作用[2]。在國外,基于STM32的多功能電子萬年歷設(shè)計(jì)同樣受到了廣泛的關(guān)注。許多研究機(jī)構(gòu)和公司都在積極投入資源進(jìn)行相關(guān)研究和開發(fā)。這些研究不僅關(guān)注萬年歷的基本功能實(shí)現(xiàn),還注重其與其他智能設(shè)備的互聯(lián)互通和協(xié)同工作。例如,有些研究致力于將萬年歷與智能家居系統(tǒng)相結(jié)合,通過與其他設(shè)備的聯(lián)動(dòng),實(shí)現(xiàn)更加智能化的生活體驗(yàn);還有些研究則關(guān)注于萬年歷的外觀設(shè)計(jì)和個(gè)性化定制,以滿足不同用戶的審美和使用需求[3]??偟膩碚f,基于STM32的多功能電子萬年歷設(shè)計(jì)在國內(nèi)外都取得了顯著的研究成果和進(jìn)展。隨著技術(shù)的不斷發(fā)展和創(chuàng)新,相信未來這一領(lǐng)域的研究將會(huì)更加深入和廣泛,為人們帶來更加便捷、智能的生活體驗(yàn)。1.3研究內(nèi)容時(shí)間是人類生活的基本要素。如果沒有時(shí)間觀念,社會(huì)就不會(huì)有發(fā)展和進(jìn)步。當(dāng)今社會(huì),隨著電子技術(shù)的飛速發(fā)展,各種高集成度,高復(fù)雜度的各類電子產(chǎn)品也為人們帶來了更加便利的生活。傳統(tǒng)的電子鐘大部分采用模擬電子電路以及機(jī)械結(jié)構(gòu)實(shí)現(xiàn),具有結(jié)構(gòu)復(fù)雜、功耗大等缺點(diǎn)。因此,為了改善這種現(xiàn)狀,設(shè)計(jì)了萬年歷系統(tǒng)。在實(shí)物當(dāng)中,有三個(gè)獨(dú)立的按鍵和一個(gè)OLED顯示屏,可以顯示時(shí)間,日期等信息。根據(jù)用戶需求,可隨時(shí)進(jìn)行更改時(shí)間、更改年月日、星期、公農(nóng)歷顯示、溫度顯示和整點(diǎn)報(bào)時(shí)提醒。綜上所述,此次設(shè)計(jì)的多功能電子萬年歷擁有許多優(yōu)點(diǎn),其符合當(dāng)代社會(huì)人們對(duì)電子產(chǎn)品的需求,滿足電子儀器的發(fā)展趨勢(shì),市場(chǎng)前景也是一片光明,十分寬廣。附錄參考文獻(xiàn)第二章系統(tǒng)總體方案設(shè)計(jì)2.1系統(tǒng)框圖根據(jù)設(shè)計(jì)的具體要求以及能夠?qū)崿F(xiàn)的功能,與實(shí)際生活中多功能電子萬年歷相比較后,本次設(shè)計(jì)采用硬件與軟件相結(jié)合的方式制作多功能電子萬年歷。系統(tǒng)的原理框圖如圖2-1所示,本設(shè)計(jì)共有四個(gè)模塊。分別為時(shí)間計(jì)時(shí)模塊,0.96寸OLED顯示屏,獨(dú)立按鍵,溫濕度采集模塊,整點(diǎn)報(bào)時(shí)模塊。MCU將采集到溫濕度信息,時(shí)間信息,顯示到OLED顯示屏上,按鍵按下發(fā)出的信號(hào)通過MCU做出相應(yīng)處理,最后做出相應(yīng)反饋,改變OLED顯示內(nèi)容,提醒用戶進(jìn)行相應(yīng)的操作。圖2-1電子萬年歷系統(tǒng)框圖2.2主控模塊在單片機(jī)還有沒有完全的進(jìn)行出來時(shí),其只為一個(gè)擁有著復(fù)雜大規(guī)模的集成電路。如果對(duì)這種微處理器進(jìn)行系統(tǒng)性開發(fā)與研究,那么其就可以成為一個(gè)小型的微型計(jì)算機(jī)控制系統(tǒng)。但是單片機(jī)與日常生活鐘所用的計(jì)算機(jī)或者傳統(tǒng)的單板機(jī)還是有著本質(zhì)上的區(qū)別。硬件與軟件特性是衡量單片機(jī)性能的一種標(biāo)準(zhǔn),對(duì)于每種不同的單片機(jī)其特性也有所不同。微處理器的制作工藝與內(nèi)部的硬件結(jié)構(gòu)決定了其硬件特性,而軟件特性則是需要根據(jù)單片機(jī)的上位機(jī)開發(fā)環(huán)境而決定。軟件特性則為開發(fā)環(huán)境與內(nèi)部開發(fā)指令。內(nèi)部指令則是指輸入輸出端口寄存器的讀寫、寄存器直接間接尋址方式、系統(tǒng)內(nèi)部數(shù)據(jù)處理和運(yùn)行硬件邏輯以及對(duì)系統(tǒng)供電要求等。開發(fā)環(huán)境則為在計(jì)算機(jī)上對(duì)單片機(jī)這種嵌入式芯片進(jìn)行內(nèi)部程序編寫所需要的環(huán)境。如果想開發(fā)嵌入式系統(tǒng),就需要選用可以滿足系統(tǒng)設(shè)計(jì)要求的嵌入式芯片或者微處理器,那么開發(fā)人員則必須對(duì)這種芯片的各個(gè)技術(shù)指標(biāo)以及結(jié)構(gòu)有著清楚的認(rèn)識(shí)與了解[4]。在傳統(tǒng)復(fù)雜的模擬電子電路上可以將傳統(tǒng)的差分控制器換成單片機(jī)可以降低系統(tǒng)的復(fù)雜度并且可以進(jìn)行高效準(zhǔn)確的控制。單片機(jī)控制系統(tǒng)可以通過軟件控制實(shí)現(xiàn)所需的功能,將原先復(fù)雜系統(tǒng)模塊化,變得簡單明了,并且變得更加智能化。現(xiàn)代生活中單片機(jī)可以所無處不在,身邊的大部分電子產(chǎn)品都是由其進(jìn)行控制的,如各種智能家居、過程控制系統(tǒng)、通信設(shè)備、智能電子測(cè)量儀表和專用控制網(wǎng)絡(luò)裝置等,單片機(jī)活躍在各行各業(yè),占有著較高的地位。本設(shè)計(jì)采用的STM32F103C8T6單片機(jī),因其價(jià)格合理、體積小巧,其實(shí)現(xiàn)功能可達(dá)到大多數(shù)中級(jí)控制器的控制水平,在市場(chǎng)上廣泛推廣。此單片機(jī)相比較于其他單片機(jī)擁有著更高的性價(jià)比,更高的性能、更好的編碼密度、更快的中斷響應(yīng)速度、更低的功率損耗。這種超強(qiáng)的實(shí)時(shí)特性、超高的效率和更加新穎的外圍設(shè)備可以無限提高單片機(jī)引腳之間的集成、系統(tǒng)外設(shè)與上機(jī)軟件之間的兼容性的上限[5]。本設(shè)計(jì)采用的為STM32F103C8T6的最小系統(tǒng)板,其帶有與電腦軟件上位機(jī)連接下載程序的接口,其最小系統(tǒng)板實(shí)物如圖2-2所示。從最小系統(tǒng)板中可以看出,STM32F103C8T6擁有許多可用I/O口,每個(gè)I/O口都有許多擴(kuò)展功能。該板子的額定工作電壓范圍在2V~5V。內(nèi)部擁有著64k字節(jié)的FLASH閃存,20k字節(jié)靜態(tài)隨機(jī)存儲(chǔ)器計(jì)算單元。對(duì)于下載調(diào)試還有者兩種不同接口,分別為SWD和JTAG接口。其還可以驅(qū)動(dòng)兩個(gè)SPI、兩個(gè)IIC、三個(gè)USART和一個(gè)USB,通信功能強(qiáng)大。該芯片的正常工作溫度可以在-40℃~85℃之間,非常適合日常家居使用要求。圖2-2STM32F103C8T6單片機(jī)實(shí)物圖2.3時(shí)間模塊DS1302是一款轉(zhuǎn)換效率高、功耗低的數(shù)碼時(shí)鐘芯片,其有美國DALLAS公司進(jìn)行生產(chǎn)制造??梢岳闷溥M(jìn)行實(shí)時(shí)計(jì)算年、月、日、時(shí)、分、秒。DS1302還帶有閏年的補(bǔ)償特性,可以通過IIC總線與用戶的單片機(jī)進(jìn)行通信,并且可以一次性進(jìn)行多為數(shù)據(jù)的傳輸,以及RAM內(nèi)數(shù)據(jù)的傳送。而DS1302則是主電源的雙電源引腳,并通過射電流為備用電源充電。DS1302模塊接口簡單、市場(chǎng)價(jià)錢低,工作電壓從2.5V提升至5.5V、使用更加方便,憑借這些優(yōu)勢(shì)使其在市場(chǎng)中拖影而出,受到廣大應(yīng)用[6]。本設(shè)計(jì)則是采用的DS1302模塊,此模塊自帶了CR2032紐扣電池給芯片供電,以便在斷電時(shí)依舊可以通過電池進(jìn)行供電,保證時(shí)間不會(huì)受斷電影響,更適合應(yīng)用于我們的生活場(chǎng)景。DS1302的時(shí)鐘芯片模塊如圖2-3,由實(shí)物圖可以看到模塊共5個(gè)引腳,分別為VCC,GND,CLK,DAT,RST并且模塊小巧靈活,非常符合本次多功能萬年歷的設(shè)計(jì)要求,故選用此模塊。圖2-3DS1302模塊實(shí)物圖2.4溫濕度采集模塊溫濕度傳感器通過將環(huán)境的溫濕度變化轉(zhuǎn)化為電信號(hào),實(shí)現(xiàn)精確測(cè)量。其中,DHT11傳感器因其廣泛應(yīng)用和高效性能而備受青睞,它能快速將檢測(cè)的溫濕度信號(hào)轉(zhuǎn)化為電信號(hào),滿足各種應(yīng)用需求不同的環(huán)境下,溫濕度也會(huì)不同,傳送到單片機(jī)的0/1信號(hào)也不同,通過二進(jìn)制數(shù)值轉(zhuǎn)換成十進(jìn)制以供信息參考[7]。DHT11數(shù)字溫濕度傳感器單線制協(xié)議的數(shù)據(jù)傳輸使系統(tǒng)集成變得更加簡潔,四針接口,模塊小巧,超低的功耗,使用連線簡單,廣泛應(yīng)用于生活中各種場(chǎng)景。其DHT11實(shí)物如圖2-4所示。圖2-4DHT11傳感器實(shí)物圖2.5顯示模塊顯示模塊需要驅(qū)動(dòng)才可以顯示,故在內(nèi)部還進(jìn)行集成了SSD1306驅(qū)動(dòng)芯片,通常顯示屏與單片機(jī)采用的連接為SPI或IIC,其具體方式是根據(jù)BS0、BS1、BS2這三個(gè)引腳的電平邏輯來選擇的,對(duì)于本設(shè)計(jì)而言,OLED顯示屏實(shí)物如圖2-4所示。該模塊共4個(gè)引腳,即插即用,非常方便,在生活中也是隨處可見,廣泛應(yīng)用于日常場(chǎng)景中[8]。對(duì)于0.96寸的OLED顯示一共有128*64個(gè)像素點(diǎn)來進(jìn)行顯示,其橫向128個(gè),縱向64個(gè),通過點(diǎn)亮像素點(diǎn)來進(jìn)行顯示響應(yīng)的信息,對(duì)于點(diǎn)亮各個(gè)像素點(diǎn),則是通過SSD1306驅(qū)動(dòng)來進(jìn)行完成,每次進(jìn)行8個(gè)像素點(diǎn)為單位的掃描。圖2-5IIC接口OLED顯示模塊2.6整點(diǎn)報(bào)時(shí)模塊整點(diǎn)報(bào)時(shí)模塊則是采用的蜂鳴器,當(dāng)讀取的時(shí)間與預(yù)先設(shè)置好的時(shí)間相重合,蜂鳴器發(fā)出提醒聲音,提醒人們到達(dá)整點(diǎn)了。本設(shè)計(jì)采用為壓電式蜂鳴器,此蜂鳴器由多諧振蕩器、壓電蜂鳴器、阻抗匹配器、諧振盒及殼體組成。通電后,多諧振蕩器振動(dòng),阻抗匹配器對(duì)信號(hào)進(jìn)行匹配,進(jìn)而驅(qū)動(dòng)蜂鳴片振動(dòng)發(fā)聲。這種設(shè)計(jì)使蜂鳴器工作高效穩(wěn)定,為應(yīng)用提供清晰聲音提示[9]。蜂鳴器的實(shí)物圖如圖2-6。圖2-6模塊蜂鳴器實(shí)物圖2.7按鍵模塊按鍵采取的方案是使用三個(gè)獨(dú)立按鍵,控制修改時(shí)間,切換模式等內(nèi)容。其按鍵采取直連STM32的方式,采取低電平有效的方案進(jìn)行連接。對(duì)于一個(gè)系統(tǒng)而言人機(jī)接口必不可缺,而按鍵太多則會(huì)占用更多空間,故本設(shè)計(jì)將按鍵設(shè)置成三個(gè),使用軟件編程使之具有多個(gè)功能。本次設(shè)計(jì)的按鍵功能如表2-1所示:表2-1按鍵功能按鍵號(hào)設(shè)置界面功能非設(shè)置界面功能1確定進(jìn)入設(shè)置2上翻/加切換公立/農(nóng)歷3上翻/減打開/關(guān)閉整點(diǎn)報(bào)時(shí)功能2.8小結(jié)本章完成了系統(tǒng)的整體方案設(shè)計(jì)。首先介紹了系統(tǒng)框圖,然后從主控模塊入手,進(jìn)而介紹了各個(gè)模塊設(shè)計(jì)等。第三章系統(tǒng)硬件設(shè)計(jì)3.1硬件原理圖本次的設(shè)計(jì)原理圖以及PCB均由AltiumDesigner20軟件繪制,基于STM32的多功能電子萬年歷的硬件原理圖如圖3-1所示,其中共有5個(gè)模塊分別為MCU主控電路、時(shí)間模塊、按鍵模塊、OLED顯示模塊、溫濕度模塊、蜂鳴器模塊。圖3-1多功能電子萬年歷硬件原理圖3.2主控模塊電路設(shè)計(jì)由主控電路原理圖3-2可知,STM32的最小系統(tǒng),各模塊通過與單片機(jī)各引腳進(jìn)性連接,對(duì)于供電則是由STM32F103C8T6最小系統(tǒng)板的MicroUSB接口進(jìn)行供電,本設(shè)計(jì)單片機(jī)使用IIC與OLED屏進(jìn)行信息傳送,按鍵則是讀取引腳高低電平值,DHT11通過單總線與單片機(jī)連接,整點(diǎn)報(bào)時(shí)模塊則直接通過I/O口輸出的0/1信號(hào)即可控制。其每個(gè)外設(shè)模塊與主控芯片之間的引腳連接如表3-1所示。圖3-2STM32最小系統(tǒng)表3-1主控芯片引腳分配STM32引腳引腳使用說明PB8蜂鳴器三極管的基級(jí)PB11按鍵3PB10按鍵2PB0按鍵1PA7時(shí)鐘模塊CLK引腳PA6時(shí)鐘模塊DAT引腳PA5時(shí)鐘模塊RST引腳PA2OLED顯示模塊SDA引腳PA1OLED顯示模塊SCL引腳PA0DHT11溫濕度模塊DQ引腳5V,3.3V各模塊VCC引腳GND各模塊GND引腳3.3時(shí)鐘模塊電路設(shè)計(jì)3.3.1時(shí)鐘模塊分析DS1302與用戶控制系統(tǒng)之間的信息傳遞可以通過芯片的SCLK、RST、I/O三個(gè)端口與單片機(jī)之間的連接來完成。工作過程如下:首先將系統(tǒng)RST數(shù)據(jù)線拉高至高電平,即RST=1,然后在SCLK這條線上寫入相應(yīng)的時(shí)序,DS1302芯片通過接收時(shí)鐘脈沖來啟動(dòng)操作。這些脈沖通過I/O端口傳遞,同時(shí)攜帶地址信息和控制命令,確保它們能夠準(zhǔn)確地到達(dá)DS1302內(nèi)部。在SCLK提供的精確時(shí)序下,DS1302能夠有序地從I/O端口讀取或?qū)懭胨璧臄?shù)據(jù)信息,從而實(shí)現(xiàn)信息的有效傳遞與交流。這種機(jī)制確保了數(shù)據(jù)的準(zhǔn)確性和操作的可靠性。綜上所述,對(duì)于時(shí)鐘模塊與用戶系統(tǒng)之間的通信還是非常容易。DS1302的管腳結(jié)構(gòu)圖如圖3-3所示[9]。圖3-3DS1302芯片引腳圖DS1302的各引腳說明見表3-2所示。表3-2DS1302芯片引腳介紹DS1302引腳引腳說明X1,X232.768KHz晶振引腳GND地線RST復(fù)位端I/O數(shù)據(jù)輸入/輸出端口SCLK串行時(shí)鐘端口VCC1慢速充電引腳VCC2電源引腳3.3.2時(shí)鐘模塊接口電路設(shè)計(jì)本設(shè)計(jì)采用的則是DS1302時(shí)鐘模塊,在其模塊之中已經(jīng)配置好晶振等時(shí)鐘電路,時(shí)鐘電路的晶振為32.768MHz,利用該晶振進(jìn)行起振產(chǎn)生時(shí)鐘震蕩周期,引腳共5針分別為VCC、GND、RST、SCLK、I/O,其與單片機(jī)連接原理圖如圖3-4所示。圖3-3時(shí)間模塊原理圖表3-3展示了DS1302控制字。第二位從高位到低位,決定了是存取時(shí)鐘數(shù)據(jù)還是讀取RAM數(shù)據(jù)。具體地,當(dāng)該位為0時(shí),表示當(dāng)前操作是存取時(shí)鐘數(shù)據(jù);而為1時(shí),則表示讀取RAM數(shù)據(jù)。此外,A4至A1這幾位代表了操作單元的地址信息。至于最低位,它起到了一個(gè)指令標(biāo)識(shí)的作用:若其值為1,則表示對(duì)芯片執(zhí)行讀取操作;若值為0,則執(zhí)行寫入操作。這種設(shè)計(jì)使得DS1302芯片能夠靈活地處理不同類型的數(shù)據(jù)操作,控制字節(jié)同樣也是由低位開始輸出直到最高位[10]。表3-3DS1302控制字格式標(biāo)號(hào)控制字控制字控制字控制字控制字控制字控制字1RAMA4A3A2A1A0RD2RAMA4A3A2A1A0WR3CKA4A3A2A1A0RD4CKA4A3A2A1A0WR從控制指令發(fā)出后接下來的一個(gè)時(shí)鐘脈沖為上升沿時(shí),數(shù)據(jù)開始就將會(huì)寫入至DS1302內(nèi)部,數(shù)據(jù)的輸入從最低位開始。接下來的8位控制指令發(fā)出后從下一個(gè)時(shí)鐘脈沖的下降沿開始讀出DS1302的數(shù)據(jù),這些數(shù)據(jù)時(shí)從最低位到最高位進(jìn)行去讀取,反復(fù)如此,如圖3-5所示。圖3-5DS1302讀寫時(shí)序圖表3-4展示了DS1302的時(shí)間和日歷的寄存器以及其控制字[11]。表3-4DS1302的日歷和時(shí)間寄存器寫寄存器讀寄存器Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit080H81HCH10秒10秒10秒秒秒秒秒82H83H10秒10秒10秒分分分分84H85H12/240AM/PM時(shí)時(shí)時(shí)時(shí)時(shí)86H87H00010日日日日日88H89H00010月月月月月8AH8BH00000星期星期星期8CH8DH10年10年10年10年年年年年8EH8FH000000003.4溫濕度模塊電路設(shè)計(jì)溫濕度采集運(yùn)用的DHT11數(shù)字溫濕度模塊,其內(nèi)部集成了一個(gè)8位單片機(jī)以單總線協(xié)議與用戶MCU進(jìn)行通訊,一共有四個(gè)端口。本次設(shè)計(jì)只進(jìn)行讀取整數(shù)部分而不進(jìn)行讀取小數(shù)部分。用戶控制系統(tǒng)發(fā)送啟動(dòng)信號(hào)后,DHT11將待機(jī)狀態(tài)切換到高功率工作狀態(tài)。傳輸過來的啟動(dòng)數(shù)據(jù)信號(hào)結(jié)束后,DHT11對(duì)用戶進(jìn)行發(fā)送響應(yīng)信號(hào),并將采集到的溫濕度數(shù)據(jù)以40位數(shù)據(jù)方式發(fā)送給所需要的用戶。在用戶與分機(jī)模式下,溫濕度傳感器需接收到啟動(dòng)信號(hào)后方會(huì)啟動(dòng)溫濕度采集工作。若未接收到主啟動(dòng)信號(hào),傳感器則保持靜默,不進(jìn)行主動(dòng)的溫度和濕度采集。完成數(shù)據(jù)采集任務(wù)后,傳感器會(huì)自動(dòng)進(jìn)入待機(jī)狀態(tài),等待下一次的啟動(dòng)信號(hào)[12]。其時(shí)序圖可見圖3-6。圖3-6DHT11時(shí)序圖根據(jù)DHT11具體的工作原理將電路圖設(shè)計(jì)成如圖3-7,與STM32主機(jī)進(jìn)行相連。其中VCC、GND連接單片機(jī)的電源引腳以進(jìn)行對(duì)傳感器以及內(nèi)部8位單片機(jī)供電,DATA端口則連接到單片機(jī)上與單片機(jī)進(jìn)行數(shù)據(jù)傳輸。圖3-7溫濕度模塊引腳連接圖3.5整點(diǎn)報(bào)時(shí)模塊電路設(shè)計(jì)蜂鳴器用于整點(diǎn)報(bào)時(shí)電路。使用蜂鳴器時(shí),蜂鳴器直連則不會(huì)進(jìn)行響動(dòng),需要通過一個(gè)放大電路以進(jìn)行驅(qū)動(dòng),本次采用NPN三極管對(duì)其進(jìn)行驅(qū)動(dòng)。通過對(duì)BEEP端口的高低電平來進(jìn)行對(duì)放大電路的通斷控制。當(dāng)高電平時(shí)放大電路處于截止?fàn)顟B(tài)蜂鳴器不響,當(dāng)輸入低電平時(shí),放大電路處于放大狀態(tài),蜂鳴器進(jìn)行響動(dòng)。綜上,整點(diǎn)報(bào)時(shí)電路原理圖如圖3-8所示[13]。圖3-8整點(diǎn)報(bào)時(shí)電路3.6OLED顯示模塊電路設(shè)計(jì)本設(shè)計(jì)采用的是0.96寸通過IIC協(xié)議傳輸?shù)腛LED屏幕,其使用需要使用SSD1306進(jìn)行驅(qū)動(dòng),為了避免驅(qū)動(dòng)焊接等復(fù)雜性操作并且可以更加穩(wěn)定的使用,故采用了OLED模塊,其模塊上集成了SSD1306驅(qū)動(dòng),連接是只需要將總線端口連入單片機(jī)即可進(jìn)行數(shù)據(jù)傳輸。此模塊的時(shí)序圖以及原理圖分別如圖3-9、圖3-10。圖3-9IIC時(shí)序圖圖3-10OLED顯示模塊原理圖3.7按鍵模塊電路設(shè)計(jì)通過3個(gè)物理按鍵進(jìn)行控制操作,物理按鍵連接比較簡單,在此就不再進(jìn)行過多贅述,原理圖如圖3-11,對(duì)于圖中的網(wǎng)絡(luò)端口K1、K2、K3則分別連接到的是單片機(jī)的PB0、PB10、PB11三個(gè)引腳。三個(gè)按鍵在不同的界面具有不同的功能,在非設(shè)置界面中,按鍵1可以進(jìn)入設(shè)置界面,按鍵2可以切換公農(nóng)歷的顯示,按鍵3是可以進(jìn)行整點(diǎn)報(bào)時(shí)的開關(guān)。在設(shè)置界面,按鍵1則變?yōu)榇_定按鍵,按鍵2則為上翻,按鍵3則為下翻。圖3-11按鍵電路原理圖3.8小結(jié)本設(shè)計(jì)按照先整體后部分進(jìn)行分組式介紹。通過分析設(shè)計(jì)要求研究構(gòu)造電路圖,進(jìn)行軟件程序設(shè)計(jì)最后確定硬件的使用種類,通過STM32單片機(jī)對(duì)環(huán)境實(shí)時(shí)溫度進(jìn)行采集,系統(tǒng)工作時(shí)會(huì)進(jìn)行實(shí)時(shí)溫度檢測(cè)并將檢測(cè)到的溫度折成模擬量電信號(hào)反饋給單片機(jī),通過單片機(jī)處理后將環(huán)境信息顯示在OLED顯示屏上。在本設(shè)計(jì)當(dāng)中,將各模塊連接到單片機(jī)端口,雖然使用端口較少,大部分功能使用軟件進(jìn)行實(shí)現(xiàn)。對(duì)于工程設(shè)計(jì)而言,能用軟件實(shí)現(xiàn)的,不用復(fù)雜的硬件來實(shí)現(xiàn),因?yàn)閷?duì)于軟件程序修改比硬件修改想對(duì)容易,并在硬件設(shè)計(jì)時(shí)候就已經(jīng)預(yù)留出了程序下載調(diào)試端口,方便日后對(duì)產(chǎn)品的升級(jí)與修改bug問題。當(dāng)硬件設(shè)計(jì)完成之后就可以開始根據(jù)所選芯片器件,單片機(jī)的引腳分配進(jìn)行軟件編程,軟件設(shè)計(jì)。第四章系統(tǒng)軟件設(shè)計(jì)4.1軟件介紹本設(shè)計(jì)采用mdk_keil_v5.27編程軟件對(duì)STM32F103C8T6操作程序進(jìn)行編寫及調(diào)試。Mdk_keil5是keil5的擴(kuò)展版本,此版本的keil軟件包括ARM的一部分。主要為8051系列單片機(jī)的開發(fā)環(huán)境。本設(shè)計(jì)使用的芯片是基于Cortex-M3核的STM32單片機(jī),故采用此軟件進(jìn)行編程,需要使用擴(kuò)展版本Mdk_keil5v5.27。對(duì)于此軟件還有一大特點(diǎn),可以采用ST-LINK直連芯片進(jìn)行下載調(diào)試,省去通過CH430驅(qū)動(dòng)下載HEX文件的繁瑣操作,更容易進(jìn)行開發(fā)及編程。對(duì)于程序軟件,在進(jìn)行具體開發(fā)前我們應(yīng)該新建立一個(gè)關(guān)于本設(shè)計(jì)的一個(gè)程序工程,建立程序工程的具體操作方法如下:(1)建立新工程鼠標(biāo)左擊“Project”菜單,選擇“NEWμVisionproject”。(2)確定單片機(jī)型號(hào)鼠標(biāo)左擊選擇芯片,點(diǎn)擊選擇STM32F103C8xx。(3)創(chuàng)建基礎(chǔ)工程模板對(duì)于32位單片機(jī)程序編寫與51單片機(jī)有所不同,由于32位單片機(jī)功能強(qiáng)大,所以開發(fā)者已經(jīng)對(duì)芯片寫了一個(gè)完整的庫,這些庫文件需要在單片機(jī)開發(fā)時(shí)添加入初始工程,以便調(diào)用函數(shù)雖然建立工程比51單片機(jī)困難,但是對(duì)于后續(xù)程序編寫可進(jìn)行更快的開發(fā)。(4)配置debug,使ST-link仿真器與軟件連接對(duì)于本軟件可以直接通過ST-link仿真下載器連接到硬件電路,將程序直接下載到單片機(jī),完成調(diào)試過程。4.2主程序設(shè)計(jì)依據(jù)設(shè)計(jì)規(guī)格與功能實(shí)現(xiàn)機(jī)制,我們繪制了系統(tǒng)主程序的流程圖,如圖4-1所示,該圖詳細(xì)展示了主程序的執(zhí)行邏輯與流程。圖4-1系統(tǒng)主程序流程圖程序啟動(dòng)后,首要任務(wù)是執(zhí)行硬件初始化,通過自檢確保硬件正常工作,預(yù)防潛在問題,確保系統(tǒng)順暢運(yùn)行。然后進(jìn)行的是對(duì)溫濕度以及時(shí)間的讀取工作,當(dāng)讀取時(shí)間溫度過后,會(huì)將其具體信息顯示在顯示屏上。隨后會(huì)實(shí)時(shí)進(jìn)行按鍵的檢測(cè),當(dāng)不同按鍵被按下后MCU會(huì)做出自行處理,然后將處理過后的系統(tǒng)顯示在OLED顯示屏上,供用戶參考以便進(jìn)行下一步操作。4.3時(shí)鐘模塊子設(shè)計(jì)其開始時(shí)候都會(huì)把由四個(gè)八位二進(jìn)制組成的的四十個(gè)字節(jié)信息讀取出來。在進(jìn)行初始化后的8個(gè)周期,就會(huì)把命令字裝入到移位的寄存器,除此之外,通過時(shí)鐘的周期的改變,可以改變正在讀操作時(shí)的輸出/輸入的數(shù)據(jù)[14]。對(duì)于DS1302的軟件編寫,主要是不斷的改變PA5、PA6、PA7三個(gè)端口的電平,使其與DS1302硬件讀寫時(shí)序相同,根據(jù)DS1302工作的時(shí)序圖編寫了一下主要函數(shù)。1)voidds1302_init(void)//進(jìn)行DS1302初始化2)voidds1302_write_byte(ucharaddr,uchard)//向DS1302寫入一字節(jié)3)uchards1302_read_byte(ucharaddr)//從DS1302讀出一字節(jié)數(shù)據(jù)4)voidds1302_write_TIme(u8*TIme_buf)//向DS1302寫入時(shí)鐘數(shù)據(jù)5)voidds1302_read_time(u8*TIme_buf)//從DS1302讀出時(shí)鐘數(shù)據(jù)在編寫這一部分的代碼中,按圖4-2時(shí)間模塊子程序流程圖所示的流程進(jìn)行編寫主程序代碼,首先進(jìn)行初始化時(shí)間芯片,隨后進(jìn)行是否調(diào)整時(shí)間,然后進(jìn)行讀取時(shí)間的操作,最后將其顯示在顯示模塊上。圖4-2時(shí)間模塊子程序流程圖4.4溫濕度模塊子程序設(shè)計(jì)DHT11的單總線協(xié)議是一種特殊的通信方式,它允許主機(jī)和從機(jī)(即DHT11傳感器)通過一根線進(jìn)行通信。在這種協(xié)議下,一根總線上可以掛接多個(gè)從器件,且數(shù)量幾乎不受限制。這種通信方式采用了單根信號(hào)線,不僅用于傳輸時(shí)鐘信號(hào),還能傳輸數(shù)據(jù)信號(hào),且數(shù)據(jù)傳輸是雙向的。在通信過程中,雙方會(huì)約定好電平代表的信號(hào)含義,接收方則按照這些信號(hào)進(jìn)行識(shí)別通信。例如,DHT11的通信協(xié)議中,設(shè)置空閑狀態(tài)數(shù)據(jù)線為高電平,主機(jī)通過特定的信號(hào)序列(如拉低數(shù)據(jù)線一段時(shí)間后再拉高)來建立連接和發(fā)送啟動(dòng)信號(hào),從機(jī)(DHT11)在接收到這些信號(hào)后會(huì)進(jìn)行相應(yīng)的響應(yīng),從而開始通信過程。單總線協(xié)議具有結(jié)構(gòu)簡單、硬件開銷少、成本低廉以及便于總線擴(kuò)展和維護(hù)等優(yōu)點(diǎn)。然而,它也有一些缺點(diǎn),如不能同時(shí)收發(fā)數(shù)據(jù)、誤碼率較高以及傳輸速率較慢等[15]。圖4-3DHT11數(shù)字0/1的表示由于DHT11傳感器傳輸?shù)男盘?hào)中帶有校驗(yàn),因此在編寫程序時(shí)也需對(duì)DHT11返回的校驗(yàn)數(shù)據(jù)進(jìn)行檢查,具體的溫濕度檢測(cè)子程序流程如圖4-4,為了確保DHT11的正常運(yùn)作,我們首先會(huì)通過軟件進(jìn)行檢測(cè),并進(jìn)行初始化操作。隨后,讀取DHT11所獲取的溫濕度數(shù)據(jù),并對(duì)這些數(shù)據(jù)進(jìn)行嚴(yán)格的校驗(yàn)。一旦數(shù)據(jù)驗(yàn)證無誤,我們便會(huì)將其展示在顯示設(shè)備上。整個(gè)流程確保了數(shù)據(jù)的準(zhǔn)確性和系統(tǒng)的穩(wěn)定性。圖4-4溫濕度檢測(cè)子程序流程圖4.5整點(diǎn)報(bào)時(shí)模塊子程序設(shè)計(jì)整點(diǎn)報(bào)時(shí)子程序流程圖如圖4-5所示,整點(diǎn)報(bào)時(shí)采用的方法為將DS1302采集到的時(shí)間,與整點(diǎn)時(shí)間相對(duì)比,當(dāng)與整點(diǎn)時(shí)間重合時(shí),單片機(jī)給驅(qū)動(dòng)蜂鳴器的三極管基極的引腳傳送低電平信號(hào),三極管處于導(dǎo)通狀態(tài),使蜂鳴器進(jìn)行發(fā)出聲響,提醒人們整點(diǎn)到了。圖4-5整點(diǎn)報(bào)時(shí)子程序流程圖4.6公農(nóng)歷轉(zhuǎn)換子程序設(shè)計(jì)DS1302芯片所返回的時(shí)間數(shù)據(jù)是以公歷時(shí)間進(jìn)行返回的,此時(shí)需要寫一個(gè)算法將返回的公歷時(shí)間轉(zhuǎn)換成農(nóng)歷時(shí)間。具體流程如下:這個(gè)算法是基于查表法進(jìn)行計(jì)算的,首先把想要查詢的年份的春節(jié)日期,農(nóng)歷信息定義到一個(gè)數(shù)組內(nèi),將信息寫成十六進(jìn)制的形式,再通過采集到當(dāng)前的公歷信息,然后進(jìn)行對(duì)公歷信息判斷在春節(jié)前還是春節(jié)后,如果是在春節(jié)前,則為計(jì)算距離春節(jié)還有多久即可知道當(dāng)前農(nóng)歷信息,反之在春節(jié)后則看以及過去春節(jié)多久,相差天數(shù)即為農(nóng)歷天數(shù),即可通過此來計(jì)算出農(nóng)歷信息[16]。通過此算法即可完成公農(nóng)歷的轉(zhuǎn)換,將轉(zhuǎn)換過后的農(nóng)歷信息顯示到OLED上,即可完成公農(nóng)歷轉(zhuǎn)化。具體的算法流程圖如圖4-6。圖4-6公歷轉(zhuǎn)農(nóng)歷算法流程圖4.7OLED顯示模塊子程序設(shè)計(jì)本次設(shè)計(jì)采用的為0.96寸的OLED顯示屏,該模塊具有著雙色顯示,尺寸小,高分辨率,多種通信接口方式的特點(diǎn)。本設(shè)計(jì)多功能萬年歷使可以直接在IIC總線內(nèi)輸入器件的地址,就可進(jìn)行數(shù)據(jù)傳輸,但是對(duì)于具體的如何更改OLED顯示屏的顯示效果我們則需要通過SSD1306的內(nèi)置指令,可直接通過下表4-1SSD1306常用命令表中的16進(jìn)制指令對(duì)顯示屏進(jìn)行設(shè)置。表4-1SSD1306常用命令表序號(hào)指令各位描述命令說明HEXD7D6D5D4D3D2D1D008110000001設(shè)置對(duì)比度A的值越大屏幕越亮A[7:0]A7D6D5D4D3D2D1D01AE/AF1010111X0設(shè)置顯示開關(guān)X0=0,關(guān)閉顯示;X0=1,開啟顯示;28D10001101電荷泵設(shè)置A2=0,關(guān)閉電荷泵;A2=1,開啟電荷泵A[7:0]**010A2003B0~B710110X2X1X0設(shè)置頁地址X[2:0]=0~7對(duì)應(yīng)頁0~7400~0F0000X3X2X1X0設(shè)置列地址低四位設(shè)置8位起始列地址低四位510~1F0000X3X2X1X0設(shè)置列地址高四位設(shè)置8位其實(shí)列地址高四位由初始化流程圖4-7以及SSD1306命令碼可以開始對(duì)其部分進(jìn)行編寫程序。在編寫過程中,需要用到IIC協(xié)議,IIC協(xié)議的底層代碼可以直接使用廠家給出的IIC底層傳輸數(shù)據(jù)代碼,然后通過SSD1306常用的指令來進(jìn)行驅(qū)動(dòng)顯示屏顯示不同的畫面與進(jìn)行不同的功能操作。首先對(duì)SSD1306進(jìn)行復(fù)位,然后通過IIC協(xié)議使SSD1306進(jìn)行初始化,然后進(jìn)行開啟顯示功能,需注意的是在每次的顯示過后其內(nèi)部寄存器的顯存不會(huì)自動(dòng)清除需要自行進(jìn)行軟件清除,故還應(yīng)清除顯存以避免出現(xiàn)顯示錯(cuò)誤,清除顯存之后即可進(jìn)行正常的顯示工作。對(duì)于OLED的顯示內(nèi)容,取決于傳入的數(shù)據(jù),由于需要顯示漢字以便方便觀看,對(duì)于每一個(gè)漢字的顯示都需要使用取模軟件進(jìn)行取模,得到對(duì)應(yīng)漢字的十六進(jìn)制二維數(shù)組,然后將所有漢字?jǐn)?shù)組放到一個(gè)文件里,在要顯示的時(shí)候即可直接調(diào)用存放二維數(shù)組的文件使在OLED上顯示對(duì)應(yīng)的內(nèi)容。圖4-7SSD1306初始化流程圖4.8按鍵模塊子程序設(shè)計(jì)對(duì)于按鍵的程序編寫較為簡單,直接通過設(shè)置I/O口為上拉輸入模式,對(duì)于按鍵還進(jìn)行了消抖,對(duì)于消抖則是進(jìn)行延時(shí)判斷是否在此按下進(jìn)行防誤觸判斷。當(dāng)程序開始后通過鍵盤掃描看是否又被按下,有按鍵按下還需進(jìn)行在此進(jìn)行判斷避免物理觸碰按鍵的軟件流程圖如圖4-8所示。圖4-8按鍵子程序流程圖4.9小結(jié)本章完成了系統(tǒng)的軟件設(shè)計(jì)。首先介紹了KEIL軟件,本設(shè)計(jì)基于KEIL軟件進(jìn)行嵌入式程序開發(fā)。然后從主程序入手,時(shí)鐘模塊子程序確保時(shí)間的準(zhǔn)確性與穩(wěn)定性。溫濕度模塊子程序處理DHT11傳感器采集的數(shù)據(jù)。整點(diǎn)報(bào)時(shí)模塊子程序在特定時(shí)間觸發(fā)報(bào)時(shí)功能。OLED顯示模塊子程序?qū)崿F(xiàn)數(shù)據(jù)的清晰顯示。按鍵模塊子程序方便用戶進(jìn)行設(shè)置和操作。這些子程序共同實(shí)現(xiàn)精準(zhǔn)時(shí)間管理和環(huán)境溫濕度實(shí)時(shí)監(jiān)測(cè)的核心功能。第五章實(shí)物制作與調(diào)試5.1軟件介紹本設(shè)計(jì)使用Altiumdesigner20軟件繪制原理圖以及進(jìn)行制作PCB文件。AltiumDesigner20軟件是一個(gè)上手容易、與時(shí)俱進(jìn)、功能強(qiáng)大的PCB制作軟件。其采用64位體系架構(gòu)和多線程相結(jié)合,使在PCB設(shè)計(jì)中實(shí)現(xiàn)更高的穩(wěn)定性、更快的速度和更強(qiáng)的功能。在繪制原理圖之前,需要進(jìn)行繪制一個(gè)基本元件庫,繪制出本次設(shè)計(jì)所用到的所有器件,然后拖動(dòng)元件庫中的元件,繪制出硬件原理圖。然后點(diǎn)擊設(shè)計(jì)生成PCB,則會(huì)自動(dòng)生成PCB文件,但都是沒有進(jìn)行連接的,需要自己設(shè)計(jì)并連接電路,PCB繪制完之后就可以進(jìn)行打印并制作覆銅板[17]。為了使多功能電子萬年歷正常運(yùn)行,在編寫程序時(shí)對(duì)每個(gè)模塊都先進(jìn)行逐步調(diào)試,然后再將所有調(diào)試完的各個(gè)模塊整合到一起,每編寫完一個(gè)功能就對(duì)其進(jìn)行一次編譯調(diào)試,確保每個(gè)步驟都可以正常運(yùn)行,如果發(fā)現(xiàn)問題也可以及時(shí)的進(jìn)行修改,避免出現(xiàn)程序全部寫完無法實(shí)現(xiàn)預(yù)計(jì)功能,以至于無從下手,不知如何修改程序以及調(diào)試硬件。對(duì)于本次設(shè)計(jì)硬件部分設(shè)計(jì)相對(duì)簡單,大部分內(nèi)容都以軟件算法以及復(fù)雜的代碼進(jìn)行實(shí)現(xiàn),故本次調(diào)試過程以杜邦線進(jìn)行連接各模塊,調(diào)試硬件及軟件程序。5.2實(shí)物制作硬件是系統(tǒng)的載體。如果硬件出現(xiàn)問題,就會(huì)導(dǎo)致系統(tǒng)的運(yùn)行出現(xiàn)問題?;赟TM32的多功能電子萬年歷的硬件制作涉及多個(gè)關(guān)鍵步驟。首先,選擇STM32微控制器作為核心組件,搭配液晶顯示屏、按鍵或觸摸屏等外設(shè),以展示日期、時(shí)間、農(nóng)歷等信息并實(shí)現(xiàn)用戶交互。其次,設(shè)計(jì)并搭建硬件電路,包括繪制原理圖、PCB板打樣及焊接等步驟,確保各組件正確連接。同時(shí),還需準(zhǔn)備農(nóng)歷數(shù)據(jù),并將其整合到系統(tǒng)中。在硬件搭建完成后,進(jìn)行上電測(cè)試,確保所有組件正常工作。此外,還需配置軟件開發(fā)環(huán)境,編寫并編譯代碼,實(shí)現(xiàn)時(shí)鐘、溫濕度監(jiān)測(cè)、整點(diǎn)報(bào)時(shí)、OLED顯示及按鍵交互等模塊功能。最終,通過精細(xì)的硬件制作與軟件設(shè)計(jì),可打造出功能強(qiáng)大、性能穩(wěn)定的電子萬年歷產(chǎn)品。完成程序編寫后,隨即利用AltiumDesigner20軟件展開原理圖文件的繪制工作。這一環(huán)節(jié)至關(guān)重要,它確保了電路設(shè)計(jì)的準(zhǔn)確性和可靠性。緊接著,基于繪制完成的原理圖,生成相應(yīng)的PCB圖,這是實(shí)際電路板制作的基礎(chǔ)。在做完板子之后開始進(jìn)行對(duì)線路覆銅情況檢查,然后將對(duì)應(yīng)模塊進(jìn)行焊接,焊接之后通過最小系統(tǒng)板下載模塊導(dǎo)入程序開始進(jìn)行調(diào)試,PCB如圖5-1所示,實(shí)物如圖5-2所示。圖5-1PCB圖圖5-2實(shí)物圖5.3模塊調(diào)試系統(tǒng)各模塊調(diào)試是本設(shè)計(jì)的重點(diǎn)調(diào)試內(nèi)容,本設(shè)計(jì)進(jìn)行大量的代碼邏輯編寫,并且為了日后可以更好的進(jìn)行升級(jí)以及對(duì)長時(shí)間應(yīng)用后存在的bug進(jìn)行調(diào)試,故將主要設(shè)計(jì)放在了軟件編寫之中,對(duì)于軟件調(diào)試則是采用分模塊進(jìn)行底層代碼檢驗(yàn),最后對(duì)整體顯示頁面進(jìn)行調(diào)試,使更加美觀,易于查看時(shí)間,降低操作難度,方便更多人使用。5.3.1時(shí)間模塊調(diào)試對(duì)于DS1302時(shí)間模塊的調(diào)試,主要是對(duì)其進(jìn)行寫入時(shí)間以及讀取時(shí)間調(diào)試,因?yàn)楸驹O(shè)計(jì)功能之一是可以進(jìn)行修改時(shí)間,而對(duì)于修改時(shí)間那么就到了對(duì)于芯片讀寫問題的操作。在調(diào)試過程中,發(fā)現(xiàn)問題無法對(duì)其進(jìn)行正常的寫操作,即無法進(jìn)行時(shí)間的寫入,只能進(jìn)行時(shí)間的讀取,經(jīng)過翻閱芯片手冊(cè)后學(xué)習(xí)到在DS1302內(nèi)部存在寫保護(hù),防止惡意篡改時(shí)間,再看芯片手冊(cè)可知向芯片內(nèi)部地址0x8e(控制數(shù)據(jù)地址)寫入0x00就可以進(jìn)行正常的寫操作了,在寫入相應(yīng)時(shí)間數(shù)據(jù)后,還需再次打開寫保護(hù),防止出現(xiàn)惡意篡改時(shí)間的問題。打開寫保護(hù)操作同樣位向芯片內(nèi)部地址0x8e(控制數(shù)據(jù)地址)寫入0x80,則可以打開寫保護(hù)。對(duì)于無法讀取的問題經(jīng)過調(diào)試后OLED上可以正常顯示當(dāng)前時(shí)間如圖5-3所示。圖5-3時(shí)間模塊調(diào)試5.3.2溫濕度模塊調(diào)試對(duì)于溫濕度模塊的調(diào)試,DHT11傳輸為單總線傳輸,所有數(shù)據(jù)均由DATA端口進(jìn)行傳輸,故在傳輸過程中很容易發(fā)生數(shù)據(jù)丟失等情況,并且對(duì)于I/O口的配置也需要更改,對(duì)其I/O應(yīng)配置成推挽輸出。針對(duì)上面狀況根據(jù)手冊(cè)可知,對(duì)于數(shù)據(jù)的傳送格式為40位,其中前32位,每8位代表一個(gè)數(shù)據(jù),最后8位則為校驗(yàn)位,則可以進(jìn)行程序校驗(yàn)。在調(diào)試溫濕度模塊時(shí)遇到的一個(gè)問題,就是數(shù)據(jù)變化快,顯示時(shí)跳動(dòng),通過上網(wǎng)搜索各種資料發(fā)現(xiàn),是由于一直進(jìn)行對(duì)DHT11的溫度讀取造成的,可采用延時(shí),或者固定時(shí)間段采集緩解此問題。此外調(diào)試中還發(fā)現(xiàn)DHT11溫度變化慢,這個(gè)問題是因?yàn)槠渲圃旃に嚨膯栴},由于外部為塑料導(dǎo)致導(dǎo)熱慢,內(nèi)部傳感器無法迅速捕捉外部溫度而無法對(duì)其周圍溫度迅速進(jìn)行采集。在系統(tǒng)運(yùn)行時(shí)避免DHT11與用戶MCU未連接的情況還設(shè)計(jì)了DHT11的自檢代碼,若沒有進(jìn)行連接則會(huì)在OLED上顯示“DHT11Error”并且系統(tǒng)不會(huì)繼續(xù)運(yùn)行。圖5-4為調(diào)試成功后在OLED上顯示效果[18]。圖5-4溫濕度顯示效果5.3.3按鍵功能調(diào)試對(duì)于按鍵其硬件結(jié)構(gòu)簡單,而其中的軟件邏輯較為復(fù)雜,需要通過按鍵來進(jìn)行不斷的改變OLED上顯示內(nèi)容與時(shí)間等信息,可能對(duì)于視覺效果感覺很簡單,但是對(duì)于軟件而言,需要大量的變量進(jìn)行值得不斷改變來進(jìn)行改變對(duì)應(yīng)的操作,而且還要防止其中按鍵對(duì)于其他按鍵的邏輯影響,需要進(jìn)行標(biāo)識(shí)量的判斷,在最初編寫代碼時(shí)則是忽略了邏輯問題造成了按鍵邏輯混亂,后來增加邏輯標(biāo)識(shí)量,通過判斷其值來進(jìn)行判斷當(dāng)前程序進(jìn)行到了那一層的邏輯當(dāng)中。在進(jìn)行不斷地調(diào)試過后,實(shí)現(xiàn)了按鍵的整體控制,在這部分的調(diào)試也是占用本設(shè)計(jì)調(diào)試的最長時(shí)間。調(diào)試后效果展示如圖5-5,由于圖片無法顯示出動(dòng)態(tài)過程故可與圖5-4進(jìn)行對(duì)比,圖5-4則是為打開系統(tǒng)的初始畫面。圖5-5時(shí)間設(shè)置界面5.3.4按鍵功能調(diào)試通過軟件算法將已經(jīng)讀取到得當(dāng)前日期與春節(jié)日期進(jìn)行對(duì)比然后計(jì)算出當(dāng)前得農(nóng)歷日期,在調(diào)試過程中發(fā)現(xiàn)運(yùn)用對(duì)表法進(jìn)行查詢每年的春節(jié)日期比較占用系統(tǒng)空間故本次指設(shè)定了2000年到2030年的農(nóng)歷日期,由于本次設(shè)計(jì)用到的OLED屏是0.96寸,屏幕大小有限無法同時(shí)顯示公歷和農(nóng)歷,所以通過按鍵進(jìn)行切換,顯示效果如圖5-6所示。圖5-6公農(nóng)歷切換顯示界面5.4小結(jié)通過本章對(duì)軟硬件的調(diào)試過程,可以看出對(duì)于程序編寫和項(xiàng)目的規(guī)劃,需要進(jìn)行逐步調(diào)試,由小到大,慢慢進(jìn)行編寫于調(diào)試更能看出模塊化編程對(duì)于項(xiàng)目帶來的好處。根據(jù)實(shí)際測(cè)試流程中的問題,分析了結(jié)果的成功,并總結(jié)了在實(shí)際系統(tǒng)設(shè)計(jì)與測(cè)試過程中的寶貴經(jīng)驗(yàn)。通過經(jīng)驗(yàn)的不斷積累,更能提高自己的項(xiàng)目開發(fā)能力。第六章結(jié)論本設(shè)計(jì)是通過利用基于Cortex-M3內(nèi)核的3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論