用AT89c51与DS18B20做数字温度计proteus怎么连接仿真图和C语言编程?

用AT89c51与DS18B20做数字温度计proteus怎么连接仿真图和C语言编程?,第1张

1、PROTEUS安装好后,默认不会在桌面上产生快捷方式。先打开开始菜单,依次点击“程序、Proteus7Professional、ISIS7Professional”打开PROTEUS。

2、单击图中的P,添加单片机元件

3、用关键字搜索,89C51,再加几个LED,因为是仿真就不用加限流电阻和晶振复位的元件了。

4、把元件排列放好,再放一个电源。

5、连好导线,只要把鼠标放在管脚上就会自动变成连线图标,十分方便。

6、右键点击单片机,在菜单中选择“EDITPROPERTIES”。

7、点选图中红框,然后选中要装载的HEX文件。

8、在编译器KEIL中写程序,然后编译成HEX文件。

9、点左下角的三角形开始按钮,可以看到仿真结果。

#include<reg52.h>

sbit DQ=P0^0

void Delay(int num) //延时函数

{

while(num--)

}

void Init_DS18B20(void)//初始化ds18b20

{

DQ = 1 //DQ复位

Delay(8) //稍做延时

DQ = 0 //单片机将DQ拉低

Delay(80) //精确延时 大于 480us

DQ = 1 //拉高总线

Delay(14)

Delay(20)

}

unsigned char ReadOneChar(void)//读一个字节

{

unsigned char i=0

unsigned char dat = 0

for (i=8i>0i--)

{

DQ = 0// 给脉冲信号

dat>>=1

DQ = 1// 给脉冲信号

if(DQ)

dat|=0x80

Delay(4)

}

return(dat)

}

void WriteOneChar(unsigned char dat)//写一个字节

{

unsigned char i=0

for (i=8i>0i--)

{

DQ = 0

DQ = dat&0x01

Delay(5)

DQ = 1

dat>>=1

}

}

unsigned int ReadTemperature(void)//读取温度

{

unsigned char a=0

unsigned char b=0

long unsigned int tvalue//温度值

Init_DS18B20()

WriteOneChar(0xCC)// 跳过读序号列号的 *** 作

WriteOneChar(0x44)// 启动温度转换

Init_DS18B20()

WriteOneChar(0xCC)//跳过读序号列号的 *** 作

WriteOneChar(0xBE)//读取温度寄存器

a=ReadOneChar() //读低8位

b=ReadOneChar() //读高8位

tvalue=b

tvalue<<=8

tvalue=tvalue|a

tvalue=tvalue*0.0625 //读取的数据保留到个位

return(tvalue)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7737611.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存