基于串口通訊單片機(jī)測(cè)溫系統(tǒng)設(shè)計(jì)_第1頁(yè)
基于串口通訊單片機(jī)測(cè)溫系統(tǒng)設(shè)計(jì)_第2頁(yè)
基于串口通訊單片機(jī)測(cè)溫系統(tǒng)設(shè)計(jì)_第3頁(yè)
基于串口通訊單片機(jī)測(cè)溫系統(tǒng)設(shè)計(jì)_第4頁(yè)
基于串口通訊單片機(jī)測(cè)溫系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、武漢紡織大學(xué)機(jī)械設(shè)計(jì)及其自動(dòng)化學(xué)院課程設(shè)計(jì)(論文)說(shuō)明書論文題目 基于串行口收發(fā)電路的溫度測(cè)量單片機(jī)系統(tǒng)設(shè)計(jì)學(xué) 號(hào) 1302220132 學(xué)生姓名 彭航 專業(yè)班級(jí) 測(cè)控11301班 任課老師 喬 橋 總評(píng)成績(jī) 2016 年 1 月 6 日摘 要 隨著科技的不斷進(jìn)步,在工業(yè)生產(chǎn)中溫度是常用的被控參數(shù),而采用單片機(jī)來(lái)對(duì)這些被控參數(shù)進(jìn)行控制已成為當(dāng)今的主流。本文介紹了數(shù)字溫度測(cè)量及自動(dòng)控制系統(tǒng)的設(shè)計(jì)。本文采用單片機(jī)來(lái)實(shí)現(xiàn)對(duì)溫度的控制。它的主要組成部分有:AT89S51單片機(jī)、溫度傳感器、按鍵與顯示電路、溫度控制電路、串口通訊電路。它可以實(shí)時(shí)的顯示和設(shè)定溫度,實(shí)現(xiàn)對(duì)溫度的自動(dòng)控制。通過(guò)測(cè)試表明,本設(shè)計(jì)

2、對(duì)溫度的控制有方便、簡(jiǎn)單的特點(diǎn),從而大幅提高了被控溫度的技術(shù)指標(biāo)。關(guān)鍵詞: 單片機(jī) 溫度傳感器 鍵盤和顯示 串口通訊Abstract As the technology advances in industrial production in the temperature is charged with common parameters, and the use of those charged with SCM to the parameters of control has become the mainstream. In this paper, digital temperatur

3、e measurement and automatic control system design. In this paper, SCM to achieve the temperature control. It is a major component of: STC89C52 SCM, temperature sensor, keyboard and display circuit, temperature control circuit. It can display real-time and temperature settings, and the temperature co

4、ntrol,and serial interface electric circuit. Passed the tests show that the design of the temperature control is convenient and simple characteristics, thus greatly raising the temperature was charged with the technical indicators.Key words: MCU Temperature sensor Keyboard and Demonstration Serial I

5、nterface目錄一、設(shè)計(jì)任務(wù)書.4二、具體設(shè)計(jì).52.1系統(tǒng)設(shè)計(jì).5三、電路設(shè)計(jì). 53.1顯示電路設(shè)計(jì).53.2按鍵電路設(shè)計(jì).73.3溫度采樣電路設(shè)計(jì).83.4串行通訊電路設(shè)計(jì).93.5報(bào)警電路設(shè)計(jì)11四、操作說(shuō)明.12五、總結(jié).12六、電路仿真圖12七、源程序代碼13一、設(shè)計(jì)任務(wù)書1.設(shè)計(jì)題目:基于串行口收發(fā)電路的溫度測(cè)量單片機(jī)系統(tǒng)設(shè)計(jì)1.2目的意義:(1)綜合運(yùn)用并鞏固所學(xué)單片機(jī)設(shè)計(jì)知識(shí);(2)采用編程的方法實(shí)現(xiàn)基于串行口收發(fā)電路的溫度測(cè)量單片機(jī)系統(tǒng)設(shè)計(jì)。1.3設(shè)計(jì)內(nèi)容:A/D轉(zhuǎn)換電路的制作 。 掌握A/D轉(zhuǎn)換電路的制作。 掌握溫度采樣電路的原理和制作。 掌握將轉(zhuǎn)換的數(shù)字信號(hào)換算成實(shí)

