在Keil uVision5,利用DB18B20芯片采集温度,并通过八段码显示出来
时间: 2024-05-26 20:11:28 浏览: 19
您好,这是一个非常实用的问题。在Keil uVision5中,您可以使用以下代码来采集温度并通过八段码显示出来:
#include <REG51.h>
#include <LCD.h>
sbit ds = P1^4;
void Delay(T)
{
int i,j;
for(i=T;i>0;i--)
{
for(j=120;j>0;j--);
}
}
void Init18B20()
{
ds = 1;
Delay(10);
ds = 0;
Delay(500);
ds = 1;
Delay(10);
}
void Write18B20(Dat)
{
int i;
for(i=8;i>0;i--)
{
ds = 0;
ds = Dat & 0x01;
Delay(10);
ds = 1;
Dat >>= 1;
}
}
unsigned int Read18B20()
{
unsigned int num=0;
unsigned char i, j;
for(i=0;i<16;i++)
{
ds = 0;
j = ds;
Delay(10);
j = ds;
num >>= 1;
if(j)
{
num |= 0x8000;
}
Delay(50);
ds = 1;
}
return(num);
}
void Display(unsigned char num)
{
if(num>=10)
{
num=10;
}
switch(num)
{
case 0 :
P0 = 0xc0;
break;
case 1 :
P0 = 0xf9;
break;
case 2 :
P0 = 0xa4;
break;
case 3 :
P0 = 0xb0;
break;
case 4 :
P0 = 0x99;
break;
case 5 :
P0 = 0x92;
break;
case 6 :
P0 = 0x82;
break;
case 7 :
P0 = 0xf8;
break;
case 8 :
P0 = 0x80;
break;
case 9 :
P0 = 0x90;
break;
case 10 :
P0 = 0xdf;
break;
}
}
unsigned int GetTemp()
{
unsigned int temp=0;
Init18B20();
Write18B20(0xCC);
Write18B20(0x44);
Delay(1000);
Init18B20();
Write18B20(0xCC);
Write18B20(0xBE);
temp=Read18B20()>>4;
temp=temp*10+5;
return temp;
}
void main()
{
unsigned int temp;
while(1)
{
temp=GetTemp();
Display(temp/10);
P2=0xfe;
Delay(1);
P2=0xff;
Display(temp%10);
P2=0xfd;
Delay(1);
P2=0xff;
Delay(1000);
}
}
这段代码使用的是单总线协议读取DB18B20芯片的温度值,然后将其显示在八段码上。您只需将硬件接线正确,将代码复制到Keil中,然后编译并下载到单片机上即可实现采集温度并显示的功能。希望这能帮助到您!
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)