内容正文:
温度测控系统的proteus仿真
更多模板请关注:https://haosc.taobao.com
CONTENTS
目录
01
02
温度测量系统硬件电路设计
温度测量系统软件设计
道艺兼修
敬业乐群
2
温度测量系统硬件电路设计
01
3
温度测量系统硬件电路设计
01
DS18B20与单片机接口:DQ连接P2.2
LCD1602与单片机接口:
E连接P3.4
RS连接P3.5
RW连接P3.6
D0连接P0.0
D1连接P0.1
D2连接P0.2
D3连接P0.3
D4连接P0.4
D5连接P0.5
D6连接P0.6
D7连接P0.7
4
温度测量系统软件设计
02
(1)程序流程
开始
初始化
Y
启动温度转换
等待1ms
读取温度数据、计算、送显示
5
温度测量系统软件设计
03
void main()
{
uchar table[] = "Now temperature";
lcd_init_bb(); //lcd1602初始化
lcd_write_com(0x80);
lcdwrite_string(1,table);//显示提示语
while(1)
{
sendChangeCmd(); //启动温度转换
delayMs(1000); //温度转换时间需要750ms以上
display(getTmpValue());//读取温度和显示
}
}
(2)主程序函数的编写:
6
温度测量系统软件设计
02
(3)LCD1602的初始化
void lcd_init_bb()
{
lcden=0;
wr=0;
delayMs(15);
lcd_write_com(0x38);
delayMs(5);
lcd_write_com(0x38);
delayMs(5);
lcd_write_com(0x38);
while(lcd_busy());
lcd_write_com(0x38); //工作模式设置
while(lcd_busy());
lcd_write_com(0x08);//关显示,不现实光标
while(lcd_busy());
lcd_write_com(0x01);//清屏,光标复位
while(lcd_busy());
lcd_write_com(0x06);//显示模式设置
while(lcd_busy());
lcd_write_com(0x0c);//开显示
}
7
温度测量系统软件设计
02
(4)18B20启动转换子程序
void sendChangeCmd()
{
dsInit(); //初始化
dsWait(); //等待18b20回复
delayMs(1);
writeByte(0xcc); //跳过读ROM的操作
writeByte(0x44); //启动温度转换
8
温度测量系统软件设计
03
int getTmpValue()
{
unsigned int temp;
int value;
double wd;
unsigned char low, high;
dsInit();//初始化
dsWait();//等待
delayMs(1);
writeByte(0xcc);////跳过读序列号的操作
writeByte(0xbe);//读温度寄存器(头两个值分别为温度的低位和高位)
(5)18B20读取温度函数的编写:
9
温度测量系统软件设计
03
low = readByte();
high = readByte();
temp = high;
temp <<= 8;
temp |= low;
if((temp&0xF800)==0xF800)//负温度
{
temp=~temp;
temp=temp+1;
wd=temp*(-0.0625);
}
else
{
wd=temp*0.0625;
}
value=wd*100;
return value;
}
10
温度测量系统软件设计
03
11
谢谢收看!
胡祝兵
$$