/***********************************************************************
炅touwenjian.h
***********************************************************************/
typedef unsigned char byte;
typedef unsigned int word;
//以下管脚配置
//ds18b20部分
sbit DQ =P3^4;
//显示部分
sbit DB=P2^0;
sbit CP=P2^1;
//发光显示部分
sbit LED_dingshi=P0^0;
sbit LED_shoudong =P0^1;
sbit LED_zidong=P0^2;
sbit LED_kuai =P0^3;
sbit LED_zhong =P0^4;
sbit LED_man =P0^5;
玩大型游戏的电脑配置//键盘定义部分
#define wujian 0x3f
sbit KEY1=P1^0 ; //状态转换 /启动
sbit KEY2=P1^1 ; //+10 / 1
sbit KEY3=P1^2 ; //-10 / 2
sbit KEY4=P1^3 ; // 3
sbit KEY5=P1^4 ; // 0 确定
//继电器控制部分
sbit JDQ1=P2^4; //0表示开通,1表示关断
sbit JDQ2=P2^5;
sbit JDQ3=P2^6;
//蜂鸣器部分
sbit call=P2^7; //低电平鸣叫
/***********************************************************************威海旅游景点大全
ds18b20.c
***********************************************************************/
#include <REGX51.H>
#include"touwenjian.h"
/*****************************************************
延时子程序
*****************************************************/
extern void delay(word useconds)
{
上高速时免费下高速过了免费时间for(;useconds>0;useconds--);
}
/*****************************************************
复位子程序
******************************************************/
static byte ow_reset(void)
{
byte presence;
EA=0;
DQ = 0; // pull DQ line low
delay(45); // leave it low for 480us //551us
DQ = 1; // allow line to return high
delay(4);// wait for presence //61us
presence = DQ; // get presence signal
delay(40); // wait for end of timeslot //491us
EA=1;
return(presence); // presence signal returned
} // 0=presence, 1 = no part
/*******************************************************
从 1-wire 总线上读取一个字节子程序
********************************************************/
static byte read_byte(void)
{
byte i;
byte value = 0;
EA=0;
for (i=8;i>0;i--)
{
value>>=1;
DQ = 0; // pull DQ low to start timeslot
DQ = 1; // then return high
{unsigned char i;
for(i=0;i<2;i++);}//11us
if(DQ)value|=0x80;
delay(6);// wait for rest of timeslot
}
EA=1;
return(value);
}
/********************************************************
向 1-WIRE 总线上写一个字节
*********************************************************/
static void write_byte(char val)
{
byte i;
EA=0;
厨房宣言for (i=8; i>0; i--) // writes byte, one bit at a time
{
DQ = 0; // pull DQ low to start timeslot
DQ=0;
DQ = val&0x01; //6US
delay(5);// hold value for remainder of timeslot //74us
DQ = 1;
val=val>>1;
}
EA=1;
delay(5);
}
/*******************************************************
读取温度
*******************************************************/
word Read_Temperature(void)
{
union{
byte c[2];
word x;
}temp;
ow_reset();
write_byte(0xCC); // Skip ROM
write_byte(0xBE); // Read Scratch Pad
temp.c[1]=read_byte();
temp.c[0]=read_byte();
ow_reset();
write_byte(0xCC); //Skip ROM
write_byte(0x44); // Start Conversion
return temp.x;
}
/***************************************************************
求解温度
***************************************************************/
extern byte Real_Tem(void)
疫情什么时候才能结束{
word wen;
wen=Read_Temperature();
return((wen>>4)&0x00ff);
}
/***********************************************************************
Main.c
***********************************************************************/
#include <REGX51.H>
#include"touwenjian.h"
//数据区
#define time_default 41
byte dingshi_time=time_default;//存放定时时间''''''
bit flag_dingshi=0; //0表示没有定时
word dingshi_jishu3=1000;//1000*60=1分钟
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论