资源简介
有想用ds18b20编程序的么?这是一个正确的程序,不仅普通的51单片机学习者可以用;c8051f020系列的单片机也能用。好好学习一下吧。
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
#define com 0
#define dat 1
sbit DQ=P1^3;
void port_init();
void os_init();
void timer0_init();
void DelayUs2x(unsigned char t);
bit Init_DS18B20(void);
void init_all();
void ASIC_disp(uchar adduchar nuchar *h);
void wr_lcd (uchar dat_commuchar content);
void wr_lcd (uchar dat_commuchar content);
void Init_lcd(void);
void WriteOneChar(unsigned char date);
void DelayMs(unsigned char t);
unsigned int ReadTemperature(void);
unsigned char ReadOneChar(void);
uchar xdata tab[5]={0x30};
uint n=0;
uchar flag;
void port_init()
{
XBR2=0X40;
P1MDOUT=0XFF;
P74OUT=0XFF;
}
void os_init()
{
int i;
OSCXCN=0X67;
for(i=0;i<256;i++);
while(!(OSCXCN&0X80));
OSCICN=0X88;
}
void timer0_init()
{
TH0=0X06;//定时250us
TL0=0X06;
TMOD=0X02;//定时器0,方式2
ET0=1;
EA=1;
TR0=1;
}
void init_all()
{
port_init();
os_init();
timer0_init();
Init_DS18B20();
Init_lcd();
}
void DelayUs2x(unsigned char t)
{
while(--t);
}
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
bit Init_DS18B20(void)
{
bit dat1=0;
DQ = 1; //DQ复位
DelayUs2x(5); //稍做延时
DQ = 0; //单片机将DQ拉低
DelayUs2x(200); //精确延时 大于 480us 小于960us
DelayUs2x(200);
DQ = 1; //拉高总线
DelayUs2x(50); //15~60us 后 接收60-240us的存在脉冲
dat1=DQ; //如果x=0则初始化成功 x=1则初始化失败
DelayUs2x(25); //稍作延时返回
return dat1;
}
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char date = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 给脉冲信号
date>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
date|=0x80;
DelayUs2x(25);
}
return(date);
}
void WriteOneChar(unsigned char date)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
DelayUs2x(25);
DQ = 1;
date>>=1;
}
DelayUs2x(25);
}
unsigned int ReadTemperature(void)
{
unsigned
- 上一篇:mpla
yer QT源码 - 下一篇:单片机教学打铃控制器.rar
评论
共有 条评论