空調溫度控制器,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)
2020-9-12 08:23 上傳
點擊文件名下載附件
包含程序和仿真文件,實測有效
|