51单片机用DS18B20做温控器,想用数码管高位的后3位显示温度,十位,个位,小数

void Display()
{//P0=0X06;
P0=seg_data[disp_buf[3]];//显示百位
P20=0;//开百位显示
Delay_ms(200);//延时2ms
P20=1;//关百位显示
P0=seg_data[disp_buf[2]];//显示十位
P21=0;//开十位显示
Delay_ms(200);//延时2ms
P21=1;//关十位显示
P0=seg_data[disp_buf[1]];//显示个位
P22=0;
DOT=1;//显示小数点
Delay_ms(200);//延时2ms
P22=1;//关个位显示

P0=seg_data[disp_buf[0]];//显示小数
P23=0;
Delay_ms(200);//延时2ms
P23=1;
}
以上程序是否有错啊,我的LED是共阴的

第1个回答  2012-06-22
void dis_temp(uint t)//显示温度数值函数 t传递的是整形的温度值
{
uint shi,ge,shifen;
shi=t/100;
ge=t%100/10;
shifen=t%100%10;

P1=table[shi];
led1=0; //位选,第一个数码管亮
delay(5); //延时,亮一会
led1=1; //CLOSE

P1=table[ge];
led2=0; //位选,第二个数码管亮
delay(5);
led2=1;

P1=table[shifen];
led3=0; //位选,第三个数码管亮
delay(5);
led3=1;

led4=1;
}追问

你是不是有相关程序?实现DS18B20测温的,我那个程序老是不能实现,我想请你帮我看下我的程序,可以么?

追答

你说一下你下载到单片机以后数码管出现什么现象,和你期望现象的差距。

第2个回答  2012-06-28
P0口有上拉电阻吗?

对于P口进行数码管扫描显示,数码管位数较多的时候,最好不要对P口用位寻址,用这样的写法:
比如想让P1^0=0;
你可以这样写:

P1&=0XFE;本回答被网友采纳
第3个回答  2012-06-29
建议你买一本郭天祥出的书--《新概念51单片机C语言教程》,对初学者很有用,我就是看他的视频如入门的,现在已经接了好几个项目了
相似回答