多功能數(shù)據(jù)采集系統(tǒng)_第1頁
多功能數(shù)據(jù)采集系統(tǒng)_第2頁
多功能數(shù)據(jù)采集系統(tǒng)_第3頁
多功能數(shù)據(jù)采集系統(tǒng)_第4頁
多功能數(shù)據(jù)采集系統(tǒng)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 II目錄TOC o 1-5 h z HYPERLINK l bookmark4 1多功能數(shù)據(jù)米集系統(tǒng)的功能規(guī)劃1 HYPERLINK l bookmark6 2方案設(shè)計12.1系統(tǒng)設(shè)計12.2器件選擇12.2.1微處理器12.2.2數(shù)據(jù)采集芯片22.2.3溫度傳感器32.2.4時鐘芯片32.2.5顯示器32.4.6按鍵42.4.7報警器件4 HYPERLINK l bookmark8 3硬件電路設(shè)計43.1最小系統(tǒng)設(shè)計43.2顯示電路設(shè)計53.3按鍵電路設(shè)計53.4聲音報警電路設(shè)計63.5溫度采集電路設(shè)計63.6實時時鐘(RTC)硬件設(shè)計63.7電源電路設(shè)計7 HYPERLINK l boo

2、kmark12 4軟件設(shè)計74.1操作功能設(shè)計74.2程序編制思想84.3程序流程圖9 HYPERLINK l bookmark16 5程序調(diào)試11 HYPERLINK l bookmark18 6技術(shù)小結(jié)12 HYPERLINK l bookmark20 7多功能流量采集系統(tǒng)的使用說明12 HYPERLINK l bookmark22 8心得體會12 HYPERLINK l bookmark24 9參考文獻(xiàn)13附錄一硬件原理圖附錄二源程序摘要本課程設(shè)計完成了多功能數(shù)據(jù)采集系統(tǒng)的設(shè)計,設(shè)計利用STC89C52單片機(jī)為主控芯片,外擴(kuò)ADC0809、TS12864A-1液晶顯示器、DS1302RT

3、C、DS18B20數(shù)字溫度傳感器,實現(xiàn)用戶密碼登錄、流量實時采集以及動態(tài)顯示、工作環(huán)境溫度顯示,當(dāng)前時間顯示的功能。集流量實時采集、工作環(huán)境溫度測量、實時時間顯示、用戶密碼設(shè)定于一身,本系統(tǒng)顯示使用當(dāng)今市場上廣泛使用的12864液晶顯示器,提供良好的人機(jī)界面,方便用戶的操作和使用。關(guān)鍵字.流量采集溫度顯示時間顯示人機(jī)界面單片機(jī)系統(tǒng)綜合訓(xùn)練設(shè)計報告 1多功能數(shù)據(jù)采集系統(tǒng)的功能規(guī)劃可以采集當(dāng)前通道流量以及動態(tài)數(shù)據(jù)顯示功能;可設(shè)定用戶密碼并且使用密碼登錄;可顯示當(dāng)前時間并且修改當(dāng)前時間(時、分);可設(shè)定流量報警上、下限閥值;環(huán)境溫度測量顯示。2方案設(shè)計2.1系統(tǒng)設(shè)計根據(jù)系統(tǒng)功能要求,可將系統(tǒng)組成結(jié)構(gòu)

4、分成六大部分:單片機(jī)控制中心、鍵盤接口、數(shù)據(jù)顯示和聲音報時、時鐘數(shù)據(jù)讀取、溫度采集數(shù)據(jù)讀取如下圖為系統(tǒng)的組成結(jié)構(gòu)圖。其中,單片機(jī)控制中心是核心MCU根據(jù)按鍵輸入,可切換不同的顯示模式或設(shè)置不同的參數(shù)。圖1系統(tǒng)組成結(jié)構(gòu)圖2.2器件選擇2.2.1微處理器本次課程設(shè)計主控芯片所使用STC89C52,STC89C52是一個低電壓,高性能CMOS8位單片機(jī),片內(nèi)含8kbytes的可反復(fù)擦寫的Flash只讀程序存儲器(ROM)和256bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用STCMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,

