//了解运用单片机运用DS18B20温度传感器测验温度,并用1602显现屏显现温度
//1、榜首行显现:Temperature
//2、第二行显现:实测温度值
//**************************************************
//**************************************************
//硬件设置:
//1、SW2,SW4开关悉数断开
//2、插上DS18B20温度传感器
//**************************************************
//**************************************************
//*****************界说头文件**********************
//**************************************************
#include
#include “delay.h”
//**************************************************
//******************界说装备位*********************
//**************************************************
__CONFIG(0x3545);
//FLASH代码不维护,RB6和RB7为调试方式,FLASH不写维护,数据代码不维护
//RB3为数字IO口,低电压复位使能,上电延时开,看门狗开,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; //温度整数变量,温度小数变量
uint temperature; //转化后的温度值BCD码方式
uchar temp[7]; //转化后温度寄存变量
//**************************************************
//******************界说数据***********************
//**************************************************
//显现: 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};
//***********************************************
//函 数 名:delayms(uchar time);
//进口参数:time
//出口参数:无
//函数效果:毫秒延时
//说 明:
//***********************************************
void delayms(uchar time)
{
uint i;
while(time–)
{
for(i=93;i>0;i–){;}
}
}
//***********************************************
//函 数 名:port_init();
//进口参数:无
//出口参数:无
//函数效果:端口初始化
//说 明:
//***********************************************
void port_init(void)
{
ADCON1=0X07; //设置RA,RE口为数字口
TRISA=0X00; //设置RA口为输出口
TRISD=0X00; //设置RD口为输出口
TRISE=0X00; //设置RE口为输出口
OPTION=0X8F; //分频给WDT,分频比为128
}
//***********************************************
//函 数 名:lcd_enable();
//进口参数:无
//出口参数:无
//函数效果:LCD写使能
//说 明:
//***********************************************
void lcd_enable(void)
{
RS=0; //写指令
RW=0; //写操作
E=0; //低电平信号
delayms(10); //低电平信号坚持
E=1; //拉高电平信号
}
//***********************************************
//函 数 名:lcd_writebyte(uchar data);
//进口参数:data
//出口参数:无
//函数效果:LCD写一个字节数据
//说 明:
//***********************************************
void lcd_writebyte(uchar data)
{
PORTD=data; //向RD口写数据
RS=1; //写数据
RW=0; //写操作
E=0; //低电平信号
delayms(10); //低电平信号坚持
E=1; //拉高电平信号
}
//***********************************************
//函 数 名:lcd_writedata(const uchar *ptt);
//进口参数:*ptt
//出口参数:无
//函数效果:LCD写数据块函数
//说 明:
//***********************************************
void lcd_writedata(const uchar *ptt)
{
uchar i;
for(i=0;i<16;i++) //写16个字节数据
{
lcd_writebyte(ptt); //查表写数据
}
}