您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > protues-DS18B20仿真
程序代码#includereg52.h#includeintrins.h#defineuintunsignedint#defineucharunsignedchar#definenops();{_nop_();_nop_();_nop_();_nop_();}sbitDQ=P3^0;ucharcodeled[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharcodeleddg[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc};voiddisplay(doublex);voiddelayms(uintz);voiddelay1(uintz);uintds18b20();ucharreset18b20();voidmain(){doublea;while(1){a=ds18b20();display(a);}}/////////////////////////////////////////////////////voiddelayms(uintz)//延时函数{uintx,y;for(x=z;x0;x--)for(y=110;y0;y--);}///////////////////////////////voiddelay1(uintz){while(--z);}/////////////////////////////////////////////////voiddisplay(doublex)//显示函数{uinta,b,d,e;intc;doubleg,h;if(x=128){c=(int)x;//4510.12a=c/100;//提取个位,百位b=c%100/10;d=c%100%10;g=x-c;//0.119999有误差/*if((((int)(g*100)+1)-g*100)=0.0001)//判断下消除误差g=g+0.01;d=(int)(g*10);h=10*g-d;e=(int)(h*10);*/e=(int)(10*g);P2=0xfe;P0=led[a];delayms(10);P2=0xfd;P0=led[b];delayms(10);P2=0xfb;P0=leddg[d];delayms(10);P2=0xf7;P0=led[e];delayms(10);}else{c=(int)(256-x);b=c/10;d=c%10;e=0;P2=0xfe;P0=0x40;delayms(10);P2=0xfd;P0=led[b];delayms(10);P2=0xfb;P0=leddg[d];delayms(10);P2=0xf7;P0=led[e];delayms(10);}}////////////////////////////////////////////////////ucharreset18b20()//复位18B20{uchara;DQ=1;_nop_();_nop_();DQ=0;delay1(80);DQ=1;nops();a=DQ;delay1(20);returna;}////////////////////////////////////////voidwrite(uchardat)//向18B20里写{uchari;DQ=1;_nop_();for(i=0;i8;i++){DQ=0;DQ=dat&0x01;delay1(51);DQ=1;dat=1;}}/////////////////////////////////////ucharread()//读取18b20{uchari,dat=0;DQ=1;_nop_();for(i=0;i8;i++){DQ=0;nops();dat=1;DQ=1;nops();if(DQ){dat|=0x80;}delay1(30);DQ=1;}returndat;}/////////////////////////////////////////////uintds18b20()//启动18B20温度传感器{uinta,b;reset18b20();write(0xcc);//跳过ID地址write(0x44);//启动温度转换reset18b20();write(0xcc);write(0xbe);//读取温度a=read();b=read();b=b&0x0f;b=4;b+=(a&0xf0)4;//取出A的低4位在和B相加刚好B中存的温度的高低值returnb;}
本文标题:protues-DS18B20仿真
链接地址:https://www.777doc.com/doc-5485279 .html