6、際溫度值的方法。 掌握相應(yīng)電路的程序編寫 單片機(jī)串行口收發(fā)電路的制作 學(xué)會(huì)單片機(jī)與PC機(jī)收發(fā)電路的制作。 掌握MCS-51單片機(jī)串行口收發(fā)程序的編寫要點(diǎn)。(3)基本人機(jī)接口設(shè)計(jì) 完成顯示接口設(shè)計(jì)。 完成鍵盤接口設(shè)計(jì)。設(shè)計(jì)要求:按題意要求,畫出原理圖;單片機(jī)接線圖;按照題目要求設(shè)計(jì)采集電路;完成單片機(jī)控制程序;完成設(shè)計(jì)說(shuō)明書(15頁(yè));設(shè)計(jì)上交內(nèi)容:設(shè)計(jì)說(shuō)明書(包括1、2、3、4、5項(xiàng))1.4設(shè)計(jì)步驟理解并確定設(shè)計(jì)要求確定整體控制方案編寫程序說(shuō)明書附錄附上電路圖一張及匯編控制程序或C51程序一份,說(shuō)明書分三章描述,即設(shè)計(jì)內(nèi)容的前三點(diǎn)。二、具體設(shè)計(jì)2.1系統(tǒng)設(shè)計(jì)本次課程設(shè)計(jì)是采用編程的方法實(shí)現(xiàn)基于

7、串行口收發(fā)電路的溫度測(cè)量單片機(jī)系統(tǒng)設(shè)計(jì),利用溫度傳感器與AT89C51單片機(jī)結(jié)合來(lái)測(cè)量溫度,并在顯示相應(yīng)的溫度值,可以通過(guò)按鍵設(shè)置溫度的上限和下限數(shù)值,當(dāng)溫度超過(guò)設(shè)定的最高溫度或低于設(shè)定的最低溫度值是,系統(tǒng)就會(huì)進(jìn)行聲音報(bào)警,提示高溫報(bào)警或低溫報(bào)警。本次系統(tǒng)可分為五個(gè)主要板塊:顯示電路;按鍵設(shè)置電路;溫度采樣電路報(bào)警電路電平轉(zhuǎn)換電路。系統(tǒng)框圖如圖1所示:AT89C51顯示電路按鍵設(shè)置電平轉(zhuǎn)換PC機(jī)溫度采樣電路報(bào)警電路復(fù)位電路晶振電路圖1:系統(tǒng)整體框圖三、電路設(shè)計(jì)3.1顯示電路設(shè)計(jì)顯示部分元器件:顯示器LCD16021.LCD1602簡(jiǎn)介:1602液晶也叫1602字符型液晶,它是一種專門用來(lái)顯示字

8、母、數(shù)字、符號(hào)的點(diǎn)陣型液晶模塊。它是由若干個(gè)5x7或者5x11的點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以用顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱?,所以它不能很好的顯示圖片。LCD1602基本操作時(shí)序:讀狀態(tài):輸入:RS=L,RW=H,E=H 輸出:D0D7狀態(tài)字寫指令:輸入:RS=L,RW=L,D0D7=指令碼,E=高脈沖 輸出:無(wú)讀數(shù)據(jù):輸入:RS=H,RW=H,E=H 輸出:D0D7=數(shù)據(jù)寫數(shù)據(jù):輸入:RS=H,RW=L, D0D7=數(shù)據(jù),E=高脈沖 輸出:無(wú)LCD1602的引腳功能如表1所示:表1:LCD1602引腳功能表2.電路圖

9、如圖2所示圖2:LCD1602與單片機(jī)連接圖3.LCD1602初始化過(guò)程(復(fù)位過(guò)程):1.延時(shí)15ms2.寫指令38H(不檢測(cè)忙信號(hào))3.延時(shí)5ms4.寫指令38H(不檢測(cè)忙信號(hào))5.延時(shí)5ms6.寫指令38H(不檢測(cè)忙信號(hào))7.以后每次寫指令、讀/寫數(shù)據(jù)操作之前均需要檢測(cè)忙信號(hào))8.寫指令38H:顯示模式設(shè)置9.寫指令08H:顯示關(guān)閉10.寫指令01H:顯示清屏11.寫指令06H:顯示光標(biāo)移動(dòng)位置12.寫指令0CH:顯示開及光標(biāo)設(shè)置3.2按鍵設(shè)置部分: 該部分是控制溫度上下限的控制裝置,選用普通的雙腳按鍵,由于器件簡(jiǎn)單,就不加說(shuō)明了。按鍵如圖3所示圖3:按鍵設(shè)置電路圖3.3溫度采樣部分:DS

