没有合适的资源?快使用搜索试试~ 我知道了~
DS18B20温度检测及其在1602液晶显示
4星 · 超过85%的资源 需积分: 12 37 下载量 54 浏览量
2010-04-30
20:07:56
上传
评论 1
收藏 15KB TXT 举报
温馨提示
试读
13页
DS18B20温度检测及其在1602液晶显示DS18B20温度检测及其在1602液晶显示DS18B20温度检测及其在1602液晶显示DS18B20温度检测及其在1602液晶显示
资源推荐
资源详情
资源评论
#include<reg51.h> //包含单片机寄存器的头文件
#include<intrins.h> //包含_nop_()函数定义的头文件
unsigned char code digit[10]={"0123456789"}; //定义字符数组显示数字
unsigned char code Str[]={" Welcome"}; //说明显示的是温度
unsigned char code Error[]={"Error!Check!"}; //说明没有检测到DS18B20
unsigned char code Temp[]={"Temp:"}; //说明显示的是温度
unsigned char code tab[]={0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,//年
0x0f,0x09,0x0f,0x09,0x0f,0x09,0x0b,0x11,//月
0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00,//日
0x07,0x05,0x07,0x00,0x00,0x00,0x00,0x00,//符号
0x1f,0x15,0x1f,0x15,0x1f,0x1b,0x1f,0x11};//周
/*******************************************************************************
以下是对液晶模块的操作程序
*******************************************************************************/
sbit RS=P0^5; //寄存器选择位,将RS位定义为P2.0引脚
sbit RW=P0^6; //读写选择位,将RW位定义为P2.1引脚
sbit E=P0^7; //使能信号位,将E位定义为P2.2引脚
//sbit BF=P1^7; //忙碌标志位,,将BF位定义为P0.7引脚
/*****************************************************
函数功能:延时1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒
***************************************************/
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
#include<intrins.h> //包含_nop_()函数定义的头文件
unsigned char code digit[10]={"0123456789"}; //定义字符数组显示数字
unsigned char code Str[]={" Welcome"}; //说明显示的是温度
unsigned char code Error[]={"Error!Check!"}; //说明没有检测到DS18B20
unsigned char code Temp[]={"Temp:"}; //说明显示的是温度
unsigned char code tab[]={0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,//年
0x0f,0x09,0x0f,0x09,0x0f,0x09,0x0b,0x11,//月
0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00,//日
0x07,0x05,0x07,0x00,0x00,0x00,0x00,0x00,//符号
0x1f,0x15,0x1f,0x15,0x1f,0x1b,0x1f,0x11};//周
/*******************************************************************************
以下是对液晶模块的操作程序
*******************************************************************************/
sbit RS=P0^5; //寄存器选择位,将RS位定义为P2.0引脚
sbit RW=P0^6; //读写选择位,将RW位定义为P2.1引脚
sbit E=P0^7; //使能信号位,将E位定义为P2.2引脚
//sbit BF=P1^7; //忙碌标志位,,将BF位定义为P0.7引脚
/*****************************************************
函数功能:延时1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒
***************************************************/
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
/*****************************************************
函数功能:延时若干毫秒
入口参数:n
***************************************************/
void delaynms(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
delay1ms();
}
/*****************************************************
函数功能:判断液晶模块的忙碌状态
返回值:result。result=1,忙碌;result=0,不忙
***************************************************/
bit BusyTest(void)
{
bit result;
RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态
RW=1;
E=1; //E=1,才允许读写
_nop_(); //空操作
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
// result=BF; //将忙碌标志电平赋给result
E=0; //将E恢复低电平
return result;
}
/*****************************************************
函数功能:将模式设置指令或显示地址写入液晶模块
函数功能:延时若干毫秒
入口参数:n
***************************************************/
void delaynms(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
delay1ms();
}
/*****************************************************
函数功能:判断液晶模块的忙碌状态
返回值:result。result=1,忙碌;result=0,不忙
***************************************************/
bit BusyTest(void)
{
bit result;
RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态
RW=1;
E=1; //E=1,才允许读写
_nop_(); //空操作
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
// result=BF; //将忙碌标志电平赋给result
E=0; //将E恢复低电平
return result;
}
/*****************************************************
函数功能:将模式设置指令或显示地址写入液晶模块
剩余12页未读,继续阅读
资源评论
- bosuns2014-06-26东西总体还是可以的,但是有些备注不够,不够简洁
- red-2015-07-16东西很好,不过备注少了点,新手看的有点吃力
fuhuake
- 粉丝: 0
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功