基于STC12C5A60S2的BS18B20温度检测+秒表.docVIP

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
基于STC12C5A60S2的BS18B20温度检测秒表

#includereg52.h #define uint unsigned int #define uchar unsigned char //==========LCD的定义==================== sbit lcden=P1^2; sbit lcdrw=P1^1; sbit lcdrs=P1^0; uchar str0[9]; uchar str1[8]=MCU_time; uchar str2[]=Tempture:; uchar num[]={0123456789-.}; uchar second=0,mint=0,hour=0; //============DS18B20的定义=============== sbit DQ=P3^7; void STR(unsigned char h,unsigned char m,unsigned char s) { str0[0]=h/10+0x30; str0[1]=h%10+0x30; str0[2]=:; str0[3]=m/10+0x30; str0[4]=m%10+0x30; str0[5]=:; str0[6]=s/10+0x30; str0[7]=s%10+0x30; str0[8]= ; } //=============LCD延时子函数=================== void delayLCD(uint z) { uint x,y; for(x=z;x0;x--) for(y=100;y0;y--) ; } //============DS18B20延时子函数=================== void delay(uint x) { uchar i; while(x--) for(i=0;i110;i++); } void delay_us(uchar x) {uchar i; for(i=0;ix;i++); } /********************************************************** 延时2us:6+1+2+(3+4)*1+4=20fosc,约2us ***********************************************************/ void delay_1us() { uchar i; for(i=0;i1;i++); } /********************************************************* 延时200ms ***********************************************************/ void delay_200ms() {uchar i,j; for(j=0;j200;j++) for(i=0;i255;i++); } /********************************************************** 18B20复位 ***********************************************************/ bit rst_18b20() { bit flag;//存在标志,为0存在,1不存在 DQ=1; delay_1us();//略微延时 DQ=0; delay_us(255);//480-960的低电平 DQ=1;//释放总线 delay_us(30);//等待15-60微秒,18b20作出回应 flag=DQ;//检测是否为低电平 delay_us(255); delay_us(255);//延时足够长,最少480us,完成复位周期 return (flag); } /********************************************************** 18B20写一个字节数据 ***********************************************************/ void write_18b20(uchar x) { uchar i; for(i=0;i8;i++) { DQ=1; delay_1us();//稍作延时 DQ=0;//启动写时序 DQ=x0x01;//向数据线传送最低位 delay_us(40);//延时约50us,供18b20采样数据 DQ=1;//释放总线 delay_1us(); x=1;//右移一位 } delay_us(2);//写完一个指令稍作延时 } /*******

文档评论(0)

ww90055 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档