當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]//**************************************************//實(shí)驗(yàn)?zāi)康模?/熟悉使用單片機(jī)運(yùn)用DS18B20溫度傳感器測(cè)試溫度,并用1602顯示屏顯示溫度//1、第一行顯示:Temperature//2、第二行顯示:實(shí)測(cè)溫度值//**********

//**************************************************
//實(shí)驗(yàn)?zāi)康模?br/>//熟悉使用單片機(jī)運(yùn)用DS18B20溫度傳感器測(cè)試溫度,并用1602顯示屏顯示溫度
//1、第一行顯示:Temperature
//2、第二行顯示:實(shí)測(cè)溫度值
//**************************************************

//**************************************************
//硬件設(shè)置:
//1、SW2,SW4開關(guān)全部斷開
//2、插上DS18B20溫度傳感器
//**************************************************

//**************************************************
//*****************定義頭文件**********************
//**************************************************
#include
#include"delay.h"

//**************************************************
//******************定義配置位*********************
//**************************************************
__CONFIG(0x3545);
//FLASH代碼不保護(hù),RB6和RB7為調(diào)試模式,F(xiàn)LASH不寫保護(hù),數(shù)據(jù)代碼不保護(hù)
//RB3為數(shù)字IO口,低電壓復(fù)位使能,上電延時(shí)開,看門狗開,4M晶體XT振蕩器

//**************************************************
//******************定義常量***********************
//**************************************************
#defineucharunsignedchar
#defineuintunsignedint

//**************************************************
//***************定義DS18B20引腳*******************
//**************************************************
#defineDQRE0
#defineDQ_IOTRISE0

//**************************************************
//******************定義LCD引腳*********************
//**************************************************
#defineRSRA1
#defineRWRA2
#defineERA3


//**************************************************
//******************定義變量***********************
//**************************************************
ucharlowtemp,hightemp;//低8位溫度變量,高8位溫度變量
ucharzhengshu,xiaoshu;//溫度整數(shù)變量,溫度小數(shù)變量
uinttemperature;//轉(zhuǎn)換后的溫度值BCD碼形式
uchartemp[7];//轉(zhuǎn)換后溫度存放變量

//**************************************************
//******************定義數(shù)據(jù)***********************
//**************************************************
//顯示:Temperature
//顯示:WWW.PICAVR.COM
constucharname[16]=
//{0x20,0x20,0x20,0x54,0x65,0x6d,0x70,0x65,0x72,0x61,0x74,0x75,0x72,0x65,0x20,0x20};
{0x20,0x57,0x57,0x57,0x2E,0x50,0x49,0x43,0x41,0x56,0x52,0x2E,0x43,0x4F,0x4D,0x20};


//***********************************************
//函數(shù)名:delayms(uchartime);
//入口參數(shù):time
//出口參數(shù):無
//函數(shù)作用:毫秒延時(shí)
//說明:
//***********************************************
voiddelayms(uchartime)
{
uinti;
while(time--)
{
for(i=93;i>0;i--){;}
}
}

//***********************************************
//函數(shù)名:port_init();
//入口參數(shù):無
//出口參數(shù):無
//函數(shù)作用:端口初始化
//說明:
//***********************************************
voidport_init(void)
{
ADCON1=0X07;//設(shè)置RA,RE口為數(shù)字口
TRISA=0X00;//設(shè)置RA口為輸出口
TRISD=0X00;//設(shè)置RD口為輸出口
TRISE=0X00;//設(shè)置RE口為輸出口
OPTION=0X8F;//分頻給WDT,分頻比為128
}

//***********************************************
//函數(shù)名:lcd_enable();
//入口參數(shù):無
//出口參數(shù):無
//函數(shù)作用:LCD寫使能
//說明:
//***********************************************
voidlcd_enable(void)
{
RS=0;//寫命令
RW=0;//寫操作
E=0;//低電平信號(hào)
delayms(10);//低電平信號(hào)保持
E=1;//拉高電平信號(hào)
}