10、18B201.DS18B20簡(jiǎn)介:DS18B20 單線數(shù)字溫度傳感器,即“一線器件”,其具有獨(dú)特的優(yōu)點(diǎn):     (1)采用單總線的接口方式 與微處理器連接時(shí) 僅需要一條口線即可實(shí)現(xiàn)微處理器與 DS18B20 的雙向通訊。 單總線具有經(jīng)濟(jì)性好,抗干擾能力強(qiáng),適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,使用方便等優(yōu)點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。     (2)測(cè)量溫度范圍寬,測(cè)量精度高 DS18B20 的測(cè)量范圍為 -55 + 125 ; 在 -10+ 85°C 范圍內(nèi),精度為 

11、7; 0.5°C 。     (3)持多點(diǎn)組網(wǎng)功能 多個(gè) DS18B20 可以并聯(lián)在惟一的單線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫。     (4)供電方式靈活 DS18B20 可以通過(guò)內(nèi)部寄生電路從數(shù)據(jù)線上獲取電源。因此,當(dāng)數(shù)據(jù)線上的時(shí)序滿足一定的要求時(shí),可以不接外部電源,從而 使系統(tǒng)結(jié)構(gòu)更趨簡(jiǎn)單,可靠性更高。     (5)測(cè)量參數(shù)可配置 DS18B20 的測(cè)量分辨率可通過(guò)程序設(shè)定 912 位。     DS18B20 具有體積更小、適用電壓

12、更寬、更經(jīng)濟(jì)、可選更小的封裝方式,更寬的電壓適用范圍,適合于構(gòu)建自己的經(jīng)濟(jì)的測(cè)溫系統(tǒng),因此也就被設(shè)計(jì)者們所青睞。2.DS18B20與單片機(jī)的連接 把DS18B20的數(shù)據(jù)線與單片機(jī)的P1.1管腳連接,再加上阻值為10K的上拉電阻。圖4:溫度傳感器與單片機(jī)連接圖3.DS118B20的初始化過(guò)程:主機(jī)首先發(fā)出一個(gè)480960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖?,并在隨后的480微秒時(shí)間內(nèi)對(duì)總線進(jìn)行檢測(cè),如果有低電平出現(xiàn)說(shuō)明總線上有器件已做出應(yīng)答。若無(wú)低電平出現(xiàn)一直都是高電平說(shuō)明總線上無(wú)器件應(yīng)答。做為從器件的DS18B20在一上電后就一直在檢測(cè)總線上是否有480960微秒的低電平出現(xiàn),如果有,在總

13、線轉(zhuǎn)為高電平后等待1560微秒后將總線電平拉低60240微秒做出響應(yīng)存在脈沖,告訴主機(jī)本器件已做好準(zhǔn)備。若沒(méi)有檢測(cè)到就一直在檢測(cè)等待。4.DS18B20的操作過(guò)程:DS18B20的一線工作協(xié)議流程是:初始化ROM操作指令存儲(chǔ)器操作指令數(shù)據(jù)傳輸。其工作時(shí)序包括:(1)初始化時(shí)序(2)寫時(shí)序(3)讀時(shí)序5.DS18B20的讀操作過(guò)程:由于本次課程設(shè)計(jì)只需要讀取當(dāng)前環(huán)境溫度,故這里只介紹讀操作。對(duì)于讀數(shù)據(jù)操作時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。讀周期是從主機(jī)把單總線拉低1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。作為從機(jī)DS18B20在檢測(cè)到總線被拉低1微秒后,便開始送

14、出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機(jī)在一開始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時(shí)間內(nèi)完成對(duì)總線進(jìn)行采樣檢測(cè),采樣期內(nèi)總線為低電平則確認(rèn)為0。采樣期內(nèi)總線為高電平則確認(rèn)為1。完成一個(gè)讀時(shí)序過(guò)程,至少需要60微秒才能完成6.DS18B20存儲(chǔ)溫度的形式及讀取溫度的操作步驟DS18B20經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。所以當(dāng)我們只想簡(jiǎn)單的讀取溫度值的時(shí)候,只用讀取暫存器中的第0和第1個(gè)字節(jié)就可以了。簡(jiǎn)單的讀取溫度值的步驟如下:(1)跳過(guò)ROM操作(2)發(fā)送溫度轉(zhuǎn)換命令

