版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
./基于51單片機(jī)和lcd1602的萬年歷設(shè)計.基于單片機(jī)的萬年歷設(shè)計摘要古人依靠日冕、漏刻記錄時間,而隨著科技的發(fā)展,電子萬年歷已經(jīng)成為日漸流行的日常計時工具。本文研究的萬年歷系統(tǒng)擬用STC89C52單片機(jī)控制,以DS1302時鐘芯片計時、DS18B20采集溫度、1602液晶屏顯示。系統(tǒng)主要由溫度傳感器電路,單片機(jī)控制電路,顯示電路以及校正電路四個模塊組成。本文闡述了系統(tǒng)的硬件工作原理,所應(yīng)用的各個接口模塊的功能以及其工作過程,論證了設(shè)計方案理論的可行性。系統(tǒng)程序采用C語言編寫,經(jīng)Keil軟件進(jìn)行調(diào)試后在Proteus軟件中進(jìn)行仿真,可以顯示年、月、日、星期、時、分、秒和溫度并具有校準(zhǔn)功能和與即時時間同步的功能。實驗結(jié)果表明此萬年歷實現(xiàn)后具有讀取方便、顯示直觀、功能多樣、電路簡潔等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。關(guān)鍵詞:萬年歷單片機(jī)仿真TheCalendarofDesignbasedonSingleChipAbstractAncientrelyoncorona,Loukerecordingtime.Theelectroniccalendarhasbecomethepopulartoolforthedailytiming.asthedevelopmentoftechnology.Inthecalendarsystem,theSTC89C52isusedtocontrol,withtheDS1302clockchiptiming,DS18B20collectingtemperature,1602LCDDisplaying.Thesystemiscomposedoffourmodules:thetemperaturesensorcircuit,theMCUcontrolcircuit,thedisplaycircuitandthecorrectioncircuit.Thispaperdescribesthehardwareworks,thefunctionsofeachinterfacemoduleanditsworkingprocess,demonstratesdesigntheoryisFeasibility..Clanguageisusedtoprogram,afterdebuggingintheKeilsoftware,thensimulatingintheProteus.Theelectroniccalendarcandisplayyear,month,day,week,hours,minutes,seconds,temperature,andhascalibrationfeaturesandfunctionalitywithrealtimesynchronization.Theresultsshowthatthiscalendariseasytoread,intuitivedisplay,versatile,simplecircuits,andmanyotheradvantages,Thedesignmeetsthedevelopmenttrendofelectronicinstrumentsandmeters,andhasbroadmarketprospects.Keywords:Calendar;MCU;simulation目錄第一章緒論11.1課題研究的意義11.2本課題主要的研究工作1研究容1論文章節(jié)安排21.3本章小結(jié)2第二章單片機(jī)的概述32.1單片機(jī)的定義和特點3單片機(jī)的定義3單片機(jī)的特點32.2單片機(jī)的發(fā)展現(xiàn)狀和趨勢4單片機(jī)的發(fā)展現(xiàn)狀4單片機(jī)的發(fā)展趨勢52.3編程語言的選擇52.4本章小結(jié)6第三章設(shè)計要求和方案論證73.1設(shè)計要求73.2單片機(jī)芯片的選擇方案和論證73.3顯示模塊選擇方案和論證73.4時鐘芯片的選擇方案和論證83.5溫度傳感器的選擇方案與論證83.6電路設(shè)計最終方案決定93.7本章小結(jié)9第四章系統(tǒng)的硬件設(shè)計與實現(xiàn)104.1電路設(shè)計框圖104.2系統(tǒng)硬件概述104.3主要單元電路的設(shè)計114.3.1STC89C52單片機(jī)簡介114.3.2單片機(jī)主控制模塊的設(shè)計134.3.3時鐘電路模塊的設(shè)計154.3.4溫度傳感器電路設(shè)計164.3.5獨立式鍵盤設(shè)計194.3.6顯示模塊的設(shè)計194.4本章小結(jié)21第五章系統(tǒng)的軟件設(shè)計225.1程序流程圖22系統(tǒng)總流程圖225.1.2溫度程序流程圖23時鐘程序流程圖245.1.4液晶顯示程序流程圖…………………255.2程序的設(shè)計265.2.1DS18B20測溫程序26讀寫DS1302程序27液晶顯示程序295.3本章小結(jié)29第六章仿真與調(diào)試306.1軟件簡介306.1.1Keil軟件簡介306.1.2ProteusISIS簡介306.2Keil軟件調(diào)試流程316.3Proteus軟件運行流程336.4萬年歷的功能仿真356.5硬件調(diào)試結(jié)果356.6本章小結(jié)39第七章總結(jié)與展望40參考文獻(xiàn)41附錄一:系統(tǒng)電路圖42附錄二:系統(tǒng)PCB板43附錄三:系統(tǒng)程序……………………...44致57.第一章緒論1.1課題研究的意義萬年歷是我國古代傳說中最古老的一部太陽歷。為紀(jì)念歷法編撰者萬年功績,便將這部歷法命名為"萬年歷"。而現(xiàn)在所使用的萬年歷,實際上就是記錄一定時間圍〔比如100年或更多的具體陽歷或陰歷的日期的年歷,方便有需要的人查詢使用,與原始?xì)v法并無直接聯(lián)系。而隨著微電子技術(shù)的高速發(fā)展,人類用于計時的工具也在不斷發(fā)展更新,單片機(jī)技術(shù)的出現(xiàn)使得萬年歷有了新的發(fā)展方向。單片機(jī)以其體積小、功能全、性價比高等諸多優(yōu)點,在工業(yè)控制、家用電器、通信設(shè)備、信息處理、尖端武器等各種測控領(lǐng)域的應(yīng)用中獨占鰲頭,單片機(jī)開發(fā)技術(shù)已成為電子信息、電氣、通信、自動化、機(jī)電一體化等專業(yè)技術(shù)人員必須掌握的技術(shù)。目前世界上單片機(jī)年產(chǎn)量已達(dá)十多億片,通常是當(dāng)年微處理器產(chǎn)量的4-5倍以上。用最少的芯片就能實現(xiàn)最強大的功能,這是將來電子產(chǎn)品的主流方向,它將無可置疑地一步步取代其它同類產(chǎn)品,其數(shù)量之大和應(yīng)用面之廣,是其它任何類型的計算機(jī)所無法比擬的。以基于單片機(jī)的萬年歷作為設(shè)計的課題,因為它有很好的開放性和可發(fā)揮性,對作者的要求比較高,不僅考察了對單片機(jī)的掌握能力而且強調(diào)了對單片機(jī)擴(kuò)展的應(yīng)用。另外液晶顯示的萬年歷已經(jīng)越來越流行,特別適合在家庭居室、辦公室、大廳、會議室、車站和廣場等地方使用,它具有顯示清晰直觀、走時準(zhǔn)確、可以進(jìn)行夜視等功能,并且還可以擴(kuò)展出其它多種功能。所以,電子萬年歷作為設(shè)計課題很有價值。1.2本課題主要的研究工作本論文主要研究基于單片機(jī)的萬年歷設(shè)計。當(dāng)程序執(zhí)行后,LCD顯示即時時間、年月日、星期、溫度。設(shè)置3個操作鍵:K1:設(shè)置鍵;K2:上調(diào)鍵;K3:下調(diào)鍵。本設(shè)計的主要容:1、了解單片機(jī)技術(shù)的發(fā)展現(xiàn)狀,熟悉萬年歷各模塊的工作原理;2、選擇適當(dāng)?shù)男酒驮骷?確定系統(tǒng)電路,繪制電路原理圖,尤其是各接口電路;3、熟悉單片機(jī)使用方法和C語言的編程規(guī)則,編寫出相應(yīng)模塊的應(yīng)用程序;4、分別在各自的模塊中調(diào)試出對應(yīng)的功能,在Proteus軟件上進(jìn)行仿真。研究容設(shè)計目標(biāo):使基于STC89C52單片機(jī)的萬年歷實現(xiàn)以下四個功能:1、具有年、月、日、星期、時、分、秒等功能;2、具備年、月、日、星期、時、分、秒校準(zhǔn)功能;3、具有與即時時間同步的功能;4、具有顯示溫度的功能;論文章節(jié)安排:第一章:緒論是介紹了基于STC89C52單片機(jī)的萬年歷研究意義,重點闡述了本課題的研究容和研究工作。第二章:單片機(jī)的概述主要闡述了單片機(jī)系統(tǒng)的定義以及單片機(jī)系統(tǒng)的發(fā)展現(xiàn)狀和發(fā)展趨勢。因為只有對單片機(jī)有了更深入的了解,才能設(shè)計出更好的單片機(jī)控制系統(tǒng)。本章的結(jié)尾是對單片機(jī)C語言編程的介紹。第三章:主要介紹了設(shè)計要求和課題器件選擇的論證方案。第四章:硬件基礎(chǔ)中主要描述了萬年歷的各個模塊的硬件設(shè)計方案,并結(jié)合各個元器件和相應(yīng)的硬件原理圖進(jìn)行分析,最后展示為了實現(xiàn)研究目標(biāo)所需要的全部硬件基礎(chǔ)。第五章:軟件基礎(chǔ)主要羅列了實現(xiàn)萬年歷各個功能的C語言程序的流程圖,并分別對其進(jìn)行了解釋和分析,最后把各個C語言子程序在巧妙結(jié)合在一起,共同控制整個系統(tǒng),也就形成了實現(xiàn)研究目標(biāo)所需要的所有軟件基礎(chǔ)。第六章:主要對Keil軟件Proteus軟件進(jìn)行簡單介紹,并給出了關(guān)于Proteus軟件仿真調(diào)試萬年歷的過程。最后簡要的介紹了硬件調(diào)試中的問題和解決辦法。第七章:主要是對本次實驗研究的總結(jié),提出本次實驗的不足之處以及相應(yīng)的改進(jìn)方法,以便后人繼續(xù)深入研究。1.3本章小結(jié)本章是論文的緒論部分,著重介紹了萬年歷的研究意義。然后介紹了本文所要解決的實際問題及意義,以及要電子萬年歷系統(tǒng)要實現(xiàn)的功能和方法。最后簡單地描述了本論文的整體框架和論文章節(jié)的安排。第二章單片機(jī)的概述目前單片機(jī)滲透到了我們生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動洗衣機(jī)的控制,以及遠(yuǎn)程控制玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動控制領(lǐng)域中的機(jī)器人、智能儀表、醫(yī)療器械了。單片機(jī)具有結(jié)構(gòu)簡單、控制功能強、可靠性高、體積小、價格低等優(yōu)點,因而在許多行業(yè)都得到了廣泛應(yīng)用,并且在諸多領(lǐng)域中都發(fā)揮了無可比擬的巨大作用。2.1單片機(jī)的定義和特點單片機(jī)的定義單片機(jī)即單片微型計算機(jī),是把中央處理器、存儲器、定時/計數(shù)器、輸入輸出接口都集成在一塊集成電路芯片上的微型計算機(jī)。與應(yīng)用在個人電腦中的通用型微處理器相比,它更強調(diào)自供應(yīng)〔不用外接硬件和節(jié)約成本。單片機(jī)也被稱為微控制器〔Microcontroller,是因為它最早被用于工業(yè)控制領(lǐng)域。單片機(jī)的芯片僅由CPU的專用處理器發(fā)展而來。最早的設(shè)計理念是通過將大量外圍設(shè)備和CPU集成在一個芯片中,使計算機(jī)系統(tǒng)更小,更容易集成進(jìn)復(fù)雜的而對體積要求嚴(yán)格的控制設(shè)備當(dāng)中。單片機(jī)的特點單片機(jī)以其卓越的性能,得到了廣泛的應(yīng)用,已深入到各個領(lǐng)域。單片機(jī)應(yīng)用在檢測、控制領(lǐng)域中,具有如下特點:1、體積小、控制功能強、成本低。因而可以方便地組裝各種智能式控制設(shè)備和儀器,做到機(jī)、電、儀一體化。2、易擴(kuò)展。很容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng),為應(yīng)用系統(tǒng)的設(shè)計和生產(chǎn)帶來極大方便。3、可靠性好、使用溫度圍寬。在各種惡劣的環(huán)境下都能可靠的工作,這是其他機(jī)種無法比擬的。4、種類多,型號全。很多單片機(jī)廠家逐年擴(kuò)大適應(yīng)各種需要,有針對性地推出一系列型號產(chǎn)品,使系統(tǒng)開發(fā)工程師有很大的選擇余地。大部分產(chǎn)品有較好的兼容性,保證了已開發(fā)產(chǎn)品能順利移植,較容易地使產(chǎn)品進(jìn)行升級換代。5、低功耗?,F(xiàn)在新型單片機(jī)的功耗越來越小,供電電壓從5V降低到了3.2V,甚至1V,工作電流從mA降到μA級,工作頻率從十幾兆可編程到幾十千赫茲。特別是很多單片機(jī)都設(shè)置了多種工作方式,這些工作方式包括等待、暫停、睡眠、空閑、節(jié)電等。6、可以采用C語言開發(fā)環(huán)境,具有友好的人機(jī)互交環(huán)境。大多數(shù)單片機(jī)都提供基于C語言開發(fā)平臺,并提供大量的函數(shù)供使用,這使產(chǎn)品的開發(fā)周期、代碼可讀性、可移植性都大為提高。2.2單片機(jī)的發(fā)展現(xiàn)狀和發(fā)展趨勢單片機(jī)的發(fā)展現(xiàn)狀單片機(jī)技術(shù)在不斷的發(fā)展,它反映在部結(jié)構(gòu)、功率消耗、外部電壓等級以及制造工藝上。在這幾方面,較為典型地說明了數(shù)字單片機(jī)的技術(shù)水平。在目前,用戶對單片機(jī)的需要越來越多,但是,要求也越來越高。下面分別就這三個方面說明單片機(jī)的技術(shù)進(jìn)步狀況。1、部結(jié)構(gòu)的進(jìn)步單片機(jī)在部已集成了越來越多的部件,這些部件包括一般常用的電路,例如:定時器,比較器,A/D轉(zhuǎn)換器,D/A轉(zhuǎn)換器,串行通信接口,Watchdog電路,LCD控制器等。有的單片機(jī)為了構(gòu)成控制網(wǎng)絡(luò)或形成局部網(wǎng),部含有局部網(wǎng)絡(luò)控制模塊CAN。例如,Infineon公司的C505C,C515C,C167CR,C167CS-32FM,81C90。因此,這類單片機(jī)十分容易構(gòu)成網(wǎng)絡(luò)。特別是在控制,系統(tǒng)較為復(fù)雜時,構(gòu)成一個控制網(wǎng)絡(luò)十分有用。為了能在變頻控制中方便使用單片機(jī),形成最具經(jīng)濟(jì)效益的嵌入式控制系統(tǒng)。有的單片機(jī)部設(shè)置了專門用于變頻控制的脈寬調(diào)制控制電路,這些單片機(jī)有Fujitsu公司的MB89850系列、MB89860系列;Motorola公司的MC68HC08MR16、MR24等。在這些單片機(jī)中,脈寬調(diào)制電路有6個通道輸出,可產(chǎn)生三相脈寬調(diào)制交流電壓,并部含死區(qū)控制等功能。特別引人注目的是:現(xiàn)在有的單片機(jī)已采用所謂的三核〔TrCore結(jié)構(gòu)。這是一種建立在系統(tǒng)級芯片〔Systemonachip概念上的結(jié)構(gòu)。這種單片機(jī)由三個核組成:一個是微控制器和DSP核,一個是數(shù)據(jù)和程序存儲器核,最后一個是外圍專用集成電路〔ASIC。這種單片機(jī)的最大特點在于把DSP和微控制器同時做在一個片上。這是目前單片機(jī)最大的進(jìn)步之一。這些單片機(jī)都是高檔單片機(jī),MCU都是32位的,而DSP采用16或32位結(jié)構(gòu),工作頻率一般在60MHz以上。2、功耗、封裝及電源電壓的進(jìn)步現(xiàn)在新的單片機(jī)的功耗越來越小,特別是很多單片機(jī)都設(shè)置了多種工作方式,這些工作方式包括等待,暫停,睡眠,空閑,節(jié)電等工作方式。而單片機(jī)的封裝水平也大大提高,隨著貼片工藝的出現(xiàn),單片機(jī)也大量采用了各種合符貼片工藝的封裝方式出現(xiàn),以大量減少體積。在這種形勢中,Microchip公司推出的8引腳的單片機(jī)特別引人注目。這是PIC12CXXX系列。它含有0.5~2K程序存儲器,25~128字節(jié)數(shù)據(jù)存儲器,6個I/O端口以及一個定時器,有的還含4道A/D,完全可以滿足一些低檔系統(tǒng)的應(yīng)用。擴(kuò)大電源電壓圍以及在較低電壓下仍然能工作是今天單片機(jī)發(fā)展的目標(biāo)之一。目前,一般單片機(jī)都可以在3.3~5.5V的條件下工作。而一些廠家,則可以生產(chǎn)出在2.2~6V的條件下工作的單片機(jī)。3、工藝上的進(jìn)步現(xiàn)在的單片機(jī)基本上采用CMOS技術(shù),但已經(jīng)大多數(shù)采用了0.6um以上的光刻工藝,有個別的公司,如Motorola公司則已采用0.35um甚至是0.25um技術(shù)。這些技術(shù)的進(jìn)步大提高了單片機(jī)的部密度和可靠性。單片機(jī)的發(fā)展趨勢單片機(jī)在目前的發(fā)展形勢下,表現(xiàn)出幾大趨勢:1、可靠性及應(yīng)用越來越水平高,和互聯(lián)網(wǎng)連接已是一種明顯的走向;2、所集成的部件越來越多,NS〔美國國家半導(dǎo)體公司的單片機(jī)已把語音、圖像部件也集成到單片機(jī)中,也就是說,單片機(jī)的意義只是在于單片集成電路,而不在于其功能了。如果從功能上講它可以講是萬用機(jī)。原因是其部已集成上各種應(yīng)用電路;3、功耗越來越低和模擬電路結(jié)合越來越多。隨著半導(dǎo)體工藝技術(shù)的發(fā)展及系統(tǒng)設(shè)計水平的提高,單片機(jī)還會不斷產(chǎn)生新的變化和進(jìn)步,最終人們可能發(fā)現(xiàn):單片機(jī)與微機(jī)系統(tǒng)之間的距離越來越小,甚至難以辨認(rèn)。2.3編程語言的選擇在1972年,美國貝爾實驗室的D.M.Ritchie在B語言的基礎(chǔ)上最終設(shè)計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。在眾多的程序設(shè)計語言中,C語言簡潔緊湊,語言表達(dá)能力強,其結(jié)構(gòu)化的流程控制有助于編制結(jié)構(gòu)良好的程序。C語言程序經(jīng)編譯后生成的目標(biāo)程序代碼效率高,幾乎可以與匯編語言媲美。C語言既具備高級語言使用方便、接近自然語言和數(shù)學(xué)語言的特性,同時也具備對計算機(jī)硬件系統(tǒng)的良好操縱和控制能力。C語言可移植性好,一個C語言源程序可以不做改動,或者稍加改動,就可以從一種型號的計算機(jī)移轉(zhuǎn)到另外一種型號的計算機(jī)上編譯運行。因此,C語言被廣泛應(yīng)用于各類系統(tǒng)軟件和應(yīng)用軟件的開發(fā)。所以本系統(tǒng)以C語言進(jìn)行軟件設(shè)計,增加了程序的可讀性和可移植性,便于擴(kuò)展和更改,軟件的設(shè)計采用模塊化結(jié)構(gòu),使程序設(shè)計的邏輯關(guān)系更加簡潔了。2.4本章小結(jié)本章主要介紹了單片機(jī)的定義和特點,重點描述了單片機(jī)發(fā)展現(xiàn)狀和未來的發(fā)展趨勢,最后簡單地介紹了選擇的編程語言。.第三章設(shè)計要求和方案論證3.1設(shè)計要求具備在液晶上顯示年、月、日、星期、時、分、秒的功能;具備年、月、日、星期、時、分、秒校準(zhǔn)功能;具有與即時時間同步的功能;具有顯示溫度的功能;3.2單片機(jī)芯片的選擇方案和論證方案一:采用AT89S51芯片作為硬件核心,部具有4KBROM存儲空間,能于3V的超低壓工作,而且與MCS-51系列單片機(jī)完全兼容,但是運用于電路設(shè)計中時由于不具備ISP在線編程技術(shù),所以在對電路進(jìn)行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,對芯片的多次拔插會對芯片造成一定的損壞。方案二:采用STC89C52芯片,STC89C52是一種低功耗、高性能的8位CMOS微控制器,具有8K的可編程Flash存儲器。同樣具有AT89S51的功能,且具有在線編程可擦除技術(shù),當(dāng)對電路進(jìn)行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,不需要對芯片多次拔插,所以不會對芯片造成損壞,因此選擇采用STC89C52作為主控制系統(tǒng)核心。3.3顯示模塊選擇方案和論證方案一:采用LED數(shù)碼管動態(tài)掃描,LED數(shù)碼管價格適中,對于顯示數(shù)字合適,采用動態(tài)掃描法與單片機(jī)連接時,雖然占用的單片機(jī)口線少,但連線還需要花費一點時間,所以也不用此種作為顯示。方案二:采用點陣式數(shù)碼管顯示,點陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,若采用在顯示數(shù)字顯得太浪費,且價格也相對較高,所以在此也不用此種作為顯示。方案三:采用1602液晶顯示屏,該液晶顯示屏的顯示功能強大,置192種字符,可顯示大量符號、數(shù)字,清晰可見,而且功率消耗小壽命長抗干擾能力強。所以在此設(shè)計中采用1602液晶顯示屏。3.4時鐘芯片的選擇方案和論證方案一:直接采用單片機(jī)定時計數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時、分、秒計數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實現(xiàn)的時間誤差較大,所以不采用此方案。方案二:采用DS1302時鐘芯片實現(xiàn)時鐘,DS1302芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年進(jìn)行計數(shù),而且精度高,位的RAM做為數(shù)據(jù)暫存區(qū),工作電壓2.5V~5.5V圍,2.5V時耗電小于300nA。所以本設(shè)計采用DS1302時鐘芯片。3.5溫度傳感器的選擇方案與論證方案一:使用熱敏電阻作為傳感器,用熱敏電阻與一個相應(yīng)阻值電阻相串聯(lián)分壓,利用熱敏電阻阻值隨溫度變化而變化的特性,采集這兩個電阻變化的分壓值,并進(jìn)行A/D轉(zhuǎn)換。此設(shè)計方案需用A/D轉(zhuǎn)換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴(yán)格線性的,會產(chǎn)生較大的測量誤差。方案二:采用數(shù)字式溫度傳感器DS18B20,此類傳感器為數(shù)字式傳感器而且僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,易于與單片機(jī)連接,可以去除A/D模塊,降低硬件成本,簡化系統(tǒng)電路。另外,數(shù)字式溫度傳感器還具有測量精度高、測量圍廣等優(yōu)點。因此本設(shè)計選用DS18B20溫度傳感器。3.6電路設(shè)計最終方案決定綜上各方案所述,對此次作品的方案選定:采用STC89C52作為主控制芯片,DS1302時鐘芯片計時,DS18B20采集溫度,LCD1602作為顯示模塊。3.7本章小結(jié)本章主要介紹了系統(tǒng)要實現(xiàn)的功能和萬年歷系統(tǒng)硬件平臺的選擇,比較了主控模塊,時鐘模塊,顯示模塊,溫度采集模塊中不同器件的優(yōu)劣,最后確定了電路設(shè)計的整體方案。這也是完成設(shè)計的先決條件。第四章系統(tǒng)的硬件設(shè)計與實現(xiàn)4.1電路設(shè)計框圖根據(jù)上章確定的方案給出了系統(tǒng)整體的設(shè)計框圖:圖4.1系統(tǒng)結(jié)構(gòu)框圖為使時鐘走時與標(biāo)準(zhǔn)時間一致,校時電路是必不可少的,鍵盤模塊用來校正液晶上顯示的時間;溫度傳感器則用來檢測當(dāng)前的環(huán)境溫度;STC89C52單片機(jī)通過輸出各種電脈沖信號來驅(qū)動控制各部分正常工作;而系統(tǒng)的時間、溫度等數(shù)據(jù)則最終通過液晶模塊顯示出來。4.2系統(tǒng)硬件概述本電路是以STC89C52單片機(jī)為控制核心,該芯片具有在線編程功能,功耗低,能在3.3V的超低壓下工作;時鐘芯片采用DS1302,它是一款高性能、低功耗、自帶RAM的實時時鐘芯片,具有使用壽命長,精度高和功耗低等特點,同時具有掉電自動保存功能,可以對年、月、日、星期、時、分、秒進(jìn)行計時,具有閏年補償功能,其工作電壓為2.5V~5.5V;溫度檢測模塊由DS18B20構(gòu)成,它采用獨特的單線接口僅需一個端口引腳進(jìn)行通訊,具有測量精度高、測量圍廣等優(yōu)點,其測溫圍在-55~+125℃,工作電壓為3v~5.5v;顯示部份使用1602液晶顯示屏來實現(xiàn),該顯示屏具有低功耗、壽命長、可靠性高的特點,其工作電壓為5v。4.3主要單元電路的設(shè)計4.3.1STC89C52單片機(jī)簡介STC89C52是一種低功耗、高性能的8位CMOS微控制器,具有8K的可編程Flash存儲器。使用高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在線系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。STC89C52具有以下標(biāo)準(zhǔn)功能:8K字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片晶振及時鐘電路。另外,STC89C52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。引腳排列如圖2.1所示。圖2.1STC89C52引腳圖從引腳功能來看,可將引腳分為三部分:1、電源及時鐘引腳VCC:接+5V電源;VSS:接地;XTAL1和XTAL2:時鐘引腳,外接晶體引線端。當(dāng)使用芯片部時鐘時,此兩引腳端用于外接石英晶體和微調(diào)電容;當(dāng)使用外部時鐘時,用于接外部時鐘脈沖信號。2、控制引腳RST/VPT:RST是復(fù)位信號輸入端,VPT是備用電源輸入端。當(dāng)RST輸入端保持2個機(jī)器周期以上高電平時,單片機(jī)完成復(fù)位初始化操作。當(dāng)主電源VCC發(fā)生故障而突然下降到一定低電壓或斷電時,第2功能VPT將為片RAM提供電源以保護(hù)片RAM中的信息不丟失。ALE/PROG:地址鎖存允許信號輸出端。在存取外存儲器時,用于鎖存低8位地址信號。當(dāng)單片機(jī)正常工作后,ALE端就會周期性地以時鐘振蕩頻率的1/6固定頻率向外輸出正脈沖信號。此引腳的第2功能PROG是對片帶有4K字節(jié)EPROM的8751固化程序時,作為編程脈沖輸入端。PSEN:程序存儲允許輸出端。是片外程序存儲器的讀選通信號,低電平有效。CPU從外部程序存儲器取指令時,PSEN信號會自動產(chǎn)生負(fù)脈沖,作為外部程序存儲器的選通信號。EA/VPP:程序存儲器地址允許輸入端。當(dāng)EA為高電平時,CPU執(zhí)行片程序存儲器指令,但當(dāng)PC中的值超過0FFFFH時,將自動轉(zhuǎn)向執(zhí)行片外程序存儲器指令;當(dāng)EA為低電平時,CPU只執(zhí)行片外程序存儲器指令。對8031單片機(jī),EA必須接低電平。在8751中,當(dāng)對片EPROM編程時,該端接21V的編程電壓。3、I/O口引腳P0.0~P0.7:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫"1”時,引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。P1.0~P1.7:P1口是一個具有部上拉電阻的8位雙向I/O口。作為輸出口,每位能驅(qū)動4個TTL邏輯電平。此外,P1.0和P1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入〔P1.0/T2和時器/計數(shù)器2的觸發(fā)輸入〔P1.1/T2EX。在flash編程和校驗時,P1口接收低8位地址字節(jié)。P2.0~P2.7:P2口是一個具有部上拉電阻的8位雙向I/O口。作為輸出口,每位能驅(qū)動4個TTL邏輯電平。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器時,P2口送出高八位地址。在使用8位地址訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的容。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。P3.0~P3.7:P3口是一個具有部上拉電阻的8位雙向I/O口。作為輸出口,每位能驅(qū)動4個TTL邏輯電平。P3口亦作為STC89C52特殊功能〔第二功能使用。在flash編程和校驗時,P3口也接收一些控制信號。4.3.2單片機(jī)主控制模塊的設(shè)計本設(shè)計中單片機(jī)主要負(fù)責(zé)對外設(shè)的控制和各個功能模塊間的協(xié)調(diào),沒有復(fù)雜的數(shù)據(jù)計算,因此,8位的51系列單片機(jī)足以勝任。51單片機(jī)以其低廉的價格以及較出色的性能成了很多控制系統(tǒng)的首選。它具有豐富的部資源,較大的數(shù)據(jù)、程序存儲區(qū)。一個典型的單片機(jī)最小系統(tǒng)一般由時鐘電路、復(fù)位電路、電源指示燈和外部擴(kuò)展接口等部分組成,本系統(tǒng)也不例外,當(dāng)單片機(jī)具備了這些最基本的條件后,就可以正常工作了。單片機(jī)的最小系統(tǒng)如圖4.2所示,單片機(jī)的XTAL0和XTAL1引腳用于連接晶振電路。XTAL0接外部晶振和微調(diào)電容的一端,在片它是振蕩器倒相放大器的輸入,XTAL1接外部晶振和微調(diào)電容的另一端,在片它是振蕩器倒相放大器的輸出。RESET為復(fù)位引腳,連接復(fù)位電路,它用于對單片機(jī)進(jìn)行初始化。復(fù)位電路包括復(fù)位電容〔C6、復(fù)位電阻〔R3和復(fù)位開關(guān)〔S4。VSS為電源地,VCC為電源正。圖4.2單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng)復(fù)位、晶振電路簡介1、復(fù)位電路的設(shè)計復(fù)位電路是使單片機(jī)的CPU或系統(tǒng)中的其他部件處于某一確定的初始狀態(tài),并從這上狀態(tài)開始工作。〔1單片機(jī)常見的復(fù)位電路通常單片機(jī)復(fù)位電路有兩種:上電復(fù)位電路,按鍵復(fù)位電路。上電復(fù)位電路:上電復(fù)位是單片機(jī)上電時復(fù)位操作,保證單片機(jī)上電后立即進(jìn)入規(guī)定的復(fù)位狀態(tài)。它利用的是電容充電的原理來實現(xiàn)的。按鍵復(fù)位電路:它不僅具有上電復(fù)位電路的功能,同時它的操作比上電復(fù)位電路的操作要簡單的多。如果要實現(xiàn)復(fù)位的話,只要按下RESET鍵即可。它主要是利用電阻的分壓來實現(xiàn)的在此設(shè)計中,采用的按鍵復(fù)位電路。按鍵復(fù)位電路如圖4.3所示。圖4.3復(fù)位電路〔2復(fù)位電路工作原理上電復(fù)位要求接通電源后,單片機(jī)自動實現(xiàn)復(fù)位操作。上電瞬間RESET引腳獲得高電平,隨著電容的充電,RERST引腳的高電平將逐漸下降。RERST引腳的高電平只要能保持足夠的時間〔2個機(jī)器周期,單片機(jī)就可以進(jìn)行復(fù)位操作。上電與按鍵均有效的復(fù)位電路不僅在上電時可以自動復(fù)位,而且在單片機(jī)運行期間,利用按鍵也可以完成復(fù)位操作2、晶振電路的設(shè)計晶振電路用于產(chǎn)生單片機(jī)工作所需要的時鐘信號,而時序所研究的是指令執(zhí)行中各信號之間的相互關(guān)系。單片機(jī)本身就如一個復(fù)雜的同步時序電路,為了保證同步工作方式的實現(xiàn),電路應(yīng)在唯一的時鐘信號控制下嚴(yán)格地工作。通常在引腳XTALl和XTAL2跨接石英晶體和兩個補償電容構(gòu)成自激振蕩器,如圖4.4中Y1、C1、C2??梢愿鶕?jù)情況選擇6MHz、12MHz或24MHz等頻率的石英晶體,補償電容通常選擇30pF左右的瓷片電容。圖4.4時鐘振蕩電路4.3.3時鐘電路模塊的設(shè)計DS1302是DALLAS公司推出的涓流充電時鐘芯片,含有一個實時時鐘/日歷和31字節(jié)靜態(tài)RAM,通過簡單的串行接口與單片機(jī)進(jìn)行通信。圖4.5所示為DS1302的引腳排列,其中VCC1為后備電源,VCC2為主電源。DS1302由VCC1或VCC2兩者中的較大者供電。所以在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。X1和X2是振蕩源,外接32.768KHz晶振用來為芯片提供計時脈沖。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電行動時,在VCC大于等于2.5V之前,RST必須保持低電平。在SCLK為低電平時,才能將RST置為高電平,I/O為串行數(shù)據(jù)輸入端〔雙向。SCLK始終是輸入端。圖4.5DS1302的硬件接線圖時鐘芯片DS1302的工作原理:<1>DS1302的控制字節(jié)DS1302控制字節(jié)的高有效位〔位7必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位〔位0如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出<2>數(shù)據(jù)輸入輸出〔I/O在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。<3>DS1302的寄存器DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。"CH"是時鐘暫停標(biāo)志位,當(dāng)該位為1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時,時鐘開始運行。"WP"是寫保護(hù)位,在任何的對時鐘和RAM的寫操作之前,"WP"必須為0。當(dāng)"WP"為1時,寫保護(hù)位防止對任一寄存器的寫操作。此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器容。DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH<寫>、FFH<讀>。4.3.4溫度傳感器電路設(shè)計數(shù)字溫度傳感器DS18B20是由Dalles半導(dǎo)體公司生產(chǎn)的,它具有耐磨耐碰,體積小,使用方便,封裝形式多樣〔如圖4.6,適用于各種狹小空間設(shè)備數(shù)字測溫和控制領(lǐng)域。圖4.6DS18B20的兩種封裝1、DS18B20的主要特性〔1適應(yīng)電壓圍更寬,電壓圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電?!?獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊?!?DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫?!?DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路?!?溫圍-55℃~+125℃,在-10~+85℃時精度為±〔6可編程的分辨率為9~12位,對應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和〔7在9位分辨率時最多在93.75ms把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms把溫度值轉(zhuǎn)換為數(shù)字,速度更快。〔8測量結(jié)果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力?!?負(fù)壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。2、DS18B20的部結(jié)構(gòu)DS18B20部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器〔如圖4.7。圖4.7DS18B20的部結(jié)構(gòu)組成DS18B20的供電方式有兩種:寄生電源供電方式和外部電源供電方式。本設(shè)計采用外部電源供電方式〔如圖4.8,DS18B20工作電源由VDD引腳接入,此時I/O線不需要強上拉,不存在電源電流不足的問題,可以保證轉(zhuǎn)換精度。外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強,而且電路也比較簡單,可以開發(fā)出穩(wěn)定可靠的多點溫度監(jiān)控系統(tǒng)。圖4.8DS18B20引腳接線引腳說明:GND為接地引腳;DQ為數(shù)據(jù)輸入輸出腳。用于單線操作,漏極開路;VCC接電源正;4.3.5獨立式鍵盤設(shè)計實現(xiàn)鍵盤控制的方法有多種,它可以用FPGA來進(jìn)行控制,也可以用單片機(jī)來進(jìn)行控制。在本系統(tǒng)中,我們采用了單片機(jī)來進(jìn)行控制,因為單片機(jī)可以很好的解決鍵抖動。由若干個按鍵組成一個鍵盤,其電路結(jié)構(gòu)可分為獨立式鍵盤和矩陣式鍵盤兩種。獨立式鍵盤每個鍵單獨占用一根I/O口線,每根I/O口線上的按鍵工作狀態(tài)不會影響其他I/O口線上的狀態(tài),矩陣式鍵盤按鍵排列為行列式矩陣結(jié)構(gòu),也稱行列式鍵盤結(jié)構(gòu)。4行4列共16個鍵,只占用8根I/O口線,鍵數(shù)目較多,可節(jié)省口線。本設(shè)計采用的是獨立式鍵盤。鍵盤的工作方式可分為編程控制方式和中斷控制方式。CPU在一個工作周期,利用完成其他任務(wù)的空余時間,調(diào)用鍵盤掃描子程序,經(jīng)程序查詢,若無鍵操作,則返回;若有鍵操作,則進(jìn)而判斷是哪個鍵,并執(zhí)行相應(yīng)的鍵處理程序。這種方式為編程掃描方式。由于單片機(jī)在正常應(yīng)用過程中,可能會經(jīng)常進(jìn)行鍵操作,因而編程控制方式使CPU經(jīng)常處于工作狀態(tài),在進(jìn)行本次設(shè)計中,只涉及到了設(shè)置、上調(diào)、下調(diào)三個功能。因此采用獨立式鍵盤。如下圖所示:圖4.9按鍵的設(shè)計顯示模塊的設(shè)計本設(shè)計中由于要對時間、溫度進(jìn)行顯示,所以選擇液晶顯示屏1602模塊作為輸出。1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線。它可以顯示兩行,每行16個字符,采用單+5V電源供電,外圍電路配置簡單,價格便宜,具有很高的性價比。1602液晶模塊部的字符發(fā)生存儲器〔CGROM>已經(jīng)存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母"A"的代碼是01000001B〔41H,顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母"A"。管腳功能如表4-1所示:表4-1LCD1602引腳功能引腳符號功能說明1VSS一般接地2VDD接電源〔+5V3V0液晶顯示器對比度調(diào)整端。4RSRS為寄存器選擇。5R/WR/W為讀寫信號線。6EE<或EN>端為使能<enable>端,下降沿使能。7DB0底4位三態(tài)、雙向數(shù)據(jù)總線0位〔最低位8DB1底4位三態(tài)、雙向數(shù)據(jù)總線1位9DB2底4位三態(tài)、雙向數(shù)據(jù)總線2位10DB3底4位三態(tài)、雙向數(shù)據(jù)總線3位11DB4高4位三態(tài)、雙向數(shù)據(jù)總線4位12DB5高4位三態(tài)、雙向數(shù)據(jù)總線5位13DB6高4位三態(tài)、雙向數(shù)據(jù)總線6位14DB7高4位三態(tài)、雙向數(shù)據(jù)總線7位〔最高位LCD1602主要管腳介紹:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生鬼影使用時可以通過一個10K的電位器調(diào)整對比度。RS為寄存器選擇端,高電平時選擇數(shù)據(jù)寄存器,低電平時選擇指令寄存器。R/W為讀寫信號線端,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址;當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。E為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。將L1602的RS端和P2.0,R/W端和P2.1,E端和P2.2相連,當(dāng)RS=0時,對LCD1602寫入指令;當(dāng)RS=1時,對LCD1602寫入數(shù)據(jù)。當(dāng)R/W端接高電平時芯片處于讀數(shù)據(jù)狀態(tài),反之處于寫數(shù)據(jù)狀態(tài),E端為使能信號端。當(dāng)R/W為高電平,E端也為高電平,RS為低電平時,液晶顯示屏顯示需要顯示的示數(shù)。圖4.10為1602液晶顯示屏與單片機(jī)的硬件連接圖。圖4.10LCD液晶與單片機(jī)硬件連線圖4.4本章小結(jié)本章主要介紹了系統(tǒng)硬件設(shè)計,其中對時鐘芯片DS1302、1602液晶顯示屏、DS18B20溫度傳感器和STC89C52最小系統(tǒng)的設(shè)計做了詳細(xì)闡述。此外還介紹了各模塊和單片機(jī)的連接方法、其特性及電路原理,最后確定系統(tǒng)的整體硬件設(shè)計方案。.第五章系統(tǒng)的軟件設(shè)計5.1程序流程圖系統(tǒng)總流程圖系統(tǒng)總流程圖如圖5.1所示。流程圖分析:首先系統(tǒng)初始化,系統(tǒng)開始運行,當(dāng)有設(shè)置鍵按下時進(jìn)入修改時間模式,無按鍵按下時讀取時間、溫度等數(shù)據(jù)送入液晶屏顯示;在修改時間模式下設(shè)置時間完成后再送數(shù)據(jù)到液晶屏顯示。圖5.1系統(tǒng)總流程圖溫度程序流程圖溫度讀取流程圖如圖5.2所示。流程圖分析:開始進(jìn)入初始化DS18B20,就是通過主機(jī)拉低單線產(chǎn)生復(fù)位脈沖然后釋放該線,如果有應(yīng)答脈沖,即發(fā)起ROM命令當(dāng)成功的執(zhí)行操作命令后,就使用ConvertT命令即開始溫度轉(zhuǎn)換,當(dāng)轉(zhuǎn)換完后,又初始化DS18B20是否有應(yīng)答脈沖,若有,就發(fā)起ReadScratchpad〔讀取暫存器和CRC字節(jié)命令,既同時讀出第1,2個字節(jié),即為溫度的數(shù)據(jù)。圖5.2溫度顯示流程圖DS1302時鐘程序流程圖時鐘流程圖如圖5.3所示。流程圖分析:DS1302開始計時時,首先進(jìn)行初始化,當(dāng)有中斷信號時,讀取時鐘芯片的數(shù)據(jù)送入液晶屏顯示。這時若有設(shè)置鍵按下時,進(jìn)行時間修改,完成后將數(shù)據(jù)送入時鐘芯片;若沒有按鍵按下,則直接存入EPROM,送入液晶屏顯示。圖5.3時鐘流程圖LCD顯示程序流程圖顯示程序流程圖如圖5.4。流程圖分析:首先對1602顯示屏進(jìn)行初始化〔初始化大約持續(xù)10ms左右,然后檢查忙信號,若BF=0,則獲得顯示RAM的地址,寫入相應(yīng)的數(shù)據(jù)顯示;若BF=1,則代表模塊正在進(jìn)行部操作,不接受任何外部指令和數(shù)據(jù),直到BF=0為止。圖5.4LCD顯示程序流程圖5.2程序的設(shè)計DS18B20測溫程序DS18B20是一種單總線數(shù)字式溫度傳感器,它與單片機(jī)之間采用的是串行數(shù)據(jù)傳送,所以在對DS18B20進(jìn)行讀寫操作時必須按照它的時序進(jìn)行。一般訪問DS18B20時按如下步驟進(jìn)行:初始化;ROM操作命令;存儲器操作命令;執(zhí)行/數(shù)據(jù)。部分源程序如下:ReadOneChar<void> { unsignedchari=0; unsignedchardat=0;for<i=8;i>0;i--> { DQ=1; DS18_delay<1>; DQ=0; dat>>=1;//復(fù)合賦值運算,等效dat=dat>>1 DQ=1; if<DQ> dat|=0x80; DS18_delay<4>; }return<dat>;}WriteOneChar<unsignedchardat>//有參函數(shù),功能是"寫",而寫的容就是括號的參數(shù){ unsignedchari=0; for<i=8;i>0;i--> { DQ=0; DQ=dat&0x01; DS18_delay<5>; DQ=1; dat>>=1;//復(fù)合賦值運算,等效dat=dat>>1<dat=dat右移一位后的值> } DS18_delay<4>;}unsignedintReadTemperature<void>{ Init_DS18B20<>; //初始化,調(diào)用初始化函數(shù) WriteOneChar<0xcc>; //跳過讀序列號的操作,調(diào)用寫函數(shù),寫0xcc指令碼 WriteOneChar<0x44>; //啟動溫度轉(zhuǎn)換,調(diào)用寫函數(shù),寫0x44指令碼 DS18_delay<125>; //轉(zhuǎn)換需要一點時間,延時 Init_DS18B20<>; //初始化,調(diào)用初始化函數(shù) WriteOneChar<0xcc>; //跳過讀序列號的操作,調(diào)用寫函數(shù),寫0xcc指令碼 WriteOneChar<0xbe>; //調(diào)用寫函數(shù),寫0xbe指令碼,讀溫度寄存器 tempL=ReadOneChar<>; //讀出溫度的低位LSB tempH=ReadOneChar<>; //讀出溫度的高位MSB tempa=<<tempH*256>+tempL>*0.0625;//溫度轉(zhuǎn)換DS18_delay<20>;return<tempa>;//運算結(jié)果返回到函數(shù):ReadTemperature<>}DS1302讀寫程序DS1302是SPI總線驅(qū)動方式。它不僅要向寄存器寫入控制字,還需要讀取相應(yīng)寄存器的數(shù)據(jù)。要想與DS1302通信,首先要先了解DS1302的控制字。DS1302的控制字如圖5.5所示。圖5.5DS1302的控制字控制字總是從最低位開始輸出。在控制字指令輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從最低位〔0位開始。同樣,在緊跟8位的控制字指令后的下一個SCLK脈沖的下降沿,讀出DS1302的數(shù)據(jù),讀出的數(shù)據(jù)也是從最低位到最高位。數(shù)據(jù)讀寫時序如圖5.6、5.7所示。圖5.6單字節(jié)讀圖5.7單字節(jié)寫在進(jìn)行任何數(shù)據(jù)傳輸時,RST必須被置高電平,每個SCLK為上升沿時數(shù)據(jù)被輸入,下降沿時數(shù)據(jù)被輸出。先把RST置低,禁止數(shù)據(jù)傳輸,SCLK置低,清零時鐘總線,RST再置高,允許數(shù)據(jù)傳輸。傳送完成后,RST置低,禁止字節(jié)的傳送。部分源程序如下:voidwrite_byte<uchardat>//寫一個字節(jié){ ACC=dat; RST=1; for<a=8;a>0;a--> { IO=ACC0; SCLK=0; SCLK=1; ACC=ACC>>1; }}ucharread_byte<>//讀一個字節(jié){ RST=1; for<a=8;a>0;a--> { ACC7=IO; SCLK=1; SCLK=0; ACC=ACC>>1; } return<ACC>;}voidwrite_1302<ucharadd,uchardat>//向1302芯片寫函數(shù),指定寫入地址,數(shù)據(jù){ RST=0; SCLK=0; RST=1; write_byte<add>; write_byte<dat>; SCLK=1; RST=0;}ucharread_1302<ucharadd>//從1302讀數(shù)據(jù)函數(shù),指定讀取數(shù)據(jù)來源地址{ uchartemp; RST=0; SCLK=0; RST=1; write_byte<add>; temp=read_byte<>; SCLK=1; RST=0; return<temp>;}液晶顯示程序1602通過D0~D7的8位數(shù)據(jù)端傳輸數(shù)據(jù)和指令,其模塊的控制器有11條控制指令。當(dāng)液晶顯示屏的接口電路與單片機(jī)系統(tǒng)I/O按照并行數(shù)據(jù)傳輸方式連接完成以后,即可以對STC89C52單片機(jī)進(jìn)行編程。在液晶屏完成顯示之前首先要對液晶進(jìn)行初始化。源程序如下:lcd_init<>//***液晶初始化函數(shù)****{ write_1602com<0x38>;//設(shè)置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數(shù)據(jù) write_1602com<0x0c>;//開顯示不顯示光標(biāo) write_1602com<0x06>;//整屏不移動,光標(biāo)自動右移 write_1602com<0x01>;//清顯示 write_1602com<yh+1>;//日歷顯示固定符號從第一行第1個位置之后開始顯示 for<a=0;a<14;a++> { write_1602dat<tab1[a]>;//向液晶屏寫日歷顯示的固定符號部分 //delay<3>; } write_1602com<er+2>;//時間顯示固定符號寫入位置,從第2個位置后開始顯示 for<a=0;a<8;a++> { write_1602dat<tab2[a]>;//寫顯示時間固定符號,兩個冒號 //delay<3>; }}5.3本章小結(jié)本章對基于單片機(jī)的萬年歷系統(tǒng)軟件模塊進(jìn)行設(shè)計,先對該系統(tǒng)進(jìn)行了整體流程的設(shè)計,給出了設(shè)計的流程圖,隨后介紹了各模塊的子程序。對一些模塊常用的函數(shù)進(jìn)行了解釋,這一切都構(gòu)成了這個系統(tǒng)的軟件基礎(chǔ)。.第六章仿真與調(diào)試6.1軟件簡介6.1.1Keil軟件簡介KeilC51是美國KeilSoftware公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng)。這款軟件提供了豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的是,KeilC51軟件編譯后生成的匯編代碼,就能展現(xiàn)出生成的目標(biāo)代碼效率非常高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。Keil軟件中uVision與Ishell分別是C51forWindows和forDos的集成開發(fā)環(huán)境<IDE>,可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件<.OBJ>。目標(biāo)文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對目標(biāo)文件<.ABS>。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,可載入Proteus仿真軟件中的MCU中,進(jìn)行功能仿真。Keil使用"工程"〔Project的概念,對工程〔而不能對單一的源程序進(jìn)行編譯/匯編、連接等操作。工程的建立、設(shè)置、編譯/匯編及連接產(chǎn)生目標(biāo)文件的方法非常易于掌握。應(yīng)用Keil進(jìn)行軟件仿真開發(fā)的主要步驟為:1.編寫源程序并保存;2.建立工程并添加源文件;3.設(shè)置工程;4.編譯/匯編、連接,產(chǎn)生目標(biāo)文件;5.程序調(diào)試。6.1.2ProteusISIS簡介ProteusISIS是英國LabcenterElectronics公司開發(fā)的電路分析與實物仿真軟件。它由ISIS和ARES兩個軟件構(gòu)成,其中ISIS是一款便捷的電子系統(tǒng)仿真平臺軟件,它運行于Windows操作系統(tǒng)上,用戶可以對模擬電路、數(shù)字電路、模數(shù)混合電路,以及基于微控制器的系統(tǒng)連同所有外圍接口電子元器件一起仿真。該軟件的特點是:〔1全部滿足我們提出的單片機(jī)軟件仿真系統(tǒng)的標(biāo)準(zhǔn),并在同類產(chǎn)品中具有明顯的優(yōu)勢?!?具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS-232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。〔3目前支持的單片機(jī)類型有:ARM7系列、68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片?!?支持大量的存儲器和外圍芯片??傊?該軟件是一款集單片機(jī)和SPICE分析于一身的仿真軟件,功能極其強大,可仿真ARM、51、AVR、PIC。Proteus啟動畫面:此外,ARES軟件是一款高級的布線編輯軟件,它采用了32位數(shù)據(jù)庫的高性能PCB設(shè)計系統(tǒng),以及高性能的自動布局和自動布線方法。集成了高級原理布線圖、混合模式SPICE電路仿真、PCB設(shè)計以及自動布線來實現(xiàn)一個完整的電子設(shè)計。6.2Keil軟件調(diào)試流程首先選擇菜單File-New…,在源程序編輯器中輸入?yún)R編語言或C語言源程序〔或選擇File-Open…,直接打開已用其它編輯器編輯好的源程序文檔并保存,注意保存時必須在文件名后加上擴(kuò)展名.asm〔.a51或.c。然后選擇菜單Project-NewProject…,建立新工程并保存〔保存時無需加擴(kuò)展名,也可加上擴(kuò)展名.uv2,工程保存后會立即彈出一個設(shè)備選擇對話框,選擇CPU后點確定返回主界面。如圖6.1圖6.1為項目選擇CPU器件這時工程管理窗口的文件頁〔Files會出現(xiàn)"Target1",將其前面+號展開,接著選擇SourceGroup1,右擊鼠標(biāo)彈出快捷菜單,選擇"AddFiletoGroup‘SourceGroup1’",出現(xiàn)一個對話框,要求尋找并加入源文件〔在加入一個源文件后,該對話框不會消失,而是等待繼續(xù)加入其它文件。加入文件后點close返回主界面,展開"SourceGroup1”緊接著對工程進(jìn)行設(shè)置,選擇工程管理窗口的Target1,再選擇Project-OptionforTarget‘Target1’〔或點右鍵彈出快捷菜單再選擇該選項,打開工程屬性設(shè)置對話框,共有8個選項卡,主要設(shè)置工作包括在Target選項卡中設(shè)置晶振頻率、在Debug選項卡中設(shè)置實驗仿真板等,如果要寫片,還必須在Output選項卡中選中"CreatHexFi"〔如圖6.2;其它選項卡容一般可取默認(rèn)值。工程設(shè)置后按F7鍵〔或點擊編譯工具欄上相應(yīng)圖標(biāo)進(jìn)行編譯/匯編、連接以及產(chǎn)生目標(biāo)文件。圖6.2生成HEX文件成功編譯/匯編、連接后,選擇菜單Debug-Start/StopDebugSession〔或按Ctrl+F5鍵進(jìn)入程序調(diào)試狀態(tài)〔如圖6.3,Keil提供對程序的模擬調(diào)試功能,建一個功能強大的仿真CPU以模擬執(zhí)行程序。Keil能以單步執(zhí)行〔按F11或選擇Debug-Step、過程單步執(zhí)行〔按F10或選擇Debug-StepOver、全速執(zhí)行等多種運行方式進(jìn)行程序調(diào)試。圖6.3仿真調(diào)試狀態(tài)窗口如果發(fā)現(xiàn)程序有錯,可采用在線匯編功能對程序進(jìn)行在線修改〔Debug-InlineAssambly…,不必執(zhí)行先退出調(diào)試環(huán)境、修改源程序、對工程重新進(jìn)行編譯/匯編和連接、然后再次進(jìn)入調(diào)試狀態(tài)的步驟。對于一些必須滿足一定條件〔如按鍵被按下等才能被執(zhí)行的、難以用單步執(zhí)行方式進(jìn)行調(diào)試的程序行,可采用斷點設(shè)置的方法處理〔Debug-Insert/RemoveBreakpoint或Debug-Breakpoints…等。在模擬調(diào)試程序后,還須通過編程器將.hex目標(biāo)文件燒寫入單片機(jī)中才能觀察目標(biāo)樣機(jī)真實的運行狀況。Keil軟件由于其強大的軟件仿真功能,友好的用戶界面以及易于掌握的特點,應(yīng)用此軟件來編寫程序有著巨大的優(yōu)勢,熟悉此軟件也是調(diào)試整個萬年歷系統(tǒng)的基礎(chǔ)。6.3Proteus軟件運行流程ProteusISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面,如圖所示。包括:標(biāo)題欄、主菜單、標(biāo)準(zhǔn)工具欄、繪圖工具欄、狀態(tài)欄、對象選擇按鈕、預(yù)覽對象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對象選擇器窗口、圖形編輯窗口。運行Proteus程序后,進(jìn)入軟件的主界面〔如圖6.4。通過左側(cè)工具欄中的P<從庫中選擇元件命令>命令,在PickDevices左側(cè)窗口中選擇所需元件的關(guān)鍵字,然后放置元件并調(diào)整方向和位置以及參數(shù)設(shè)置,最后進(jìn)行連線。ProteusISIS的工作界面:圖6.4ProteusISIS的工作界面按P在庫中查找元器件:圖6.5PickDevices窗口將所需要的元器件放置好后,繪制成原理圖如圖6.6圖6.6proteus仿真萬年歷的原理圖6.4萬年歷的功能仿真模擬調(diào)試:當(dāng)電路搭建好之后,選中單片機(jī)STC89C52,左鍵點擊STC89C52,在出現(xiàn)的對話框里點擊ProgramFile按鈕,找到剛才Keil軟件編譯得到的HEX文件,載入然后點擊"OK"按鈕就可以模擬了。點擊模擬調(diào)試按鈕的運行按鈕,進(jìn)人調(diào)試狀態(tài)。圖6.7為運行按鍵:圖6.7運行按鍵上電后后LCD顯示:圖6.8LCD顯示調(diào)節(jié)秒鐘:圖6.9秒鐘的調(diào)節(jié)調(diào)節(jié)分鐘:圖6.10分鐘的調(diào)節(jié)調(diào)節(jié)時鐘:圖6.11時鐘的調(diào)節(jié)調(diào)節(jié)星期:圖6.12星期的調(diào)節(jié)調(diào)節(jié)日期:圖6.13日期的調(diào)節(jié)調(diào)節(jié)月份:圖6.14月份的調(diào)節(jié)調(diào)節(jié)年份:圖6.15年份的調(diào)節(jié)按鍵功能自上而下依次為:設(shè)置鍵、上調(diào)鍵、下調(diào)鍵:圖6.16按鍵的設(shè)置溫度調(diào)節(jié):圖6.17溫度傳感器6.5硬件調(diào)試結(jié)果電子萬年歷的電路系統(tǒng)比較復(fù)雜,對于焊接方面不可輕視,只要電路系統(tǒng)中出于一處的錯誤,就會對檢測造成很大的不便,而且電路的交線較多,對于各種鋒利的引腳要注意處理,否則會刺破帶有包皮的導(dǎo)線,則會對電路造成短路現(xiàn)象。在本次電子萬年歷的設(shè)計調(diào)試中遇到了很多的問題?;叵脒@些問題只要認(rèn)真多思考都是可以避免的,以下為主要的問題:〔1對萬年歷修改時間或日期時,有時LCD液晶顯示屏被屏蔽掉,造成不亮現(xiàn)象。解決:根據(jù)儀器的測試,發(fā)現(xiàn)電路的驅(qū)動能力不足,最后在DS1302時鐘芯片的/CS、SCLK、RET端接入5.1K的上拉電阻后,電路的驅(qū)動能力才能滿足,即可解決不亮現(xiàn)象。〔2燒入程序后,LCD液晶顯示屏不顯示或者亮度不好。解決:不顯示時首先使用萬用表對電路進(jìn)行測試,觀察是否存在漏焊,虛焊,或者元件損壞的現(xiàn)象。若無此問題查看燒寫的程序是否正確無誤,對程序進(jìn)行認(rèn)真修改。當(dāng)顯示亮度不好時一遍旋轉(zhuǎn)10K歐的滑動變阻器,一遍觀看LCD顯示屏,直到看到合適的亮度為止。經(jīng)過多次的反復(fù)調(diào)試試與分析,可以對電路的原理及功能更加熟悉,同時提高了設(shè)計能力與及對電路的分析能力。同時在軟件的編程方面得到更到的提高,對編程能力得到加強,同時對所學(xué)的知識得到很大的提高與鞏固。如下為硬件實物圖:圖6.18萬年歷硬件圖圖6.19萬年歷顯示6.6本章小結(jié)本節(jié)介紹了Proteus軟件和keil軟件,闡述了如何用Proteus結(jié)合Keil軟件仿真出電子萬年歷功能的過程并給出了仿真系統(tǒng)的操作過程。最后簡要的介紹了硬件調(diào)試中的問題和解決辦法。.第七章總結(jié)與展望至此,關(guān)于畢業(yè)設(shè)計的所有容就介紹完了,進(jìn)行這次畢業(yè)設(shè)計一切都是從零開始,從最簡單查資料、了解各個元件的功能起步,再確定設(shè)計方案、畫流程圖、編寫程序到最后進(jìn)行仿真,這次課題設(shè)計可以說成功完成。系統(tǒng)的硬件、軟件設(shè)計合理,功能完備,運行穩(wěn)定、可靠。實驗結(jié)果表明此萬年歷實現(xiàn)后具有讀取方便、顯示直觀、功能多樣、電路簡潔、等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。在整個設(shè)計過程中,充分發(fā)揮了人的主觀能動性,自主學(xué)習(xí),學(xué)到了許多沒學(xué)到的知識。程序編寫中,由于思路不清晰,開始時遇到了很多的問題,經(jīng)過靜下心來思考查資料,和同學(xué)討論,向老師請教,理清了思路,完成對程序的編寫。通過設(shè)計提高了對單片機(jī)的認(rèn)識,進(jìn)一步熟悉和掌握單片機(jī)的結(jié)構(gòu)及工作原理。通過實際程序設(shè)計和調(diào)試,逐步掌握模塊化程序設(shè)計方法和調(diào)試技術(shù),提高軟件設(shè)計、調(diào)試能力;通過這次設(shè)計熟悉以單片機(jī)核心的應(yīng)用系統(tǒng)開發(fā)的全過程,掌握硬件電路設(shè)計的基本方法和技術(shù),掌握相關(guān)電路參數(shù)的計算方法。最終較好的完成了設(shè)計,達(dá)到了預(yù)期的目的,完了最初的設(shè)想。但是由于時間和個人能力的原因,整個系統(tǒng)看起來還是顯得非常的簡單,只實現(xiàn)了一些最基本的功能,還有許多不足和可以擴(kuò)展的地方。例如實現(xiàn)公歷和農(nóng)歷的轉(zhuǎn)換、鬧鐘報時等,這些有待以后來彌補,還望各位老師予以指正和修改。.參考文獻(xiàn)[1]和平.單片機(jī)原理與應(yīng)用[M].:機(jī)械工業(yè),2002,201-209[2]守義.單片機(jī)應(yīng)用技術(shù)[M].:電子科技大學(xué),2002,98-107[3]勇.數(shù)字電路[M].:電子工業(yè),2004,111-118[4]康光華.電子技術(shù)基礎(chǔ)—模擬部分[M].〔第五版高等教育.2005,247-261[5]譚浩強.C程序設(shè)計[M].〔第三版:清華大學(xué),2005,256-278[6]周潤景,麗娜,印群.PROTEUS入門實用教程[M].:機(jī)械工業(yè),2007,314-325[7]戴佳,戴衛(wèi)恒.51單片機(jī)C語言應(yīng)用程序設(shè)計實例精講[M].:電子工業(yè),2006,231-246[8]徐愛鈞,秀華.KeilCx51V7.0單片機(jī)高級語言編程與uVision2應(yīng)用實踐[M].〔第二版:電子工業(yè),2008,156-171[9]肖炎根,舒望.基于實時鐘芯片的電子萬年歷設(shè)計[J].電子技術(shù),2007,卷號〔36:91-94[10]王懷平,王仁波,胡開明.Proteus仿真設(shè)計基于單片機(jī)AT89C51的電子萬年歷[J].科技廣場,2008,卷號〔10:197-198[11]魯剛強.基于液晶顯示器的單片機(jī)系統(tǒng)設(shè)計[J].科技資訊,2008,卷號〔35:22-23[12]余威明.MCU語音型電子萬年歷的開發(fā)[J].工貿(mào)職業(yè)技術(shù)學(xué)院學(xué)報,2004,卷號〔4:20-25[13]邱關(guān)源.電路[M].〔第四版:高等教育,2006,241-268.[14]凱.液晶顯示萬年歷、時間、星期及溫度[D].:理工學(xué)院,2009.[15]海兵,敏.Protel電路設(shè)計實例與分析[M].:人民郵電,2005,119-205[16]黃劼,徐曉秋.單片機(jī)原理及接口技術(shù)[M].:國防工業(yè),2008,102-112[17]迎春.MCS-51單片機(jī)原理及應(yīng)用教程[M].:清華大學(xué),2005,145-157[18]齊,朱寧西.單片機(jī)應(yīng)用系統(tǒng)設(shè)計技術(shù):基于C51的Proteus仿真[M].<第二版>:電子工業(yè),2009,245-264[19]來清民.傳感器與單片機(jī)接口及實例[M].:航空航天大學(xué).2008,134-141[20]宜仁.單片機(jī)硬件接口電路及實例解析[M].:電子工業(yè),2009,210-219[21]付浩偉,向鳳紅,程加堂.基于DS18B20傳感器的溫度數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].理工大學(xué)信息與自動化學(xué)院,2007,卷好〔6:131-134[22]AlexandruValeanu.Interfacing8051MCUswithI2CSerialEEPROMs.[D].MicrochipTechnologyInc,2008..附錄一:系統(tǒng)原理圖附錄二:系統(tǒng)PCB板附錄三:系統(tǒng)程序主程序:#include"DS18B20_3.H"#defineuintunsignedint#defineucharunsignedcharuchara,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp;#defineyh0x80#defineer0x80+0x40//液晶屏的與C51之間的引腳連接定義sbitrs=P2^0;sbiten=P2^2;sbitrw=P2^1;//如果硬件上rw接地,就不用寫這句和后面的rw=0了sbitled=P2^6;//LCD背光開關(guān)//DS1302時鐘芯片與C51之間的引腳連接定義sbitIO=P1^1;sbitSCLK=P1^0;sbitRST=P1^2;sbitACC0=ACC^0;sbitACC7=ACC^7;//校時按鍵與C51的引腳連接定義sbitkey1=P1^5;//設(shè)置鍵sbitkey2=P1^6;//加鍵sbitkey3=P1^7;//減鍵sbitbuzzer=P1^3;//蜂鳴器,通過三極管9012驅(qū)動,端口低電平響/**************************************************************/ucharcodetab1[]={"20--"};//年顯示的固定字符ucharcodetab2[]={"::"};//時間顯示的固定字符//延時函數(shù),后面經(jīng)常調(diào)用voiddelay<uintxms>//延時函數(shù),有參函數(shù){ uintx,y; for<x=xms;x>0;x--> for<y=110;y>0;y-->;}/********液晶寫入指令函數(shù)與寫入數(shù)據(jù)函數(shù),以后可調(diào)用**************/write_1602com<uchar>//****液晶寫入指令函數(shù)****{ rs=0;//數(shù)據(jù)/指令選擇置為指令 rw=0;//讀寫選擇置為寫 P0=;//送入數(shù)據(jù) delay<1>; en=1;//拉高使能端,為制造有效的下降沿做準(zhǔn)備 delay<1>; en=0;//en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令}write_1602dat<uchardat>//***液晶寫入數(shù)據(jù)函數(shù)****{ rs=1;//數(shù)據(jù)/指令選擇置為數(shù)據(jù) rw=0;//讀寫選擇置為寫 P0=dat;//送入數(shù)據(jù) delay<1>; en=1;//en置高電平,為制造下降沿做準(zhǔn)備 delay<1>; en=0;//en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令}lcd_init<>//***液晶初始化函數(shù)****{ write_1602com<0x38>;//設(shè)置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數(shù)據(jù) write_1602com<0x0c>;//開顯示不顯示光標(biāo) write_1602com<0x06>;//整屏不移動,光標(biāo)自動右移 write_1602com<0x01>;//清顯示 write_1602com<yh+1>;//日歷顯示固定符號從第一行第1個位置之后開始顯示 for<a=0;a<14;a++> { write_1602dat<tab1[a]>;//向液晶屏寫日歷顯示的固定符號部分 //delay<3>; } write_1602com<er+2>;//時間顯示固定符號寫入位置,從第2個位置后開始顯示 for<a=0;a<8;a++> { write_1602dat<tab2[a]>;//寫顯示時間固定符號,兩個冒號 //delay<3>; }}/*********************over***********************//***************DS1302有關(guān)子函數(shù)********************/voidwrite_byte<uchardat>//寫一個字節(jié){ ACC=dat; RST=1; for<a=8;a>0;a--> { IO=ACC0; SCLK=0; SCLK=1; ACC=ACC>>1; }}ucharread_byte<>//讀一個字節(jié){ RST=1; for<a=8;a>0;a--> { ACC7=IO; SCLK=1; SCLK=0; ACC=ACC>>1; } return<ACC>;}//voidwrite_1302<ucharadd,uchardat>//向1302芯片寫函數(shù),指定寫入地址,數(shù)據(jù){ RST=0; SCLK=0; RST=1; write_byte<add>; write_byte<dat>; SCLK=1; RST=0;}ucharread_1302<ucharadd>//從1302讀數(shù)據(jù)函數(shù),指定讀取數(shù)據(jù)來源地址{ uchar
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年大學(xué)英語六級聽力理解備考練習(xí)題
- 2026年廚師職業(yè)菜品創(chuàng)新與烹飪技巧考核題
- 2025 小學(xué)二年級道德與法治上冊公共場合不喧嘩課件
- 2026年應(yīng)屆生軟件開發(fā)基礎(chǔ)筆試題
- 2026年金融投資股市分析高級筆試模擬題
- 2026年外貿(mào)業(yè)務(wù)英語聽力突破訓(xùn)練試題
- 地下安全試卷匯編講解
- 2026上半年安徽事業(yè)單位聯(lián)考招聘898人參考考試題庫及答案解析
- 2026年明達(dá)職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試備考題庫含詳細(xì)答案解析
- 2026年南通科技職業(yè)學(xué)院單招綜合素質(zhì)筆試備考題庫含詳細(xì)答案解析
- 2026德江縣縣屬國有企業(yè)招聘13人參考考試題庫附答案解析
- 尋脈山河:中國主要河流與湖泊的空間認(rèn)知與生態(tài)理解-八年級地理教學(xué)設(shè)計
- 達(dá)人精準(zhǔn)運營方案
- 四川省涼山州2025-2026學(xué)年上學(xué)期期末考試七年級數(shù)學(xué)試題(含答案)
- 語文試題-汕頭市2025-2026學(xué)年度普通高中畢業(yè)班教學(xué)質(zhì)量監(jiān)測(含解析)
- 2026年浙江高考英語考試真題及答案
- (16)普通高中體育與健康課程標(biāo)準(zhǔn)日常修訂版(2017年版2025年修訂)
- 質(zhì)量信得過班組匯報材料
- 醫(yī)學(xué)倫理學(xué)案例分析
- 金融科技對商業(yè)銀行業(yè)務(wù)的影響研究
- 寒假輔導(dǎo)班招生方案
評論
0/150
提交評論