欢迎来到天天文库
浏览记录
ID:43089990
大小:167.51 KB
页数:9页
时间:2019-09-25
《基于51单片机的18b20温度报警器仿真1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、广州白云技师学院电子系技师班单片机课程项目化教学系列18B20温度报警器仿真设计廖高灵功能:通过采集18B20温度数据产生报警。K1:查询报警记录的时间K2:设置报警温度上限K3:设置报警温度下限一、仿真图:二、程序代码/************************************18b20.h******************************/#include#defineucharunsignedchar#defineuintunsignedintsbitDQ=P1^0;ucharnum1,num2,num3,num4;uchara,b,c,d,
2、e;uinttt;/************************延时**************************************/voidDelay_1(intnum){while(num--);//当晶振为11.0592MHZ,num=10时,延时时间约为70us}/*****************************1820init*****************************/voidinit_ds18b20(){unsignedcharx=0;DQ=1;Delay_1(8);DQ=0;Delay_1(80);DQ=1;Delay_1(14);w
3、hile(!DQ);Delay_1(60);}/*********************读字节*****************************************/ucharread_byte(){uchari;uchardat;for(i=0;i<8;i++){dat=dat>>1;//右移一位,准备位置存放数据DQ=0;Delay_1(1);DQ=1;//设置引脚为输入if(DQ)dat
4、=0x80;DQ=1;Delay_1(8);}return(dat);}/***********************写字节*****************************
5、*********/voidwrite_byte(uchardat){uchari;for(i=0;i<8;i++){DQ=0;Delay_1(1);DQ=dat&0x01;Delay_1(9);DQ=1;Delay_1(1);dat>>=1;}}/*************************读温度*************************************/voidReadTemperature(){uinti;init_ds18b20();write_byte(0xcc);write_byte(0x44);/**/for(i=0;i<200;i++){Delay_1
6、(450);}init_ds18b20();write_byte(0xcc);write_byte(0xbe);a=read_byte();//LSBb=read_byte();//MSBnum1=a&0x0f;//读取小数位num2=a&0xf0;//读取整数num2=num2>>4;num3=b&0x07;num3=num3<<4;num2=num2+num3;num4=b&0xf8;////读取正负/**/if(num4==0xf8)//判断正负{if(flag==0){Disp_Buff[7]=0x01;Write7219();}num1=~num1;num1=num1&0x0f;
7、num1=num1+1;num2=~num2;num2=num2&0x7f;num3=~num3&0xf7;}elseif(flag==0){Disp_Buff[7]=0x00;Write7219();}tt=num1*625;tt=tt/100;d=tt/10;e=tt%10;a=num2/100;b=num2%100/10;c=num2%10;if(flag==0){Disp_Buff[2]=table3[d];Write7219();Disp_Buff[1]=table3[e];Write7219();}if(a==0){if(flag==0){Disp_Buff[6]=0x00;W
8、rite7219();}if(b==0){if(flag==0){Disp_Buff[5]=0x00;Write7219();}}elseif(flag==0){Disp_Buff[5]=table3[b];Write7219();}}elseif(flag==0){Disp_Buff[6]=table3[a];Write7219();}if(flag==0){Disp_Buff[4]=table3[c];Write72
此文档下载收益归作者所有