首页 DS18B20温度显示演示程序

DS18B20温度显示演示程序

举报
开通vip

DS18B20温度显示演示程序/*DS18B20温度显示演示程序-LCD1602显示开机时对DS18B20进行检测,如果DS18B20检测不正常,LCD1602显示:DS18B20ERRORPLEASECHECK蜂鸣器报警。DS18B20检测正常,LCD1602显示:DS18B200KTEMP:100.8°C如果温度值高位为0,将不显示出来。你可以通过拔插DS18B20查看DS18B20的检测功能。*/#include#include#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3A...

DS18B20温度显示演示程序
/*DS18B20温度显示演示程序-LCD1602显示开机时对DS18B20进行检测,如果DS18B20检测不正常,LCD1602显示:DS18B20ERRORPLEASECHECK蜂鸣器报警。DS18B20检测正常,LCD1602显示:DS18B200KTEMP:100.8°C如果温度值高位为0,将不显示出来。你可以通过拔插DS18B20查看DS18B20的检测功能。*/#include#include#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3A2;〃定义DS18B20端口DQsbitBEEP=P1AO;〃蜂鸣器驱动线bitpresenee;sbitLCD_RS=PlA0;sbitLCD_RW=P1A1;sbitLCD_EN=P1A2;ucharcodecdisl[]={nDS18B20OK"};ucharcodecdis2[]={HTEMP:・CH};ucharcodecdis3[]={HDS18B20BUSY"};ucharcodecdis4[]={nPLEASEWAITH};unsignedchardatatemp_data[2]={0x00,0x00};unsignedchardatadisplay⑸二{0x00,0x00,0x00,0x00,0x00};unsignedcharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};voidbeep();unsignedcharcodemytab[8]={0x06,0x12,0x12,0x00,0x00,0x00,0x00,0x00};#definedelayNOPf);{_nop_();_nop_();_nop_();_nop_();};voiddelayl(intms)unsignedchary;while(ms-)for(y=0;y<250;y++){」opJ);」opJ);」opJ);」opJ);}}}厂检查LCD忙状态/*lcd_busy为1时,忙,等待。Icd-busy为0时,闲,可写指令与数据。bitlcd_busy()bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP();result=(bit)(PO&0x80);LCD_EN=0;return(result);}厂写指令数据到LCD/*RS=L,RW二L,E二高脉冲,D0-D7=指令码。*//*)«(*穴**)«(*)«(*穴)1(*)«(*)«(*穴**)«(*)«(*穴*穴4(*)«(*穴*穴**)«(*穴**)«(*)«(**)«(*末*voidlcd_wcmd(ucharcmd){while(lcd_busy());LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();PO=cmd;delayNOP();LCDEN=1;delayNOP();LCD_EN=0;}^*****************************************************************/厂写显示数据到LCD/*RS=H,RW=L,E二高脉冲,D0-D7=数据。/*^****************************************************************voidlcd_wdat(uchardat){while(lcd_busy());LCD_RS=1;LCD_RW=0;LCD_EN=0;PO=dat;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}/*LCD初始化设定*//***穴**审4(审4(穴******穴******穴*穴****穴*穴****穴***********穴*穴**穴*穴*穴**穴*穴*穴/voidlcdjnit()delayl(15);lcd_wcmd(0x01);〃清除LCD的显示 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 lcd_wcmd(0x38);//16*2显示,5*7点阵,8位数据delayl(5);lcd_wcmd(0x38);delayl(5);lcd_wcmd(0x38);delayl(5);lcd_wcmd(0x0c);delayl(5);lcd_wcmd(0x06);〃显不开,关光标〃移动光标delayl(5);lcd_wcmd(0x01);〃清除LCD的显示内容delayl(5);}*//*设定显示位置voidlcd_pos(ucharpos){lcd_wcmd(pos|0x80);〃数据指针=80+地址变量}厂自定义字符写入CGRAMvoidwritetab(){unsignedchari;lcd_wcmd(0x40);for(i=0;i<8;i++)lcd_wdat(mytab[i]);}〃写CGRAM/*us级延时函数*/voidDelay(unsignedintnum){while(-num);}/*初始化dsl820*//*承沐穴******^******^******p*^****^*^****^***********lnit_DS18B20(void)DQ=1;〃DQ复位Delay⑻;〃稍做延时DQ=0;Delay(90);〃单片机将DQ拉低〃精确延时人于480usDQ=1;Delay⑻;〃拉高总线presence=DQ;〃如果二0则初始化成功=1则初始化失败Delay(lOO);DQ=1;return(presenee);〃返回信号,0=presence,l=nopresenee/*读一个字节ReadOneChar(void)unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i-){DQ=0;〃给脉冲信号dat»=1;DQ=1;//给脉冲信号if(DQ)dat|=0x80;Delay⑷;}return(dat);}/*写一个字节*/WriteOneChar(unsignedchardat)unsignedchari=0;for(i=8;i>0;i-)DQ=0;DQ=dat&OxOl;Delay⑸;DQ=1;dat»=l;*//*读取温度Read_Temperature(void)lnit_DS18B20();WriteOneChar(OxCC);//跳过读序号列号的操作WriteOneChar(Ox44);〃启动温度转换lnit_DS18B20();WriteOneChar(OxCC);〃跳过读序号列号的操作WriteOneChar(OxBE);〃读取温度寄存器temp_data[O]=ReadOneChar();〃温度低8位temp_data[l]=ReadOneChar();〃温度高8位}/*数据转换与温度显示〃咼位为0,不显不〃次高位为0»不显不〃百位数显示〃十位数显示〃个位数显示〃小数位数显示Disp_Temperature()display[4]=temp_data[0]&0x0f;〃查 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 得小数位的值display[0]=ditab[display[4]]+0x30;display[4]=((temp_data[0]&0xf0)»4)|((temp_data[l]&0x0f)«4);display⑶=display[4]/100+0x30;display[l]=display[4]%100;display[2]=display[l]/lO+Ox3O;display[l]=display[l]%lO+Ox3O;if(display[3]==Ox3O){display⑶=0x20;if(display[2]==0x30)display[2]=0x20;}Icd_pos(0x48);lcd_wdat(display[3]);Icd_pos(0x49);lcd_wdat(display[2]);Icd_pos(0x4a);lcd_wdat(display[l]);Icd_pos(0x4c);lcd_wdat(display[O]);}*//*蜂鸣器响一声voidbeep()unsignedchary;for(y=0;y<100;y++){Delay(60);//BEEP取反〃关闭蜂鸣器BEEP=!BEEP;}BEEP=O;Delay(40000);}/*DS18B20OK显示菜单**穴******穴******穴******穴*穴******穴**承*穴*穴****穴*穴**穴*穴******穴******voidOk_Menu(){〃初始化LCDucharm;lcdjnit();lcd_pos(0);m=0;while(cdisl[m]!='\0'){lcd_wdat(cdisl[m]);m++;}〃设置显示位置为第一行的第1个字符〃显不字符Icd_pos(0x40);m=0;while(cdis2[m]!='\0'){Icd_wdat(cdis2[m]);m++;}〃设置显示位置为第二行第1个字符〃显刀£字符writetab();delayl(5);Icd_pos(0x4d);lcd_wdat(0x00);}〃自定义字符写入CGRAM〃显示自定义字符/*DS18B2OERROR显示菜单*/voidError_Menu()ucharm;lcd_init();lcd_pos(0);m=0;while(cdis3[m]!='\0'){Icd_wdat(cdis3[m]);m++;}〃初始化LCD〃设置显示位置为第一行的第1个字符〃显不字符〃设置显示位置为第二行第1个字符Icd_pos(0x40);m=0;while(cdis4[m]!=、0‘){〃显刀£字符Icd_wdat(cdis4[m]);m++;}}/*主函数*/*/voidmain()Ok_Menu();BEEP=O;Read_Temperature();Disp_Temperature();}while(!presenee);Error_Menu();lnit_DS18B20();beep();}while(presenee);
本文档为【DS18B20温度显示演示程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_704284
暂无简介~
格式:doc
大小:36KB
软件:Word
页数:11
分类:
上传时间:2019-05-18
浏览量:0