第一范文网 - 专业文章范例文档资料分享平台

基于51单片机的数字温度计DS18B20全部注释

来源:用户分享 时间:2025/9/30 8:36:38 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

#include #define uint unsigned int #define uchar unsigned char

sbit rs=P2^4;//向液晶控制器器写数据,写命令选择端 sbit rw=P2^5;//向液晶器读,写选择端 sbit en=P2^6;//使能信号端,lcd1602

sbit DQ=P3^3;//温度传输线,一线双向数据传输 uchar s;

uchar code a[]=%uchar code b[]=%uchar code c[]=%uchar code d[]=%uchar code e[]=\

void delay(uint x)//延时x毫秒,晶振为12MHz { uint i,j; for(i=x;i>0;i--) for(j=120;j>0;j--); }

void lcdxie_zhiling(uchar zhiling);//lcd1602写指令 void lcdxie_shuju(uchar shuju);//lcd1602写数据 void lcdchushihua();//初始化lcd1602 void dschushihua();//18B20初始化 bit dubit();//读一位数据函数

uchar du_zijie();//读一个字节数据函数 void xie_zijie(uchar dat);//向18B20写一个字节 void fenpin1(uchar t);//分频显示整数温度

void fenpin2(uchar t);//分频显示小数温度 void hanshuchushihua();//函数初始化 void main() {

uchar H,L,N,D;

hanshuchushihua();//函数初始化

while(1) {

dschushihua();//18B20初始化 } }

void hanshuchushihua()//函数初始化 {

lcdchushihua();//初始化lcd1602

lcdxie_zhiling(0x80+0x01);

delay(1); //小延时,做缓冲 fenpin1(N);//显示温度的整数部分 fenpin2(D);//显示温度的小数部分 L=du_zijie();//先读的是温度值低位 H=du_zijie();//接着读的是温度值高位

N=H*16+L/16;//整数部分,实际温度值=(H*256+L)/16,即:H*16+L/16 D=(L)*10/16;//小数部分,将余数乘以10再除以16取整,即第一位小数

for(s=0;s<14;s++)//显示\爱到花开\ { }

lcdxie_zhiling(0x80+0x40+0x02); for(s=0;s<6;s++) {

lcdxie_shuju(b[s]);//显示\今天\ delay(5); }

lcdxie_zhiling(0x80+0x40+0x0a); lcdxie_shuju(d[0]);//显示\

lcdxie_zhiling(0x80+0x40+0x0c); lcdxie_shuju(d[1]);//显示\ delay(5);

if(du_zijie()==1)//如果du_zijie()返回的值为1,则18B20可能以坏,将进入死循环 {

lcdxie_zhiling(0x80+0x04); for(s=0;s<5;s++)//显示\; {

lcdxie_shuju(e[s]); delay(5); }

lcdxie_shuju(a[s]); delay(5);

}

while(1);//进入死循环

delay(10); }

void lcdxie_zhiling(uchar zhiling)//lcd1602写指令 {

rs=0; //选择写命令模式

P0=zhiling;//将要写的命令字送到数据总线上 delay(5); //稍作延时以待数据稳定 en=1;

//使能端给一高脉冲,因为初始化函数中已经将lcden置0

delay(5); //稍作延时 en=0; }

void lcdxie_shuju(uchar shuju)//lcd1602写数据 {

rs=1; //选择写数据模式

P0=shuju;//将要写的数据字送到数据总线上 delay(5); //稍作延时以待数据稳定 en=1;

//使能端给一高脉冲,因为初始化函数中已经将lcden置0 //将使能端置0以完成高脉冲

delay(5);//稍作延时 en=0; }

void lcdchushihua()//初始化lcd1602 { rs=0;

//将使能端置0以完成高脉冲

基于51单片机的数字温度计DS18B20全部注释.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9tbzh3ap1p1oirv32mcr_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top