版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)課程設(shè)計(jì)簡(jiǎn)易數(shù)字溫度報(bào)警系統(tǒng)姓名:班級(jí):學(xué)號(hào):指導(dǎo)老師:完成時(shí)間:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)任務(wù)書 班級(jí): 姓名: 指導(dǎo)老師: 設(shè)計(jì)題目:簡(jiǎn)易數(shù)字溫度報(bào)警系統(tǒng) 設(shè)計(jì)任務(wù)做一個(gè)基于單片機(jī)的簡(jiǎn)易數(shù)字溫度報(bào)警系統(tǒng)。1. 測(cè)量溫度范圍:-55°C125°C。2. 數(shù)字顯示位數(shù)為4位,顯示精度為±0. 1°C。3. 響應(yīng)時(shí)間<5s。4. 上限下限值設(shè)置。5. 聲光報(bào)警。設(shè)計(jì)要求1. 調(diào)研、查找并收集資料。2. 總體設(shè)計(jì),畫出框圖。3. 單元電路設(shè)計(jì):。4. 繪制電器原理圖。5. 列寫元器件明細(xì)表。6. 撰寫設(shè)計(jì)說(shuō)明書(字?jǐn)?shù)約2500字左右)。7. 參考資料目錄參考
2、資料康華光主編 電子技術(shù)基礎(chǔ) 高等教育出版社 閻石主編 數(shù)字電子技術(shù)基礎(chǔ) 高等教育出版社陳坤等編著 電子設(shè)計(jì)技術(shù) 電子科技大學(xué)出版社王炳勛主編 電工實(shí)習(xí)教程 機(jī)械工業(yè)出版社教研室主任簽字: 年 月 日目錄1.引言.32.總體設(shè)計(jì)方案.32.1數(shù)字溫度計(jì)設(shè)計(jì)方案論證.32.2方案二的總體設(shè)計(jì)框圖.32.3各個(gè)電路模塊電路圖.82.4 系統(tǒng)整體硬件電路.112.5 數(shù)字溫度計(jì)簡(jiǎn)要使用說(shuō)明133系統(tǒng)軟件算法分析.143.1主程序.144總結(jié)與體會(huì).155附錄.15附錄1 程序代碼15簡(jiǎn)易數(shù)字溫度報(bào)警系統(tǒng)摘要:隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活,工作,科研,各個(gè)領(lǐng)域,已經(jīng)成為一種比較成
3、熟的技術(shù),本文將介紹一種基于單片機(jī)控制的數(shù)字溫度計(jì),本溫度計(jì)屬于多功能溫度計(jì),可以設(shè)置上下報(bào)警溫度。關(guān)鍵詞:?jiǎn)纹瑱C(jī),數(shù)字控制,溫度計(jì), DS18B20,ATMEGA161 引言在日常生活及工農(nóng)業(yè)生產(chǎn)中經(jīng)常要用到溫度的檢測(cè)及控制,傳統(tǒng)的測(cè)溫元件有熱電偶和熱電阻。而熱電偶和熱電阻測(cè)出的一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度,需要比較多的外部硬件支持,硬件電路復(fù)雜,軟件調(diào)式復(fù)雜,制作成本高。隨著人們生活水平的不斷提高,單片機(jī)控制無(wú)疑是人們追求的目標(biāo)之一,它所給人帶來(lái)的方便也是不可否定的,其中數(shù)字溫度計(jì)就是一個(gè)典型的例子,但人們對(duì)它的要求越來(lái)越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)
4、單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于對(duì)測(cè)溫比較準(zhǔn)確的場(chǎng)所,或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)控制器使用ATMEL公司生產(chǎn)的ATMEGA16L單片機(jī)芯片1,測(cè)溫傳感器使用DS18B20,用4位共陽(yáng)極LED數(shù)碼管以串口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到以上要求。2 總體設(shè)計(jì)方案2.1數(shù)字溫度計(jì)設(shè)計(jì)方案論證2.1.1方案一由于本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測(cè)溫度變化的電壓或電流采集過(guò)來(lái),進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電
5、路上,就可以將被測(cè)溫度顯示出來(lái),這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。2.1.2 方案二 進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計(jì)要求。與方案一相比,方案二 :電路簡(jiǎn)單: DS18B20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊,而熱敏電阻103不能,必須要有輔助電路的處理,才能達(dá)到目的,測(cè)溫精度高:對(duì)溫度的測(cè)量精確值達(dá)0.5度.比熱敏電阻103要精確.穩(wěn)定性好:由于方案二電路結(jié)構(gòu)簡(jiǎn)單,與方案一相比
6、,少了很多附帶電路,所以系統(tǒng)的穩(wěn)定性就要高些.1能用數(shù)碼管顯示環(huán)境溫度2設(shè)定一固定溫度,當(dāng)環(huán)境溫度達(dá)到固定溫度時(shí),啟動(dòng)報(bào)警。綜上所述,我們選擇方案二。2.2方案二的總體設(shè)計(jì)框圖溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖一所示,控制器采用ATMEGA16L單片機(jī),溫度傳感器采用DS18B20,用4位LED數(shù)碼管以串口傳送數(shù)據(jù)實(shí)現(xiàn)溫度顯示。M16 單片機(jī)控制器4個(gè)獨(dú)立按鍵時(shí)鐘震蕩復(fù)位電路蜂鳴器發(fā)光二極管4位數(shù)碼管溫度顯示聲光報(bào)警18B20溫度采集圖一總體設(shè)計(jì)方框圖2.2.1 主控制器Atmega16性能指標(biāo)1) 高性能、低功耗的 8 位AVR® 微處理器2) 先進(jìn)的RISC 結(jié)構(gòu) 131 條指令
7、大多數(shù)指令執(zhí)行時(shí)間為單個(gè)時(shí)鐘周期 32個(gè)8 位通用工作寄存器 全靜態(tài)工作 工作于16 MHz 時(shí)性能高達(dá)16 MIPS 只需兩個(gè)時(shí)鐘周期的硬件乘法器3) 非易失性程序和數(shù)據(jù)存儲(chǔ)器 16K 字節(jié)的系統(tǒng)內(nèi)可編程Flash擦寫壽命: 10,000 次 具有獨(dú)立鎖定位的可選Boot 代碼區(qū)通過(guò)片上Boot 程序?qū)崿F(xiàn)系統(tǒng)內(nèi)編程真正的同時(shí)讀寫操作 512 字節(jié)的EEPROM擦寫壽命: 100,000 次 1K字節(jié)的片內(nèi)SRAM 可以對(duì)鎖定位進(jìn)行編程以實(shí)現(xiàn)用戶程序的加密4) JTAG 接口( 與IEEE 1149.1 標(biāo)準(zhǔn)兼容) 符合JTAG 標(biāo)準(zhǔn)的邊界掃描功能 支持?jǐn)U展的片內(nèi)調(diào)試功能 通過(guò)JTAG 接口實(shí)
8、現(xiàn)對(duì)Flash、EEPROM、熔絲位和鎖定位的編程5) 外設(shè)特點(diǎn) 兩個(gè)具有獨(dú)立預(yù)分頻器和比較器功能的8 位定時(shí)器/ 計(jì)數(shù)器 一個(gè)具有預(yù)分頻器、比較功能和捕捉功能的16 位定時(shí)器/ 計(jì)數(shù)器 具有獨(dú)立振蕩器的實(shí)時(shí)計(jì)數(shù)器RTC 四通道PWM 8路10 位ADC8 個(gè)單端通道TQFP 封裝的7 個(gè)差分通道2 個(gè)具有可編程增益(1x, 10x, 或200x)的差分通道 面向字節(jié)的兩線接口 兩個(gè)可編程的串行USART 可工作于主機(jī)/ 從機(jī)模式的SPI 串行接口 具有獨(dú)立片內(nèi)振蕩器的可編程看門狗定時(shí)器 片內(nèi)模擬比較器6) 特殊的處理器特點(diǎn) 上電復(fù)位以及可編程的掉電檢測(cè) 片內(nèi)經(jīng)過(guò)標(biāo)定的RC 振蕩器 片內(nèi)/ 片
9、外中斷源 6種睡眠模式: 空閑模式、ADC 噪聲抑制模式、省電模式、掉電模式、Standby 模式以及擴(kuò)展的Standby 模式7) I/O 和封裝 32 個(gè)可編程的I/O 口 40引腳PDIP 封裝, 44 引腳TQFP 封裝, 與44 引腳MLF 封裝8) 工作電壓: ATmega16L:2.7 - 5.5V ATmega16:4.5 - 5.5V9) 速度等級(jí) 0 - 8 MHz ATmega16L 0 - 16 MHz ATmega1610) ATmega16L 在1 MHz, 3V, 25°C 時(shí)的功耗 正常模式: 1.1 mA 空閑模式: 0.35 mA 掉電模式: &l
10、t; 1 µAAtmega16引腳配置 圖二Atmega16引腳配置2.2.2 數(shù)碼管顯示電路采用4位共陽(yáng)LED數(shù)碼管。 2.2.3溫度傳感器 圖三 18B20引腳圖 圖四 應(yīng)用電路DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下:獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;無(wú)須外部器件;可通過(guò)數(shù)據(jù)線供電,電壓范圍為3.05.5;零待機(jī)功耗;溫度以或位
11、數(shù)字;用戶可定義報(bào)警設(shè)置;報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件; 表一DS18B20的測(cè)溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器的脈沖輸入。器件中還有一個(gè)計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開(kāi)時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將55所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器、溫度寄存器中,計(jì)數(shù)器和溫度寄存器被預(yù)置在55所對(duì)應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器對(duì)低溫度系數(shù)
12、晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器的預(yù)置值減到時(shí),溫度寄存器的值將加,減法計(jì)數(shù)器的預(yù)置將重新被裝入,減法計(jì)數(shù)器重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器計(jì)數(shù)到時(shí),停止溫度寄存器的累表2一部分溫度對(duì)應(yīng)值表溫度/二進(jìn)制表示十六進(jìn)制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 1000
13、0000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H2.3 各個(gè)電路模塊電路圖 2.3.1 DS18B20與單片機(jī)的接口電路圖五 DS18B20與單片機(jī)的接口電路(注:DQ接口是單片機(jī)的PA0)DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時(shí)DS18B20的1腳接地,2腳作為信號(hào)線,3腳接電源。另一種是寄生電源供電方式,如圖4 所示單片機(jī)端口接單線總線,為保證在有效的DS18B20時(shí)鐘周
14、期內(nèi)提供足夠的電流,可用一個(gè)MOSFET管來(lái)完成對(duì)總線的上拉。當(dāng)DS18B20處于寫存儲(chǔ)器操作和溫度A/D轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開(kāi)啟時(shí)間最大為10us。采用寄生電源供電方式時(shí)VDD端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。2.3.2 聲光報(bào)警電路 圖六 蜂鳴器驅(qū)動(dòng)電路 圖七 發(fā)光二極管驅(qū)動(dòng)電路 蜂鳴器是由三極管驅(qū)動(dòng)的,由于單片機(jī)的驅(qū)動(dòng)負(fù)載能力比較差,R9是限流電阻,蜂鳴器和單片機(jī)的PC6連接,4個(gè)發(fā)光二極管分別接單片機(jī)的PA1PA5 D1是設(shè)置上限值時(shí)指示燈,D2是每按一次按鍵的加0.1,D3加1,D4加10,D5是設(shè)置下限值時(shí)指示燈。當(dāng)超出設(shè)定值D1和D2會(huì)同時(shí)
15、報(bào)警。2.3.3 LED顯示電路 圖八 數(shù)碼管顯示電路 此數(shù)碼管驅(qū)動(dòng)是由8550PNP三極管來(lái)驅(qū)動(dòng)的,用到四路共陽(yáng)數(shù)碼管,其位選端分別接PC4PC7段選端分別接單片機(jī)的PB0PB7,數(shù)碼管顯示是由單片機(jī)不停的對(duì)其動(dòng)態(tài)掃描來(lái)實(shí)現(xiàn)的,注意數(shù)碼管的電流不要過(guò)大。2.3.4 單片機(jī)系統(tǒng)電源設(shè)計(jì) 圖九 電源電路根據(jù)單片機(jī)ATmega16 及其接口電路電源的要求,需要5V的穩(wěn)定電源。P1腳只要接大于6V的直流電壓就可以,再用三端穩(wěn)壓器、7805穩(wěn)壓并用小容量電容慮除高頻紋波后得到系統(tǒng)所需電源。2.3.5 按鍵電路設(shè)計(jì) 圖十 按鍵電路此鍵盤電路一端與地相連,另一端和單片機(jī)相連,單片機(jī)不停的檢測(cè)各個(gè)鍵盤是否被
16、拉低即被按下。S1S4接單片機(jī)的PD4PD7.最好在每個(gè)按鍵和單片機(jī)連接的端口加上拉電阻,增強(qiáng)穩(wěn)定性。2.3.6單片機(jī)ATmega16最小系統(tǒng)電路 圖十一 單片機(jī)ATmega16最小系統(tǒng)電路單片機(jī)是用到Atmega16,晶振是8MHZ 電源5V,有按鍵復(fù)位2.4 系統(tǒng)整體硬件電路2.4.1 主板電路系統(tǒng)整體硬件電路包括,傳感器數(shù)據(jù)采集電路,溫度顯示電路,上下限報(bào)警調(diào)整電路,單片機(jī)主板電路等,如圖1 所示。圖十二中有4個(gè)獨(dú)立式按鍵可以分別調(diào)整溫度計(jì)的上下限報(bào)警設(shè)置,發(fā)出聲光報(bào)警,同時(shí)LED數(shù)碼管將沒(méi)有被測(cè)溫度值顯示,這時(shí)可以調(diào)整報(bào)警上下限,從而測(cè)出被測(cè)的溫度值。圖十二 中的按健復(fù)位電路是上電復(fù)位
17、加手動(dòng)復(fù)位,使用比較方便,在程序跑飛時(shí),可以手動(dòng)復(fù)位,這樣就不用在重起單片機(jī)電源,就可以實(shí)現(xiàn)復(fù)位。 表三 元件清單(Alitium Designer Summer 8.0直接生成) 圖十二 系統(tǒng)整體原理圖2.5 數(shù)字溫度計(jì)簡(jiǎn)要使用說(shuō)明 首先接通電源,就會(huì)看到數(shù)碼管顯示此時(shí)的溫度,若要設(shè)定上限下限值,按S1鍵進(jìn)行設(shè)置,每按一次S2鍵數(shù)值就會(huì)增加,增加的幅度要看D2 D3 D4發(fā)光管哪一個(gè)亮 D2代表0.1;D3代表1;D4代表10;幅度切換鍵是S4,同理S3是減少鍵。設(shè)置完成后 按S1鍵就可以運(yùn)行了。3系統(tǒng)軟件算法分析系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯
18、示數(shù)據(jù)刷新子程序等。3.1主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見(jiàn)圖十四所示Y發(fā)DS18B20復(fù)位命令發(fā)跳過(guò)ROM命令發(fā)讀取溫度命令讀取操作,CRC校驗(yàn)9字節(jié)完?CRC校驗(yàn)正?確?移入溫度暫存器結(jié)束NNY初始化調(diào)用顯示子程序1S到?初次上電讀出溫度值溫度計(jì)算處理顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開(kāi)始命令NYNY圖十四 主程序流程圖 圖8讀溫度流程圖 4總結(jié)與體會(huì) 通過(guò)這次課程設(shè)計(jì),我更加深入的了解了單片機(jī)。雖然自己設(shè)計(jì)的電路是正確的但做出來(lái)的板子就不一定很順利,本來(lái)我用單片機(jī)的PA6口來(lái)
19、控制蜂鳴器的,當(dāng)給低電平時(shí)三極管就會(huì)飽和導(dǎo)通進(jìn)而驅(qū)動(dòng)蜂鳴器,但是當(dāng)我把它拉高是時(shí)還是會(huì)有輕微的聲音,我仔細(xì)查了芯片手冊(cè)才知道PA口的驅(qū)動(dòng)能力差 于是我換了就好了,呵呵真的在實(shí)踐中能學(xué)到好多東西的。經(jīng)過(guò)這兩周的課程設(shè)計(jì)明白不能眼高手低。5附錄1程序代碼2/* 主控芯片:ATmega16*晶振 8MHZ*DS18B20數(shù)據(jù)端口 DQ 接 單片機(jī)PC6*數(shù)碼管的位接單片機(jī)PC47*數(shù)碼管的段接單片機(jī)PB07;*蜂鳴器 接單片機(jī)的PC3;*按鍵S1S4 接單片機(jī)PD47;*s1 上限 下限設(shè)置*S2 數(shù)值遞減*S3 數(shù)值遞增*S4 數(shù)值切換編寫人:張慶鋼時(shí)間 :2008 12.30*/#include
20、 <iom16v.h>#include <macros.h>#define uchar unsigned char#define uint unsigned int#define DS18b20POR PORTA#define DS18b20PIN PINA#define DS18b20DDR DDRA#define DQ 0uchar shu10=0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/09 double temp, T_min=0,q=0,T_max=200,num=25,xiao=0,m=0; ucha
21、r flag=0, i,l=0,n=0; /顯示延時(shí)/ void dalay(uchar k)/延時(shí) uchar i,j; for(i=0;i<k;i+) for(j=100;j>0;j-);/端口出示化/void port_init(void)/初始化 DDRA=0xff;PORTA=0xff; DDRB=0xff; PORTB=0xff; DDRC=0xff; PORTC=0xff;/顯示函數(shù)/ void display(double tem)/顯示函數(shù) uint data_int ; double data_put,data_get; uchar i_data,j_data,
22、k_data,l_data; data_get=tem; data_put=data_get; if(data_put<1000) data_put*=10; if(data_put<1000) data_put*=10; if(data_put<1000) data_put*=10; else data_put=data_get; data_int=data_put; PORTC|=BIT(7); i_data=data_int/1000;/千位及小數(shù)點(diǎn) PORTC&=BIT(4); PORTB=shui_data; if(data_get<10) PORTB
23、&=BIT(7); else PORTB|=BIT(7); dalay(20); PORTC|=BIT(4); j_data=data_int%1000/100; PORTC&=BIT(5); PORTB=shuj_data;/百位及小數(shù)點(diǎn) if(10<=data_get&&data_get<100) PORTB&=BIT(7); else PORTB|=BIT(7); dalay(20); PORTC|=BIT(5); k_data=data_int%1000%100/10; PORTC&=BIT(6); PORTB=shuk_da
24、ta;/十位及小數(shù)點(diǎn) if(100<=data_get&&data_get<1000) PORTB&=BIT(7); else PORTB|=BIT(7); dalay(20); PORTC|=BIT(6); l_data=data_int%10; PORTC&=BIT(7); PORTB=shul_data;/個(gè)位及小數(shù)點(diǎn) if(1000<=data_get&&data_get<10000) PORTB&=BIT(7); else PORTB|=BIT(7); dalay(20);if(data_get>9
25、999) data_get=0; /void delay1(uint ms)/精確延時(shí)1ms uint i,j;for(i=0;i<ms;i+) for(j=0;j<1141;j+); /判斷是否有鍵按下/uchar key_press()/判斷是否有鍵按下 uchar j; DDRD|=0XF0;PORTD|=0XF0;DDRD&=0XF0;j=PIND;j=j&0XF0;/11110000if(j=0XF0) return 0;else return 1;/判斷哪個(gè)鍵被按下的函數(shù)/uchar key_scan()/判斷哪個(gè)鍵被按下的函數(shù) uchar key; d
26、elay1(1);/消抖if(key_press()key=PIND;key&=0XF0;switch(key) case 0XE0: key=1; break; case 0XD0: key=2; break; case 0XB0: key=3; break; case 0X70: key=4; break; default: DDRB=0xff; while(key_press();/等待按鍵松開(kāi)else DDRB=0xff;return key;/DS18B201us延時(shí)函數(shù)void delay_(uint ms) uint i,j;for(i=0;i<ms;i+) for
27、(j=0;j<7;j+); /DS18B20初始化函數(shù)/ void Init_DS18B20(void)unsigned char x=0;DS18b20DDR|=BIT(DQ); /設(shè)置為輸出 DS18b20POR|=BIT(DQ); /置高 復(fù)位delay_(8); /稍做延時(shí)DS18b20POR&=BIT(DQ); /單片機(jī)將DQ拉低delay_(80); /精確延時(shí) 大于 480usDS18b20POR|=BIT(DQ); /拉高總線delay_(14); DS18b20DDR&=BIT(DQ); /設(shè)置為輸入x=DS18b20PIN&(BIT(DQ) ;
28、 /稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗delay_(20); /DS18B20讀一個(gè)字節(jié)/ReadOneChar(void)unsigned char i=0;unsigned char dat = 0,temp;for (i=8;i>0;i-)DS18b20DDR|=BIT(DQ); /設(shè)置為輸出 DS18b20POR&=BIT(DQ); / 給脈沖信號(hào) dat>>=1; DS18b20DDR|=BIT(DQ); /設(shè)置為輸出 DS18b20POR|=BIT(DQ); /置高給脈沖信號(hào) DS18b20DDR&=BIT(DQ); /設(shè)置為輸
29、入 temp=DS18b20PIN&(BIT(DQ) ; if(temp) dat|=0x80; delay_(4);return(dat);/DS18B20寫一個(gè)字節(jié)/ void WriteOneChar(unsigned char dat)unsigned char i=0,j;for (i=8; i>0; i-)DS18b20DDR|=BIT(DQ); /設(shè)置為輸出 DS18b20POR&=BIT(DQ); /置低 j = dat&0x01; if(j=1) DS18b20DDR|=BIT(DQ); /設(shè)置為輸出 DS18b20POR|=BIT(DQ); /
30、置高 else if(j=0) DS18b20DDR|=BIT(DQ); /設(shè)置為輸出 DS18b20POR&=BIT(DQ); /置低 delay_(5); DS18b20DDR|=BIT(DQ); /設(shè)置為輸出 DS18b20POR|=BIT(DQ); /置高 dat>>=1; /AVR 單片機(jī)讀取溫度void ReadTemperature(void)unsigned char a=0;unsigned char b=0;unsigned int t=0;float t1=0;Init_DS18B20();WriteOneChar(0xCC); / 跳過(guò)讀序號(hào)列號(hào)的操
31、作WriteOneChar(0x44); / 啟動(dòng)溫度轉(zhuǎn)換Init_DS18B20();WriteOneChar(0xCC); /跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度a=ReadOneChar();b=ReadOneChar();t=b;t<<=8;t=t|a;t1=t&0x0f;m=t*0.0625;/鍵盤控制函數(shù)/ void kong_zhi(void) i=key_press();/判斷是否有鍵按下 if(i) l=key_scan(); switch(l) case 4:n+;break;
32、 case 3:num+=xiao;break; case 2:num-=xiao;break; case 1:flag+;break; /default:num=40; l=0; /* switch(n) /選擇按鍵數(shù)值 case 1:xiao=0.1;break; case 2:xiao=1;break; case 3:xiao=10;break; /case 4:xiao=10;break; default:xiao=0; */ if (flag=1) /溫度下限設(shè)置 PORTA&=BIT(1); if(n=1) xiao=0.1; PORTA&=BIT(4); PORTA|=BIT(2); PORTA|=BIT(3); else if(n=2) xiao=1; PORTA&=BIT(3); PORTA|=BIT(2); PORTA|=BIT(4); else if(n=3) xiao=10; PORTA&=BIT(2); PORTA|=BIT(3); PORTA
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年新定遠(yuǎn)期股權(quán)權(quán)益轉(zhuǎn)讓
- 2024年技術(shù)服務(wù)協(xié)議變更書
- DB4106T 110-2023 畜禽糞便有機(jī)肥料生產(chǎn)技術(shù)規(guī)范
- 黃金卷01(浙江1月考)-2023年高考地理模擬卷
- DB4105T 214-2023 夏玉米種肥異位精準(zhǔn)同播生產(chǎn)技術(shù)規(guī)程
- 2024年廉潔工程合作框架協(xié)議
- 出納三年工作總結(jié)范文(3篇)
- 2024年摩托車交易確認(rèn)書
- 2024年房產(chǎn)抵債雙方權(quán)利義務(wù)詳細(xì)規(guī)定
- 2024年技術(shù)開(kāi)發(fā)與服務(wù)合同
- 小學(xué)綜合實(shí)踐活動(dòng)-筆記自然教學(xué)課件設(shè)計(jì)
- Unit 6 Understanding ideas Hot!Hot!Hot!課件高中英語(yǔ)外研版(2019)必修第三冊(cè)
- 加油站加油機(jī)設(shè)備安全管理制度
- 醫(yī)學(xué)影像技術(shù)專業(yè)(群)建設(shè)方案
- 【招標(biāo)控制價(jià)編制研究文獻(xiàn)綜述(論文)4800字】
- 鐘表經(jīng)典款式勞力士黑鬼
- 學(xué)校崗位廉政風(fēng)險(xiǎn)排查登記表
- 肝癌原發(fā)性肝癌的綜合治療
- 放化療相關(guān)口腔黏膜炎預(yù)防及處理
- 公司電梯安全總監(jiān)、電梯安全員崗位職責(zé)
- 02J331地溝及蓋板圖集
評(píng)論
0/150
提交評(píng)論