//***********************************************
//函數(shù)名:lcd_writebyte(uchardata);
//入口參數(shù):data
//出口參數(shù):無
//函數(shù)作用:LCD寫一個(gè)字節(jié)數(shù)據(jù)
//說明:
//***********************************************
voidlcd_writebyte(uchardata)
{
PORTD=data;//向RD口寫數(shù)據(jù)
RS=1;//寫數(shù)據(jù)
RW=0;//寫操作
E=0;//低電平信號(hào)
delayms(10);//低電平信號(hào)保持
E=1;//拉高電平信號(hào)
}

//***********************************************
//函數(shù)名:lcd_writedata(constuchar*ptt);
//入口參數(shù):*ptt
//出口參數(shù):無
//函數(shù)作用:LCD寫數(shù)據(jù)塊函數(shù)
//說明:
//***********************************************
voidlcd_writedata(constuchar*ptt)
{
uchari;
for(i=0;i<16;i++)//寫16個(gè)字節(jié)數(shù)據(jù)
{
lcd_writebyte(ptt[i]);//查表寫數(shù)據(jù)
}
}

//***********************************************
//函數(shù)名:lcd_init();
//入口參數(shù):無
//出口參數(shù):無
//函數(shù)作用:LCD初始化
//說明:
//***********************************************
voidlcd_init(void)
{
PORTD=0X01;//清除顯示
lcd_enable();
PORTD=0X38;//8位2行5*7點(diǎn)陣
lcd_enable();
PORTD=0X0e;//顯示開,光標(biāo)開,閃爍
lcd_enable();
PORTD=0X06;//文字不動(dòng),光標(biāo)右移
lcd_enable();
}

//***********************************************
//函數(shù)名:ds18b20_reset();
//入口參數(shù):無
//出口參數(shù):無
//函數(shù)作用:DS18B20復(fù)位
//說明:
//***********************************************
voidds18b20_reset(void)
{
ucharx=1;
while(x)
{
DQ_IO=0;//設(shè)置RE0為輸出口
DQ=0;//RE0輸出低電平
DelayUs(201);//延時(shí)503us(最短480us低電平信號(hào))
DQ_IO=1;//釋放總線,進(jìn)入接收(設(shè)置RE0為輸入口)
DelayUs(29);//延時(shí)70us(18b20檢測(cè)到上升沿時(shí),等待15-60us)
if(DQ){x=1;}//有應(yīng)答信號(hào),跳出
else{x=0;}//沒有應(yīng)答信號(hào),繼續(xù)復(fù)位(低電平持續(xù)在60-240us)
DelayUs(172);//延時(shí)430us
}
}

//***********************************************
//函數(shù)名:ds18b20_writebyte(uchardata);
//入口參數(shù):data
//出口參數(shù):無
//函數(shù)作用:DS18B20寫一個(gè)字節(jié)數(shù)據(jù)
//說明:
//***********************************************
voidds18b20_writebyte(uchardata)
{
uchari,temp;
for(i=8;i>0;i--)//寫8位數(shù)據(jù)
{
temp=data&0x01;//先寫低位數(shù)據(jù)
DQ_IO=0;//設(shè)置RE0為輸出口
DQ=0;//RE0輸出低電平
DelayUs(1);//延時(shí)6us(15us之內(nèi)把數(shù)據(jù)送到總線上)
if(temp){DQ_IO=1;}//設(shè)置RE0為輸入口(寫1時(shí)序)
DelayUs(25);//延時(shí)61us(總線采樣時(shí)間15-60us)
DQ_IO=1;//設(shè)置RE0為輸入口(寫0時(shí)序)
DelayUs(1);//延時(shí)6us(寫第二位時(shí)間間隙大于1us)
data=data>>1;//右移一位
}
}

//***********************************************
//函數(shù)名:ds18b20_readbyte();
//入口參數(shù):無
//出口參數(shù):無
//函數(shù)作用:DS18B20讀一個(gè)字節(jié)數(shù)據(jù)
//說明:
//***********************************************
unsignedchards18b20_readbyte(void)
{
uchari,data=0;//讀出溫度
for(i=8;i>0;i--)//讀8位數(shù)據(jù)
{
data=data>>1;//數(shù)據(jù)先右移一位
DQ_IO=0;//設(shè)置RE0為輸出口
DQ=0;//RE0輸出低電平
DelayUs(1);//延時(shí)6us(低電平時(shí)間大于1us)
DQ_IO=1;//拉高總線,產(chǎn)生讀時(shí)間間隙(設(shè)置RE0為輸入口)
DelayUs(1);//延時(shí)6us(從拉低電平開始15us之內(nèi)完成讀位)
if(DQ){data=data|0x80;}//先讀高位數(shù)據(jù),高位為1
else{data=data|0x00;}//高位為0
DelayUs(25);//延時(shí)61us(從拉低電平開始60-120us之內(nèi)釋放總線)
}
return(data);
}

