




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、梧州學(xué)院(xuyun)單片機(jī)課程設(shè)計(jì)報(bào)告(bogo)題 目:溫度傳感器 院 (系):信息(xnx)與電子信息工程 專(zhuān)業(yè)班級(jí):12物聯(lián)網(wǎng)工程班 學(xué)生姓名:謝晉峰 學(xué) 號(hào):201200210026 DS18B20溫度傳感器目的(md)通過(guò)DS18B20溫度傳感器及時(shí)采集(cij)當(dāng)前周邊環(huán)境的溫度值,并在數(shù)碼管上顯示。所需器材(qci)一個(gè)單片機(jī),一個(gè)三八譯碼器和6個(gè)8位數(shù)碼管,一個(gè)Ds18b20溫度傳感器。內(nèi)容與步驟開(kāi)始主函數(shù)18B20采集溫度溫度數(shù)值轉(zhuǎn)換數(shù)碼管顯示系統(tǒng)原理框架圖入口 Main()1TLcdDisplay() 主函數(shù)(hnsh)流程圖開(kāi)始Ds18b20ReadTemp()Temp
2、0FTDisplayData0=0 x40DisplayData0=0 x00Tp=temTem=(temp-1)Tp=tempTemp=tp*0.0625*100+0.5Tmp=tp*0.625*100+0.5X:DisplayData1 = DIG_CODEtemp / 10000;DisplayData2 = DIG_CODEtemp % 10000 / 1000;DisplayData3 = DIG_CODEtemp % 1000 / 100 | 0 x80;DisplayData4 = DIG_CODEtemp % 100 / 10;DisplayData5 = DIG_CODEte
3、mp % 10; DigDisplay();XDigDisplay()結(jié)束 LcdDisplay() 函數(shù)(hnsh)流程圖 Ds18b20ReadTemp()函數(shù)(hnsh)流程圖(一)本設(shè)計(jì)(shj)內(nèi)容(nirng)分為(fn wi)兩大部分:1. DS18B20模塊。DS18B20感受到當(dāng)前的溫度值并將其轉(zhuǎn)化為數(shù)字信號(hào)存儲(chǔ)在ROM中,然后單片機(jī)讀取18B20中的溫度信號(hào)。2. 數(shù)碼管顯示模塊。單片機(jī)將獲取的溫度信息按符號(hào)為、百位、十位、個(gè)位、十分位、百分位,分割,并保存在六個(gè)不同的變量中,然后讓DS138譯碼器逐位控制數(shù)碼管顯示對(duì)應(yīng)的數(shù)值。 (二)步驟如下:初始化DS18B20單片機(jī)向
4、DS18B20寫(xiě)入跳過(guò)ROM命令,溫度轉(zhuǎn)化命令,溫度寄存器命令 單片機(jī)讀取18B20兩個(gè)溫度寄存器中的溫度值單片機(jī)將獲取的溫度值的符號(hào)、百位、十位、個(gè)位、十分位、百分位分別存在數(shù)組的對(duì)應(yīng)元素中通過(guò)38譯碼器動(dòng)態(tài)掃描選定6個(gè)數(shù)碼管,對(duì)應(yīng)顯示溫度符號(hào)、百位、十位、個(gè)位、十分位、百分位的數(shù)值(三) 本設(shè)計(jì)中18B20溫度傳感器的時(shí)序圖如下:代碼(di m)#include#define uchar unsigned char#define uint unsigned int/*在開(kāi)頭聲明全局(qunj)函數(shù),待會(huì)就可以直接調(diào)用*/void Delay1ms(uint ); uchar Ds18b20
5、Init();void Ds18b20WriteByte(uchar com);uchar Ds18b20ReadByte();void Ds18b20ChangTemp();void Ds18b20ReadTempCom();int Ds18b20ReadTemp();sbit DSPORT=P37; /聲明(shngmng)18B20使用的引腳void Delay1ms(uint y) /延時(shí)函數(shù)uint x;for( ; y0; y-)for(x=110; x0; x-);uchar Ds18b20Init()/18B20的初始化uchar i;DSPORT = 0;/拉低總線(zn x
6、in)i = 70;while(i-); /延時(shí)680微秒以上(yshng)DSPORT = 1;/釋放(shfng)總線i = 0;while(DSPORT); /一直等待18B20響應(yīng) void Ds18b20WriteByte(uchar dat) /*向18B20中寫(xiě)一個(gè)字節(jié)的數(shù),從低位開(kāi)始*/uchar i, j;for(j=0; j= 1;/從18B20中讀取一個(gè)(y )字節(jié)的數(shù)uchar Ds18b20ReadByte()uchar byte, bi;uchar i, j;for(j=8; j0; j-)DSPORT = 0; /將總線(zn xin)拉低1微秒以上i+;DSPO
7、RT = 1; /又把其拉高,開(kāi)啟(kiq)讀模式i+; /延時(shí),等待(dngdi)穩(wěn)定i+;bi = DSPORT; /讀取總線上的數(shù)據(jù)byte = (byte 1) | (bi 7);/從低位開(kāi)始讀i = 4;while(i-); /延時(shí),起讀取下個(gè)數(shù)據(jù)前穩(wěn)定return byte;/*調(diào)用前面的寫(xiě)函數(shù),向中寫(xiě)入各種命令,以使其獲得當(dāng)前溫度值*/void Ds18b20ChangTemp()Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0 xcc);/跳過(guò)ROM操作命令 Ds18b20WriteByte(0 x44); /溫度(wnd)轉(zhuǎn)換命令Del
8、ay1ms(100);/*等待(dngdi)轉(zhuǎn)換成功,而如果你是一直刷著的話,就不用這個(gè)延時(shí)了*/ /*向?qū)懭朊?,告訴(o s)它需要讀取它中兩個(gè)寄存器存儲(chǔ)的溫度信息*/void Ds18b20ReadTempCom()Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0 xcc); /跳過(guò)ROM操作命令Ds18b20WriteByte(0 xbe); /發(fā)送讀取溫度命令/綜合(zngh)調(diào)用前面的那些初始化、寫(xiě)命令、讀命令函數(shù),最終單片機(jī)讀取到18B20中的溫度信息int Ds18b20ReadTemp()int temp = 0;uchar tmh,
9、tml;Ds18b20ChangTemp(); /先寫(xiě)入轉(zhuǎn)換(zhunhun)命令Ds18b20ReadTempCom();/然后(rnhu)等待轉(zhuǎn)換完后發(fā)送讀取溫度命令tml = Ds18b20ReadByte(); /讀取溫度值共16位,先讀低字節(jié)tmh = Ds18b20ReadByte();/再讀高字節(jié)temp = tmh; /高低位的數(shù)值合并在一起temp = 8;temp |= tml;return temp;/*/#include#define uchar unsigned char#define uint unsigned int#define GPIO_DIG P0 /定義控
10、制(kngzh)數(shù)碼管顯示的引腳sbit LSA=P22; /定義三八(sn b)譯碼器對(duì)應(yīng)的單片機(jī)三個(gè)引腳sbit LSB=P23;sbit LSC=P24;/定義全局(qunj)函數(shù)(數(shù)組)unsigned char DisplayData6;void LcdDisplay(int);void DigDisplay();int Ds18b20ReadTemp();/程序執(zhí)行的入口void main()while(1)/一直(yzh)顯示溫度信息LcdDisplay(Ds18b20ReadTemp();/將單片機(jī)上獲取的溫度信息(xnx)按照按符號(hào)位、百位、十位、個(gè)位、十分位、百分位進(jìn)行分割
11、,然后分別存放在對(duì)應(yīng)的6個(gè)數(shù)組元素上void LcdDisplay(int temp) float tp; /聲明浮點(diǎn)型變量,用來(lái)(yn li)待會(huì)溫度的浮點(diǎn)變量運(yùn)算uchar code DIG_CODE10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; /數(shù)碼管0-9的顯示碼 if(temp 0) DisplayData0 = 0 x40; /“-”號(hào)的顯示字節(jié)碼temp=(temp-1); /負(fù)數(shù)獲取的是其補(bǔ)碼tp=temp;temp=tp*0.0625*100+0.5;/該傳感器的分辨率是0.0625,將其值擴(kuò)大
12、100倍,并且四舍五入 else DisplayData0 = 0 x00; /正溫度(wnd)就不顯示了tp=temp;temp=tp*0.0625*100+0.5; DisplayData1 = DIG_CODEtemp / 10000;/存儲(chǔ)(cn ch)百位上的數(shù)值DisplayData2 = DIG_CODEtemp % 10000 / 1000;/存儲(chǔ)十位(sh wi)上的數(shù)值DisplayData3 = DIG_CODEtemp % 1000 / 100 | 0 x80;/存儲(chǔ)個(gè)位的數(shù)值,并且?guī)?shù)點(diǎn)DisplayData4 = DIG_CODEtemp % 100 / 10;/
13、存儲(chǔ)十分位上的數(shù)值DisplayData5 = DIG_CODEtemp % 10;/存儲(chǔ)百分位上的數(shù)值 DigDisplay();/調(diào)用數(shù)碼管動(dòng)態(tài)掃描(somio)顯示 /在數(shù)碼管上動(dòng)態(tài)掃描(somio)顯示,從第一位開(kāi)始void DigDisplay()uchar i;uchar j;for(i=0;i6;i+)switch(i) case(0):LSA=0;LSB=0;LSC=0; break;/ 第一個(gè)數(shù)碼管顯示(xinsh)case(1):LSA=1;LSB=0;LSC=0; break;/第二個(gè)case(2):LSA=0;LSB=1;LSC=0; break;/第三個(gè)case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;GPIO_DIG=DisplayDatai; /傳送數(shù)值(shz)到選定的數(shù)碼管j=50; while(j-);/決定掃描(somio)頻率課程設(shè)計(jì)實(shí)踐(shjin)總結(jié) 通過(guò)本實(shí)驗(yàn),我深刻理解了串口通信的
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合肥幼兒師范高等專(zhuān)科學(xué)?!秳?chuàng)新理論與方法》2023-2024學(xué)年第二學(xué)期期末試卷
- 新疆政法學(xué)院《新聞算法與編程》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津渤海職業(yè)技術(shù)學(xué)院《衛(wèi)星通信系統(tǒng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川國(guó)際標(biāo)榜職業(yè)學(xué)院《建筑工程造價(jià)管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 內(nèi)蒙古大學(xué)《新能源汽車(chē)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024屆河北省石家莊二中實(shí)驗(yàn)學(xué)校高三下學(xué)期仿真模擬歷史試卷
- 2024-2025學(xué)年山東省聊城市第二中學(xué)高一上學(xué)期12月月考?xì)v史試卷
- 新疆醫(yī)科大學(xué)《高層建筑智慧施工》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州科技貿(mào)易職業(yè)學(xué)院《建筑CAD》2023-2024學(xué)年第二學(xué)期期末試卷
- 嶺南師范學(xué)院《高電壓技術(shù)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- DZ∕T 0207-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 硅質(zhì)原料類(lèi)(正式版)
- 數(shù)字貿(mào)易學(xué) 課件 第1-3章 導(dǎo)論、數(shù)字貿(mào)易的產(chǎn)生與發(fā)展;消費(fèi)互聯(lián)網(wǎng)、產(chǎn)業(yè)互聯(lián)網(wǎng)與工業(yè)互聯(lián)網(wǎng)
- 《飛向太空的航程》基礎(chǔ)字詞梳理
- GB/T 144-2024原木檢驗(yàn)
- 追覓入職測(cè)評(píng)題庫(kù)
- 寧德時(shí)代入職測(cè)評(píng)試題答案
- 干粉滅火器的使用方法課件
- 2024年廣東省2024屆高三高考模擬測(cè)試(一)一模 化學(xué)試卷(含答案)
- 半導(dǎo)體行業(yè)質(zhì)量管理與質(zhì)量控制
- 2024年山東省春季高考技能考試汽車(chē)專(zhuān)業(yè)試題庫(kù)-下(判斷題匯總)
- 部編版道德與法治二年級(jí)下冊(cè)第三單元 綠色小衛(wèi)士 單元作業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論