基于PIC16F877單片機(jī)與DS18B20的溫度采集與顯示_第1頁
基于PIC16F877單片機(jī)與DS18B20的溫度采集與顯示_第2頁
基于PIC16F877單片機(jī)與DS18B20的溫度采集與顯示_第3頁
基于PIC16F877單片機(jī)與DS18B20的溫度采集與顯示_第4頁
基于PIC16F877單片機(jī)與DS18B20的溫度采集與顯示_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)課程設(shè)計(jì)報(bào)告河北聯(lián)合大學(xué)輕工學(xué)院QINGGONG COLLEGE, HEBEI UNITED UNIVERSITYPIC單片機(jī)課程設(shè)計(jì)學(xué)生姓名: 肖曉峰 學(xué) 號: 201124520121 學(xué) 部:信息科學(xué)技術(shù)部專業(yè)班級: 電信1 指導(dǎo)教師: 曹義 2014年7月4日一、課程設(shè)計(jì)目的本課程設(shè)計(jì)是在PIC單片機(jī)原理及應(yīng)用及單片機(jī)C語言編程課程的基礎(chǔ)上,通過硬件設(shè)計(jì)、軟件編程及仿真調(diào)試的實(shí)踐,進(jìn)一步掌握PIC單片機(jī)的應(yīng)用方法,熟練掌握PICC C語言程序的編寫與調(diào)試,是畢業(yè)設(shè)計(jì)前的一次重要實(shí)踐,為今后走上工作崗位打下堅(jiān)實(shí)的單片機(jī)應(yīng)用基礎(chǔ)。二、設(shè)計(jì)題目及要求2.1 設(shè)計(jì)題目:基于PIC16F8

2、77單片機(jī)與DS18B20的溫度采集與顯示2.2 功能實(shí)現(xiàn):實(shí)時(shí)溫度顯示,并具有超限報(bào)警功能。輸出顯示采用LCD1602。2.3 設(shè)計(jì)要求:自己設(shè)計(jì)硬件和程序編程,畫出完整的電路原理圖,用Multisim或Proteus仿真,最終可實(shí)現(xiàn)脫機(jī)運(yùn)行。三、設(shè)計(jì)原理說明3.2 顯示模塊如用LCD1602作為顯示設(shè)備,要求顯示屏分兩行顯示,第一行顯示日期(年-月-日)和星期,第二行顯示時(shí)間(時(shí):分:秒)和溫度。顯示秒由00一直加到59,分鐘數(shù)也由00加到59,小時(shí)采用24小時(shí)制,由00加到23,如此循環(huán)顯示。3.3 按鍵模塊按鍵用來作為時(shí)間調(diào)整。要求至少設(shè)計(jì)4個(gè)按鍵,按鍵1作為設(shè)置鍵;按鍵2、按鍵3分別

3、為增加、減少鍵,在設(shè)置鍵按下時(shí),此兩個(gè)按鍵方有效;按鍵4是確定鍵,在設(shè)置鍵按下時(shí)方才有效。3.4 溫度采集模塊DS18B20是美國DALLAS公司推出的單總線數(shù)字溫度傳感器。DS18B20內(nèi)部集成了溫敏元件、數(shù)據(jù)轉(zhuǎn)換芯片、存儲器芯片和計(jì)算機(jī)接口芯片等多功能模塊。其主要技術(shù)特點(diǎn)有:具有獨(dú)特的單線接口方式;可以通過數(shù)據(jù)線供電,具有超低功耗工作方式;測溫范圍為-55125,測溫精度為0.5;溫度轉(zhuǎn)換精度912位可編程,直接將溫度轉(zhuǎn)換值以二進(jìn)制數(shù)碼的方式串行輸出。四、硬件原理圖(含原理圖、電路仿真圖)圖2電路仿真圖 五、軟件設(shè)計(jì)(含流程圖、帶注釋的程序清單)程序設(shè)計(jì)流程圖初始化picLcd,ds18b

4、20否是否為正數(shù)Ds18b20復(fù)位,是否應(yīng)答驗(yàn)證,開始溫度轉(zhuǎn)換并讀取顯示取補(bǔ)碼,加1否是是 主文件 he/*/#include<pic.h>_CONFIG(0x3B31);/芯片配置字,看門狗關(guān),上電延時(shí)開,掉電檢測關(guān),低壓編程關(guān),加密,4M晶體HS振蕩/宏定義#define DQ RC1 /溫度數(shù)據(jù)口#define DQ_HIGH() TRISC1=1#define DQ_LOW() TRISC1=0;DQ=0#define uchar unsigned char#define uint unsigned int#define RS RA0 /LCD功能選擇位#define RW

5、 RA1 /讀寫選擇#define EN RA2 /使能/變量定義int temper;char f = 0 ;uchar a1,a2,a3,a4;uchar Prompt="P1ress K1 - K3 To Start Demo Prog"/各種申明void init();void DelayMS(uint ms);uchar Busy_Check();void Write_LCD_Command(uchar cmd);void Write_LCD_Data(uchar dat);void Initialize_LCD();void ShowString(uchar x

6、,uchar y,uchar *str);void Showword0(uchar x,uchar y,char word );void Showword1(char word );void write_shuzi(uchar num1,uchar num2,uchar num3,uchar num4);/18b20void delay(uint x);void delayus(uint,uchar);void init();void write_byte(uchar date);uchar read_byte();void get_tem();/*子函數(shù)*/ /系統(tǒng)初始化函數(shù)void ini