15、(4)跳過(guò)ROM操作(5)發(fā)送讀取溫度命令(6)讀取溫度值3.4串行口通訊部分:MAX232 MAX232的管腳圖如圖5所示: 圖5:MAX232管腳圖1.max232資料簡(jiǎn)介: 該產(chǎn)品是由德州儀器公司(TI)推出的一款兼容RS232標(biāo)準(zhǔn)的芯片。由于電腦串口RS232電平是-10v+10v,而一般的單片機(jī)應(yīng)用系統(tǒng)的信號(hào)電壓是TTL電平0+5v,MAX232就是用來(lái)進(jìn)行電平轉(zhuǎn)換的,該器件包含2驅(qū)動(dòng)器、2接收器和一個(gè)電壓發(fā)生器電路提供TIA/EIA-232-F電平。 該器件符合TIA/EIA-232-F標(biāo)準(zhǔn),每一個(gè)接收器將TIA/EIA-232-F電平轉(zhuǎn)換成5-VTTL/CMOS電平。每一個(gè)發(fā)送器

16、將TTL/CMOS電平轉(zhuǎn)換成TIA/EIA-232-F電平。2.主要特點(diǎn):(1)單5V電源工作 (2)LinBiCMOSTM工藝技術(shù)(3)兩個(gè)驅(qū)動(dòng)器及兩個(gè)接收器(4)±30V輸入電平 (5)低電源電流:典型值是8mA (6)符合甚至優(yōu)于ANSI標(biāo)準(zhǔn)EIA/TIA-232-E及ITU推薦標(biāo)準(zhǔn)V.28(7)ESD保護(hù)大于MIL-STD-883(方法3015)標(biāo)準(zhǔn)的2000V3.MAX232接線圖 圖6:串行口通訊接線圖4.串行口設(shè)置程序 由于收發(fā)的為8位十六進(jìn)制數(shù),故可采用串行口工作方式1。雙工通信要求收、發(fā)同時(shí)進(jìn)行。實(shí)際上收、發(fā)操作主要是在串行口中進(jìn)行,CPU只是把數(shù)據(jù)從接收緩沖器讀出

17、和把數(shù)據(jù)寫入發(fā)送緩沖器。數(shù)據(jù)接收用中斷方式進(jìn)行。數(shù)據(jù)發(fā)送通過(guò)人工按下按鍵進(jìn)行。但由于MCS-51單片機(jī)串行中斷請(qǐng)求TI或RI合為一個(gè)中斷源,響應(yīng)中斷以后,通過(guò)檢測(cè)是否是RI置位引起的中斷來(lái)決定是否接收數(shù)據(jù)。發(fā)送數(shù)據(jù)是通過(guò)調(diào)用子程序來(lái)完成。定時(shí)器T1采用工作方式2,可以避免計(jì)數(shù)溢出后用軟件重裝定時(shí)初值。定時(shí)器T1初值計(jì)算如圖8-4所示,定時(shí)器初值為0FEH。SCON取值:50H。TMOD取值:20H。根據(jù)老師提供資料,匯編程序如下:ORG 0000H LJMP START ORG 0023HLJMP SINSTART:MOV TMOD,#20H ;定時(shí)器T1設(shè)為方式2MOV TL1,#0FEH

18、;裝入定時(shí)器初值MOV TH1,#0FEH ;8位重裝值SETB TR1 ;啟動(dòng)定時(shí)器T1MOV SCON,#50H ;串行口設(shè)為方式1SETB EA ;開總中斷SETB ES ;開串行中斷MAIN: SETB P2.7 ;P2.7設(shè)為輸入JB P2.7,MAINLCALL DELAY ;延時(shí)去抖JB P2.7,MAINLCALL SOUT ;調(diào)用發(fā)送子程序NEXT: JNB P2.7,NEXT ;等待按鍵釋放LCALL DELAYJNB P2.7,NEXTLJMP MAIN;串行中斷服務(wù)程序SIN: JNB RI,FANHUI ;判斷是否為接收引起的中斷MOV A,SBUF ;從接收緩沖器讀

19、入數(shù)據(jù)MOV P1,A ;送P1口顯示FANHUI: CLR RICLR TIRETI;發(fā)送子程序SOUT: MOV P0,#0FFH ;P0口設(shè)為輸入口MOV A,P0 ;P0口狀態(tài)送累加器AMOV SBUF,A ;把數(shù)據(jù)寫入發(fā)送緩沖器RETDELAY:MOV R6,#64H ;延時(shí)10ms子程序D1: MOV R5,#0EHNOPD2: NOPNOPDJNZ R5,D2 DJNZ R6,D1RETEND3.5報(bào)警電路圖7:報(bào)警電路連線圖本次課程設(shè)計(jì)的報(bào)警電路如圖7所示,電路中使用一個(gè)三極管作為開關(guān),當(dāng)環(huán)境溫度超出溫度最高上限或低于最低溫度下限時(shí),單片機(jī)會(huì)讓P1.0為高電平、P1.1為低電平