5、內(nèi)置功能強(qiáng)大的微型計算機(jī)的STC89C51提供了高性價比的解決方案。這里,選取STC89C51芯片。因為其功能與普通51芯片相同,其價格非常低廉、程序空間大、資源較豐富、在線下載非常方便。同時,使用該芯片,編程上亦可采用所熟悉的KEIL軟件,使課程設(shè)計非常簡單。2.2.2數(shù)據(jù)采集芯片電壓采集使用市場上廣泛使用的ADC0809,ADC0809是CMOS單片型逐次逼近式A/D轉(zhuǎn)換器,它由8路模擬開關(guān)、地址鎖存與譯碼器、比較器、8位開關(guān)樹型D/A轉(zhuǎn)換器、逐次逼近型,引腳結(jié)構(gòu)及說明如圖下圖所示:EI-IN琉鷺STARTEOC%0ECLOCKVVrCf(+)GWDALC080911in151117鞏鞏蠢

6、=ALEDTDEDM%忌圖2ADC0809引腳ADC0809引腳說明:ALE:地址鎖存允許信號,輸入,高電平有效。START:A/D轉(zhuǎn)換啟動信號,輸入,高電平有效。EOC:A/D轉(zhuǎn)換結(jié)束信號,輸出,當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸出一個高電平(轉(zhuǎn)換期間一直為低電平)。OE:數(shù)據(jù)輸出允許信號,輸入,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸入一個高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。CLK:時鐘脈沖輸入端。要求時鐘頻率不高于640KHZ。REF(+)、REF(-):基準(zhǔn)電壓。Vcc:電源,單一+5V。GND:地。ADC0809的工作過程是:首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址

7、經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動A/D轉(zhuǎn)換,之后EOC輸出信號變低,指示轉(zhuǎn)換正在進(jìn)行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖?,指示A/D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個信號可用作中斷申請。當(dāng)OE輸入高電平時,輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果輸出到數(shù)據(jù)總線上。223溫度傳感器溫度采集使用DS18B20,DS18B20是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,具有線路簡單,體積小的特點,而且輸出的信號為數(shù)字信號,不需要外加AD轉(zhuǎn)換器,使用起來什么方便,且溫度采集的精度較高。滿足本次設(shè)計的精度要求。2.2.4時鐘芯片DS1302是Dallas公

8、司生產(chǎn)的一種實時時鐘芯片。它通過串行方式與單片機(jī)進(jìn)行數(shù)據(jù)傳送,能夠向單片機(jī)提供包括秒、分、時、日、月、年等在內(nèi)的實時時間信息,并可對月末日期、閏年天數(shù)自動進(jìn)行調(diào)整;它還擁有用于主電源和備份電源的雙電源引腳,在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運(yùn)行。另外,它還能提供31字節(jié)的用于高速數(shù)據(jù)暫存的RAM。鑒于上述特點,DS1302已在許多單片機(jī)系統(tǒng)中得到應(yīng)用,為系統(tǒng)提供所需的實時時鐘信息。本設(shè)計采用DS1302實現(xiàn)時間的顯示,因為采用SPI接口,因此,占用MCU的資源很少,只使用3個I/O口,且接線簡單。2.2.5顯示器數(shù)據(jù)顯示使用TG12864B,TG12864B是一種圖形點陣液晶顯示器,它主

9、要由行驅(qū)動器/列驅(qū)動器及128X64全點陣液晶,可完成圖形顯示,也可以8X4個(16X16點陣)漢字的顯示。本設(shè)計使用TG12864,為用戶提供良好的人機(jī)界面,使用戶操作起來簡單、快捷。結(jié)構(gòu)框圖如下圖所示:2.4.6按鍵按鍵是用來設(shè)置菜單以及各種參數(shù)的設(shè)定等功能的。這里采用普通按鍵即可,選用原則:以最少的按鍵,實現(xiàn)盡可能多的功能。所以這里,設(shè)置四個按鍵:模式鍵Mode、Up鍵、Down鍵,確定鍵Enter。通過使用Mode鍵選擇模式,通過使用Up,Down鍵對參數(shù)進(jìn)行設(shè)定。2.4.7報警器件選用最常見,亦最常用的聲音提示方式一一蜂鳴器。3硬件電路設(shè)計3.1最小系統(tǒng)設(shè)計vcc104Resetr?

10、RES2P101P112P123P134A05A16A27A38cA413iP3212uP17P3515P3414VCC31xrpX218RESET9P371Buzzer16口U5P10P00P11P01P12P02P13P03P14P04P15P05P16P06P17P07INT1/P33P20INT0/P32P21P22T1/P35P23T0/P34P24P25EA/VPP26P27X1X2RESETRXD/P30TXD/P31RD/P37WR/P36ALE/PPSEN39P0038TOT37P0236P0335P0434P0533P0632PU721P2022P2123B22ze24P2

11、325P2426P2527P2628P2710P3011P3130ALE129PSEN圖8452單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機(jī)可以工作的系統(tǒng)。對51系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)該包括:單片機(jī)、晶振電路、復(fù)位電路、按鍵輸入、顯示輸出等。3.2顯示電路設(shè)計12864液晶顯示模塊是128X64點陣型液晶顯示模塊,可顯示各種字符及圖形,可與CPU直接接口,具有8位標(biāo)準(zhǔn)數(shù)據(jù)總線、6條控制線及電源線。采用KS0107控制IC。由P37口控制12864的片選,P0口輸出數(shù)據(jù),電位器用于調(diào)節(jié)12864的顯示對比度。3.3按鍵電路設(shè)計|0Qr-Q0嚴(yán)nGND2

12、4252627圖6按鍵電路本系統(tǒng)的按鍵使用普通的按鍵連接方式,MCU檢測P24-P27口的電平,當(dāng)有鍵按下時,由于機(jī)械開關(guān)的固有特性,本系統(tǒng)的按鍵掃描使用軟件濾波的方式,提高按鍵掃描的精確性。3.4聲音報警電路設(shè)計3.5溫度采集電路設(shè)計VCCR6RES2U6P342DQDS82(3)圖8溫度采集DS18B20使用單總線1-wire線時序通訊方式,只需一根線就可以完成對該芯片的讀寫功能。由于該芯片內(nèi)部是開漏結(jié)構(gòu),只能將總線拉低,因此需要外加上拉電阻。R53.6實時時鐘(RTC)硬件設(shè)計30-4P31P32U8卜SCKRSTX110X2706DS1302(8)DS1302C151護(hù)1乎VCCJR3

13、R4圖9實時時鐘DS1302使用SPI的時序進(jìn)行通訊,需要3個1/O進(jìn)行操作,時鐘(SLCK)、復(fù)位引腳、數(shù)據(jù)引腳,32.768KHZ的晶振電路。37電源電路設(shè)計USBpower143121VCCQ20470uOtCON4lkC0N3121R173J32D10J357805ver圖10電源電路4軟件設(shè)計4.1操作功能設(shè)計根據(jù)系統(tǒng)功能描述,可以將功能大致分成五類:密碼修改、流量米集、時間顯示、溫度顯示、時間修改。系統(tǒng)設(shè)有12864LCD液晶顯示。采用菜單式人機(jī)對話方式,便于操作。所以可分成多種菜單,功能鍵切換菜單,UP或DOWN鍵設(shè)定參數(shù),Enter鍵確定,Mode退出當(dāng)前菜單。菜單設(shè)計如下:菜

14、單1:流量電壓采集;菜單1.1:采樣通道選擇(UP/Down/Enter);菜單12:輪流通道采樣選擇;菜單2:修改RTC時間;菜單3:溫度顯示;菜單4:用戶密碼修改;4.2程序編制思想本設(shè)計使用STC89C51單片機(jī),有32個1/O口,但是由于本設(shè)計所加外設(shè)較多,因此在選擇外設(shè)的時候,都選用串行通訊方式的外設(shè),節(jié)省單片機(jī)I/O口,12864液晶采用串行通訊方式,比使用LED數(shù)碼管顯示節(jié)省了將近一半的I/O口,而且人機(jī)界面友好,使用戶操縱起來方便、簡單。RTC使用SPI的串行總線通訊方式,總需要3個I/O口就可以完成全部的操作。DS18B20使用1-wire總線讀寫方式,只需要1個I/O口進(jìn)行

15、讀寫。從而為MCU節(jié)省了大量的I/O資源。程序編制思想為:當(dāng)系統(tǒng)啟動時,要求用戶輸入用戶設(shè)定的密碼(用EEPROM存儲,掉電保護(hù)功能),當(dāng)密碼正確時,進(jìn)入用戶主菜單,選擇操作,當(dāng)5s鐘用戶沒有設(shè)定時,將會自動進(jìn)入流量采集模式。在此模式下,用戶可以對采集通道進(jìn)行選擇,如果5s鐘沒有設(shè)定,則會自動進(jìn)入第0通道的電壓數(shù)據(jù)的采集。在主菜單下,用戶可以相應(yīng)的選擇流量采集、時間設(shè)定、溫度測定、修改密碼等操作。4.3程序流程圖主程序入口系統(tǒng)初始化讀取EEPROM密碼是否有按鍵按下密碼是否正確是輸入入戶密碼LCD顯示否否圖11系統(tǒng)整體流程圖時間設(shè)定子程序入口Enter是否按下修改時間設(shè)定標(biāo)志flagDn是否按

16、下Flag=1?否是t1-Min減1Hour減1I4亨”圖12時間設(shè)定流程圖13數(shù)據(jù)采集子程序流程5程序調(diào)試當(dāng)編寫矩陣鍵盤時,發(fā)現(xiàn)MCU對矩陣鍵盤是否有按鍵按下判斷不是很準(zhǔn)確,有的時候會出現(xiàn)漏判的錯誤,當(dāng)確定程序沒有問題時,檢查硬件,發(fā)現(xiàn)矩陣鍵盤的上拉電阻焊接的有問題,上拉電阻較小,當(dāng)有按鍵按下的,用萬用表測量發(fā)現(xiàn)電壓有1.9V,從而找到問題的所在,于是把矩陣鍵盤需要拉低的線直接接GND,問題得到解決。在程序的各個模塊的功能編寫調(diào)試無誤后,將各個子子模塊加以合并的時候,發(fā)現(xiàn)DS18B20的溫度數(shù)據(jù)采集有問題,最后通過查詢DS18B20的時序手冊方知,其數(shù)據(jù)只在數(shù)據(jù)總線上保留15us,同時,MC

17、U的定時器中斷開啟,當(dāng)采集18B20的數(shù)據(jù)時,如果此時有定時器的中斷產(chǎn)生,則將導(dǎo)致數(shù)據(jù)讀寫不正確(18B20對時序要求很高)。6技術(shù)小結(jié)本次課程設(shè)計做的多功能數(shù)據(jù)采集系統(tǒng),涉及的具體技術(shù)如下:(1)8051單片機(jī)中斷的使用(串口中斷、定時器中斷);(2)ADC0809IC轉(zhuǎn)換的啟動以及轉(zhuǎn)換數(shù)據(jù)的讀??;(3)DS1302RTC時鐘數(shù)據(jù)的讀取(使用8051I/0口模擬SPI的時序);(4)18B20溫度傳感器數(shù)據(jù)的讀?。ㄊ褂?052I/O口模擬IIC的時序);12864LCD液晶的驅(qū)動(由于串口用作仿真,因此使用I/O口模擬串行通信的時序);由于所用的外設(shè)是使用SPI、1-wire、IIC方式讀取

18、,所以使用了MCU的I/O口模擬的方式,從而完成對所用外設(shè)的讀取與操作。在軟件方面,使用軟件濾波的方式,濾除干擾電壓數(shù)據(jù),提高采樣電壓的精度。最終完成對整個系統(tǒng)的設(shè)計。7多功能流量釆集系統(tǒng)的使用說明該系統(tǒng)的整個操作都是通過四個按鍵來完成(UP、DOWN、ENTER、MODE),顯示使用12864液晶顯示器,有良好的人機(jī)界面,用戶操作起來方便、簡單。當(dāng)給系統(tǒng)上電的時間,整個系統(tǒng)開始啟動,LCD上先顯示歡迎辭,然后要求用戶輸入密碼,同時LCD上有液晶提示,當(dāng)用戶輸入的密碼不正確的時候,則會要求重新輸入,直到正確為止。密碼驗證成功后,則進(jìn)入主菜單,要求用戶輸入要執(zhí)行的選項,通過UP/DOWN鍵進(jìn)行選

19、擇,ENTER確定,進(jìn)入后,用戶就可以按照LCD上的提示完成操縱流程。8心得體會通過本次實驗,對51單片機(jī)的原理以及實踐有了進(jìn)一步的掌握,51單片機(jī)內(nèi)部的資源使用以及外圍設(shè)備的擴(kuò)展有了更深入的理解和掌握。在為期兩周的設(shè)計中,對于單片機(jī)的硬件和軟件以及整個系統(tǒng)的開發(fā)有了一個潛在的意識。通過本次實驗,掌握了單片機(jī)的硬件以及軟件遇到問題的調(diào)試方法以及設(shè)計一個系統(tǒng)應(yīng)該注意的問題。以前總是對一個系統(tǒng)的一個部分做的非常熟悉,通過本次課程設(shè)計,對一個產(chǎn)品、一個系統(tǒng)的設(shè)計有了提高。本設(shè)計的缺點:本系統(tǒng)的各個功能模塊相對獨立,并且都是分時工作,因此在數(shù)據(jù)的實時采集以及處理方面,有待在以后的設(shè)計中得到改進(jìn)。9參考

20、文獻(xiàn)張毅剛單片機(jī)原理及應(yīng)用北京:高等教育出版社,2003.12.馬淑華單片機(jī)原理與接口技術(shù)北京:北京郵電大學(xué)出版社,2008.龔運(yùn)新單片機(jī)C語言開發(fā)技術(shù)北京:清華大學(xué)出版社,2006.張義輝.單片機(jī)實驗指導(dǎo)書.重慶:重慶科技學(xué)院電子信息工程學(xué)院自動化教研室,2007.單片機(jī)系統(tǒng)綜合訓(xùn)練設(shè)計報告 T附錄1電路原理圖iRpKrv-X-8.C-吊嗎EHMEETF=sSB-d5-28E7Sr.-r2呻r3H-Isr-r.口善22s.JLMIMTifES亠m.-.吉xmhottsU-JJV辜3.G3TVI二百OXLE百貝M6=g=uovJys弗DE-r!富書旨l-clir胃亠rrflHEl-E.雖LEf

21、lEHEl-EHE-OSWMIT-h0MZXHfrM.sfr_JL2百ML百番-E-nD7)Index=7;DisplayValue(l,2,Index);LCD_Clear();DisplayValue(0,2,Index);while(1)t=Get_ADC_ConvertedValue(Index);DisplayValue(2,2,t);Delay_ms(500);初始化函數(shù):#includedreamcatcher.hbitDisplay_Flag=0;sbitBuzzer=P30;ucharKey_Value=0;ucharH_Alarm=0,L_Alarm=0;voidMCU_i

22、nit(void)Usart_Init();ADC_init();InitLCD();System_enter();/啟動是的系統(tǒng)界面DS1302_Initial();/CODE_Enter();voidDelay_ms(uintx)uchary;for(x;x0;x一)for(y=112;y0;y-);voidUsart_Init(void)SCON=0 x50;/串口方式1,允許接收TMOD=0 x21;/定時器1定時方式2,定時器的工作方式1TH1=OxOfd;/11.0592MHz9600波特率TL1=0 x0fd;TH0=THCO;TL0=TLCO;ET0=1;EA=1;TI=0;R

23、I=0;TR1=0;/啟動定時器voidSystem_enter()DispHanzi(0,1,6,信號采集系統(tǒng));DispHanzi(2,1,6,系統(tǒng)正在啟動”);DispZimu(3,0,15,ByDreamCatcher);Delay_ms(5000);Delay_ms(5000);Delay_ms(5000);LCD_Clear();voidCODE_Enter()ucharCode_Temp4=0,index;ucharcodeEnter_Code4=1,2,3,4;/初始密碼Retry:DispHanzi(0,l,6,輸入用戶密碼);for(index=0;index4;index

24、+)Code_Tempindex=0;index=0;dodoCode_Tempindex=Key_Scan();while(Code_Tempindex=0);DispZimu(2,index+2,l,*);index+;while(index3)DispHanzi(3,1,6,輸入密碼成功”);Delay_ms(5000);LCD_Clear();elseLCD_Clear();gotoRetry;voidMain_Menu()ucharindex=0;DispZimu(0,0,l,l);DispZimu(l,0,l,2);DispZimu(2,0,l,3);DispHanzi(0,2,4

25、,修改時間”);DispHanzi(l,2,4,流量采集);DispHanzi(2,2,4,修改密碼”);doindex=Key_Scan();while(index=0);switch(index)casel:Clock_Adjust();break;的時間case2:Hydrometry();break;樣case3:Code_Modifict();break;voidHydrometry()ucharindex=0,AD_Value=0,Temperature=0,Min=0,Hour=0;/默認(rèn)為0通道Alarm_Setting();DispHanzi(0,0,6,當(dāng)前采樣通道”);D

26、ispHanzi(l,0,4,即時流量);DispHanzi(2,0,4,北京時間”);DispHanzi(3,0,4,即時溫度);DispZimu(3,6,l,C);for(index=0;index7)index=7;break;DispHanzi(0,2,4,時間設(shè)定)case3:if(index0)index一;break;DispZimu(2,3,l,:);default:break;Hour=Readl302(READ_H0UR);Min=Readl302(READ_MINUTE);/讀取DS1302的時鐘數(shù)if(Key_Value=4)break;據(jù)Key_Value=0;Tim

27、e_Display(2,2,Hour);Time_Display(2,4,Min);/顯示DS1302的時鐘數(shù)if(Display_Flag)據(jù)Display_Flag=0;Hour=Readl302(READ_H0UR);doMin=Readl302(READ_MINUTE);HourAdjust:Time_Display(2,5,Hour);index=Key_Scan();Time_Display(2,7,Min);if(index=1)gotoEND;switch(index)while(l);TR0=0;case2:Hour+;break;LCD_Clear();case3:Hour

28、一;break;default:break;voidTimerO_ISR(void)interrupt1Time_Display(2,2,Hour);staticuintcount=0;Time_Display(2,4,Min);/顯示DS1302的時鐘數(shù)TH0=THCO;據(jù)TL0=TLCO;count+;if(index!=4)gotoHourAdjust;MinAdjust:index=Key_Scan();if(index=l)gotoEND;switch(index)case2:Min+;break;case3:Min一;break;default:break;Time_Display

29、(2,2,Hour);Time_Display(2,4,Min);/顯示DS1302的時鐘數(shù)據(jù)if(index!=4)gotoMinAdjust;while(l);END:temp0=(Hour/10)4)|(Hour%10);temp1=(Min/10)4)|(Min%10);/*DS1302數(shù)據(jù)修改*/Write1302(WRITE_PR0TECT,0 x00);/禁止寫保護(hù)Write1302始化(WRITE_MINUTE,temp1);/分鐘初Write1302始化Write1302(WRITE_HOUR,tempO);(0 x90,0 xa6);/小時初Write1302護(hù)(WRITE

30、_PR0TECT,0 x80);/允許寫保LCD_Clear();voidCode_Modifict(void)ucharCode_Temp4=0,index,Code_Templ4=0;staticucharEnter_Code4=l,2,3,4;/初始密碼LCD_Clear();Retry:DispHanzi(0,l,6,輸入用戶密碼);for(index=0;index4;index+)Code_Tempindex=0;index=0;dodoCode_Tempindex=Key_Scan();while(Code_Tempindex=0);DispZimu(2,index+2,l,*)

31、;index+;while(index3)DispHanzi(3,1,6,輸入密碼成功”);Delay_ms(5000);LCD_Clear();Retryl:DispHanzi(0,1,6,輸入新的密碼”);for(index=0;index4;index+)Code_Tempindex=0;index=0;dodoCode_Tempindex=Key_Scan();while(Code_Tempindex=0);DispZimu(2,index+2,1,*);index+;while(index4);LCD_Clear();DispHanzi(0,1,6,再次輸入密碼”);for(inde

32、x=0;index4;index+)Code_Temp1index=0;index=0;dodoCode_Temp1index=Key_Scan();while(Code_Temp1index=0);DispZimu(2,index+2,1,*);index+;while(index4);index=0;while(Code_Tempindex=Code_Temp1index&index=3)index+;if(index3)DispHanzi(3,l,6,輸入設(shè)定成功”);for(index=0;index4;index+)Enter_Codeindex=Code_Templindex;De

33、lay_ms(5000);Delay_ms(5000);Delay_ms(5000);LCD_Clear();return;elseLCD_Clear();gotoRetryl;elseLCD_Clear();gotoRetry;voidAlarm_Setting(void)ucharindex=0;LCD_Clear();DispHanzi(0,1,6,報警參數(shù)設(shè)定);Time_Display(2,2,H_Alarm);Time_Display(2,4,L_Alarm);doH_AlarmAjust:index=Key_Scan();if(index=1)gotoEND;switch(ind

34、ex)default:break;Time_Display(2,2,H_Alarm);Time_Display(2,4,L_Alarm);if(index!=4)gotoH_AlarmAjust;L_AlarmAdjust:index=Key_Scan();if(index=1)gotoEND;switch(index)case2:L_Alarm+;break;case3:L_Alarm一;break;default:break;Time_Display(2,2,H_Alarm);Time_Display(2,4,L_Alarm);/顯示DS1302的時鐘數(shù)據(jù)if(index!=4)gotoL

35、_AlarmAdjust;while(1);END:LCD_Clear();鍵盤掃描函數(shù):#includedreamcatcher.hsbitPullDown=P20;sbitMode=P21;sbitUp=P22;sbitDown=P23;sbitEnter=P24;sbitLED0=P25;sbitLED1=P26;sbitLED2=P27;/*按鍵掃描,相應(yīng)的按鍵返回為:1、2、3、4*/ucharKey_Scan()case2:H_Alarm+;break;if(!Mode)case3:H_Alarm一;break;PullDown=0;Delay_ms(10);if(!Mode)wh

36、ile(!Mode);return1;elseif(!Up)Delay_ms(10);if(!Up)while(!Up);return2;elseif(!Down)Delay_ms(10);if(!Down)while(!Down);return3;elseif(!Enter)Delay_ms(10);if(!Enter)while(!Enter);return4;elsereturn0;/無按鍵按下LCD12864驅(qū)動程序:#includedreamcatcher.hsbitCS=P4;sbitSID=P5;sbitSCLK=P6;sbitB_light=P7;/背光控制voiddelay(

37、unsignedintj)unsignedchari;dofor(i=0;i100;i+);while(j);voidsend_command(unsignedcharcommand_data)/發(fā)送命令unsignedchari;unsignedchari_data,temp_datal,temp_data2;i_data=0 xf8;/操作命令,可以查看資料delay(10);CS=1;SCLK=0;for(i=0;i8;i+)SID=(bit)(i_data&0 x80);SCLK=0;SCLK=1;i_data=i_datal;i_data=command_data;i_data&=0

38、 xf0;for(i=0;i8;i+)SID=(bit)(i_data&0 x80);SCLK=0;SCLK=1;i_data=i_datal;i_data=command_data;temp_data1=i_data&0 xf0;temp_data2=i_data&0 x0f;temp_datal=4;temp_data2=4;i_data=temp_datal|temp_data2;i_data&=0 xf0;for(i=0;i8;i+)SID=(bit)(i_data&0 x80);SCLK=0;SCLK=1;i_data=i_datal;cs=o;voidsend_data(unsig

39、nedcharcommand_data)/發(fā)送數(shù)據(jù)unsignedchari;unsignedchari_data,temp_datal,temp_data2;i_data=Oxfa;/操作命令,可以查看資料delay(lO);CS=1;for(i=0;i8;i+)SID=(bit)(i_data&0 x80);SCLK=0;SCLK=1;i_data=i_data1;i_data=command_data;i_data&=0 xf0;for(i=0;i8;i+)SID=(bit)(i_data&0 x80);SCLK=0;SCLK=1;i_data=i_data1;i_data=comman

40、d_data;temp_datal=i_data&0 xf0;temp_data2=i_data&0 x0f;temp_datal=4;temp_data2=4;i_data=temp_datal|temp_data2;i_data&=0 xf0;for(i=0;i8;i+)SID=(bit)(i_data&0 x80);SCLK=0;SCLK=1;i_data=i_data1;CS=0;voidInitLCD()/液晶初始化B_light=0;send_command(0 x30);/功能設(shè)置:一次送8位數(shù)據(jù),基本指令集send_command(0 x06);/點設(shè)定:顯示字符/光標(biāo)從左到右

41、移位,DDRAM地址加1send_command(OxOc);/顯示設(shè)定:開顯示,顯示光標(biāo),當(dāng)前顯示位反白閃動send_command(0 x04);/顯示設(shè)定:開顯示,顯示光標(biāo),當(dāng)前顯示位反白閃動send_command(0 x01);/清DDRAMsend_command(0 x02);/DDRAM地址歸位send_command(0 x80);/把顯示地址設(shè)為0X80,即為第一行的首位/*x,y為起始座標(biāo)x(0=x=3),y(0=y=7),x為行座標(biāo),y為列座標(biāo);how為要顯示漢字的個數(shù);str是要顯示漢字的地址*/voidDispHanzi(unsignedcharx,unsigned

42、chary,unsignedcharhow,unsignedchar*stri)unsignedcharhi=0;/漢字顯示if(x=0)send_command(0 x80+y);/elseif(x=1)send_command(0 x90+y);elseif(x=2)send_command(0 x88+y);elseif(x=3)send_command(0 x98+y);for(hi=0;hihow;hi+)send_data(*(stri+hi*2);send_data(*(stri+hi*2+1);voidDispZimu(unsignedcharx,unsignedchary,u

43、nsignedcharhow,unsignedchar*stri)/字母數(shù)字都可以顯示unsignedcharhi=0;/字母顯示if(x=O)send_command(0 x80+y);elseif(x=1)send_command(0 x90+y);elseif(x=2)send_command(0 x88+y);elseif(x=3)send_command(0 x98+y);for(hi=0;hi0)i-;DS=1;i=4;while(i0)i-;bittmpreadbit(void)/讀一位uinti;bitdat;DS=0;i+;/小延時一下DS=1;i+;i+;dat=DS;i=

44、8;while(i0)i-;return(dat);uchartmpread(void)/讀一個字節(jié)uchari,j,dat;dat=0;for(i=1;i1;if(testb)/write1寫1部分DS=0;i+;i+;DS=1;i=8;while(i0)i-;elseDS=0;/write0寫0部分i=8;while(i0)i-;DS=1;i+;i+;voidtmpchange(void)/發(fā)送溫度轉(zhuǎn)換命令dsreset();/初始化DS18B20delay(l);/延時tmpwritebyte(Oxcc);/跳過序列號命令tmpwritebyte(0 x44);/發(fā)送溫度轉(zhuǎn)換命令uint_18B20Get_Temperature

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論