找了一天了,是在找不出来哪儿错了,我是看天狼星编程的,没办法了,只能求助各位大神了。大家有空就请帮帮忙吧,纠结死我了
温度传感器正常,我用开发板的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 编辑 ]
此帖出自
小平头技术问答
void init()
{
dq=1;
delay(1);
dq=0;
delay(110);
dq=1;
delay(30);
if(dq==0)
led=0;
delay(200);
}
一周热门 更多>