51單片機lcd1602顯示溫度源程序18b20測溫_第1頁
51單片機lcd1602顯示溫度源程序18b20測溫_第2頁
51單片機lcd1602顯示溫度源程序18b20測溫_第3頁
免費預覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、/III/ = /=作者:Ni 的年少 WAo 輕狂=/=創(chuàng)建時間:2008.07.03 =/ = / / DS18b20 溫度傳感器/*注:1、當用到循環(huán)左移或右移時<>> 或 <<),不能超出變的范圍例如:un sig ned char i,j。j=(i<<8>>>4得到的結(jié)果出錯。un sig ned char j。unsignedint i。j=(i<<8>>>4。得到的結(jié)果正確2、LCD的清屏時間-1.64ms。*/ #include<reg51.h> #include"L

2、CD1602.h" #include <intrins.h> #define uchar unsigned char #define uint unsigned int uchartmp4=0,0,0,0 。 #include"DS18B20.h" / / 主程序 / void main(void> uchar temp 。 LCD_init(>。LCD_write_command(0x01> 。 / 清屏顯示 Delay_50Us(50>。gotoxy(2,1> 。 LCD_display("NOW TEMP:

3、">。gotoxy(2,2>。 LCD_display("163qishentong"> 。Delay_2Us(200>。 temp=Ds18b20_Read_Temperature(> 。85Delay_50Us(1000>。/ 空讀一次,讀出默認的while(1> gotoxy(12,1> 。 change(>。/Delay_2Us(200> 。 LCD_display(tmp>。Delay_50Us(100>。 /*= = 作者:Ni的年少 WAo瘋狂= 創(chuàng)建時間: 2008.06.20

4、 = =*/ #define LCD_DB P0定義 LCD 的數(shù)據(jù)端口 sbit LCD_RS=P2A0。sbit LCD_RW=P2A1。 sbit LCD_E=P2A2。#define uchar unsigned char #define uint unsigned int/=延時子函數(shù) = void delay(uint x>uinti,j 。for(i=x 。 i>0。 i-> for(j=0 。 j<2。 j+>。/=寫指令函數(shù) = voidLCD_write_command(uchar command> LCD_DB=command。LCD_

5、RS=0。 / 指令 LCD_RW=0。 / 寫入LCD_E=1。LCD_E=0。delay(1> 。 / 等待執(zhí)行完畢。/=寫數(shù)據(jù)函數(shù) = voidLCD_write_data(uchardat>LCD_DB=dat。LCD_RS=1。 / 數(shù)據(jù)寄存器 LCD_RW=0。 / 寫入數(shù)據(jù)LCD_E=1。LCD_E=0。 delay(1>。/ 等待程序執(zhí)行完畢。/*=顯示一個字符子函數(shù) = voidLCD_disp_char(ucharx,uchar y, uchardat> uchar address 。 if(y=1> address=0x80+x。 else

6、address=0xc0+x。LCD_write_command(address> 。 LCD_write_data(dat> 。 =*/ /=延時 1= void delay1(uint x>uinti,j 。 for(j=0 。 j<x。 j+> for(i=0 。 i<100。 i+>。 /=初始化函數(shù) = voidLCD_init(void>LCD_write_command(0x38> 。/ 設(shè)置 8 位格式, 2 行, 5*7 LCD_write_command(0x0c> 。 / 整體顯示,關(guān)光標,不閃爍 LCD_wri

7、te_command(0x06> 。 / 設(shè)定輸入方式,增量不移位 LCD_write_command(0x01> 。 / 清屏顯示 delay(200>。/= 光標定位 = void gotoxy(ucharx,uchar y> / x 表示列, y 表示行 uchar address 。if(y=1>address=0x80+x。elseaddress=0xc0+x。LCD_write_command(address> 。/=顯示一個字符串 = voidLCD_display(uchar *dat> while(*dat!='0'&

8、gt;LCD_write_data(*dat> 。dat+。/ / / = /Illi =作者:Ni 的年少 WAo 輕狂= Illi / = 創(chuàng)建時間: 2008.07.03 = / lll = lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll Ds18b20 引腳分配 llllllllllllllllllllllllllllllllllllllllllllllllllllllll

9、llllllllsbit DQ=P3A1。lllllllllllllllllllllllllllllllllllllllllllllllllllllllllll llllll 延時子程序 llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllvoid Delay_2Us(uint us> ll 微妙延時 while(-us>。void Delay_50Us(uint t> ll 毫秒延時uchar j 。for( 。 t>0 。 t->for(j=19。j>0。j->。/ /

10、DS18b20 初始化 / void Ds18b20_Initial(void>DQ_nop_(>。DQ = 0。Delay_50Us(12>。DQ = 1。Delay_2Us(5>。/ DQT位/精確延時,大于 480us /拉/ 高總線/稍做延時后while(DQ。/若x=0則初始化成功,若 x=1則初始化失敗Delay_2Us(20。 / 寫一個字節(jié)的數(shù)據(jù) / void Ds18b20_Write(uchardat>uchar i。for(i=0。 i<8。 i+>DQ = 0。_nop_(>。DQ=dat&0x01 。Delay_

11、2Us(20>。DQ = 1。dat>>=1 。/ 讀一個字節(jié)的數(shù)據(jù) /uchar Ds18b20_Read(void>uchari,dat 。dat=0 。for(i=8 。 i>0。 i->DQ = 0。dat>>=1 。DQ = 1。_nop_(> 。 if(DQ> dat=dat|0x80 。Delay_2Us(20>。 return(dat> 。 / 讀兩個字節(jié)的溫度值 / / uchar Ds18b20_Read_Temperature(void> uchar temp1,temp 。 int temp2

12、 。Ds18b20_Initial(> 。 Ds18b20_Write(0xcc> 。Ds18b20_Write(0x44> 。 Delay_2Us(200>。Ds18b20_Initial(> 。 Ds18b20_Write(0xcc> 。Ds18b20_Write(0xbe> 。 Delay_2Us(200>。temp1=Ds18b20_Read(> 。 temp2=Ds18b20_Read(> 。temp=(temp1|(temp2<<8>>>>4 。 return temp 。 void c

13、hange(void> uchartp4,temp 。 temp=Ds18b20_Read_Temperature(> 。 Delay_2Us(250>。if(temp&0xc0>=0xc0> temp=temp+1 。 tp1=(temp/10>%10+'0' 。 tp2=temp%10+'0' 。tp3='0' 。 if(tp1='0'> tmp0=' ' 。 tmp1='-' 。 tmp2=tp2 。 tmp3='0' 。elsetmp0='-' 。 tmp1=tp1 。 tmp2=tp2 。tmp3='0' 。else tp0=(temp/100>%10+'0' 。 tp1=(temp/10>%10+'0' 。 tp2=temp%10+'0' 。 if(tp0='0'>&&(tp1='0'>>tmp0=' ' 。tmp1=' ' 。 tmp2=tp2 。tmp3='0' 。 if(tp0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論