空调温度控制器,LCD1206显示,按键设定温度和控制风力,流水灯模拟风力,红色LED指示灯代表加热电机工作,蓝色LED指示灯代表制冷电机工作。
单片机源程序如下:
/*用于QX—mini5学习板*/
#include
#include "LCD1602.h"
#include "DS18B20.h"
//#include "uart.h"
sbit jdq = P0^0; //用蜂鸣器代替继电器
sbit key1=P3^5; //设定温度加
sbit key2=P3^4; //设定温度减
sbit key3=P3^3; //设定风力加
sbit key4=P3^2; //设定风力减
uint num=260; //设定温度初始值
uchar num1=0; //设定风力初始值
uchar code table[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//风级
//
//void uart_init(void)
//{
// TMOD=0x20; //用定时器设置串口波特率
// TH1=0xfd;
// TL1=0xfd;
// TR1=1;
// REN=1; //串口初始化
// SM0=0;
// SM1=1;
// EA=1; //开启总中断
// ES=1; //开启串口中断
//}
void keyscan() //设定温度按键扫描函数
{
if(key1==0)
{
delay(10);
if(key1==0)
{
while(!key1);
num++;
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{
while(!key2);
num--;
}
}
}
void keyscan1() //设定风级按键扫描函数
{
if(key3==0)
{
delay(10);
if(key3==0)
{
while(!key3);
num1++;
P1=table[num1];
if(num1==9)
{
num1=0;
P1=0xff;
}
}
}
if(key4==0)
{
delay(10);
if(key4==0)
{
while(!key4);
num1--;
P1=table[num1];
if(num1==255)
num=0;
}
}
}
void main(void) //主函数
{
uint temp;
LCD_init( ); //LCD初始化
// uart_init();
string(0x80,"TE:");
string(0x80+0x40,"SE:");
string(0x80+0x0a,"WP:");
while(1)
{
tmpchange(); //开始转换温度
temp = tmp(); //读取到温度赋给temp
keyscan(); //设置温度
keyscan1(); //设置风级
if(temp/10 > num/10) //读取温度大于设定温度
{
jdq = 0; //蜂鸣器报警(继电器吸合)
}
if(temp/10 < num/10) //读取温度小于设定温度
{
jdq = 1; //蜂鸣器关闭(继电器断开)
}
write_command(0x80+0x03); //第一行第四位开始显示
write_data(0x30+temp/100);
write_data(0x30+temp/10%10);
write_data('.');
write_data(0x30+temp%10);
write_data(' ');
write_data('C');
write_command(0x80+0x43); //第二行第四位开始显示
write_data(0x30+num/100);
write_data(0x30+num/10%10);
write_data('.');
write_data(0x30+num%10);
write_data(' ');
write_data('C');
write_command(0x80+0x0d); //第一行第13位开始显示
write_data(0x30+num1%10);
// SBUF = temp;
}
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』