找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1850|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机DS18B20 四位共阳数码管

[复制链接]
跳转到指定楼层
楼主
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char   
sbit DQ=P3^7;   
sbit DIAN = P1^7;         
sbit C1 = P2^0;
sbit C2 = P2^1;
sbit C3 = P2^2;
sbit C4 = P2^3;
uchar x=0;         
signed char m;     
uchar n;           
uint z;
uint c;
uchar num[4]={0};
uchar code  LEDData[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void display(unsigned char k);
void delay( int o)
{
while(o--);
}
void init_DS18b20 (void)
{
unsigned char x=0;
DQ = 1;
delay(8);
DQ = 0;
delay(100);  
DQ = 1;
delay(20);
x = DQ;
delay(20);
}
uchar Read_One_Byte(void)
{
uchar i=0;
uchar dat=0;
for(i=8;i>0;i--)
{
DQ=0;
dat>>=1;
DQ=1;
if(DQ)
dat|=0x80;
delay(4);
}
return(dat);
}
void Write_One_Byte(uchar dat)
{
uchar i=0;
for(i=8;i>>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
}
unsigned int ReadTemperature(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned int t=0;
float tt=0;
init_DS18B20();
Write_One_Byte(0xCC);
Write_One_Byte(0x44);
init_DS18B20();
Write_One_Byte(0xCC);
Write_One_Byte(0xBE);
a=Read_One_Byte();
b=Read_One_Byte();
t=b;
t<<=8;
t=t|a;
tt=t*0.0625;
t=tt*10+0.5;
return(t);
}
void check_wendu(void)
{
uint a,b;
c=ReadTemperature();   
a=c/100;         
b=c/10-a*10;      
m=c/10;         
if(m<=0)      
{
  m=0;
}
n=c-a*100-b*10;      
}
void Disp_init(void)   
{
P1 =0x7f;        
P2 = 0xf8;
delay(200);
P2 = 0xf4;
delay(200);   
P2 = 0xf2;
delay(200);
P2 = 0xf1;
delay(200);
P2 = 0xFF;         
}
void Disp_Temperature(void)   
{
int i=0;
for(i=0;i<4;i++)
{
display(i);//0,1
delay(1000);
    P1 = 0XFF; }        
}
void display(unsigned char k)
{//s=0 dat=1
//unsigned char n = 0x01;
switch(k)
{
case 0:
C1=1;C2=0;C3=0;C4=0;
P1 =LEDData[m/10];//P1=Seg[h/10];
break;
case 1:
C1=0;C2=1;C3=0;C4=0;
  P1 =LEDData[m%10];
  //P1=Seg[h%10];   
break;
case 2:
C1=0;C2=0;C3=1;C4=0;
P1 =0x9c;//P1=0xbf;
break;
case 3:
C1=0;C2=0;C3=0;C4=1;
  P1 =0xc6;//P1=Seg[m/10] ;
break;
}}
void main(void)
{
while(1)
  {
  unsigned int ReadTemperature();
  check_wendu();
  Disp_init();
  display();
  Disp_Temperature();
  }
}


SKUB9W`63`_LMEA2ABA8WP8.png (173.61 KB, 下载次数: 41)

SKUB9W`63`_LMEA2ABA8WP8.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表