标题:
DS18B20+RS485+液晶1602+显示(带限温)Proteus仿真+单片机程序
[打印本页]
作者:
qifeng
时间:
2019-6-10 16:18
标题:
DS18B20+RS485+液晶1602+显示(带限温)Proteus仿真+单片机程序
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(16.49 KB, 下载次数: 21)
下载附件
2019-6-11 02:59 上传
单片机源程序如下:
#include<main.h>
#include<DS18B20.h>
uchar Uart_flag=0; //串口标志位
uchar k1num=0;
uchar a;
char TH=10,TL=-10; //设置限制最高值、最低值
void key_scan();
/****
*****延时1MS函数
****/
void delay(uint x)
{
uchar m,n;
for(m=x;m>0;m--)
for(n=110;n>0;n--);
}
/***
**函数名:UART_init()
**功能: 串口初始化
****/
void UART_init()
{
TMOD=0x20;
SCON=0x50;
TH1=0xFD;
TL1=0xFD;
TR1=1;
en=1; //485一直在写
}
/***
**函数名:UART_sent()
**功能: 串口发送一个字节
****/
void UART_sent(uchar date)
{
SBUF=date;
while(!TI);
TI=0;
}
/***
**函数名:SPEAK()
**功能: 做报警铃声
****/
void SPEAK()
{
beep=0;
delay(160);
beep=1;
}
/***
**函数名:main()
**功能: 主函数
****/
void main()
{
int ans; //读取的温度寄存器
uchar flag; //正负位标志
UART_init();
while(1)
{
key_scan();
/************* 正常温度*********************/
if(Uart_flag==0)
{
DS18B20_start_change(); //开始读温度
delay(1000);
ans=DS18B20_read_date();
if((ans>TH)||(ans<TL)) // 判断温度是否超过限温值
{
P0=0;
SPEAK();
}
else
{
P0=0xff;
beep=1;
}
/******判断是否为负温度********/
if(ans<0)
{
ans=-ans;
flag=1;
}
else
flag=0;
if(flag==1) //负温度,发送‘-’
UART_sent('-');
else
UART_sent('+'); //正温度,发送‘+’
UART_sent( ( uchar )ans);
}
/**********调节上限温度*****************/
if(Uart_flag==1)
{
UART_sent('!'); //调节上限温度标志
_nop_();
_nop_();
UART_sent(TH); //发送上限温度标志
}
/**********调节下限温度**************/
if(Uart_flag==2)
{
UART_sent('@'); //调节下限温度标志
_nop_();
_nop_();
UART_sent(TL); //发送下限温度标志
}
}
}
/***
**函数名:key_scan()
**功能: 扫描键盘
****/
void key_scan()
{
if(k1==0)
{
delay(2);
if(k1==0)
{
while(!k1); //松手检测
k1num++;
if(k1num==1)
{
Uart_flag=1; //发送限制最高温度标志
}
if(k1num==2)
{
Uart_flag=2; //发送限制最低温度标志
}
if(k1num==3)
{
Uart_flag=0;
k1num=0;
}
}
}
if(k1num!=0)
{
switch(k1num)
{
case 1: //调节最高限温值
{
if(k2==0)
{
delay(2);
if(k2==0)
{
while(!k2);
TH++;
if(TH>=30)
TH=30;
}
}
if(k3==0)
{
delay(2);
if(k3==0)
{
while(!k3);
TH--;
if(TH<0)
TH=0;
}
}
}break;
case 2: //调节最低限温值
{
if(k2==0)
{
delay(2);
……………………
…………限于本文篇幅 余下代码请从附件下载:
复制代码
全部资料51hei下载地址:
DS18B20 RES485 液晶1602 显示(带限温).zip
(153.18 KB, 下载次数: 166)
2019-6-10 16:18 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
成森林
时间:
2019-11-30 11:56
谢谢楼主,我下载了。。。。。
作者:
makaichuang123
时间:
2019-12-19 20:39
可以运行成功了,谢谢
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1