基于的模擬電子鐘單片機(jī)課程設(shè)計(jì)樣本_第1頁(yè)
基于的模擬電子鐘單片機(jī)課程設(shè)計(jì)樣本_第2頁(yè)
基于的模擬電子鐘單片機(jī)課程設(shè)計(jì)樣本_第3頁(yè)
基于的模擬電子鐘單片機(jī)課程設(shè)計(jì)樣本_第4頁(yè)
基于的模擬電子鐘單片機(jī)課程設(shè)計(jì)樣本_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《單片機(jī)技術(shù)》課程設(shè)計(jì)闡明書(shū)基于12864模仿電子鐘摘要單片機(jī)應(yīng)用技術(shù)飛速發(fā)展,縱觀咱們當(dāng)前生活各個(gè)領(lǐng)域,從導(dǎo)彈導(dǎo)航裝置,到飛機(jī)上各種儀表控制,從計(jì)算機(jī)網(wǎng)絡(luò)通訊與數(shù)據(jù)傳播,到工業(yè)自動(dòng)化過(guò)程實(shí)時(shí)控制和數(shù)據(jù)解決,以及咱們生活中廣泛使用各種智能IC卡、電子寵物等,單片機(jī)都起到了舉足輕重作用。因此單片機(jī)技術(shù)也日趨成熟。單片機(jī)是集CPU,RAM,ROM,定期,計(jì)數(shù)和各種接口于一體微控制器。它體積小,成本低,功能強(qiáng)。而52系列單片機(jī)是各單片機(jī)中最為典型和最有代表性一種。本次單片機(jī)課程設(shè)計(jì)是通過(guò)運(yùn)用52單片機(jī)來(lái)完畢對(duì)電子鐘設(shè)計(jì),且由12864液晶顯示屏來(lái)顯示時(shí)鐘信息,并帶有DS18B20輸出實(shí)時(shí)溫度顯示。本次課程設(shè)計(jì)達(dá)到了學(xué)習(xí)、理解單片機(jī)有關(guān)指令在各方面應(yīng)用,以及初步理解開(kāi)發(fā)軟、硬件知識(shí)。核心詞:?jiǎn)纹瑱C(jī);12864液晶屏;DS18B20;實(shí)時(shí)溫度ABSTRACTMCUapplicationtechnologyrapiddevelopmentthroughoutallareasoflifewearenow,themissilefromthenavigationdevicetocontrolavarietyofinstrumentsontheplane,networkcommunicationsanddatatransferfromthecomputertothereal-timecontrolanddataprocessingindustrialautomationprocess,andweliveinavarietyofwidelyusedsmartICcards,electronicpets,MCUhaveplayedapivotalrole.Somicrocontrollertechnologymatures.MCUisasetofCPU,RAM,ROM,timing,counting,andmultipleinterfacesinonemicrocontroller.Itssmallsize,lowcost,highfunctionality.The52Seriessingle-chipmicrocontrollerisallthemosttypicalandmostrepresentativeone.Thecourseisdesignedbytheuseofsingle-chipmicrocontroller52tocompletetheelectronicclockdesign,andthe12864LCDscreentodisplaytheclockinformationandreal-timetemperaturedisplaywithDS18B20output.ThecurriculumdesignedtomeetthelearningandunderstandingofMCU-relatedinstructioninallaspectsoftheapplication,aswellasapreliminaryunderstandingofthedevelopmentofsoftwareandhardwareknowledge.KeywordsMCU;12864LCDscreen;DS18B20;real-timetemperature目錄第一章緒論 -1-1.112864液晶顯示概述 -1-1.212864特點(diǎn) -1-1.312864液晶工作原理 -1-1.4基于單片機(jī)控制液晶顯示系統(tǒng)設(shè)計(jì)任務(wù)摘要 -2-第2章總體方案論證與設(shè)計(jì) -3-2.1方案設(shè)計(jì) -3-2.2方案選取 -3-2.3總體硬件構(gòu)成框圖 -4-第3章系統(tǒng)硬件設(shè)計(jì) -5-3.1主芯片模塊 -5-3.2晶振電路 -6-3.3復(fù)位電路模塊 -6-3.4控制按鈕模塊 -7-3.5DS18B20溫度采集電路 -7-3.6顯示電路模塊 -8-第4章系統(tǒng)軟件設(shè)計(jì) -9-4.1主程序設(shè)計(jì) -9-4.2文字顯示 -9-第5章系統(tǒng)調(diào)試與測(cè)試成果分析 -10-5.1使用儀器儀表 -10-5.2系統(tǒng)調(diào)試 -10-5.2.1硬件調(diào)試 -10-5.2.2軟件調(diào)試 -10-5.3測(cè)試成果 -10-第六章總結(jié) -11-參照文獻(xiàn) -12-附錄一·程序 -13-附錄二·電路原理圖 -28-附錄三·實(shí)物電路板及程序運(yùn)營(yíng)圖 -29-第一章緒論隨著社會(huì)發(fā)展,趣來(lái)趣多地方需要應(yīng)用顯示功能,各種數(shù)字顯示儀器中顯示、廣告牌、數(shù)碼產(chǎn)品等,老式數(shù)碼管顯示已經(jīng)遠(yuǎn)遠(yuǎn)不能滿(mǎn)足各行各業(yè)需求?;趩纹瑱C(jī)LCD顯示是一種用單片機(jī)來(lái)控制一種顯示系統(tǒng),它不但能顯示種各數(shù)字、字母、還能顯示各種字體中文以及某些簡(jiǎn)樸圖象,使用起來(lái)極為以便,只要通過(guò)對(duì)單片機(jī)寫(xiě)入一定程序來(lái)控制LCD顯示即可完畢,依照程序不同而產(chǎn)生不同不效果以滿(mǎn)足各種不同需求。1.112864液晶顯示概述液晶(LiquidCrystal),簡(jiǎn)稱(chēng)LC是一種高分子材料因其特殊物理、化學(xué)、光學(xué)特性而被廣泛用于輕薄型顯示技術(shù)上。液晶構(gòu)成物質(zhì)是一種有機(jī)化合物也就是以碳中心所構(gòu)成化合物同步具備兩種物質(zhì)液晶是以分子間力量組合,它們特殊光學(xué)性質(zhì),又對(duì)電磁場(chǎng)敏感,極具實(shí)用價(jià)值。1.212864特點(diǎn)LCD由兩塊玻璃板構(gòu)成,厚約1mm,其間由包具有液晶材料5μm均勻間隔隔開(kāi)。由于液晶材料自身并不發(fā)光,因此在顯示屏兩邊都設(shè)有作為光源燈管,而在液晶顯示屏背面有一塊背光板(或稱(chēng)勻光板)和反光膜,背光板是由熒光物質(zhì)構(gòu)成可以發(fā)射光線(xiàn),其作用重要是提供均勻背景光源。背光板發(fā)出光線(xiàn)在穿過(guò)第一層偏振過(guò)濾層之后進(jìn)入包括成千上萬(wàn)液晶液滴液晶層。液晶層中液滴都被包括在細(xì)小單元格構(gòu)造中,一種或各種單元格構(gòu)成屏幕上一種像素。在玻璃板與液晶材料之間是透明電極,電極分為行和列,在行與列交叉點(diǎn)上,通過(guò)變化電壓而變化液晶旋光狀態(tài),液晶材料作用類(lèi)似于一種個(gè)小光閥。在液晶材料周邊是控制電路某些和驅(qū)動(dòng)電路某些。當(dāng)LCD中電極產(chǎn)生電場(chǎng)時(shí),液晶分子就會(huì)產(chǎn)生扭曲,從而將穿越其中光線(xiàn)進(jìn)行有規(guī)則折射,然后通過(guò)第二層過(guò)濾層過(guò)濾在屏幕上顯示出來(lái)。12864液晶具備功耗低、體積小、重量輕、超薄等許多其她顯示屏無(wú)法比擬長(zhǎng)處近幾年來(lái)被廣泛用于單片機(jī)控制只能儀器、儀表和低功耗電子產(chǎn)品中。1.312864液晶工作原理液晶顯示屏中業(yè)態(tài)光電顯示材料,運(yùn)用液晶電光效應(yīng)把電信號(hào)轉(zhuǎn)換成數(shù)字符、圖像等可見(jiàn)信號(hào)。如圖1-1,液晶正常狀況下,其分子排列很有秩序,顯得清澈透明,一旦加上直流電場(chǎng)后,分子排列被打亂,一某些液晶變不透明,顏色加深因而能顯示數(shù)字和圖像。管腳一共18個(gè)。CS1左半屏片選端,CS2右半屏片選端;V0液晶顯示驅(qū)動(dòng)電壓,通過(guò)一種電位器接到VCC;RS數(shù)據(jù)指令選取信號(hào),H為數(shù)據(jù),L為指令,也叫D/I;R/W讀寫(xiě)選取信號(hào),H為讀,L為寫(xiě),。E為L(zhǎng)CD使能端,R/W為L(zhǎng)時(shí),E信號(hào)下降沿鎖存DB7-DB0;R/W為H時(shí),E為H,DDRAM數(shù)據(jù)讀到DB7-DB0。DB0-DB7數(shù)據(jù)傳播端口。RST復(fù)位信號(hào)。-VOUT和V0為液晶顯示驅(qū)動(dòng)電壓。12864是一種圖形點(diǎn)陣液晶顯示屏,它重要由行驅(qū)動(dòng)器/列驅(qū)動(dòng)器及128×64全點(diǎn)陣液晶顯示屏構(gòu)成。可完畢圖形顯示,也可以顯示8×4個(gè)(16×16點(diǎn)陣)中文。圖1-112864LCD液晶顯示屏1.4基于單片機(jī)控制液晶顯示系統(tǒng)設(shè)計(jì)任務(wù)摘要設(shè)計(jì)一款基于STC89C52RC單片機(jī)控制12864液晶顯示圖片和中文/數(shù)字系統(tǒng)。設(shè)計(jì)目本課題設(shè)計(jì)一方面是為了鞏固對(duì)單片機(jī)課程學(xué)習(xí)加強(qiáng)練習(xí)并純熟掌握proteus軟件使用另一方面本課題規(guī)定將硬件和軟件某些結(jié)合起來(lái),以鍛煉自己分析問(wèn)題綜合能力。第2章總體方案論證與設(shè)計(jì)本系統(tǒng)采用單片機(jī)AT89C51為L(zhǎng)CD顯示屏控制核心。下面簡(jiǎn)要簡(jiǎn)介方案選取與實(shí)現(xiàn)及總體硬件構(gòu)成框圖2.1方案設(shè)計(jì)對(duì)于此設(shè)計(jì)課題,由于規(guī)定是用128×64顯示屏來(lái)顯示中文,而中文及字符(如空格等)是需要顯示代碼。由此LCD顯示時(shí)序圖可知,在顯示過(guò)程中還需要一定延時(shí)(不同型號(hào),延時(shí)時(shí)間是不同)并且在顯示前需將某些特定控制端置相應(yīng)電平,例如說(shuō)還所有輸入之關(guān)需先把LCD總使能端打開(kāi),即置E端為高電平,然后應(yīng)再輸入指令代碼,對(duì)其進(jìn)行有關(guān)設(shè)立。因此還需要一種恰當(dāng)延時(shí)子程序以及輸入數(shù)據(jù)前準(zhǔn)備程序。除了這些外,還應(yīng)寫(xiě)一種初始化程序,用來(lái)對(duì)中斷等某些程序所需要端口進(jìn)行初始。對(duì)于開(kāi)中斷,應(yīng)打開(kāi)總中斷EA以及相應(yīng)低檔中斷EX0和EX1。再者就是兩個(gè)中斷程序,對(duì)于這兩個(gè)中斷程序比較簡(jiǎn)樸,只需對(duì)要執(zhí)行有關(guān)控制所需要每件進(jìn)行滿(mǎn)足即可。最后就是主函數(shù),它重要功能就是判斷中斷與否來(lái)臨,來(lái)臨了,然后判斷是外部中斷0還是外部中斷1,然后依照是0還是1來(lái)執(zhí)行相應(yīng)程序,選取相應(yīng)顯示方式。2.2方案選取本方案選取STC89C52RC為核心控制元件,以128×64LCD為顯示元件,設(shè)計(jì)制作了一種尋常生活中用到LCD顯示系統(tǒng)。用STC89C52RC單片機(jī)通過(guò)寫(xiě)入相應(yīng)程序,控制12864LCD顯示屏顯示出相應(yīng)文字,P0.0~P0.7分別接128×64DB0~DB7數(shù)據(jù)端口P2.6接LCD讀寫(xiě)使能端E,P2.5接LCD讀寫(xiě)端口R/W,P2.4接數(shù)據(jù)命令選取口RS,XTAL1、XTAL2接震蕩電路,外設(shè)三個(gè)按鈕來(lái)控制顯示時(shí)間調(diào)節(jié),對(duì)于按鈕工作方式可以是中端也可以是查詢(xún),在該方案中選取定期器0外部中斷和定期器1外部中斷,通過(guò)串行輸入和串行輸出實(shí)現(xiàn)控制,用單片機(jī)P2口低五位來(lái)作為L(zhǎng)CD顯示控制端,即控制LCD使能端,讀寫(xiě)控制端,數(shù)據(jù)指令選取端及兩個(gè)選屏端。RST接復(fù)位電路,EA接高電平,LCD上VO、RST接電源+5V,GND接地。本設(shè)計(jì)方案中另一種功能就是使用DS18B20對(duì)實(shí)時(shí)溫度進(jìn)行采集顯示。用編譯軟件KeiluVision4編輯C源程序,通過(guò)編譯連接生成十六進(jìn)制文獻(xiàn),把生成十六進(jìn)制文獻(xiàn)下載到單片機(jī)中。2.3總體硬件構(gòu)成框圖單片機(jī)控制液晶顯示屏系統(tǒng)總共可分為六個(gè)環(huán)節(jié),分別是單片機(jī)控制系統(tǒng)、12864字符顯示模塊、控制按鍵電路模塊、晶振電路模塊、復(fù)位電路模塊和DS18B20實(shí)時(shí)溫度檢測(cè)模塊。通過(guò)這六個(gè)模塊協(xié)調(diào)工作就可以完畢相應(yīng)液晶屏控制和顯示功能。這六個(gè)模塊互相連接如圖2-1:LCD12864STC89C52RC晶振電路LCD12864STC89C52RC晶振電路DS18B20DS18B20復(fù)位電路按鍵電路復(fù)位電路按鍵電路圖2-1總體硬件構(gòu)成框圖第3章系統(tǒng)硬件設(shè)計(jì)本硬件電路重要由四大模塊構(gòu)成:主芯片模塊;晶振和復(fù)位電路模塊;控制接鈕模塊;顯示電路模塊。3.1主芯片模塊XTAL1:接外部晶振和微調(diào)電容一端。在片內(nèi),它是振蕩電路反相放大器輸入端。在采用外部時(shí)鐘時(shí),該引腳輸入外部時(shí)鐘脈沖。XTAL2:接外部晶振和微調(diào)是容一端。要檢查89C52振蕩電路與否正常工作,可以用示波器查看XTAL2端與否有脈沖信號(hào)輸出。RST:89C52復(fù)位信號(hào)輸入引腳,高電平有效。當(dāng)此輸入端保持兩個(gè)機(jī)器周期高電平時(shí),就可以完畢復(fù)位操作。ALE:容許地址鎖存信號(hào)端。當(dāng)89C52上電正常工作后,ALE引腳不斷向外輸出正脈沖信號(hào),此頻率為振蕩器頻率1/6。CPU訪問(wèn)片外存儲(chǔ)器時(shí),ALE輸出信號(hào)作為鎖存低8位地址控制信號(hào)。PSEN:訪問(wèn)外部程序存儲(chǔ)器選通信號(hào),低電平有效。當(dāng)89C51由片外程序存儲(chǔ)器取指令時(shí),每個(gè)機(jī)器周期兩次PSEN有效。但在此期間內(nèi),每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效PSEN信號(hào)將不浮現(xiàn)。EA:該引腳為低電平時(shí),則讀取外部程序代碼來(lái)執(zhí)行程序。P0、P1、P2、P3:8位并行輸入輸出口。每個(gè)端口都是8位準(zhǔn)雙向口,共占32只引腳。每一條都能獨(dú)立地用作輸入或輸出。每個(gè)端口都涉及一種鎖存器、一種輸出驅(qū)器和輸入緩沖器。作輸出時(shí),數(shù)據(jù)可以鎖存;作輸入時(shí),數(shù)據(jù)可以緩沖。圖如圖3—1。圖3-1STC89C52RC引腳圖3.2晶振電路89C52芯片內(nèi)部有一種高增益反相放大器,用于構(gòu)成振蕩器。如圖3—2,反相放大器輸入端為XTAL1,輸出端為XTAL2,兩個(gè)跨接石英晶體及兩個(gè)電容就可以構(gòu)成穩(wěn)定自激振蕩器。電容器普通取30pF左右,可以穩(wěn)定頻率并對(duì)振蕩頻率有微調(diào)作用XTAL1是片內(nèi)振蕩器反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時(shí),外部振蕩信號(hào)應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時(shí),時(shí)鐘發(fā)生器對(duì)振蕩脈沖二分頻,如晶振為12MHz,時(shí)鐘頻率就為6MHz。晶振頻率可以在1MHz-24MHz內(nèi)選取。電容取30PF左右。一種晶體振蕩器,接在單片機(jī)內(nèi)部振蕩電路上,兩個(gè)電容是起振電容,頻率越高,應(yīng)當(dāng)越小。.圖3—2晶振電路3.3復(fù)位電路模塊在振蕩器運(yùn)營(yíng)時(shí),有兩個(gè)機(jī)器周期(24個(gè)振蕩周期)以上高電平出當(dāng)前此引腿時(shí),將使單片機(jī)復(fù)位,只要這個(gè)腳保持高電平,51芯片便循環(huán)復(fù)位。復(fù)位后P0-P3口均置1引腳體現(xiàn)為高電平,程序計(jì)數(shù)器和特殊功能寄存器SFR所有清零。當(dāng)復(fù)位腳由高電平變?yōu)榈碗娖綍r(shí),芯片為ROM00H處開(kāi)始運(yùn)營(yíng)程序。如上圖3-3所示復(fù)位電路,由于復(fù)位時(shí)高電平有效,當(dāng)剛接上電源瞬間,電容C1兩端相稱(chēng)于短路,即相稱(chēng)于給RESET引腳一種高電平,等充電結(jié)束時(shí)(這個(gè)時(shí)間很短暫),電容相稱(chēng)于斷開(kāi),這時(shí)已經(jīng)完畢了復(fù)位動(dòng)作。普通分為手動(dòng)復(fù)位和上電復(fù)位兩種:一種是手動(dòng)復(fù)位復(fù)位電路就是當(dāng)按鍵按下去時(shí)候,即予以一種高電平,同樣可以完畢復(fù)位動(dòng)作。另一種是上電復(fù)位,可以理解成加上電源就復(fù)位了,至于其她復(fù)位固然尚有諸多,不同系統(tǒng)對(duì)復(fù)位精確性和可靠性規(guī)定不同樣。圖3-3復(fù)位電路3.4控制按鈕模塊本模塊采用六個(gè)按鈕進(jìn)行控制,通過(guò)串行口輸入輸出連接,當(dāng)S3按鍵按動(dòng)一次后,方可進(jìn)行對(duì)圓盤(pán)模仿時(shí)鐘時(shí)針進(jìn)行一格進(jìn)位;當(dāng)S2按鍵按動(dòng)一次后,方可進(jìn)行對(duì)圓盤(pán)模仿時(shí)鐘分針進(jìn)行一格進(jìn)位;當(dāng)S1按鍵按動(dòng)一次后,方可進(jìn)行對(duì)圓盤(pán)模仿時(shí)鐘秒針進(jìn)行一格進(jìn)位;每按鍵一次,所連引腳浮現(xiàn)下降沿,此起定期器外部中斷0或定期器外部中斷1,當(dāng)浮現(xiàn)定期器外部中斷0或定期器外部中斷1時(shí),則產(chǎn)生一次加一現(xiàn)象,常規(guī)顯示浮現(xiàn),圖如圖3-4。圖3-4按鍵控制電路3.5DS18B20溫度采集電路DS18B20引腳功能:其中一腳GND電壓地;二腳DQ單數(shù)據(jù)總線(xiàn);三腳VDD電源電壓。DS18B20溫度檢測(cè)與數(shù)字?jǐn)?shù)據(jù)輸出全集成于一種芯片之上,從而抗干擾力更強(qiáng)。其一種工作周期可分為兩個(gè)某些,即溫度檢測(cè)和數(shù)據(jù)解決。DS18B20重要特性:全數(shù)字溫度轉(zhuǎn)換及輸出;先進(jìn)單總線(xiàn)數(shù)據(jù)通信;最高12位辨別率,精度可達(dá)土0.5攝氏度12位辨別率時(shí)最大工作周期為750毫秒;檢測(cè)溫度范疇為–55°C~+125°C(–67°F~+257°F);內(nèi)置EEPROM,限溫報(bào)警功能;64位光刻ROM,內(nèi)置產(chǎn)品序列號(hào),以便多機(jī)掛接;多樣封裝形式,適應(yīng)不同硬件系統(tǒng)。圖3-518B20與單片機(jī)連接3.6顯示電路模塊P0口提供指令和數(shù)據(jù)信號(hào),由DB0到DB7輸入,DB0到DB7為數(shù)據(jù)輸入輸出端和指令輸入端。P2口低5位提供使能及某些控制信號(hào)。其中E為使能信號(hào),高電平有效,當(dāng)此引腳浮現(xiàn)高電平時(shí),整個(gè)顯示屏被使能,只有當(dāng)顯示屏使能時(shí),其他此此腳才干工作。R/W為讀寫(xiě)控制信號(hào)。當(dāng)此引腳為高電平時(shí),為讀功能,為低電平時(shí)為寫(xiě)功能。在讀時(shí)只可以讀數(shù)據(jù),而在寫(xiě)時(shí)既可以寫(xiě)數(shù)據(jù)也可以寫(xiě)指令。RS為數(shù)據(jù)命令選取端,當(dāng)此引腳為高電平時(shí),寫(xiě)入是數(shù)據(jù),當(dāng)此引腳為低電平時(shí),寫(xiě)入是指令。CS1和CS2為片選信號(hào),由于此顯示屏顯示屏被分為左右兩塊,分別由CS1和CS2來(lái)控制,當(dāng)CS1為高電平,CS2為低電平時(shí),就表達(dá)選取了左半屏,當(dāng)CS1為低電平,CS2為高電平時(shí),表達(dá)選取了右半屏。左右半屏在物理上是相近。圖如3-6。圖3—612864LCD液晶顯示電路第4章系統(tǒng)軟件設(shè)計(jì)4.1主程序設(shè)計(jì)LCD液晶顯示屏進(jìn)行初始化,由STC89C52RC控制液晶顯示屏模塊,寫(xiě)入程序,開(kāi)始顯示文字。其主程序流程如圖4-1所示。開(kāi)始開(kāi)始首地址賦出首地址賦出初始化LCD初始化LCD寫(xiě)命令字寫(xiě)命令字時(shí)間通過(guò)LCD顯示時(shí)間通過(guò)LCD顯示調(diào)用延時(shí)調(diào)用延時(shí)回主函數(shù)回主函數(shù)結(jié)束結(jié)束圖4-1主程序流程圖4.2文字顯示液晶顯示驅(qū)動(dòng)控制器12864,在液晶屏上橫向8個(gè)點(diǎn)為1個(gè)字節(jié)數(shù)據(jù),則每一種中文由16×16點(diǎn)陣字模構(gòu)成。由于本次課程設(shè)計(jì)是采用帶字庫(kù)12864液晶屏進(jìn)行制作,因此完全通過(guò)程序?qū)χ形闹苯舆M(jìn)行輸出顯示。第5章系統(tǒng)調(diào)試與測(cè)試成果分析5.1使用儀器儀表萬(wàn)用表一塊;邏輯分析儀一臺(tái);示波器一臺(tái)。5.2系統(tǒng)調(diào)試5.2.1硬件調(diào)試電路調(diào)試過(guò)程中遇到問(wèn)題和解決辦法:(1).整個(gè)系統(tǒng)通電一秒后自動(dòng)短路,檢查所有線(xiàn)路無(wú)誤。就對(duì)每一芯片逐個(gè)排查,最后發(fā)現(xiàn)是DS18B20在焊接時(shí)溫度過(guò)高被燒毀了,導(dǎo)致整個(gè)電路短路。(2).液晶顯示浮現(xiàn)問(wèn)題,檢查電路發(fā)現(xiàn)P0口沒(méi)有加上拉電阻,液晶顯示亮度不夠,加上上拉電阻能正常顯示。5.2.2軟件調(diào)試顯示子程序調(diào)試在調(diào)試顯示子程序時(shí),由于調(diào)用延時(shí)時(shí)間不夠,液晶顯示屏上顯示不穩(wěn)定,浮現(xiàn)閃爍現(xiàn)象,且閃爍頻率不一致,通過(guò)多次調(diào)試,變化延時(shí)時(shí)間,最后數(shù)字能穩(wěn)穩(wěn)地顯示在顯示屏上。5.3測(cè)試成果本實(shí)驗(yàn)規(guī)定就是單片機(jī)驅(qū)動(dòng)液晶顯示屏顯示相應(yīng)中文和數(shù)字,并且可以實(shí)現(xiàn)時(shí)、分、秒調(diào)節(jié),所寫(xiě)程序是對(duì)單片機(jī)上電屏幕隨后顯示“湖南工學(xué)院”字樣開(kāi)機(jī)畫(huà)面。然后開(kāi)始顯示時(shí)間信息,程序?qū)r(shí)間顯示是在屏幕上分為左右兩某些,屏幕左邊是顯示模仿圓盤(pán)時(shí)鐘,時(shí)分秒針顯示。右邊某些上方是同步顯示左邊圓盤(pán)時(shí)鐘所相應(yīng)數(shù)字時(shí)間;而下方是顯示當(dāng)前DS18B20實(shí)時(shí)采集實(shí)時(shí)溫度。并且可通過(guò)三個(gè)按鈕完畢對(duì)時(shí)、分、秒設(shè)立,最后實(shí)驗(yàn)成果顯示如附錄成品效果圖,達(dá)到了本課設(shè)規(guī)定和目,完畢良好。第六章總結(jié)STC89C52RC單片機(jī)是集CPU、RAM、ROM、定期、計(jì)數(shù)和各種接口于一體微控制器。它體積小、成本低、功能強(qiáng)、可以較好地實(shí)現(xiàn)智能控制。12864LCD是一種液晶顯示屏,可以通過(guò)液晶和彩色過(guò)濾器過(guò)濾光源,在平面面板上顯示簡(jiǎn)樸圖像、漢子和數(shù)字等,相對(duì)于LED數(shù)碼管或點(diǎn)陣而言,它占用空間小低功、耗低輻射、無(wú)閃爍、減少視覺(jué)疲勞、更加便于使用。這次課程設(shè)計(jì)通過(guò)對(duì)單片機(jī)及LCD結(jié)合使用。從而達(dá)到對(duì)軟件及硬件電路學(xué)習(xí)、設(shè)計(jì)、開(kāi)發(fā)、調(diào)試等能力。兩者結(jié)合使用,大大提高了其應(yīng)用廣泛性及操作簡(jiǎn)樸靈性。本課程設(shè)計(jì)是以STC89C52RC單片機(jī)為控制核心,在12864LCD液晶顯示屏顯示時(shí)間。單片機(jī)控制液晶顯示屏系統(tǒng)總共可分為六個(gè)環(huán)節(jié),分別是單片機(jī)控制系統(tǒng)、12864字符顯示模塊、控制開(kāi)關(guān)模塊、晶振控制模塊、復(fù)位電路模塊和DS18B20溫度采集模塊。通過(guò)這六個(gè)模塊協(xié)調(diào)工作就可以完畢相應(yīng)液晶屏控制和顯示功能。通過(guò)這次課程設(shè)計(jì)理解了12864液晶顯示屏原理及構(gòu)造,12864LCD帶中文字庫(kù)128X64是一種具備4位/8位并行、2線(xiàn)或3線(xiàn)串行各種接口方式,內(nèi)部具有國(guó)標(biāo)一級(jí)、二級(jí)簡(jiǎn)體中文字庫(kù)點(diǎn)陣圖形液晶顯示模塊,其顯示辨別率為128×64,內(nèi)置8192個(gè)16*16點(diǎn)中文,和128個(gè)16*8點(diǎn)ASCII字符集.運(yùn)用該模塊靈活接口方式和簡(jiǎn)樸、以便操作指令,可構(gòu)成全中文人機(jī)交互圖形界面??梢燥@示8×4行16×16點(diǎn)陣中文。也可完畢圖形顯示。低電壓低功耗是其又一明顯特點(diǎn)。通過(guò)這一次課程設(shè)計(jì),在這過(guò)程中我雖然走了些彎路,但是通過(guò)努力,最后完畢了任務(wù)。從中我學(xué)到了諸多,要認(rèn)真仔細(xì)才干有成果。任何大問(wèn)題,在一步一步細(xì)化之后,解決起來(lái)就輕松得多了。我相信只要付出了就會(huì)有收獲。無(wú)論什么事情,只有當(dāng)你專(zhuān)心去做了之后你才會(huì)發(fā)現(xiàn)它真實(shí)意義所在。我覺(jué)得這一次實(shí)習(xí)是非常故意義,不但提高了專(zhuān)業(yè)素養(yǎng),還培養(yǎng)了咱們合伙精神。我要把握每一次學(xué)習(xí)機(jī)會(huì),認(rèn)真對(duì)待,為后來(lái)就業(yè)及更深層次發(fā)展添磚加瓦。參照文獻(xiàn)[1]胡乾李.光斌.李玲.喻紅.單片微型計(jì)算機(jī)原理與應(yīng)用[M].華中科技大學(xué)出版社.1996.[2]焦麗鵑.李春旭.郭學(xué)良.液晶顯示屏在人機(jī)交互系統(tǒng)中應(yīng)用[J].信息技術(shù),11期.[3]劉樹(shù)中.孫書(shū)鷹.春平.單片機(jī)和液晶顯示驅(qū)動(dòng)器串行接口實(shí)現(xiàn)[J].微計(jì)算機(jī)信息.第1-2期LCD顯示機(jī)理.[4]劉勇.?dāng)?shù)字電路[M].電子工業(yè)出版社,.[5]沈紅衛(wèi).單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)實(shí)例與分析[M].北京:北京航空航天大學(xué)出版社.[6]李光飛.單片機(jī)課程設(shè)計(jì)實(shí)例指引,北京:北京航空航天大學(xué)出版社.[7]樓然苗,李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例[M].北京航空航天大學(xué)出版社,.[8]朱定華,戴汝平.單片微機(jī)原理與應(yīng)用[M].清華大學(xué)出版社,.[9]胡漢才.單片機(jī)原理與接口技術(shù)[M].清華大學(xué)出版社,.[10]李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,.[11]侯玉寶等.基于protues51系列單片機(jī)設(shè)計(jì)與仿真[M].北京:電子工業(yè)出版社,.[12]朱清慧等.Protues教程——電子線(xiàn)路設(shè)計(jì)、制版與仿真[M].北京:清華大學(xué)出版社,.附錄一·程序#include<reg51.h>#include<intrins.h>#include<stdlib.h>#include<math.h>#defineucharunsignedchar#defineuintunsignedint#definedelayNOP();{_nop_();_nop_();_nop_();_nop_();};#definepi3.1415926/*************12864LCD引腳定義*************/#defineLCD_dataP0//數(shù)據(jù)口sbitLCD_RS=P2^4;//寄存器選取輸入sbitLCD_RW=P2^5;//液晶讀/寫(xiě)控制sbitLCD_EN=P2^6;//液晶使能控制sbitLCD_PSB=P2^1;//串/并方式控制sbitLCD_RST=P2^3;//液晶復(fù)位端口sbitk1=P1^0; //按鍵sbitk2=P1^1;sbitk3=P1^2;sbitk4=P1^3;sbitDQ=P2^7;//數(shù)據(jù)口defineinterfaceuchara,b,c,count,num;ucharflag=0; //24小時(shí)顯示標(biāo)志uinttemp;uchartabbjsj[]="北京時(shí)間";uchartabsswd[]="實(shí)時(shí)溫度";uchartab[]="01:00:00";ucharcodetable[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x01,0xEE,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x01,0xEE,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x07,0x00,0x01,0xEF,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x07,0x80,0x01,0xEF,0x01,0x80,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x07,0x80,0x01,0xEF,0x01,0xC0,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x07,0x80,0x01,0xEF,0x03,0xC0,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0x80,0x01,0xCF,0x07,0xC0,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x31,0xE0,0x00,0x07,0x00,0x01,0xCF,0x87,0x80,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x63,0xE0,0x00,0x07,0x70,0x01,0x87,0xCF,0x80,0x01,0xF8,0x00,0x00,0xC0,0x00,0x0D,0xE7,0xE0,0x00,0x06,0xF0,0x01,0x87,0xDF,0x80,0x01,0xF8,0x00,0x01,0xFC,0x00,0x0F,0xF6,0xE0,0x01,0xCF,0xF8,0x61,0x8F,0xDF,0x80,0x01,0xF0,0x00,0x01,0xFE,0x00,0x0F,0xFD,0xC0,0x07,0xCF,0xF8,0x70,0x0F,0xFB,0x00,0x01,0xF3,0x80,0x01,0xFF,0x00,0x07,0xB9,0x80,0x3F,0xC7,0xF8,0x70,0x0F,0xFB,0x00,0x01,0xF7,0x80,0x01,0xFF,0x00,0x07,0xFB,0x80,0x3F,0xC6,0xF0,0x70,0x0F,0xB7,0x00,0x03,0xEF,0x80,0x01,0xFF,0x00,0x07,0xFB,0x00,0x3F,0x9E,0xE0,0x78,0x0F,0x07,0x00,0x03,0xDF,0xC0,0x00,0xFE,0x00,0x03,0xF7,0x00,0x3F,0xFD,0xC0,0x78,0x1E,0x07,0x00,0x07,0xDB,0xC0,0x00,0x1E,0x00,0x1B,0xFF,0x00,0x3B,0xF9,0xC0,0x38,0x3E,0x07,0x00,0x0F,0xB3,0xC0,0x00,0x1C,0x00,0x1B,0xFE,0x00,0x13,0x73,0x80,0x1C,0x7C,0x07,0x00,0x3F,0xB3,0x80,0x00,0x1C,0x00,0x1F,0xFE,0x00,0x03,0x63,0x00,0x0C,0xFC,0x07,0x00,0x7F,0x63,0x80,0x00,0x18,0x00,0x1E,0xCC,0x00,0x07,0x6E,0x00,0x05,0xFC,0x3F,0x00,0x7F,0xE3,0x80,0x00,0x38,0x00,0x1E,0x0F,0x80,0x06,0x7C,0x00,0x01,0xFC,0x7F,0x00,0x7F,0xD3,0x80,0x00,0x30,0x00,0x1E,0x3F,0x80,0x06,0xFE,0x00,0x01,0xD8,0x7F,0x00,0x3B,0xBB,0x80,0x00,0x30,0x00,0x1C,0x7F,0x00,0x06,0xFF,0x80,0x00,0x18,0x7F,0x00,0x03,0xFB,0x80,0x00,0x30,0x00,0x18,0xEE,0x00,0x0E,0xCF,0x80,0x00,0x1E,0xF6,0x00,0x07,0xF3,0x80,0x00,0x70,0xC0,0x03,0xDC,0x00,0x0C,0x0F,0x00,0x00,0x1E,0xF6,0x00,0x07,0xF3,0x80,0x00,0x67,0xE0,0x07,0xB8,0x00,0x0C,0x1F,0x00,0x0C,0x3F,0xF6,0x00,0x0F,0x63,0x00,0x00,0x7F,0xE0,0x07,0x30,0x00,0x0C,0x3F,0x00,0x0C,0x3F,0xF6,0x00,0x1E,0xC3,0x00,0x00,0x7F,0xE0,0x00,0x30,0x00,0x0C,0x7E,0x00,0x0D,0xBB,0xF6,0x00,0x1E,0xC3,0x00,0x01,0xFF,0x80,0x00,0x60,0x00,0x1C,0x7E,0x00,0x0D,0xBF,0xFE,0x00,0x1E,0xC3,0x00,0x1F,0xF0,0x00,0x00,0x7F,0x00,0x1C,0x2F,0x00,0x0D,0xBF,0xFE,0x00,0xC1,0x83,0x00,0x7F,0xC0,0x00,0x00,0xFF,0x80,0x18,0x0F,0x00,0x0F,0x36,0xF6,0x00,0xE3,0x83,0x01,0xFF,0x80,0x00,0x03,0xFF,0x80,0x18,0x1F,0x00,0x0F,0x7E,0xC6,0x00,0x63,0x83,0x03,0xFE,0x00,0x00,0x0F,0xE7,0x80,0x18,0x3F,0x00,0x0F,0x7E,0xC6,0x00,0x63,0x03,0x03,0xFC,0x00,0x00,0x3F,0xE0,0x00,0x1A,0x37,0x00,0x1F,0x0E,0xC6,0x00,0x6F,0x83,0x01,0xF0,0x00,0x00,0x7E,0x60,0x00,0x1E,0x77,0x00,0x1F,0x0E,0xC6,0x00,0x6F,0xC7,0x01,0xE0,0x00,0x00,0xFC,0x60,0x00,0x3E,0x67,0x30,0x1F,0x0D,0xC6,0x00,0x77,0xC7,0x01,0xC0,0x00,0x00,0xF8,0x60,0x00,0x3C,0xC6,0x38,0x1F,0x01,0x86,0x00,0x77,0x87,0x00,0x00,0x00,0x00,0x70,0x60,0x00,0x3D,0xC6,0x18,0x1F,0x01,0xB6,0x00,0x77,0x87,0x00,0x00,0x00,0x00,0x20,0x70,0x00,0x3F,0x86,0x1C,0x1F,0x01,0xBE,0x00,0x77,0xB7,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x3B,0x06,0x1C,0x1F,0x01,0x9F,0x00,0x77,0xBF,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x38,0x06,0x1C,0x1E,0x01,0x8F,0x00,0x73,0x8F,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x18,0x07,0xFC,0x1E,0x01,0x8F,0x00,0x03,0x07,0x00,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x07,0xFC,0x1E,0x03,0x86,0x00,0x03,0x03,0x00,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x07,0xF0,0x1C,0x03,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0x80,0x18,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*******************************************************************//*延時(shí)函數(shù)*//*******************************************************************/voiddelay(intms){ while(ms--) { uchari; for(i=0;i<150;i++) { _nop_(); _nop_(); _nop_(); _nop_(); } }}/*******************************************************************//*精準(zhǔn)延時(shí)函數(shù),延時(shí)1秒,軟件算得*//*******************************************************************/voidDelay_S(void)//延時(shí)1s誤差0us{unsignedchara,b,c;for(c=167;c>0;c--)for(b=171;b>0;b--)for(a=16;a>0;a--);_nop_();//ifKeil,requireuseintrins.h} /*******************************************************************//*檢查L(zhǎng)CD忙狀態(tài)*//*lcd_busy為1時(shí),忙,等待。lcd-busy為0時(shí),閑,可寫(xiě)指令與數(shù)據(jù)。*//*******************************************************************/bitlcd_busy(){bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP();result=(bit)(P0&0x80);LCD_EN=0;return(result);}/*******************************************************************//*寫(xiě)指令數(shù)據(jù)到LCD*//*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。*//*******************************************************************/voidlcd_wcmd(ucharcmd){ while(lcd_busy());LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();LCD_data=cmd;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}/*******************************************************************//*寫(xiě)顯示數(shù)據(jù)到LCD*//*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。*//*******************************************************************/voidlcd_wdat(uchardat){while(lcd_busy());LCD_RS=1;LCD_RW=0;LCD_EN=0;LCD_data=dat;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}/*******************************************************************//*從lcd讀取數(shù)據(jù)到data*//*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。*//*******************************************************************/ucharlcd_rdat(){ uchardat; while(lcd_busy()); LCD_data=0XFF;LCD_RS=1;LCD_RW=1;LCD_EN=0;LCD_EN=1; dat=LCD_data;LCD_EN=0; return(dat);}/*******************************************************************//*LCD初始化設(shè)定*//*******************************************************************/voidlcd_init(){LCD_PSB=1;//并口方式 LCD_RST=0; //液晶復(fù)位delay(3);LCD_RST=1;delay(3);lcd_wcmd(0x34);//擴(kuò)充指令操作delay(5);lcd_wcmd(0x30);//基本指令操作delay(5);lcd_wcmd(0x0C);//顯示開(kāi),關(guān)光標(biāo)delay(5);lcd_wcmd(0x01);//清除LCD顯示內(nèi)容delay(5);}/***********************************************************函數(shù)名:DrawPoint函數(shù)闡明:畫(huà)點(diǎn)傳入?yún)?shù):打點(diǎn)位置(x0,y0);color=1,點(diǎn)亮;color=0,擦除傳出參數(shù):無(wú)返回值:無(wú)**********************************************************/voidDrawPoint(unsignedcharx,unsignedchary,unsignedcharcolor){ unsignedcharrow,collum,cbite; unsignedchartempH,tempL; lcd_wcmd(0x34);//打開(kāi)擴(kuò)充指令集 lcd_wcmd(0x36);//打開(kāi)圖形顯示 collum=x>>4; //取x坐標(biāo)第幾塊地址 cbite=x&0x0f; //區(qū)域第幾種點(diǎn) if(y<32) row=y; else { row=y-32; collum+=8; } lcd_wcmd(0x80+row);//先寫(xiě)Y坐標(biāo) lcd_wcmd(0x80+collum);//再寫(xiě)X坐標(biāo) lcd_rdat(); //讀取區(qū)域內(nèi)16個(gè)點(diǎn)狀態(tài) tempH=lcd_rdat();//先讀出高字節(jié) tempL=lcd_rdat();//再讀出低字節(jié) lcd_wcmd(0x80+row);//先寫(xiě)Y坐標(biāo) lcd_wcmd(0x80+collum);//再寫(xiě)X坐標(biāo) if(color) { if(cbite<8) { tempH|=(1<<(7-cbite)); } else { tempL|=(1<<(15-cbite)); } } else { if(cbite<8) { tempH&=~(1<<(7-cbite)); } else { tempL&=~(1<<(15-cbite)); } } lcd_wdat(tempH); lcd_wdat(tempL); lcd_wcmd(0x30);}/***********************************************************函數(shù)名:line函數(shù)闡明:畫(huà)直線(xiàn)傳入?yún)?shù):直線(xiàn)起始位置(x0,y0);終點(diǎn)(x1,y1)傳出參數(shù):無(wú)返回值:無(wú)**********************************************************/voidline(unsignedcharx0,unsignedchary0,unsignedcharx1,unsignedchary1,unsignedcharcolor){intdx;/*直線(xiàn)x軸差值變量*/intdy;/*直線(xiàn)y軸差值變量*/chardx_sym;/*x軸增長(zhǎng)方向,為-1時(shí)減值方向,為1時(shí)增值方向*/chardy_sym;/*y軸增長(zhǎng)方向,為-1時(shí)減值方向,為1時(shí)增值方向*/intdx_x2;/*dx*2值變量,用于加快運(yùn)算速度*/intdy_x2;/*dy*2值變量,用于加快運(yùn)算速度*/intdi;/*決策變量*/if(x0==x1)/*畫(huà)垂直線(xiàn)*/{if(y0>y1){dx=y0;y0=y1;y1=dx;}for(dx=y0;dx<y1+1;dx++){DrawPoint(x0,dx,color);}}if(y0==y1)/*畫(huà)水平線(xiàn)*/{if(x0>x1){dy=x0;x0=x1;x1=dy;}for(dy=x0;dy<x1+1;dy++){DrawPoint(dy,y0,color);}} /****************************畫(huà)斜線(xiàn)******************************/dx=x1-x0;/*求取兩點(diǎn)之間差值*/dy=y1-y0;if(dx>0)/*判斷x軸方向*/{dx_sym=1;/*dx>0,設(shè)立dx_sym=1*/}else{if(dx<0){dx_sym=-1;/*dx<0,設(shè)立dx_sym=-1*/}}if(dy>0)/*判斷y軸方向*/{dy_sym=1;/*dy>0,設(shè)立dy_sym=1*/}else{if(dy<0){dy_sym=-1;/*dy<0,設(shè)立dy_sym=-1*/}}dx=dx_sym*dx;/*將dx、dy取絕對(duì)值*/dy=dy_sym*dy;dx_x2=dx*2;/*計(jì)算2倍dx及dy值*/dy_x2=dy*2;/*使用Bresenham法進(jìn)行畫(huà)直線(xiàn)*/if(dx>=dy)/*對(duì)于dx>=dy,則使用x軸為基準(zhǔn)*/{di=dy_x2-dx;while(x0!=x1){DrawPoint(x0,y0,color);x0+=dx_sym;if(di<0){di+=dy_x2;/*計(jì)算出下一步?jīng)Q策值*/}else{di+=dy_x2-dx_x2;y0+=dy_sym;}}DrawPoint(x0,y0,color);/*顯示最后一點(diǎn)*/}else/*對(duì)于dx<dy,則使用y軸為基準(zhǔn)*/{di=dx_x2-dy;while(y0!=y1){DrawPoint(x0,y0,color);y0+=dy_sym;if(di<0){di+=dx_x2;}else{di+=dx_x2-dy_x2;x0+=dx_sym;}}DrawPoint(x0,y0,color);/*顯示最后一點(diǎn)*/}}/***********************************************************函數(shù)名:circle函數(shù)闡明:畫(huà)圓傳入?yún)?shù):圓心坐標(biāo)(x1,y1),半徑r傳出參數(shù):無(wú)返回值:無(wú)**********************************************************/voidcircle(intx1,inty1,unsignedintr){intx,y,d;x=0;y=r;d=1-r;/*計(jì)算初始值*/ //用Bresenham算法先畫(huà)1/8個(gè)圓,在運(yùn)用對(duì)稱(chēng)行畫(huà)出別的某些while(x<=y){/*繪制點(diǎn)(x,y)及其在八分圓中此外7個(gè)對(duì)稱(chēng)點(diǎn)*/DrawPoint(x1+x,y1+y,1);DrawPoint(x1+y,y1+x,1);DrawPoint(x1-y,y1+x,1);DrawPoint(x1-x,y1+y,1);DrawPoint(x1-x,y1-y,1);DrawPoint(x1-y,y1-x,1);DrawPoint(x1+y,y1-x,1);DrawPoint(x1+x,y1-y,1);if(d<0){d+=2*x+3;/*依照誤差項(xiàng)d判斷,決定非最大位移方向上是走還是不走*/}else{d+=2*(x-y)+5;y--;}x++;}}/*******************************************函數(shù)名稱(chēng):voidDrawHand(charx0,chary0,chara,charb,charc,charcolor)功能:畫(huà)時(shí)鐘指針參數(shù):(x0,y0)表盤(pán)圓心坐標(biāo), R指針長(zhǎng)度 Time指針?biāo)缚潭龋搿⒎?0進(jìn)制,時(shí)12進(jìn)制) step指針步長(zhǎng)(秒、分為6,時(shí)為30) color指針顏色返回值:無(wú)********************************************/voidDrawHand(charx0,chary0,charR,charTime,charstep,charcolor){ charx,y; x=R*cos(Time*step*pi/180-pi/2)+x0; y=R*sin(Time*step*pi/180-pi/2)+y0; line(x0,y0,x,y,color);}/*******************************************函數(shù)名稱(chēng):clr_screen(void)功能:清除液晶GDRAM內(nèi)部隨機(jī)數(shù)據(jù)參數(shù):無(wú)返回值:無(wú)********************************************/voidclr_screen(void){ uchari,j; for(j=0;j<64;j++) { for(i=0;i<128;i++) { DrawPoint(i,j,0); } }}/********************************************************************************描述:**12864原則字庫(kù)液晶演示數(shù)據(jù)p0,控制p2*********************************************************************************/#definex031 #definey031//表盤(pán)圓心坐標(biāo)/***********************************************************函數(shù)名:DISP_BP函數(shù)闡明:畫(huà)表盤(pán)傳出參數(shù):無(wú)返回值:無(wú)**********************************************************/voidDISP_BP(void){ circle(x0,y0,30);//畫(huà)圓 line(31,1,31,3,1);//12點(diǎn) line(30,1,30,3,1); line(32,1,32,3,1); line(31,61,31,59,1);//6點(diǎn) line(30,61,30,59,1); line(32,61,32,59,1); line(61,31,59,31,1);//3點(diǎn) line(61,30,59,30,1); line(61,32,59,32,1); line(1,31,3,31,1);//9點(diǎn) line(1,30,3,30,1); line(1,32,3,32,1); line(109,51,111,51,1);//℃符號(hào) line(109,50,111,50,1); line(109,49,111,49,1); line(110,50,110,50,0); circle(8,8,8); //耳朵左 line(16,7,16,11,0); line(7,16,12,16,0); line(15,12,11,15,0); line(15,11,12,17,0); line(12,15,12,15,0); circle(54,8,8); //耳朵右 line(46,7,46,11,0); line(55,16,50,16,0); line(47,12,51,16,0); line(47,11,47,11,0); line(51,15,51,15,0); line(6,46,7,46,1); line(6,47,7,47,1); line(14,55,15,55,1); line(14,56,15,56,1); line(46,55,47,55,1); line(46,56,47,56,1); line(56,46,57,46,1); line(56,47,57,47,1);}/*****************顯示時(shí)分秒*****************/voidsfm(ucharadd,ucharsfm){ ucharsfm1,sfm2; sfm1=sfm/10; sfm2=sfm%10; lcd_wcmd(0x90+add); lcd_wdat(0x30+sfm1); lcd_wdat(0x30+sfm2);}voidsfmfen(){ ucharfen1,fen2; fen1=b/10; fen2=b%10; lcd_wcmd(0x90+5); lcd_wdat(0x3a); lcd_wdat(0x30+fen1); lcd_wdat(0x30+fen2);}//按鍵掃描函數(shù)voidkeyscan(){// uchari,j,k; if(k1==0) delay(5);if(k1==0) { while(!k1); DrawHand(x0,y0,25,a,6,0); //消除秒針位置 DrawHand(x0,y0,20,b,6,1); //顯示新分針位置 DrawHand(x0,y0,15,c,6,1);//顯示新時(shí)針位置 a++; if(a==60) a=0; sfm(7,a); DrawHand(x0,y0,25,a,6,1); //顯示秒針位置 }if(k2==0) delay(5); if(k2==0) { while(!k2); DrawHand(x0,y0,20,b,6,0); //消除本來(lái)分針位置 DrawHand(x0,y0,15,c,6,1);//顯示新時(shí)針位置 DrawHand(x0,y0,25,a,6,1); //顯示秒針位置 b++; if(b==60) b=0; sfmfen(); DrawHand(x0,y0,20,b,6,1); //顯示新分針位置 } if(k3==0) delay(5); if(k3==0) { while(!k3); DrawHand(x0,y0,15,c,6,0);//消除本來(lái)時(shí)針位置 DrawHand(x0,y0,25,a,6,1); //顯示秒針位置 DrawHand(x0,y0,20,b,6,1); //顯示新分針位置 c++; flag++; if(c==60) c=0; if(flag==120) flag=0; sfm(4,flag/5); DrawHand(x0,y0,15,c,6,1);//顯示新時(shí)針位置 } } /*******************畫(huà)開(kāi)機(jī)畫(huà)面********************/voidGUI_CLEAR(constuchar*pic){ uchari,j,k; lcd_wcmd(0X34); lcd_wcmd(0X34); for(i=0;i<2;i++) { for(j=0;j<32;j++) { lcd_wcmd(0X80+j); //delay(2); if(i==0) { lcd_wcmd(0X80); //delay(2); } else { lcd_wcmd(0X88); //delay(2); } for(k=0;k<16;k++) { lcd_wdat(*(pic++)); //LCD_WRITE_DATA(0X00); //delay(2); } } } lcd_wcmd(0X36); lcd_wcmd(0X30);}/********************DS18B20***********************************/voiddelay18b20(unsignedchari){ while(--i);}voidInit_Ds18b20(void)//DS18B20初始化sendresetandinitializationcommand{ DQ=1;//DQ復(fù)位,不要也可行。 delay18b20(1);//稍做延時(shí) DQ=0;//單片機(jī)拉低總線(xiàn) delay18b20(250);//精準(zhǔn)延時(shí),維持至少480us DQ=1;//釋放總線(xiàn),即拉高了總線(xiàn) delay18b20(100);//此處延時(shí)有足夠,保證能讓DS18B20發(fā)出存在脈沖。}ucharRead_One_Byte()//讀取一種字節(jié)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論