DS18B20温度采集并由lcd显示 - 图文(7)

2019-05-17 10:08

}

}

delay(5);

delay(2000);

write_com(0x80);

for(num=0;num<16;num++)

{ }

write_date(table[num]); delay(5);

write_com(0x80+0x40); for(num=0;num<12;num++)

{ }

write_date(table1[num]); delay(5);

TMOD=0x01;

TH0=(65536-50000)/256; TL0=(65536-50000)%6; EA=1; ET0=1; TR0=1;

void write_sfm(uchar add,uchar dat)//写地址和自动显示两位数时间 {

uchar s,g; s=dat/10;

}

g=dat;

write_com(0x80+0x40+add); write_date(tablenum[s]); write_date(tablenum[g]);

void write_sfm1(uchar add,uchar dat) { } I2C部分

write_com(0x80+add); write_date(tablenum[dat]);

//写温度值十位地址写4 个位为5 小数为7

/*************************此部分为I2C总线的驱动程序*************************************/

#include #include #include

#define NOP() _nop_() /* 定义空指令 */ #define _Nop() _nop_() /*定义空指令*/ sbit SCL=P2^1; //I2C 时钟 sbit SDA=P2^0; //I2C 数据 bit ack; /*应答标志位*/

/******************************************************************* 起动总线函数 函数原型: void Start_I2c();

功能: 启动I2C总线,即发送I2C起始条件.

********************************************************************/ void Start_I2c() {

SDA=1; /*发送起始条件的数据信号*/ _Nop(); SCL=1;

_Nop(); /*起始条件建立时间大于4.7us,延时*/ _Nop(); _Nop(); _Nop(); _Nop();

SDA=0; /*发送起始信号*/

_Nop(); /* 起始条件锁定时间大于4μs*/ _Nop(); _Nop(); _Nop(); _Nop();

SCL=0; /*钳住I2C总线,准备发送或接收数据 */ _Nop(); _Nop(); }

/******************************************************************* 结束总线函数 函数原型: void Stop_I2c();

功能: 结束I2C总线,即发送I2C结束条件.

********************************************************************/

void Stop_I2c() {

SDA=0; /*发送结束条件的数据信号*/ _Nop(); /*发送结束条件的时钟信号*/ SCL=1; /*结束条件建立时间大于4μs*/ _Nop(); _Nop(); _Nop(); _Nop(); _Nop();

SDA=1; /*发送I2C总线结束信号*/ _Nop(); _Nop(); _Nop(); _Nop(); }

/******************************************************************* 字节数据发送函数 函数原型: void SendByte(UCHAR c);

功能: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对 此状态位进行操作.(不应答或非应答都使ack=0) 发送数据正常,ack=1; ack=0表示被控器无应答或损坏。 ********************************************************************/ void SendByte(unsigned char c) {

unsigned char BitCnt;

for(BitCnt=0;BitCnt<8;BitCnt++) /*要传送的数据长度为8位*/

{

if((c<

SDA=1; /*判断发送位*/

else

SDA=0;

_Nop();

SCL=1; _Nop();

_Nop(); _Nop(); _Nop();

_Nop(); SCL=0;

}

_Nop(); _Nop();

SDA=1; _Nop(); _Nop(); SCL=1; _Nop(); _Nop(); _Nop();

if(SDA==1)ack=0; else ack=1; SCL=0;

/*置时钟线为高,通知被控器开始接收数据位*/ /*保证时钟高电平周期大于4μs*/ /*8位发送完后释放数据线,准备接收应答位*/

/*判断是否接收到应答信号*/


DS18B20温度采集并由lcd显示 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:4AM2U3 I have a friend 教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: