关于《基于STC89C52单片机的智能温控系统》,求大神帮忙写一下代码!!!

基于STC89C52单片机的智能温控系统

开发板:亚博科技单片机学习板。
所需硬件资源:温度传感器DS18B20,LCD 1602显示屏,蜂鸣器,LED灯,步进电机外接风扇等。
开发环境:KEIL C51。
功能描述:STC89C52单片机作为核心芯片,与外部硬件资源连接,实现一个智能温控系统。该系统详细包括:温度采集模块、温度显示模块、电机控制模块、温度报警模块,8颗LED控制显示模块。
具体实现功能:温度传感器采集到的温度要控制在25-35度之间,然后实时的显示在LCD 1602显示屏上,显示方式为:当低于25度时,第一行显示:Temp below 25°,第二行显示:Please raise T;当温度在25-35度之间,第一行显示:Temp is XX°,第二行显示:Keep very well;当温度高于35度,第一行显示:Temp over 35°,第二行显示:Please reduce T。当温度低于25度后,蜂鸣器开始报警,8颗LED灯全部点亮,室内温度上升,到达25度以上之后,蜂鸣器停止报警,8颗LED灯逐渐熄灭(每隔10秒熄灭一颗),恢复正常;当温度高于35度后,蜂鸣器开始报警,步进电机外接风扇开始转动,室内温度逐渐降低,降到35度以下之后,蜂鸣器停止报警,步进电机停止转动,又恢复正常

PS1:最好有注解!!!
PS2:如果回答的好还可以加分!!!

第1个回答  推荐于2016-08-03
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

unsigned int qian,bai,shi,ge;

void delay (uint z) //z毫秒延时程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
void write_com(uchar com) //LCD写指令
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}

void write_data(uchar dat) //LCD写数据
{
lcdrs=1;
P0=dat;
delay(5);
lcden=1;
delay(5);
lcden=0;
}

void init() //液晶初始化
{
// dula=0;
// wela=0;
lcden=0;
write_com(0x38);//
write_com(0x0f);//
write_com(0x06);//
write_com(0x80);
write_com(0x01);//
}

void Display(uint Adr)
{
// uint i=Adr;
qian=num/1000;
bai=num%1000/100;
shi=num%100/10;
ge=num%10;
write_com(0x80+Adr);
write_data(0x30+qian);
write_data(0x30+bai);
write_data(0x30+shi);
write_data(0x30+ge);

}
给你贴一个LCD的控制程序,其余的还是自己做吧,没用过你那个温度传感器,你看一下它给的时序图,再查一下资料,写一个读温度传感器串口数据的程序就行了,把数据直接赋给我程序中的num,就可以显示了。至于温度报警,你自己写个if之类的就行了本回答被提问者和网友采纳
相似回答