欢迎来到天天文库
浏览记录
ID:30503251
大小:331.25 KB
页数:6页
时间:2018-12-30
《ds18b20温度传感器+1602液晶显》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、单片机轻松入门之十DS18B20温度传感器+1602液晶显示本文旨在介绍单片机入门的基础知识,为初接触或即将接触单片的新手提供一个入门指导。本文章会陆续推出,隔几天一个章节。所使用单片机为ATMEL公司的AT89C52,软件为PROTEUS和KEIL;只提供原理图和KEIL环境下的注释,希望对广大即将接触单片机的人有所帮助,如果有错误欢迎回帖指出与本人交流或QQ联系(QQ:1260514656)。DS18B20数字温度传感器是由美国DALLAS公司生产的,体积小,使用方便,测温范围-55℃~+125℃,测温分辨率0.5℃
2、,工作电压DC3-5V,不需要任何外围元件,采用SPI单线接口方式,在与微处理器连接时仅需要一条口线即可实现双向通讯,广泛适用于各种温度控制领域。原理图如下:程序如下:#include#defineucharunsignedchar#defineuintunsignedintsbitRS=P3^0;sbitEN=P3^2;sbitRW=P3^1;sbitwela=P3^3;sbitDQ=P3^4;uchari;uintnum; uintshi,ge,xiaoshu;uch
3、arcodet0[]="Thetemperature";ucharcodet1[]="is ";ucharcodewendu[]="0123456789"; voiddelay(uintx){uintm,n;for(m=x;m>0;m--) for(n=10;n>0;n--);}voiddelay1(uintx){uinta,b;for(a=x;a>0;a--) for(b=110;b>0;b--);}/*****************液晶写指令***************/voidwr
4、ite_com(ucharcom){wela=1;P2=com;wela=0;RS=0;EN=0;RW=0;delay(10);EN=1;delay(10); EN=0;}/*****************液晶写数据指令***************/voidwrite_date(uchardate){wela=1;P2=date;wela=0;RS=1;EN=0;RW=0;delay(10);EN=1;delay(10);EN=0;}/*****************液晶初始化指令***************
5、/voidinit(){write_com(0x38);delay(20);write_com(0x0f);delay(20);write_com(0x06);delay(20);write_com(0x80);for(i=0;i<16;i++) { write_date(t0[i]); delay(0); }write_com(0x80+0x40);for(i=0;i<16;i++) { write_date(t1[i]); delay(0); }}/*************DS18B20温度
6、读取模块*************/voidtmpDelay(intu)//延时函数{while(u--);}voidInit_DS18B20()//初始化ds1820{unsignedcharx=0;DQ=1; //DQ复位tmpDelay(8);//稍做延时DQ=0; //单片机将DQ拉低tmpDelay(80);//精确延时大于480usDQ=1; //拉高总线tmpDelay(14);x=DQ; //稍做延时后,如果x=0则初始化成功x=1则初始化失败tmpDelay(20);}unsign
7、edcharReadOneChar()//读一个字节{unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){ DQ=0;//给脉冲信号 dat>>=1; DQ=1;//给脉冲信号 if(DQ) dat
8、=0x80; tmpDelay(4);}return(dat);}voidWriteOneChar(unsignedchardat)//写一个字节{unsignedchari=0;for(i=8;i>0;i--){ DQ=0; DQ=dat&0x01; tm
9、pDelay(5); DQ=1; dat>>=1;}}unsignedintReadtemp()//读取温度{unsignedchara=0;unsignedcharb=0;unsignedintt=0;floattt=0;Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操
此文档下载收益归作者所有