找了一天了,是在找不出来哪儿错了,我是看天狼星编程的,没办法了,只能求助各位大神了。大家有空就请帮帮忙吧,纠结死我了
温度传感器正常,我用开发板的hex文件试过。
#include<reg52.h> #define uint unsigned int #define uchar unsigned char
sbit dq=P1^3; uchar temp; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f};
void delay(uchar t) { while(t--); }
/*初始化函数*/ void init() { uchar n; dq=1; delay(8); dq=0; delay(80); dq=1; delay(8); n=dq; delay(4); } /*写一个字节函数*/ void write_byte(uchar date) { uchar i; for(i=0;i<8;i++) { dq=0; dq=date&0x01; delay(4); dq=1; date>>=1; } delay(4);
} /*读一个字节函数*/ uchar read_byte() { uchar i,value; for(i=0;i<8;i++) { dq=0; value>>=1; dq=1; if(dq) value=value|0x80; delay(4); } return value; }
/*读温度函数*/ uchar readtem() { uchar a,b; init(); write_byte(0xcc);//跳过ROM write_byte(0x44);//开始采样测温 delay(200); //此时所测温度已放入寄存器中,可以读取 init(); write_byte(0xcc); write_byte(0xbe);//读取数据 a=read_byte(); //暂存器低位,后四位为小数点 b=read_byte(); //高位,前五位为符号位 b<<=4; b+=(a&0xf0)>>4;//b的前四位与a的后四位组成一个字节,8位 return b; }
/*数码管显示函数*/ void display() { P2=0; P0=table[temp/10]; delay(100); P2=1; P0=table[temp%10]; delay(100); } /*主函数*/ void main() { while(1) { temp=readtem(); display(); }
}
[ 本帖最后由 Learner_new 于 2012-1-31 17:30 编辑 ]
|