#基于单片机的数字温度计设计60543 - 图文

2026/4/27 0:56:12

单片机课程设计报告

图3.4.1温度传感器接口电路

4 系统的软件设计

4.1 主程序

/*------------------ 主函数 --------------------*/ void main() {

while(1) {

Convert(); //调用启动温度转换函数 RdTemp(); //调用读取温度值函数 } }

4.2 温度测量

4.2.1.初始化DS18B20

/*--------------- 初始化DS18B20 ----------------*/ void TxReset() { uint i;

DQ=0; //发送复位脉冲 i=100;

while(i>0) i--; //拉低900us DQ=1; //释放总线

8

单片机课程设计报告

i=4;

while(i>0) i--; }

4.2.2.等待应答信号

/*-------------- 等待DS18B20应答 ---------------*/ void RxWait() { uint i;

while(DQ); //等待15-60us

while(~DQ); //DS18B20发出存在脉冲60-240us i=4;

while(i>0) i--; }

4.2.3.DS18B20读字节

/*---------------- 读取一位数据 ----------------*/ bit RdBit() {

uchar i; bit b;

DQ = 0; //读开始1us i++;

DQ = 1; //产生读时间隙15us i++; i++;

b = DQ; //读位 i = 8;

while(i>0) i--; //等待60us DQ = 1; //释放总线 return b;

9

单片机课程设计报告

}

/*---------------- 读取字节数据 ----------------*/ uchar RdByte() {

uchar i,j,d; d=0;

for(i=0;i<8;i++) //各位由低向高读出DS18B20 {

j=RdBit(); d=(j<<7)|(d>>1); }

return d; }

4.2.4.DS18B20写字节

/*---------------- 写入字节数据 ----------------*/ void WrByte(uchar d) {

uint i; uchar j; bit btmp;

for(j=0;j<8;j++) //各位由低向高写入DS18B20 {

btmp=d&0x01; d=d>>1;

if(btmp) //写1 {

DQ=0; //延时15us i++; i++;

10

单片机课程设计报告

DQ=1; //写1时隙不低于60u i=8;

while(i>0) i--; }

else //写0 {

DQ=0; i=8;

while(i>0) i--; //保持低电平60us到120us DQ=1; //释放总线 i++; i++; } } }

4.2.5.启动温度测量

/*---------------- 启动温度测量----------------*/ void Convert() {

uint i;

Delay(125); //延时1ms TxReset(); //初始化DS18B20 RxWait(); //等待DS18B20答应 Delay(125); //延时

WrByte(0xcc); //跳过ROM命令 WrByte(0x44); //温度转换命令 for(i=0;i<250;i++) //延时1s Display(); }

11


#基于单片机的数字温度计设计60543 - 图文.doc 将本文的Word文档下载到电脑
搜索更多关于: #基于单片机的数字温度计设计60543 - 图文 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

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