20、,此時(shí)三極管導(dǎo)通LED-RED亮,蜂鳴器工作報(bào)警(該處電壓只有2.8V左右,應(yīng)將蜂鳴器的導(dǎo)通電壓設(shè)置為2.5V),表示危險(xiǎn)。反之,單片機(jī)讓P1.0為低電平、P1.1為高電平,此時(shí)LED-GREEN亮,表示安全。四、操作說(shuō)明 該裝置剛通電時(shí),要對(duì)系統(tǒng)進(jìn)行初始化,首先按下“設(shè)置”鍵,此時(shí)顯示屏上“min”會(huì)有光標(biāo)閃動(dòng),按“加”或者“減”鍵可設(shè)置最低溫度。同理,再按下“設(shè)置”鍵,可設(shè)置最高溫度。設(shè)置完成后,再次按下設(shè)置鍵,裝置初始化完成,通過(guò)調(diào)節(jié)DS18B20的溫度值模擬環(huán)境溫度變化,同時(shí)在顯示屏上顯示當(dāng)前溫度,綠燈亮,表示環(huán)境在設(shè)定溫度范圍之內(nèi),紅燈亮以及蜂鳴器響表示環(huán)境溫度在溫度范圍之外。五總結(jié)

21、本次課程設(shè)計(jì)花費(fèi)了兩周的時(shí)間去去學(xué)習(xí)相關(guān)軟件和程序,獲得了很多心得與體會(huì),剛開始做課程設(shè)計(jì)真的有點(diǎn)郁悶,程序里面的好多內(nèi)容不懂,自我感覺(jué)是單片機(jī)我們所學(xué)的內(nèi)容還不足以編出這兩個(gè)程序,但是只好硬著頭皮去看去理解。但在學(xué)習(xí)過(guò)程中也充滿了樂(lè)趣,當(dāng)看懂了程序的一些語(yǔ)句,畫出了要求的設(shè)計(jì)圖,那我喜悅那種成就感油然而生。這次課程設(shè)計(jì)讓我受益匪淺,無(wú)論從知識(shí)上還是其他的各個(gè)方面。上課的時(shí)候的學(xué)習(xí)從來(lái)沒(méi)有見(jiàn)過(guò)真正的單片機(jī),只是從理論的角度去理解枯燥乏味。但在課程設(shè)計(jì)中見(jiàn)過(guò)甚至使用了單片機(jī)及其系統(tǒng),能夠理論聯(lián)系實(shí)際的學(xué)習(xí),開闊了眼界,提高了單片機(jī)知識(shí)的理解和水平。在這次課程設(shè)計(jì)中又讓我體會(huì)到了合作與團(tuán)結(jié)的力量,

22、當(dāng)遇到不會(huì)或是設(shè)計(jì)不出來(lái)的地方,我們就會(huì)在QQ群里討論或者是同學(xué)之間相互幫助。團(tuán)結(jié)就是力量,無(wú)論在現(xiàn)在的學(xué)習(xí)中還是在以后的工作中,團(tuán)結(jié)都是至關(guān)重要的,有了團(tuán)結(jié)會(huì)有更多的理念、更多的思維、更多的情感。單片機(jī)是很重要的一門課程,老師和一些工作的朋友都曾說(shuō)過(guò),如果學(xué)好一門單片機(jī),就憑這個(gè)技術(shù)這門手藝找一個(gè)好工作也不成問(wèn)題。盡管我們?cè)谡n堂學(xué)到的內(nèi)容很有限,但在以后的學(xué)習(xí)中單片機(jī)還需要好好的深入研究和學(xué)習(xí),學(xué)好了單片機(jī)也就多了一項(xiàng)生存的本錢。最后感謝老師對(duì)我們的精心指導(dǎo)和幫助,感謝同學(xué)們對(duì)我的幫助。六、電路仿真圖五、源程序代碼#include "reg51.h" #include &

23、quot;18b20.h" #define uchar unsigned char #define uint unsigned int uchar code table="Wendu is:" ;/初始化日期和星期 uchar code table1="Max:10 Min:00"/初始化時(shí)間 uchar CNT; /以下三個(gè)是定義LCD的引腳sbit lcden=P22; sbit lcdwrite=P21; sbit lcdrs=P20; /定義四個(gè)功能開關(guān)sbit s1=P14;sbit s2=P15; sbit s3=P16; sbit

