新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > DS18B20+PIC测温用1602显示温度C程序

DS18B20+PIC测温用1602显示温度C程序

作者:时间:2016-11-30来源:网络收藏
//熟悉使用单片机运用DS18B20温度传感器测试温度,并用1602显示屏显示温度

//1、第一行显示:Temperature
//2、第二行显示:实测温度值
//**************************************************

本文引用地址:http://www.eepw.com.cn/article/201611/323921.htm

//**************************************************
//硬件设置:
//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); //查表写数据
}
}


上一页 1 2 下一页

评论


技术专区

关闭