初学者想做一个温度传感器的程序,但是现在数码管根本不显示,下边是代码,在数码管的后三位显示温度值
#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit ds=P2^2;uint temp;float f_temp;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, //有小数点 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //无小数点 (1:0x86 1000 0110 第一位为小数点)uchar dispuf[]={10,10,10,10,10,10,10,10};uchar discom =0;void display();void delay(uchar i) //延时{ i++;}bit inclear(void) //初始化{ uchar dat=1; ds=1; delay(1); ds=0; delay(250); ds=1; dat=ds; delay(100); ds=1; return(dat) ; }uchar read() //读数据{ uchar i,j,dat; dat=0; for(i=0;i<8;i++) { ds=1; delay(1); ds=0; delay(3); ds=1; delay(2); dat=(j<<7|dat>>1); if(ds) ds=(ds|0x80); delay(10); } return(dat);}void write(uchar dat) //写数据{ uchar i; for(i=0;i<8;i++) { ds=0; delay(2); dat=dat&0x01; ds=1; dat=dat>>1; delay(10); ds=1; }}void tempchange(){ //获取温度并转换 inclear(); delay(1); write(0xcc); write(0x44);}uint temp_get(){ uchar a,b; inclear(); //读取数据 delay(1); write(0xcc); write(0xbe); //读 a=read(); //低八位 b=read(); //b=高八位 temp=b; temp<<=8; temp=temp|a; //合并a和b f_temp=temp*0.0625; temp=f_temp*10+0.5; return temp;}void display(void){ P2 = ((P2&0x1f)|0xe0); P0 = 0xff; P2 &= 0x1f; P2=((P2&0x1f)|0xc0); P0 = (1<<discom); P2=P2&0x1f; P2=((P2&0x1f)|0xe0); P0=~table[dispuf[discom]]; P2=P2&0x1f; delay(2); if(++discom==8) discom=0;}void mian(){ uchar i; while(1) { tempchange(); for(i=10;i>0;i--) { display(); dispuf[5]=temp/100; dispuf[6]=temp%100/10; dispuf[7]=temp%100%10; } }}