DS18B20+PIC測(cè)溫用1602顯示溫度C程序
//1、第一行顯示:Temperature
//2、第二行顯示:實(shí)測(cè)溫度值
//**************************************************
//**************************************************
//硬件設(shè)置:
//1、SW2,SW4開(kāi)關(guān)全部斷開(kāi)
//2、插上DS18B20溫度傳感器
//**************************************************
//**************************************************
//*****************定義頭文件**********************
//**************************************************
#include
#include "delay.h"
//**************************************************
//******************定義配置位*********************
//**************************************************
__CONFIG(0x3545);
//FLASH代碼不保護(hù),RB6和RB7為調(diào)試模式,F(xiàn)LASH不寫(xiě)保護(hù),數(shù)據(jù)代碼不保護(hù)
//RB3為數(shù)字IO口,低電壓復(fù)位使能,上電延時(shí)開(kāi),看門(mén)狗開(kāi),4M晶體XT振蕩器
//**************************************************
//******************定義常量***********************
//**************************************************
#define uchar unsigned char
#define uint unsigned int
//**************************************************
//***************定義DS18B20引腳*******************
//**************************************************
#define DQ RE0
#define DQ_IO TRISE0
//**************************************************
//******************定義LCD引腳*********************
//**************************************************
#define RS RA1
#define RW RA2
#define E RA3
//**************************************************
//******************定義變量***********************
//**************************************************
uchar lowtemp,hightemp; //低8位溫度變量,高8位溫度變量
uchar zhengshu,xiaoshu; //溫度整數(shù)變量,溫度小數(shù)變量
uint temperature; //轉(zhuǎn)換后的溫度值BCD碼形式
uchar temp[7]; //轉(zhuǎn)換后溫度存放變量
//**************************************************
//******************定義數(shù)據(jù)***********************
//**************************************************
//顯示: Temperature
//顯示:WWW*PICAVR*COM
const uchar name[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(uchar time);
//入口參數(shù):time
//出口參數(shù):無(wú)
//函數(shù)作用:毫秒延時(shí)
//說(shuō) 明:
//***********************************************
void delayms(uchar time)
{
uint i;
while(time--)
{
for(i=93;i>0;i--){;}
}
}
//***********************************************
//函 數(shù) 名:port_init();
//入口參數(shù):無(wú)
//出口參數(shù):無(wú)
//函數(shù)作用:端口初始化
//說(shuō) 明:
//***********************************************
void port_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ù):無(wú)
//出口參數(shù):無(wú)
//函數(shù)作用:LCD寫(xiě)使能
//說(shuō) 明:
//***********************************************
void lcd_enable(void)
{
RS=0; //寫(xiě)命令
RW=0; //寫(xiě)操作
E=0; //低電平信號(hào)
delayms(10); //低電平信號(hào)保持
E=1; //拉高電平信號(hào)
}
//***********************************************
//函 數(shù) 名:lcd_writebyte(uchar data);
//入口參數(shù):data
//出口參數(shù):無(wú)
//函數(shù)作用:LCD寫(xiě)一個(gè)字節(jié)數(shù)據(jù)
//說(shuō) 明:
//***********************************************
void lcd_writebyte(uchar data)
{
PORTD=data; //向RD口寫(xiě)數(shù)據(jù)
RS=1; //寫(xiě)數(shù)據(jù)
RW=0; //寫(xiě)操作
E=0; //低電平信號(hào)
delayms(10); //低電平信號(hào)保持
E=1; //拉高電平信號(hào)
}
//***********************************************
//函 數(shù) 名:lcd_writedata(const uchar *ptt);
//入口參數(shù):*ptt
//出口參數(shù):無(wú)
//函數(shù)作用:LCD寫(xiě)數(shù)據(jù)塊函數(shù)
//說(shuō) 明:
//***********************************************
void lcd_writedata(const uchar *ptt)
{
uchar i;
for(i=0;i<16;i++) //寫(xiě)16個(gè)字節(jié)數(shù)據(jù)
{
lcd_writebyte(ptt); //查表寫(xiě)數(shù)據(jù)
}
}
評(píng)論