//***********************************************
//函數(shù)名:read_ds18b20_data();
//入口參數(shù):無
//出口參數(shù):無
//函數(shù)作用:讀DS18B20測(cè)試的溫度數(shù)據(jù)
//說明:
//***********************************************
voidread_ds18b20_data(void)
{
DQ_IO=1;//設(shè)置RE0為輸入口
ds18b20_reset();//調(diào)用復(fù)位函數(shù)
ds18b20_writebyte(0XCC);//跳過ROM匹配
ds18b20_writebyte(0X44);//發(fā)送溫度變換命令
ds18b20_reset();//再次復(fù)位
ds18b20_writebyte(0XCC);//跳過ROM匹配
ds18b20_writebyte(0XBE);//發(fā)送讀溫度命令
lowtemp=ds18b20_readbyte();//讀出低8位溫度值
hightemp=ds18b20_readbyte();//讀出高8位溫度值
DQ_IO=1;//釋放總線
zhengshu=((lowtemp>>4)|(hightemp<<4))&0X3F;
xiaoshu=lowtemp<<4;
temp[0]=(zhengshu/100)%10;//整數(shù)百位
temp[1]=(zhengshu/10)%10;//整數(shù)十位
temp[2]=zhengshu%10;//整數(shù)個(gè)位
temperature=0;
if(xiaoshu&0x80)//下面是把小數(shù)部分轉(zhuǎn)換為BCD碼形式
{
temperature+=5000;
}
if(xiaoshu&0x40)
{
temperature+=2500;
}
if(xiaoshu&0x20)
{
temperature+=1250;
}
if(xiaoshu&0x10)
{
temperature+=625;
}
temp[3]=(temperature/1000)%10;//十分位
temp[4]=(temperature/100)%10;//百分位
temp[5]=(temperature/10)%10;//千分位
temp[6]=temperature%10;//萬分位
DelayUs(1);//延時(shí)6us
}

//***********************************************
//函數(shù)名:lcd_display_temp();
//入口參數(shù):無
//出口參數(shù):無
//函數(shù)作用:LCD顯示測(cè)試溫度程序
//說明:
//***********************************************
voidlcd_display_temp(void)
{
PORTD=0X80;//設(shè)置第1行顯示地址
lcd_enable();
lcd_writedata(name);//調(diào)用顯示函數(shù)
PORTD=0XC0;//設(shè)置第2行顯示地址
lcd_enable();//調(diào)用寫使能函數(shù)
lcd_writebyte(0x20);
lcd_writebyte(0x20);
lcd_writebyte(0x20);
if(temp[0]==0)
{
lcd_writebyte(0x20);
}
else
{
lcd_writebyte(temp[0]+0x30);
}
lcd_writebyte(temp[1]+0x30);
lcd_writebyte(temp[2]+0x30);
lcd_writebyte(0x2e);
lcd_writebyte(temp[3]+0x30);
lcd_writebyte(temp[4]+0x30);
lcd_writebyte(temp[5]+0x30);
lcd_writebyte(temp[6]+0x30);
lcd_writebyte(0x20);
lcd_writebyte(0x43);
lcd_writebyte(0x20);
lcd_writebyte(0x20);
lcd_writebyte(0x20);
}

//***********************************************
//函數(shù)名:main();
//入口參數(shù):無
//出口參數(shù):無
//函數(shù)作用:MAIN函數(shù)
//說明:
//***********************************************
voidmain(void)
{
port_init();//調(diào)用端口初始化函數(shù)
lcd_init();//調(diào)用LCD初始化函數(shù)
while(1)
{
read_ds18b20_data();//調(diào)用溫度轉(zhuǎn)換函數(shù)
CLRWDT();//清看門狗
lcd_display_temp();//調(diào)用溫度顯示函數(shù)
}
}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