7、t() ADCON1=0X07; /設(shè)置A口為普通數(shù)字口 TRISA =0X00; /設(shè)置A口方向?yàn)檩敵鯰RISB =0x00; OPTION=0x00; /B口電阻上拉TRISC = 1; PORTC = 0x20; TRISD =0X00; TRISD =0x00; /延時(shí)函數(shù)void delayus(uint x,uchar y)uint i;uchar j;for(i=x;i>0;i-);for(j=y;j>0;j-);void delay(uint x)uint a,b;for(a=x;a>0;a-)for(b=110;b>0;b-);/ds18b20復(fù)位函數(shù)

8、void reset()uchar st=1;DQ_HIGH(); /開始于高電平NOP();NOP(); /延時(shí)2uswhile(st) DQ_LOW();delayus(70,30); /750DQ_HIGH(); /釋放總線delayus(4,4); /等70if(DQ=1) /應(yīng)答判斷st=1; elsest=0; delayus(50,10); /延時(shí)450/ds18b20寫函數(shù)void write_byte(uchar date)uchar i,temp;DQ_HIGH(); /開始于高電平NOP();NOP();for(i=8;i>0;i-) temp=date&0

9、x01;/01010101 /分位寫入DQ_LOW();delayus(0,0); /15if(temp=1)DQ_HIGH();delayus(2,2); /45DQ_HIGH();date=date>>1;/00101010/ds18b20讀函數(shù)uchar read_byte()uchar i,date;static bit j;for(i=8;i>0;i-)date=date>>1;DQ_HIGH(); /開始于高電平NOP();NOP();DQ_LOW();NOP();NOP();NOP();NOP();NOP();NOP(); /6DQ_HIGH();N

10、OP();NOP();NOP();NOP(); /4j=DQ; /讀取總線if(j=1)date=date|0x80;/1000 0000delayus(1,1); /30return (date); /返回函數(shù)值/溫度讀取處理函數(shù)void get_tem()uchar tem1,tem2,num;float aaa;reset(); /復(fù)位write_byte(0xCC);/跳過ROMwrite_byte(0x44);/溫度轉(zhuǎn)換reset();write_byte(0xCC); /跳過ROMwrite_byte(0xBE); /溫度傳遞tem1=read_byte(); /讀取低8位tem2

11、=read_byte();/讀取高8位if(tem2>7) /符號判斷tem2=255-tem2; tem1=255-tem1; f=1; else f=0; aaa=(tem2*256+tem1)*6.25*8; /轉(zhuǎn)化為實(shí)際溫度值temper=(int)aaa; /強(qiáng)行轉(zhuǎn)化位整數(shù)a1=temper/1000; /十進(jìn)制分位a2=temper%1000/100;a3=temper%100/10;a4=temper%10; if(a1>7|a1<5) RD7=1;else RD7=0;/延時(shí)void DelayMS(uint ms) /毫秒uchar i;while(ms-)

12、 for(i=0;i<120;i+);/LCD忙檢查函數(shù)uchar Busy_Check()uchar LCD_Status;RS=0;/寄存器選擇(0指令1數(shù)據(jù))RW=1;/讀狀態(tài)寄存器EN=1;/開始讀DelayMS(1);LCD_Status=PORTB;EN=0;return LCD_Status;/寫LCD命令函數(shù)void Write_LCD_Command(uchar cmd)/while(Busy_Check()&0x80)=0x80);/忙等待RS=0;/選擇命令寄存器RW=0;/寫EN=0;PORTB=cmd;EN=1;DelayMS(1);EN=0;/LCD發(fā)

13、送數(shù)據(jù)函數(shù)void Write_LCD_Data(uchar dat)/while(Busy_Check()&0x80)=0x80);/忙等待RS=1;RW=0;EN=0;PORTB=dat;EN=1;DelayMS(1);EN=0;/LCD初始化函數(shù)void Initialize_LCD()Write_LCD_Command(0x38);DelayMS(1); /38:數(shù)據(jù)長8位,兩行顯示,字體5*7點(diǎn)陣(80)Write_LCD_Command(0x01);DelayMS(1);/清屏Write_LCD_Command(0x06);DelayMS(1);/字符進(jìn)入模式:屏幕不動,字

14、符后移Write_LCD_Command(0x0c);DelayMS(1);/顯示開,光標(biāo)關(guān);0x0e是開光標(biāo)/顯示字符函數(shù)void Showword0(uchar x,uchar y,char word ) /y:行地址,x:列地址 if(y=0) Write_LCD_Command(0x80|x);/設(shè)置顯示起始位置(x,0)第一行if(y=1) Write_LCD_Command(0xc0|x); / (x,1)第二行 Write_LCD_Data(word+0x30); /stri等價(jià)于*(str+i)/顯示溫度函數(shù)void write_shuzi(uchar num1,uchar num2,uchar num3,uchar num4) if(f)Showword0(0,0,-3 ); /負(fù)號Showword0(1,0,num1 ); /十位Showword0(2,0,num2 );Showword0(3,0,-2 ); /小數(shù)點(diǎn)Showword0(4,0,num3 );Showword0(5,0,num4 );DelayMS(5);/主函數(shù)void main() init(); /調(diào)用系統(tǒng)初始化函數(shù) Initialize_LCD(); /LCD初始化

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論