您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 用12864液晶显示DS18B20温度传感器的C程序
用12864液晶显示DS18B20温度传感器的C程序//并行连接,PSB引脚接电源正#includereg51.h#includeintrins.h#defineuintunsignedint#defineucharunsignedcharsbitrs=P2^0;/*数据\指令选择*/sbitrw=P2^1;/*读\写选择*/sbite=P2^2;/*读\写使能*/sbitds=P3^2;//18B20脚uinttemp;floatftemp;ucharcodetable[]=0123456789.d;voidwritecom(ucharcom);voidwritedat(uchardat);voidinitinal(void);delay0(intk)//把你的延时函数改为以毫秒计时的一个延时函数,但是一个“非标准的”毫秒{inti,j;for(i=k;i0;i--)//i=xms即延时约xms毫秒for(j=110;j0;j--);}voiddsreset()//ds18b20初始化函数{uinti;ds=0;//拉低总线开始复位i=103;while(i0)i--;ds=1;//释放总线i=4;while(i0)i--;//省去了等待芯片返回应答的过程。。。。。。}bitreadbit(void)//ds18b20读取一个二进制位,参照时序图{uinti;bitdat;ds=0;i++;ds=1;i++,i++;dat=ds;i=8;while(i0)i--;return(dat);}uchartempread(void)//ds18b20读取一个字节的数据{uchari,j,dat;dat=0;for(i=0;i8;i++){j=readbit();dat=(j7)|(dat1);//}return(dat);}voidtempwrite(uchardat)//ds18b20写入字节数据{uinti;ucharj;bittestb;for(j=1;j=8;j++){testb=dat&0x01;dat=dat1;if(testb==1)//写1{ds=0;//拉低总线以开始一个写时序i++;i++;ds=1;//释放总线i=8;while(i0)i--;}else//写0{ds=0;i=8;while(i0)i--;ds=1;i++;i++;}}}voidtempchang(void)//{dsreset();delay0(1);tempwrite(0xcc);//tempwrite(0x44);//}uintgettemp()//{uchara,b;dsreset();delay0(1);tempwrite(0xcc);//tempwrite(0xbe);//a=tempread();//b=tempread();//temp=b;temp=8;//////temp=temp|a;ftemp=temp*0.0625;//temp=ftemp*10+0.5;//ftemp=ftemp+0.05;//returntemp;//}//12MHZ晶振延时50微秒voiddelay50us(uintt){ucharj;for(;t0;t--)for(j=19;j0;j--);}///////////////////////////////////////////////////////////////////////////主函数voidmain(){initinal();while(1){uinta,b,c,d;tempchang();a=gettemp();b=a/100;c=a%100/10;d=a%100%10;writecom(0x83);writedat(table[b]);delay50us(1);writedat(table[c]);delay50us(1);writedat(table[10]);delay50us(1);writedat(table[d]);delay50us(1);writedat(table[11]);delay50us(4);writecom(0x83);}}////////////////////////////////////////////////////////////////////////////12864写命令voidwritecom(ucharcom){rw=0;rs=0;delay50us(1);P0=com;e=1;delay50us(10);e=0;delay50us(10);}//12864写数据voidwritedat(uchardat){rw=0;rs=1;delay50us(1);P0=dat;e=1;delay50us(10);e=0;delay50us(10);}//12864初始化voidinitinal(void){delay50us(2);writecom(0x30);delay50us(4);writecom(0x30);delay50us(4);writecom(0x0f);delay50us(4);writecom(0x01);delay50us(240);writecom(0x06);delay50us(10);}
本文标题:用12864液晶显示DS18B20温度传感器的C程序
链接地址:https://www.777doc.com/doc-6230083 .html