D S18B20温度传感器+1602液晶显示精品参考资料.docxVIP

  • 14
  • 0
  • 约2.92千字
  • 约 6页
  • 2017-02-02 发布于江苏
  • 举报

D S18B20温度传感器+1602液晶显示精品参考资料.docx

单片机轻松入门之十 DS18B20温度传感器+1602液晶显示本文旨在介绍单片机入门的基础知识,为初接触或即将接触单片的新手提供一个入门指导。本文章会陆续推出,隔几天一个章节。所使用单片机为ATMEL公司的AT89C52,软件为PROTEUS和KEIL;只提供原理图和KEIL环境下的注释,希望对广大即将接触单片机的人有所帮助,如果有错误欢迎回帖指出与本人交流或QQ联系(QQ:1260514656)。DS18B20数字温度传感器是由美国DALLAS公司生产的,体积小,使用方便,测温范围 -55℃~+125℃,测温分辨率0.5℃,工作电压DC3-5V,不需要任何外围元件,采用SPI单线接口方式,在与微处理器连接时仅需要一条口线即可实现双向通讯,广泛适用于各种温度控制领域。原理图如下:程序如下: #includereg52.h#define uchar unsigned char#define uint unsigned intsbit RS=P3^0;sbit EN=P3^2;sbit RW=P3^1;sbitwela=P3^3;sbit DQ=P3^4;uchari;uint num;????????????????? uintshi,ge,xiaoshu;uchar code t0[]=The temperature ;uchar code t1[]= is???????????? ;uchar code wendu[]=0123456789;??? void delay(uint x){uintm,n;for(m=x;m0;m--) ?? for(n=10;n0;n--); }void delay1(uint x){uinta,b;for(a=x;a0;a--)?? for(b=110;b0;b--); }/*****************液晶写指令***************/void write_com(uchar com){wela=1;P2=com;wela=0;RS=0;EN=0;RW=0;delay(10);EN=1;delay(10);??? EN=0;}/*****************液晶写数据指令***************/void write_date(uchar date){wela=1;P2=date;wela=0;RS=1;EN=0;RW=0;delay(10);EN=1;delay(10);EN=0;}/*****************液晶初始化指令***************/void init(){write_com(0x38);delay(20);write_com(0x0f);delay(20);write_com(0x06);delay(20);write_com(0x80); for(i=0;i16;i++)?? {??? write_date(t0[i]);??? delay(0);?? }write_com(0x80+0x40);for(i=0;i16;i++)?? {??? write_date(t1[i]);??? delay(0);?? }}/*************DS18B20温度读取模块*************/void tmpDelay(int u) //延时函数{while(u--) ;}void Init_DS18B20() //初始化ds1820{unsigned char x=0;DQ = 1;???? //DQ复位tmpDelay(8); //稍做延时DQ = 0;??? //单片机将DQ拉低tmpDelay(80); //精确延时 大于 480usDQ = 1;??? //拉高总线tmpDelay(14);x=DQ;????? //稍做延时后,如果x=0则初始化成功 x=1则初始化失败tmpDelay(20);}unsigned char ReadOneChar() //读一个字节{unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i--){?? DQ = 0; // 给脉冲信号?? dat=1;?? DQ = 1; // 给脉冲信号?? if(DQ)?? dat|=0x80;?? tmpDelay(4);}return(dat);}void WriteOneChar(unsigned char dat) //写一个字节{unsigned char i=0;for (i=8; i0; i--){?? DQ = 0;?? DQ = dat0x01;?? tmpDelay(5);?? DQ = 1;?? dat=1;}}unsigned intReadtemp() //读取温度{unsi

文档评论(0)

1亿VIP精品文档

相关文档