当前位置:首页 > 单片机 > 单片机
[导读]#include#define uchar unsigned char #define uint unsigned int #define DQ RC1 #define DQ_HIGH() TRISC1=1 #define DQ_LOW() TRISC1=0;DQ=0 __CONFIG(0x3B31); const uchar table[]={0x3f,0x06,0x5b,0x4f,

#include

#define uchar unsigned char
#define uint unsigned int
#define DQ RC1
#define DQ_HIGH() TRISC1=1
#define DQ_LOW() TRISC1=0;DQ=0
__CONFIG(0x3B31);
const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f};
const uchar table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
0x87,0xff,0xef};
uint temper;
uchar a1,a2,a3,a4;
void delay(uint x);
void delayus(uint,uchar);
void init();
void disp(uchar num1,uchar num2,uchar num3,uchar num4);
void write_byte(uchar date);
uchar read_byte();
void get_tem();
void main()
{
init();
while(1)
{
/*delayus(0,0);//20
delayus(1,1);//30
delayus(2,2);//45
delayus(4,4);//70
delayus(70,30);//750
delayus(50,10);//500*/
//uchar num;
get_tem();
//for(num=20;num>0;num--)
//disp(a1,a2,a3,a4);
}
}
void reset()
{
uchar st=1;
DQ_HIGH();
NOP();NOP();
while(st)
{
DQ_LOW();
delayus(70,30);
DQ_HIGH();
delayus(4,4);
if(DQ==1)
st=1;
else
st=0;
delayus(50,10);
}
}
void write_byte(uchar date)
{
uchar i,temp;
DQ_HIGH();
NOP();NOP();
for(i=8;i>0;i--)
{
temp=date&0x01;//01010101
DQ_LOW();
delayus(0,0);
if(temp==1)
DQ_HIGH();
delayus(2,2);
DQ_HIGH();
date=date>>1;//00101010
}
}
uchar read_byte()
{
uchar i,date;
static bit j;
for(i=8;i>0;i--)
{
date=date>>1;
DQ_HIGH();
NOP();NOP();
DQ_LOW();
NOP();NOP();NOP();NOP();NOP();NOP();
DQ_HIGH();
NOP();NOP();NOP();NOP();
j=DQ;
if(j==1)
date=date|0x80;//1000 0000
delayus(1,1);
}
return (date);
}

void get_tem()
{
uchar tem1,tem2,num;
float aaa;
reset(); //复位
write_byte(0xCC);//跳过ROM
write_byte(0x44);//温度转换
for(num=100;num>0;num--)
disp(a1,a2,a3,a4);
reset();
write_byte(0xCC);
write_byte(0xBE);
tem1=read_byte();
tem2=read_byte();
aaa=(tem2*256+tem1)*6.25;
temper=(int)aaa;
a1=temper/1000;
a2=temper%1000/100;
a3=temper%100/10;
a4=temper%10;
}
void delayus(uint x,uchar y)
{
uint i;
uchar j;
for(i=x;i>0;i--);
for(j=y;j>0;j--);
}
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void init()
{
TRISD=0;
TRISA=0;
PORTD=0;
PORTA=0;
}
void disp(uchar num1,uchar num2,uchar num3,uchar num4)
{
PORTD=table[num1];//显示第一个数码管
PORTA=0x20;//0010 0000
delay(2);
PORTD=table1[num2];//显示第二个数码管
PORTA=0x10;//0001 0000
delay(2);
PORTD=table[num3];//显示第三个数码管
PORTA=0x08;//0000 1000
delay(2);
PORTD=table[num4];//显示第四个数码管
PORTA=0x04;//0000 0100
delay(2);
/*PORTD=table[num5];//显示第五个数码管
PORTA=0x02;//0000 0010
delay(2);
PORTD=table[num6];//显示第六个数码管
PORTA=0x01;//0000 0001
delay(2);*/
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

你了解DS1820工作原理嘛,今天就让我来带你深入探索数字温度传感器的科技奥秘。在科技飞速发展的今天,传感器作为获取物理世界信息的重要工具,已经广泛应用于各个领域。其中,DS1820作为一款数字温度传感器,以其独特的优势...

关键字: ds1820 数字温度传感器

DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。

关键字: ds18b20 温度传感器 数字信号

pic单片机应用很多,生活中到处都有pic单片机的身影。小编个人也是从事pic单片机开发的人员之一,对于pic单片机有一定的理解。今天,小编将带领大家一起看一下pic单片所具备的8大优势。

关键字: pic 单片机 寄存器

DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型...

关键字: DS18B20 数字温度传感器

#51单片机#DS18B20硬件原理以及通信的工作时序

关键字: ds18b20 通信

DS18B20型智能温度传感器的工作原理

关键字: ds18b20 原理

DS18B20是一款常用的高精度的单总线数字温度测量芯片。具有体积小,硬件开销低,抗干扰能力强,精度高的特点。

关键字: ds18b20 手册

DS18B20是一款常用的高精度的单总线数字温度测量芯片。具有体积小,硬件开销低,抗干扰能力强,精度高的特点。

关键字: ds18b20 引脚图

在下述的内容中,小编将会对恩智浦PCT2075数字温度传感器的相关消息予以报道。

关键字: 数字温度传感器 传感器 温度传感器

LED显示屏广泛应用于工矿企业、学校、商场、店铺、公共场所等进行图文显示,广告宣传,信息发布。本文设计一种由4个16×16点阵LED模块组成的显示屏,由单片机作控制器,平滑移动显示任意多个文字或图形符号,本电路可级联扩展...

关键字: AT89C51 单片机控制 LED显示屏
关闭