空调温度控制器,LCD1206显示,按键设定温度和控制风力,流水灯模拟风力,红色LED指示灯代表加热电机工作,蓝色LED指示灯代表制冷电机工作。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
温度高于设定温度,降温指示灯亮
温度低于设定温度,加热指示灯亮
单片机源程序如下:
- /*用于QX—mini5学习板*/
- #include <reg52.h>
- #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;
- }
- }
复制代码
所有资料51hei提供下载:
空调温度控制器.zip
(166.8 KB, 下载次数: 117)
|