DS18b20数码管显示温度问题?(显示不了,请帮帮忙!)

来源:百度知道 编辑:UC知道 时间:2024/06/19 19:54:12
#include<reg52.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char code shuma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0-9的数码管代码
sbit ds=P2^7;//ds18b20B20 信号线
sbit wela=P2^6;//数码管位选
sbit a1=P2^0;//第一个数码管
sbit b1=P2^1;//第二个数码管
sbit c1=P2^2;//第三个数码管
uint temp;//定义整型温度
float f_temp;//定义浮点型温度
int t_l1=270;//定义温度下限值*10
int t_l2=250;//定义温度下限值*10
int t_h1=300;//定义温度上限值*10
int t_h2=320; //定义温度上限值*10 void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

void dsreset(void) // 复位,初始化函数
{
uint i;
ds=0; //数据线拉到低电平
i=103;
while(i>0)i--; //延迟480到960US
ds=1; //数据线拉到高电平
i=4;
while(i>0)i--; // 延迟15到60US
}
// 读一位数据函数
bit readbit(void)
{
uint i;
bit dat; //1位
ds=

您程序思路不太好,
我觉得应该这样写:显示要不断循环,在循环中判断相应标志位,从而改变显示数据,这样当温度改变的时候,改变标志位,从而改变显示,而且这样写能有效改善显示效果。(不会闪)
还有不明的可以再问我。。

延时时间在长点试试。
在切换到下一位显示前,得关闭前一位的输出。