24、 s=P17; /定義二極管 sbit LED1=P10;sbit LED2=P11; uchar time; char hour,min,sec,day,mon,year1,year2,num,wendu,tec=35,flag=0; char shangxian=10,xiaxian=0; /延時(shí)程序 void delay(uint z) uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-); /lcd的寫指令void write_com(uchar com) lcdrs=0; lcden=0; P0=com; delay(5); lcden=

25、1; delay(5);lcden=0; /lcd的寫數(shù)據(jù)void write_data(uchar da) lcdrs=1;lcden=0;P0=da;delay(5);lcden=1;delay(5);lcden=0; /初始化void init()lcdwrite=0;lcden=0;write_com(0x38); /16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)write_com(0x0c);/顯示開,關(guān)光標(biāo)write_com(0x06); /移動(dòng)光標(biāo)write_com(0x01);/清除LCD的顯示內(nèi)容TMOD=0x01;TL0=(65536-50000)%256;/定時(shí)50msTH0=(65

26、536-50000)/256;EA=1;ET0=1;TR0=0; void write_wendu(uchar add, char da) uchar shi,ge;shi=da/10;ge=da%10;write_com(0x80+add);write_data(0x30+shi);write_data(0x30+ge);write_data(0xdf);void write_wendu1(uchar add, char da) uchar shi,ge;shi=da/10;ge=da%10;write_com(0x80+0x40+add);write_data(0x30+shi);writ

27、e_data(0x30+ge);/鍵盤掃描void keyscan() if(s1=0)/如果S1按下去,執(zhí)行相應(yīng)的操作 delay(5);/消除抖動(dòng) if(s1=0) flag=1; num+; while(!s1); if(num=1) TR0=0;/關(guān)定時(shí)器 write_com(0x80+0x40+14);/選定秒 write_com(0x0f); if(num=2)/選定分 write_com(0x80+0x40+5); if(num=3)/恢復(fù) num=0; write_com(0x0c); TR0=1;/重復(fù)開定時(shí)器 if(num!=0) if(s2=0)/如果s2按下調(diào)理參數(shù) d

28、elay(5); if(s2=0) while(!s2);if(num=1) xiaxian+;/調(diào)秒并顯示加 if(xiaxian=99) xiaxian=0;write_wendu1(13,xiaxian); write_com(0x80+0x40+14); if(num=2)/調(diào)分并顯示加 shangxian+; if(shangxian=99) shangxian=0; write_wendu1(4,shangxian); write_com(0x80+0x40+5); if(s3=0) delay(5); if(s3=0) while(!s3); if(num=1)/調(diào)秒并顯示減 x

29、iaxian-; if(xiaxian=-1) xiaxian=99; write_wendu1(13,xiaxian); write_com(0x80+0x40+14); if(num=2)/調(diào)分并顯示減 shangxian-; if(shangxian=-1) shangxian=99; write_wendu1(4,shangxian); write_com(0x80+0x40+5); void disp() uchar num;write_com(0x80);for (num=0;num<8;num+) write_data(tablenum);delay(5); write_c

30、om(0x80+0x40);for (num=0;num<15;num+) write_data(table1num);delay(5); void baojing() if(wendu>shangxian|wendu<xiaxian) LED2=0;LED1=1; else LED1=0;LED2=1; /主函數(shù)void main () init(); while(1) write_wendu1(5,CNT);/顯示倒計(jì)時(shí)初始值 if(s2=0)/調(diào)整上限 while(s2=0); CNT+;if(CNT>99)CNT=0; if(s3=0) /調(diào)整下限 while(

31、s3=0); CNT-;if(CNT<0)CNT=99; if(s1=0) /確定按鍵 while(s1=0); for(;CNT>0;CNT-) write_wendu1(5,CNT); delay(1000); disp();/顯示字符 TR0=1;/開啟定時(shí)器,定時(shí)采集溫度 while(1) keyscan(); baojing(); /中斷定時(shí)void timer0() interrupt 1 TL0=(65536-50000)%256;/定時(shí)50ms TH0=(65536-50000)/256; wendu=ReadTemp(); write_wendu(9, wendu); /*ds18b20子程序*/*ds18b20延遲子函數(shù)(晶振12MHz )*/ #include<reg51.h>#define uchar unsigned charsbit DQ=P12;int xs;void delay_18B20(unsigned int i)while(i-);/*ds18b20初始化函數(shù)*/void Init_DS18B20(void) unsig

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論