零件有DS18B20AT89C514位7段数码管。P1.0接温度传感器P2.0和P3.0接数码管段选与位选。现在一仿真都是亮的。中间还有一个74LS245191都接地。//*******************************//包含文... 零件 有 DS18B20 AT89C51 4位7段数码管。
P1.0接温度传感器 P2.0和 P3.0接数码管 段选与位选。
现在一仿真 都是亮的。
中间 还有一个 74LS245 19 1都接地。
//*******************************
//包含文件,程序开始
//*******************************
#include
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P1^0;//18b20 数据线引脚
sbit LED=P1^3;
sbit input=P1^1;
unsigned char flag;//负数标志
//行扫描数组
uchar code scan[4]={0xef,0xf7,0xfb,0xfd};
//数码管显示的断码表
uchar code table[13]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40,0x39,0x00};//,-,C,kong
//小数部分显示查询表
uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
uchar dispbuf[8];//显示缓冲区
uchar temper[2];//存放温度的数组
uchar TCNT;
//*********************************
//延时函数
//*********************************
void delay (unsigned int us)
{
while(us--);
}
//*********************************
//DS18B20复位函数
//*********************************
void reset(void)
{
uchar x=0;
DQ=1;
delay(8);
DQ=0;
delay(80);
DQ=1;
delay(14);
x=DQ;
delay(20);
}
//********************************
//从DS18B20中读一个字节
//********************************
uchar readbyte(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);
}
//********************************
//向DS18B20中写一个字节
//********************************
void writebyte(unsigned char dat)
{
uchar i=0;
for (i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
delay(4);
}
//*****************************
//从DS18B20中读取实时温度值
//*****************************
void readtemp(void)
{
uchar a=0,b=0;
reset();
writebyte(0xCC);//跳过序列号
writebyte(0x44);//启动温度转换
reset();
writebyte(0xCC);
writebyte(0xBE);//读九个寄存器,前2个为温度
a=readbyte();//低位
b=readbyte();//高位
if(b>0x0f)//判断是否为负值
{
a=~a+1;
if(a==0)
b=~b+1;
else b=~b;
flag=10;
}
else flag=12;
temper[0]=a&0x0f;
a=a>>4;
temper[1]=b<<4;
temper[1]=temper[1]|a;
}
//**********************************
//动态扫描显示函数
//**********************************
void scandisp()
{
unsigned char i,value;
for(i=0;i<4;i++)
{
P3=0xff;
value=table[dispbuf[i]];
if(i==2)
value|=0x80;
P2=value;
P3=scan[i];
delay(90);
}
}
//********************************
//定时中断函数
//********************************
void Timer0(void)interrupt 1 using 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TCNT++;
if(TCNT==6)
{
TCNT=0;
LED=~LED;
}
}
//*******************************
//主函数
//*******************************
void main()
{
uchar temp,temp1;
TCNT=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
IE=0x82;
while(1)
{
if(input==0)
TR0=1;
else{
TR0=0;
LED=1;
}
readtemp();
temp1=temper[0];
temp=temper[1];
dispbuf[3]=ditab[temp1];
dispbuf[2]=temp%10;
temp=temp/10;
dispbuf[1]=temp%10;
dispbuf[0]=flag;
scandisp();
}
}
主要关心问题,煤气报警器能否墙面安装,对安装高度有没有特殊要求,能否不吸顶安装。 层高3米的厨房(未2次装
如题温度记录仪器,就是那种智能型的,自动测试的设备,医院什么的用的。Z好是海尔牌的,听说海尔的牌子比较好。
多个温控器链接一个温度记录仪... 多个温控器链接一个温度记录仪 展开 前提:温控器必须要有输出4
我现在需要空运一批药品,想购买可以随货监控温度的温度记录仪,不过这种产品都是有电池的吧?请问谁知道可不可以
我们公司需要一款8通道温度记录仪,要求:测量温度范围-40至+150度,可与上位机通讯,采样苹率5s,测量
台式温度记录仪使用方法及注意事项... 台式温度记录仪使用方法及注意事项 展开 1.正确安装温度记
便携式温度记录仪的型号有哪些... 便携式温度记录仪的型号有哪些 展开 体积小巧,便于携带,可放入
我想自制一个温度记录仪,将知识和实践结合起来,请问需要购买什么设备?要具备什么知识!... 我想自制一
我用温度记录仪(日本大仓RM10C)和温控器(山武SDC15)分别接三台设备,温度传感器是六个接线端子的P
我想用组态软件来编写温度记录功能的程序,可以使用组态软件程序来编写语言,来实现温度记录和会表,报警功能,有