为什么我弄这个点阵屏的温度变化不了,能够显示汉字和...
时间:10-02
整理:3721RD
点击:
个人感觉是是“uchar wendu[]={10,1,4,11}; //温度显示缓存”和uchar disp_buf[]={0x00,0x00,0x00}; //温度显示数据缓冲区没有联系起来,又不会弄,谁帮忙改下
程序如下:
#include <reg51.h> // 引用标准库的头文件
/***********************************************************************/
#define uchar unsigned char//常用符号定义
#define uint unsigned int
//寄存器宏定义
#define DECODE_MODE 0x09 //译码控制寄存器
#define INTENSITY 0x0A //亮度控制寄存器
#define SCAN_LIMIT 0x0B //扫描界限寄存器
#define SHUT_DOWN 0x0C //关断模式寄存器
#define DISPLAY_TEST 0x0F //测试控制寄存器
sbit shi_zhong=P2^5; //595时钟端
sbit shu_ju=P2^6; //595数据端
sbit suo_cun=P2^7; //595锁存端
sbit DQ=P3^7; //DS18B20数据I/O口
uchar code tab[]={ //不带分隔符阿拉伯数字
0x3C,0x7E,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x3C,/*"未命名文件",0*/
0x10,0x18,0x1C,0x1C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x3C,/*"未命名文件",0*/
0x3C,0x7E,0x66,0x66,0x60,0x60,0x30,0x30,0x18,0x18,0x0C,0x0C,0x06,0x06,0x7E,0x7E,/*"未命名文件",0*/
0x3C,0x7E,0x66,0x60,0x60,0x60,0x60,0x7C,0x7C,0x60,0x60,0x60,0x60,0x66,0x7E,0x3C,/*"未命名文件",0*/
0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0xFE,0xFE,0x60,0x60,0x60,0x60,0x60,/*"未命名文件",0*/
0x3C,0x7E,0x06,0x06,0x06,0x06,0x06,0x3E,0x7C,0x60,0x60,0x60,0x60,0x66,0x7E,0x3C,/*"未命名文件",0*/
0x3C,0x7E,0x66,0x06,0x06,0x06,0x06,0x3E,0x7E,0x66,0x66,0x66,0x66,0x66,0x7E,0x3C,/*"未命名文件",0*/
0x3C,0x7E,0x66,0x66,0x66,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,/*"未命名文件",0*/
0x3C,0x7E,0x66,0x66,0x66,0x66,0x66,0x3C,0x3C,0x66,0x66,0x66,0x66,0x66,0x7E,0x3C,/*"未命名文件",0*/
0x3C,0x7E,0x66,0x66,0x66,0x66,0x66,0x7E,0x7C,0x60,0x60,0x60,0x60,0x66,0x7E,0x3C,/*"未命名文件",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //不显示
0x00,0x06,0x09,0x09,0x06,0x70,0x88,0x04,0x04,0x04,0x04,0x04,0x04,0x88,0x70,0x00//温度符号
};
uchar code tab7[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//清屏
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//清屏
0xC0,0x00,0x88,0x21,0xFC,0x7F,0x0E,0x30,0xF4,0x1F,0xC0,0x02,0x60,0x04,0x30,0x0C,
0xF8,0x1F,0x90,0x09,0x80,0x01,0xF0,0x0F,0x80,0x01,0x80,0x01,0x80,0x21,0xFC,0x7F,//室
0x80,0x00,0x80,0x01,0x80,0x01,0x84,0x41,0xFC,0xFF,0x8C,0x61,0x8C,0x61,0xCC,0x63,
0xCC,0x66,0x6C,0x6C,0x2C,0x7C,0x1C,0x68,0x0C,0x60,0x0C,0x60,0x0C,0x78,0x04,0x20,//内
0x84,0x20,0x88,0x7F,0x98,0x31,0x88,0x3F,0x82,0x31,0xA4,0x31,0xAC,0x3F,0x94,0x10,
0x50,0x40,0xD8,0xFF,0xCA,0x6A,0xCC,0x6A,0xCC,0x6A,0xDC,0x6A,0xFC,0xFF,0x08,0x00,//温
0x00,0x02,0x08,0x46,0xF8,0xFF,0x98,0x08,0x98,0x59,0xF8,0xFF,0x98,0x19,0x98,0x1F,
0x98,0x28,0xD8,0x7F,0x98,0x31,0x0C,0x1B,0x0C,0x0E,0x04,0x3B,0x82,0xF1,0x60,0x40,//度
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//清屏
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00//清屏
};
uchar wendu[]={10,1,4,11}; //温度显示缓存
uchar disp_buf[]={0x00,0x00,0x00}; //温度显示数据缓冲区
uchar Tem_H,Tem_L; //用于存储温度转换值高8位和低8位
bit Flag=0; //正、负温度值符号标志位,0为正,1为负
/***********函数声明***************************/
void fasong_shuju(uchar dat595,c);
void delay(uint n);
void disp(uchar DM);
void zuo_yi(uchar tab[],uchar n);
void dispmove(void);
void shujuf_enjie(void); //数据分解
void delay_DS18B20(int us); //延时函数
bit Init_DS18B20(void); //DS18b20初始化函数
uchar Read_bit(void); //DS18b20读一个字节
void Write_bit(uchar val_bit); //DS18b20写一个字节
uchar Read_byte(void); //DS18B20读字节函数
void Write_byte(uchar com); //DS18B20写字节函数
int ReadTemperature(void); //DS18b20读取温度
void adj_dat(void); //显示字节调整函数
void DelayMs(uint msec);
uchar GeKey(void);
void key (void);
void shujutiaozheng(void);
/***********主函数***************************/
main() //主程序
{
while(1)
{
{
dispmove(); //显示
adj_dat();
}
}
}
/***************595发送8位扫描段码子程*********/
void fasong_shuju(uchar dat595,c)
{
uchar dat=dat595;
uchar i;
for(i=0;i<c;i++)
{
dat<<=1;
shu_ju=CY;
shi_zhong=0;
shi_zhong=1;
}
}
/*****************延时子程序*******/
void delay(uint n)
{
uint i,j;
for(i=0;i<n;i++)
for(j=0;j<100;j++);
}
/*********************分屏显示数字************************/
void disp(uchar DM)
{ uchar i,row,j,m;
uint g;
for(j=0;j<100;j++) //动态显示5次后,再移动
{
row=0x08; //74138的编码初值08 第一行有效
for(i=0;i<16;i++) //16行循环有效
{
suo_cun=0; //595锁存端无效
switch(DM)
{
case 4:{
for(m=4;m>0;m--)
{
g=i+wendu[m-1]*16;
fasong_shuju(~tab[g],8);
}
}break;
}
P2=row; //对应行输出
row++; //行号加1
suo_cun=1; //595锁存数据
delay(0); //延时后刷屏
}
}
}
void dispmove(void)
{
disp(0);
zuo_yi(tab7,8);
disp(4);
}
void zuo_yi(uchar tab[],uchar n)
{ uchar i,row,j,m,k,n1;
uint g;
for(n1=0;n1<(n-2);n1++) //左移字数
{
for(k=16;k>0;k--) //左移16位
{
for(j=0;j<1;j++) //动态显示1后,再移动
{
row=0x08; //74138的编码初值08 第一行有效
for(i=0;i<16;i++) //16行循环有效
{
suo_cun=0; //595锁存端无效
if(k>8)
{
for(m=3;m>0;m--) //4组16×16数据发送循环
{
if(m>1)
{
g=2*i+m*32-32+n1*32;
fasong_shuju(~tab[g+1],8);
fasong_shuju(~tab[g],8);
}
else
{
g=2*i+m*32-32+n1*32;
fasong_shuju(~tab[g+1],8);
fasong_shuju(~tab[g],k-8);
}
}
}
else
{
for(m=3;m>0;m--)
{
if(m>1)
{
g=2*i+m*32-32+n1*32;//取字模
fasong_shuju(~tab[g+1],8); //上半屏
fasong_shuju(~tab[g],8); //下半屏
}
else
{
g=2*i+m*32-32+n1*32;//取字模
fasong_shuju(~tab[g+1],k); //上半屏
fasong_shuju(~tab[g],0); //下半屏
}
}
}
P2=row; //对应行输出
row++; //行号加1
suo_cun=1; //595锁存数据
}
}
}
}
}
/**********************延时函数**************************/
void delay_DS18B20(int us)
{
int i;
for(i=0;i<us;i++); //11.0592MHz下,延时时间为(24+16*us)
}
/*******************DS18B20复位函数***********************/
bit Init_DS18B20(void)
{
bit res;
DQ=0; //拉低DQ线
delay_DS18B20(29); //延时480us
DQ=1; //DQ线置高
delay_DS18B20(10); //延时
res=DQ; //读取复位响应信号
delay_DS18B20(10);
return(res); //返回响应值
}
/*******************DS18B20读位函数***********************/
uchar Read_bit(void)
{
uchar i;
DQ=0; //拉低DQ线
DQ=1; //DQ线置高
for(i=0;i<3;i++); //延时15us
return(DQ); //返回当前读取值
}
/*******************DS18B20写位函数***********************/
void Write_bit(uchar val_bit)
{
DQ=0; //拉低DQ
if(val_bit==1)DQ=1; //从DQ线发送1
delay_DS18B20(5); //延时
DQ=1;
}
/********************DS18B20读字节函数*********************/
uchar Read_byte(void)
{
uchar i;
uchar temp=0;
for(i=0;i<8;i++)
{
if(Read_bit())temp|=0x01<<i; //向temp写入读取位
delay_DS18B20(6);
}
return(temp); //返回读取字节
}
/*********************DS18B20写字节函数*******************/
void Write_byte(uchar com)
{
uchar i,temp;
for(i=0;i<8;i++)
{
temp=com>>i; //右移i次取低位发送
temp&=0x01;
Write_bit(temp);
}
delay_DS18B20(5);
}
/*****************温度值正负判断程序******************/
uint Get_Tem(uchar dath,uchar datl)
{
uint temp=0,temp_h=0,temp_l;
temp_h=(uint)dath;
temp=temp_h&0x00ff;
temp_l=(uint)datl;
temp_l&=0x00ff;
temp=(temp<<8)|temp_l; //去掉符号值后合并成16位数据
if((dath&0x80)==0x80)
{
Flag=1;
temp=~temp+1; //负数时求补
}
else
{
Flag=0;
}
return(temp);
}
int ReadTemperature(void)
{
uint temp=0;
float temp1=0;
while(!(Init_DS18B20()));
Write_byte(0xCC); //跳过读序号列号的操作
Write_byte(0x44); //启动温度转换
while(!(Init_DS18B20()));
Write_byte(0xCC); //跳过读序号列号的操作
Write_byte(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
Tem_L=Read_byte(); //低位
Tem_H=Read_byte(); //高位
temp=Get_Tem(Tem_H,Tem_L);
temp1=temp*0.0625;
temp=temp1*10+0.5;
return(temp);
}
void adj_dat(void)
{
uint temp;
EA=0;
temp=ReadTemperature(); //读温度
if(Flag)
disp_buf[0]=10;
else
disp_buf[0]=11;
disp_buf[1]=temp%1000/100; //显示十位
if(disp_buf[1]==0)
{
disp_buf[1]=disp_buf[0];
}
disp_buf[2]=temp%100/10; //显示个位
EA=1;
}
/***************************************************************************************************************************/
程序如下:
#include <reg51.h> // 引用标准库的头文件
/***********************************************************************/
#define uchar unsigned char//常用符号定义
#define uint unsigned int
//寄存器宏定义
#define DECODE_MODE 0x09 //译码控制寄存器
#define INTENSITY 0x0A //亮度控制寄存器
#define SCAN_LIMIT 0x0B //扫描界限寄存器
#define SHUT_DOWN 0x0C //关断模式寄存器
#define DISPLAY_TEST 0x0F //测试控制寄存器
sbit shi_zhong=P2^5; //595时钟端
sbit shu_ju=P2^6; //595数据端
sbit suo_cun=P2^7; //595锁存端
sbit DQ=P3^7; //DS18B20数据I/O口
uchar code tab[]={ //不带分隔符阿拉伯数字
0x3C,0x7E,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x3C,/*"未命名文件",0*/
0x10,0x18,0x1C,0x1C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x3C,/*"未命名文件",0*/
0x3C,0x7E,0x66,0x66,0x60,0x60,0x30,0x30,0x18,0x18,0x0C,0x0C,0x06,0x06,0x7E,0x7E,/*"未命名文件",0*/
0x3C,0x7E,0x66,0x60,0x60,0x60,0x60,0x7C,0x7C,0x60,0x60,0x60,0x60,0x66,0x7E,0x3C,/*"未命名文件",0*/
0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0xFE,0xFE,0x60,0x60,0x60,0x60,0x60,/*"未命名文件",0*/
0x3C,0x7E,0x06,0x06,0x06,0x06,0x06,0x3E,0x7C,0x60,0x60,0x60,0x60,0x66,0x7E,0x3C,/*"未命名文件",0*/
0x3C,0x7E,0x66,0x06,0x06,0x06,0x06,0x3E,0x7E,0x66,0x66,0x66,0x66,0x66,0x7E,0x3C,/*"未命名文件",0*/
0x3C,0x7E,0x66,0x66,0x66,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,/*"未命名文件",0*/
0x3C,0x7E,0x66,0x66,0x66,0x66,0x66,0x3C,0x3C,0x66,0x66,0x66,0x66,0x66,0x7E,0x3C,/*"未命名文件",0*/
0x3C,0x7E,0x66,0x66,0x66,0x66,0x66,0x7E,0x7C,0x60,0x60,0x60,0x60,0x66,0x7E,0x3C,/*"未命名文件",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //不显示
0x00,0x06,0x09,0x09,0x06,0x70,0x88,0x04,0x04,0x04,0x04,0x04,0x04,0x88,0x70,0x00//温度符号
};
uchar code tab7[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//清屏
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//清屏
0xC0,0x00,0x88,0x21,0xFC,0x7F,0x0E,0x30,0xF4,0x1F,0xC0,0x02,0x60,0x04,0x30,0x0C,
0xF8,0x1F,0x90,0x09,0x80,0x01,0xF0,0x0F,0x80,0x01,0x80,0x01,0x80,0x21,0xFC,0x7F,//室
0x80,0x00,0x80,0x01,0x80,0x01,0x84,0x41,0xFC,0xFF,0x8C,0x61,0x8C,0x61,0xCC,0x63,
0xCC,0x66,0x6C,0x6C,0x2C,0x7C,0x1C,0x68,0x0C,0x60,0x0C,0x60,0x0C,0x78,0x04,0x20,//内
0x84,0x20,0x88,0x7F,0x98,0x31,0x88,0x3F,0x82,0x31,0xA4,0x31,0xAC,0x3F,0x94,0x10,
0x50,0x40,0xD8,0xFF,0xCA,0x6A,0xCC,0x6A,0xCC,0x6A,0xDC,0x6A,0xFC,0xFF,0x08,0x00,//温
0x00,0x02,0x08,0x46,0xF8,0xFF,0x98,0x08,0x98,0x59,0xF8,0xFF,0x98,0x19,0x98,0x1F,
0x98,0x28,0xD8,0x7F,0x98,0x31,0x0C,0x1B,0x0C,0x0E,0x04,0x3B,0x82,0xF1,0x60,0x40,//度
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//清屏
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00//清屏
};
uchar wendu[]={10,1,4,11}; //温度显示缓存
uchar disp_buf[]={0x00,0x00,0x00}; //温度显示数据缓冲区
uchar Tem_H,Tem_L; //用于存储温度转换值高8位和低8位
bit Flag=0; //正、负温度值符号标志位,0为正,1为负
/***********函数声明***************************/
void fasong_shuju(uchar dat595,c);
void delay(uint n);
void disp(uchar DM);
void zuo_yi(uchar tab[],uchar n);
void dispmove(void);
void shujuf_enjie(void); //数据分解
void delay_DS18B20(int us); //延时函数
bit Init_DS18B20(void); //DS18b20初始化函数
uchar Read_bit(void); //DS18b20读一个字节
void Write_bit(uchar val_bit); //DS18b20写一个字节
uchar Read_byte(void); //DS18B20读字节函数
void Write_byte(uchar com); //DS18B20写字节函数
int ReadTemperature(void); //DS18b20读取温度
void adj_dat(void); //显示字节调整函数
void DelayMs(uint msec);
uchar GeKey(void);
void key (void);
void shujutiaozheng(void);
/***********主函数***************************/
main() //主程序
{
while(1)
{
{
dispmove(); //显示
adj_dat();
}
}
}
/***************595发送8位扫描段码子程*********/
void fasong_shuju(uchar dat595,c)
{
uchar dat=dat595;
uchar i;
for(i=0;i<c;i++)
{
dat<<=1;
shu_ju=CY;
shi_zhong=0;
shi_zhong=1;
}
}
/*****************延时子程序*******/
void delay(uint n)
{
uint i,j;
for(i=0;i<n;i++)
for(j=0;j<100;j++);
}
/*********************分屏显示数字************************/
void disp(uchar DM)
{ uchar i,row,j,m;
uint g;
for(j=0;j<100;j++) //动态显示5次后,再移动
{
row=0x08; //74138的编码初值08 第一行有效
for(i=0;i<16;i++) //16行循环有效
{
suo_cun=0; //595锁存端无效
switch(DM)
{
case 4:{
for(m=4;m>0;m--)
{
g=i+wendu[m-1]*16;
fasong_shuju(~tab[g],8);
}
}break;
}
P2=row; //对应行输出
row++; //行号加1
suo_cun=1; //595锁存数据
delay(0); //延时后刷屏
}
}
}
void dispmove(void)
{
disp(0);
zuo_yi(tab7,8);
disp(4);
}
void zuo_yi(uchar tab[],uchar n)
{ uchar i,row,j,m,k,n1;
uint g;
for(n1=0;n1<(n-2);n1++) //左移字数
{
for(k=16;k>0;k--) //左移16位
{
for(j=0;j<1;j++) //动态显示1后,再移动
{
row=0x08; //74138的编码初值08 第一行有效
for(i=0;i<16;i++) //16行循环有效
{
suo_cun=0; //595锁存端无效
if(k>8)
{
for(m=3;m>0;m--) //4组16×16数据发送循环
{
if(m>1)
{
g=2*i+m*32-32+n1*32;
fasong_shuju(~tab[g+1],8);
fasong_shuju(~tab[g],8);
}
else
{
g=2*i+m*32-32+n1*32;
fasong_shuju(~tab[g+1],8);
fasong_shuju(~tab[g],k-8);
}
}
}
else
{
for(m=3;m>0;m--)
{
if(m>1)
{
g=2*i+m*32-32+n1*32;//取字模
fasong_shuju(~tab[g+1],8); //上半屏
fasong_shuju(~tab[g],8); //下半屏
}
else
{
g=2*i+m*32-32+n1*32;//取字模
fasong_shuju(~tab[g+1],k); //上半屏
fasong_shuju(~tab[g],0); //下半屏
}
}
}
P2=row; //对应行输出
row++; //行号加1
suo_cun=1; //595锁存数据
}
}
}
}
}
/**********************延时函数**************************/
void delay_DS18B20(int us)
{
int i;
for(i=0;i<us;i++); //11.0592MHz下,延时时间为(24+16*us)
}
/*******************DS18B20复位函数***********************/
bit Init_DS18B20(void)
{
bit res;
DQ=0; //拉低DQ线
delay_DS18B20(29); //延时480us
DQ=1; //DQ线置高
delay_DS18B20(10); //延时
res=DQ; //读取复位响应信号
delay_DS18B20(10);
return(res); //返回响应值
}
/*******************DS18B20读位函数***********************/
uchar Read_bit(void)
{
uchar i;
DQ=0; //拉低DQ线
DQ=1; //DQ线置高
for(i=0;i<3;i++); //延时15us
return(DQ); //返回当前读取值
}
/*******************DS18B20写位函数***********************/
void Write_bit(uchar val_bit)
{
DQ=0; //拉低DQ
if(val_bit==1)DQ=1; //从DQ线发送1
delay_DS18B20(5); //延时
DQ=1;
}
/********************DS18B20读字节函数*********************/
uchar Read_byte(void)
{
uchar i;
uchar temp=0;
for(i=0;i<8;i++)
{
if(Read_bit())temp|=0x01<<i; //向temp写入读取位
delay_DS18B20(6);
}
return(temp); //返回读取字节
}
/*********************DS18B20写字节函数*******************/
void Write_byte(uchar com)
{
uchar i,temp;
for(i=0;i<8;i++)
{
temp=com>>i; //右移i次取低位发送
temp&=0x01;
Write_bit(temp);
}
delay_DS18B20(5);
}
/*****************温度值正负判断程序******************/
uint Get_Tem(uchar dath,uchar datl)
{
uint temp=0,temp_h=0,temp_l;
temp_h=(uint)dath;
temp=temp_h&0x00ff;
temp_l=(uint)datl;
temp_l&=0x00ff;
temp=(temp<<8)|temp_l; //去掉符号值后合并成16位数据
if((dath&0x80)==0x80)
{
Flag=1;
temp=~temp+1; //负数时求补
}
else
{
Flag=0;
}
return(temp);
}
int ReadTemperature(void)
{
uint temp=0;
float temp1=0;
while(!(Init_DS18B20()));
Write_byte(0xCC); //跳过读序号列号的操作
Write_byte(0x44); //启动温度转换
while(!(Init_DS18B20()));
Write_byte(0xCC); //跳过读序号列号的操作
Write_byte(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
Tem_L=Read_byte(); //低位
Tem_H=Read_byte(); //高位
temp=Get_Tem(Tem_H,Tem_L);
temp1=temp*0.0625;
temp=temp1*10+0.5;
return(temp);
}
void adj_dat(void)
{
uint temp;
EA=0;
temp=ReadTemperature(); //读温度
if(Flag)
disp_buf[0]=10;
else
disp_buf[0]=11;
disp_buf[1]=temp%1000/100; //显示十位
if(disp_buf[1]==0)
{
disp_buf[1]=disp_buf[0];
}
disp_buf[2]=temp%100/10; //显示个位
EA=1;
}
/***************************************************************************************************************************/
我都系初哥,帮不了,你用仿真的还是直接在PCB板上跑的?
坐等大神,哇 咔 咔
直接实物上用万能板