本設計基于單片機制作了一個空調溫度控制器,仿真示意圖如下
51hei截圖20210121164217.png (91.59 KB, 下載次數: 48)
下載附件
包含矩陣鍵盤控制模塊,LCD1602液晶顯示模塊等
2021-1-21 16:46 上傳
系統要求利用單片機設計一空調溫度控制器,能夠實時檢測并顯示室溫,能夠利用鍵盤設定溫度,并且和室溫進行比較,當室溫低于設定溫度時,系統能夠驅動加熱系統工作,當室溫高于設定溫度時,系統能夠驅動制冷系統工作,當兩者溫度相等時,不做動作。
總體方案設計
空調溫度控制系統,主要要完成對溫度的采集、顯示以及設定等工作,從而實現對空調的控制。傳統采用鉑電阻充當測溫器件的方案,雖然其中段測量線性度好,精度較高,但是測量電路的設計難度高 ,且測量電路系統龐大,難于調試 ,而且成本相對較高。鑒于上述原因,本系統采用DS18B20充當測溫器件。外部溫度信號經 DS18B20將輸入的模擬信號轉換成8位的數字信號, 通過并 口傳送到單片機系統( AT89C52) 。單片機系統將接收的數字信號譯碼處理,通過LCD1602將溫度顯示出來,同時單片機系統還將完成鍵盤掃描 、按鍵溫度設定、超溫報警等程序的處理 ,將處理的溫度信號與系統設定溫度值比較,形成可以控制空調制冷、制熱與停止工作三種工作狀態,從而實現空調的智能化。另外,鍵盤輸入方面,采用了軟件來修正誤操作輸入 ,即輸入的溫度范圍必須在系統硬件所確定的范圍內,直接降低由于誤操作帶來的風險,提高了系統的可靠性 ,體現了人性化的系統設計原則。
系統的整體框圖如圖1所示:
51hei.png (6.19 KB, 下載次數: 37)
下載附件
2021-1-21 16:49 上傳
系統要求在當前室溫低于設定溫度時,能夠自動驅動加熱系統工作 ;在當前室溫高于設定溫度時能夠自動驅動制冷系統工作。本系統在復位后即置P2^6腳和P2^7腳為低電平,在當前室溫低于設定溫度時,通過置P2^7腳為高電平來驅動后級加熱系統,本系統采用紅色LED來代替加熱系統;在當前室溫高于設定溫度時,通過置P2^6腳高電平來驅動后級制冷系統,本系統采用藍色LED來代替制冷系統。
輸出控制電路如圖8所示。
51hei.png (8.51 KB, 下載次數: 33)
下載附件
2021-1-21 16:50 上傳
系統總電路圖如圖9所示。
51hei.png (136.74 KB, 下載次數: 32)
下載附件
2021-1-21 16:50 上傳
本系統所用的元器件清單如表1所示。
表1 系統所用元器件
元器件名稱 數量
點觸式開關 16
30pF瓷片電容 2
10uF電解電容 1
藍色LED 1
紅色RED 1
5V電源插座 1
自鎖開關 1
LCD1602 1
1/4W10K電阻 3
10K可調電阻 1
AT89C52 1
DS18B20 1
12MHz晶振 1
3 軟件系統設計
3.1 軟件系統總體方案設計
系統軟件由主程序模塊、測溫程序模塊、鍵盤掃描程序模塊以及液晶驅動程序模塊組成。
3.2 軟件流程圖設計
系統軟件流程圖如圖10所示。
系統調試
程序在Keil uVision4環境下編寫,編譯通過后生成.hex文件加載到Protuse下可正常運行。程序默認溫度為21.0℃,Protuse下設定DS18B20的溫度也為21.0℃,故開始運行時兩路LED燈都不點亮。當利用鍵盤設定的溫度高于DS18B20默認的21.0℃時,紅色LED燈被點亮;當設定的溫度低于DS18B20默認的21.0℃時,藍色LED燈被點亮。
附上仿真圖
當設定的溫度高于DS18B20默認的21.0℃時,紅色LED燈被點亮,如圖11所示。
51hei.png (218.17 KB, 下載次數: 45)
下載附件
2021-1-21 16:51 上傳
圖11 紅色LED燈點亮
當設定的溫度低于DS18B20默認的21.0℃時,藍色LED燈被點亮。如圖12所示。
51hei.png (213.17 KB, 下載次數: 31)
下載附件
2021-1-21 16:52 上傳
單片機源程序如下:
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char//宏定義
- #define uint unsigned int
- ////////////////////全局變量/////////////////////////////
- float TEMP_NOW=0.0;
- float TEMP_SET=21.0;
- uint T_Count=0;
- uint S_Count=0;
- uint P_Count=0;
- uint N_Count=0;
- uint M_Count=1;
- #define K_UP 0X20//定義鍵值
- #define K_DOWN 0X21
- #define K_CLEAR 0X24
- #define K_OK 0X25
- #define K_ONE 0X30
- #define K_FOUR 0X31
- #define K_SEVEN 0X32
- #define K_POINT 0X33
- #define K_TWO 0X34
- #define K_FIVE 0X43
- #define K_EIGHT 0X36
- #define K_ZERO 0X37
- #define K_THREE 0X38
- #define K_SIX 0X40
- #define K_NINE 0X41
- #define K_SET 0X42
- extern float TEMP_NOW;
- extern float TEMP_SET;
- extern uint T_Count;
- extern uint S_Count;
- extern uint P_Count;
- extern uint N_Count;
- extern uint M_Count;
- extern uchar Current_Temp_Display_Buffer[];
- extern uchar set_Temp_Display_Buffer[];
- extern int sel;
- sbit lcden=P2^7;//液晶使能
- sbit lcdrs=P2^6;//液晶數據/命令選擇端
- sbit DQ =P3^7;//DS18B20數據端
- sbit XX =P2^5;//讀寫選擇端
- sbit cold =P2^0;//輸出信號
- sbit warm =P2^1;//輸出信號
- uchar Current_Temp_Display_Buffer[]={" NOW: 00.0"};
- uchar set_Temp_Display_Buffer[]= {" SET: 38.0"};
- int sel=0;
- uchar code KeyCodeTable[]=
- {
- 0x11,0x12,0x14,0x18,0x21,0x22,0x24,0x28,0x41,0x42,0x44,0x48,0x81,0x82,0x84,0x88
- };
- #define delayNOP() {_nop_();_nop_();_nop_();_nop_();}
- uchar code Temperature_Char[8] = {0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00};
- uchar code df_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};
- uchar CurrentT = 0;
- uchar Temp_Value[]={0x00,0x00};
- uchar Display_Digit[]={0,0,0,0};
- bit DS18B20_IS_OK = 1;
- void Read_Temperature();
- void Display_Temperature();
- void Comparison();
- //////////////////////定時///////////////////////////////
- void timer0_init(void)
- {
- TMOD = 0x00 ; //設置定時器0的工作方式
- TH0 = (8192-5000)/32;//單片機晶振為12MHz,機器周期為1us,t=5ms,
- //N=5000/1=5000
- TL0 = (8192-5000)%32;
- IE = 0x82;
- TR0=1;
- }
- void timer0() interrupt 1
- {
- TH0 = (8192-5000)/32;
- TL0 = (8192-5000)%32;
- if(++T_Count == 100) //////100為0.5s
- {
- TR0=0;
- Read_Temperature();
- Display_Temperature() ;
- T_Count=0;
- if(++P_Count == 6)
- {
- N_Count=1;
- }
- TR0=1;
- }
- }
- void delay1(uint z) //延時函數
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void write_com(uchar com) //寫命令函數
- {
- lcdrs=0; //選擇寫命令模式
- P0=com; //將要寫的命令字送到數據總線上
- delay1(5); //稍作延時以待數據穩定
- lcden=1; //使能端給一高脈沖,因為初始化函數中已經將lcden置零
- delay1(5); //稍作延時
- lcden=0; //將使能端置0完成高脈沖
- }
- void write_date(uchar date) //寫數據函數
- {
- lcdrs=1; //選擇寫數據模式
- P0=date;
- delay1(5);
- lcden=1;
- delay1(5);
- lcden=0;
- }
- void init_lcd() //初始化函數
- {
- lcden=0;
- write_com(0x38); //設置16*2顯示,5*7點陣,8位數據接口
- write_com(0x0c); //設置開顯示,不顯示光標
- write_com(0x06); //寫一個字符后地址指針加1
- write_com(0x01); //顯示清0,數據指針清0
- }
- void Print()
- {
- uchar num;
- write_com(0x80);
- for(num=0;num<12;num++)
- {
- write_date(Current_Temp_Display_Buffer[num]);
- }
- write_date(0xdf);
- write_date('C');
- write_com(0x80+0x40);
- for(num=0;num<12;num++)
- {
- write_date(set_Temp_Display_Buffer[num]);
- }
- write_date(0xdf);
- write_date('C');
- }
- void Delay_INI(uint x)
- {
- while(--x);
- }
- void Delay(unsigned int n)
- {
- do
- {
- _nop_();_nop_();
- _nop_();_nop_();
- _nop_();_nop_();
- _nop_();_nop_();
- _nop_();
- n--;
- }while(n);
- }
- uchar Init_DS18B20()
- {
- uchar status;
- DQ = 1;
- Delay_INI(8);
- DQ = 0;
- Delay_INI(90);
- DQ = 1;
- Delay_INI(8);
- status=DQ;
- Delay_INI(100);
- DQ = 1;
- return status;
- }
- uchar ReadOneByte()
- {
- uchar i,dat=0;
- DQ = 1;
- _nop_();
- for(i=0;i<8;i++)
- {
- DQ = 0;
- dat >>= 1;
- DQ = 1;
- _nop_();
- _nop_();
- if(DQ)
- dat |= 0X80;
- Delay(30);
- DQ = 1;
- }
- return dat;
- }
- void WriteOneByte(uchar dat)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- DQ = 0;
- DQ = dat& 0x01;
- Delay(5);
- DQ = 1;
- dat >>= 1;
- }
- }
- void Read_Temperature()
- {
- if(Init_DS18B20()==1)
- DS18B20_IS_OK=0;
- else
- {
- WriteOneByte(0xcc);
- WriteOneByte(0x44);
- Init_DS18B20();
- WriteOneByte(0xcc);
- WriteOneByte(0xbe);
- Temp_Value[0] = ReadOneByte();
- Temp_Value[1] = ReadOneByte();
- DS18B20_IS_OK=1;
- }
- }
- void Display_Temperature()
- {
- uchar t = 150, ng = 0;
- if((Temp_Value[1]&0xf8)==0xf8)
- {
- Temp_Value[1] = ~Temp_Value[1];
- Temp_Value[0] = ~Temp_Value[0]+1;
- if(Temp_Value[0]==0x00)
- Temp_Value[1]++;
- ng = 1;
- }
- Display_Digit[0] = df_Table[Temp_Value[0]&0x0f];
- CurrentT = ((Temp_Value[0]&0xf0)>>4) | ((Temp_Value[1]&0x07)<<4);
- Display_Digit[3] = CurrentT/100;
- Display_Digit[2] = CurrentT%100/10;
- Display_Digit[1] = CurrentT%10;
- Current_Temp_Display_Buffer[11] = Display_Digit[0] + '0';
- Current_Temp_Display_Buffer[10] = '.';
- Current_Temp_Display_Buffer[9] = Display_Digit[1] + '0';
- Current_Temp_Display_Buffer[8] = Display_Digit[2] + '0';
- Current_Temp_Display_Buffer[7] = Display_Digit[3] + '0';
- TEMP_NOW=Display_Digit[2]*10+Display_Digit[1]+Display_Digit[0]*0.1 ;
- if(Display_Digit[3] == 0)
- Current_Temp_Display_Buffer[7] = ' ';
- if(Display_Digit[2] == 0&&Display_Digit[3]==0)
- Current_Temp_Display_Buffer[8] = ' ';
- if(ng)
- {
- TEMP_NOW=-(Display_Digit[2]*10+Display_Digit[1]+Display_Digit[0]*0.1);
- if(Current_Temp_Display_Buffer[8] == ' ')
- Current_Temp_Display_Buffer[8] = '-';
- else if(Current_Temp_Display_Buffer[7] == ' ')
- Current_Temp_Display_Buffer[7] = '-';
- else
- Current_Temp_Display_Buffer[6] = '-';
- }
- }
- void Delay_key()
- {
- uchar i;
- for(i=0;i<200;i++);
- }
- uchar Keys_Scan()
- {
- uchar sCode,kCode,k;
- P1 = 0xf0;
- if((P1&0xf0)!=0xf0)
- {
- Delay_key();
- if((P1&0xf0)!=0xf0)
- {
- sCode = 0xfe;
- for(k=0;k<4;k++)
- {
- P1 = sCode;
- if((P1&0xf0)!=0xf0)
- {
- kCode = ~P1;
- if(kCode == KeyCodeTable[0]) return K_ONE;
- else if(kCode == KeyCodeTable[1]) return K_TWO;
- else if(kCode == KeyCodeTable[2]) return K_THREE;
- else if(kCode == KeyCodeTable[3]) return K_FOUR;
- else if(kCode == KeyCodeTable[4]) return K_FIVE;
- else if(kCode == KeyCodeTable[5]) return K_SIX;
- else if(kCode == KeyCodeTable[6]) return K_SEVEN;
- else if(kCode == KeyCodeTable[7]) return K_EIGHT;
- else if(kCode == KeyCodeTable[8]) return K_NINE;
- else if(kCode == KeyCodeTable[9]) return K_UP;
- else if(kCode == KeyCodeTable[10]) return K_DOWN;
- else if(kCode == KeyCodeTable[11]) return K_CLEAR;
- else if(kCode == KeyCodeTable[12]) return K_OK;
- else if(kCode == KeyCodeTable[13]) return K_ZERO;
- else if(kCode == KeyCodeTable[14]) return K_POINT;
- else if(kCode == KeyCodeTable[15]) return K_SET;
- }
- else
- sCode = _crol_(sCode,1);
- }
- }
- }
- return -1;
- }
- void set_num()
- {
- uchar key;
- if(sel==0)
- {
- key = Keys_Scan();
- if(K_CLEAR == key)
- {
- while(Keys_Scan() == K_CLEAR);
- set_Temp_Display_Buffer[8] =' ';
- set_Temp_Display_Buffer[9] =' ';
- set_Temp_Display_Buffer[10]=' ';
- set_Temp_Display_Buffer[11]=' '; // 48(0)49(1)50(2)51(3)52(4)53(5)54(6)55(7)56(8)57(9)
- M_Count=0;
- cold=0;
- warm=0;
- }
- if(K_UP == key)
- {
- while(Keys_Scan() == K_UP);
- if((set_Temp_Display_Buffer[11]>47)&&(set_Temp_Display_Buffer[11]<57))
- {
- set_Temp_Display_Buffer[11]+=1;
- }
- else if(set_Temp_Display_Buffer[11]==57)
- {
- set_Temp_Display_Buffer[11]=48;
- if((set_Temp_Display_Buffer[9]>47)&&(set_Temp_Display_Buffer[9]<57))
- {
- set_Temp_Display_Buffer[9]+=1;
- }
- else if(set_Temp_Display_Buffer[9]==57)
- {
- set_Temp_Display_Buffer[9]=48;
- if((set_Temp_Display_Buffer[8]>47)&&(set_Temp_Display_Buffer[8]<57))
- {
- set_Temp_Display_Buffer[8]+=1;
- }
- else if(set_Temp_Display_Buffer[8]==57)
- {
- set_Temp_Display_Buffer[8]=48;
- }
- }
- }
- }
- if(K_DOWN == key) // 48(0)49(1)50(2)51(3)52(4)53(5)54(6)55(7)56(8)57(9)
- {
- while(Keys_Scan() == K_DOWN);
- if((set_Temp_Display_Buffer[11]>48)&&(set_Temp_Display_Buffer[11]<58))
- {
- set_Temp_Display_Buffer[11]-=1;
- }
- else if(set_Temp_Display_Buffer[11]==48)
- {
- set_Temp_Display_Buffer[11]=57;
- if((set_Temp_Display_Buffer[9]>48)&&(set_Temp_Display_Buffer[9]<58))
- {
- set_Temp_Display_Buffer[9]-=1;
- }
- else if(set_Temp_Display_Buffer[9]==48)
- {
- set_Temp_Display_Buffer[9]=57;
- if((set_Temp_Display_Buffer[8]>48)&&(set_Temp_Display_Buffer[8]<58))
- {
- set_Temp_Display_Buffer[8]-=1;
- }
- else if(set_Temp_Display_Buffer[8]==48)
- {
- set_Temp_Display_Buffer[8]=57;
- }
- }
- }
- }
- if(K_ONE == key)
- {
- while(Keys_Scan() == K_ONE);
- set_Temp_Display_Buffer[11]='1';
- sel++;
- }
- if(K_TWO == key)
- {
- while(Keys_Scan() == K_TWO);
- set_Temp_Display_Buffer[11]='2';
- sel++;
- }
- if(K_THREE == key)
- {
- while(Keys_Scan() == K_THREE);
- set_Temp_Display_Buffer[11]='3';
- sel++;
- }
- if(K_FOUR == key)
- {
- while(Keys_Scan() == K_FOUR);
- set_Temp_Display_Buffer[11]='4';
- sel++;
- }
- if(K_FIVE == key)
- {
- while(Keys_Scan() == K_FIVE);
- set_Temp_Display_Buffer[11]='5';
- sel++;
- }
- if(K_SIX == key)
- {
- while(Keys_Scan() == K_SIX);
- set_Temp_Display_Buffer[11]='6';
- sel++;
- }
- if(K_SEVEN == key)
- {
- while(Keys_Scan() == K_SEVEN);
- set_Temp_Display_Buffer[11]='7';
- sel++;
- }
- if(K_EIGHT == key)
- {
- while(Keys_Scan() == K_EIGHT);
- set_Temp_Display_Buffer[11]='8';
- sel++;
- }
- if(K_NINE == key)
- {
- while(Keys_Scan() == K_NINE);
- set_Temp_Display_Buffer[11]='9';
- sel++;
- }
- if(K_ZERO == key)
- {
- while(Keys_Scan() == K_ZERO);
- set_Temp_Display_Buffer[11]='0';
- sel++;
- }
- if(K_OK == key)
- {
- while(Keys_Scan() == K_OK);
- TEMP_SET=(set_Temp_Display_Buffer[8]-48)*10+(set_Temp_Display_Buffer[9]-48)+(set_Temp_Display_Buffer[11]-48)*0.1;
- sel=0;
- M_Count=1;
- }
- }
- if(sel==1)
- {
- key = Keys_Scan();
- if(K_CLEAR == key)
- {
- while(Keys_Scan() == K_CLEAR);
- set_Temp_Display_Buffer[8] =' ';
- set_Temp_Display_Buffer[9] =' ';
- set_Temp_Display_Buffer[10]=' ';
- set_Temp_Display_Buffer[11]=' ';
- M_Count=0;
- cold=0;
- warm=0;
- sel=0;
- }
- if(K_ONE == key)
- {
- while(Keys_Scan() == K_ONE);
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='1';
- sel++;
- }
- if(K_TWO == key)
- {
- while(Keys_Scan() == K_TWO);
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='2';
- sel++;
- }
- if(K_THREE == key)
- {
- while(Keys_Scan() == K_THREE);
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='3';
- sel++;
- }
- if(K_FOUR == key)
- {
- while(Keys_Scan() == K_FOUR);
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='4';
- sel++;
- }
- if(K_FIVE == key)
- {
- while(Keys_Scan() == K_FIVE);
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='5';
- sel++;
- }
- if(K_SIX == key)
- {
- while(Keys_Scan() == K_SIX);
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='6';
- sel++;
- }
- if(K_SEVEN == key)
- {
- while(Keys_Scan() == K_SEVEN);
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='7';
- sel++;
- }
- if(K_EIGHT == key)
- {
- while(Keys_Scan() == K_EIGHT);
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='8';
- sel++;
- }
- if(K_NINE == key)
- {
- while(Keys_Scan() == K_NINE);
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='9';
- sel++;
- }
- if(K_ZERO == key)
- {
- while(Keys_Scan() == K_ZERO);
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='0';
- sel++;
- }
- }
- if(sel==2)
- {
- key = Keys_Scan();
- if(K_CLEAR == key)
- {
- while(Keys_Scan() == K_CLEAR);
- set_Temp_Display_Buffer[8] =' ';
- set_Temp_Display_Buffer[9] =' ';
- set_Temp_Display_Buffer[10]=' ';
- set_Temp_Display_Buffer[11]=' ';
- M_Count=0;
- cold=0;
- warm=0;
- sel=0;
- }
- if(K_POINT == key)
- {
- while(Keys_Scan() == K_POINT);
- set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='.';
- sel++;
- }
- }
- if(sel==3)
- {
- key = Keys_Scan();
- if(K_CLEAR == key)
- {
- while(Keys_Scan() == K_CLEAR);
- set_Temp_Display_Buffer[8] =' ';
- set_Temp_Display_Buffer[9] =' ';
- set_Temp_Display_Buffer[10]=' ';
- set_Temp_Display_Buffer[11]=' ';
- M_Count=0;
- cold=0;
- warm=0;
- sel=0;
- }
- if(K_ONE == key)
- {
- while(Keys_Scan() == K_ONE);
- set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
- set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='1';
- sel++;
- }
- if(K_TWO == key)
- {
- while(Keys_Scan() == K_TWO);
- set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
- set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='2';
- sel++;
- }
- if(K_THREE == key)
- {
- while(Keys_Scan() == K_THREE);
- set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
- set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='3';
- sel++;
- }
- if(K_FOUR == key)
- {
- while(Keys_Scan() == K_FOUR);
- set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
- set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='4';
- sel++;
- }
- if(K_FIVE == key)
- {
- while(Keys_Scan() == K_FIVE);
- set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
- set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='5';
- sel++;
- }
- if(K_SIX == key)
- {
- while(Keys_Scan() == K_SIX);
- set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
- set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='6';
- sel++;
- }
- if(K_SEVEN == key)
- {
- while(Keys_Scan() == K_SEVEN);
- set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
- set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='7';
- sel++;
- }
- if(K_EIGHT == key)
- {
- while(Keys_Scan() == K_EIGHT);
- set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
- set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
- set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
- set_Temp_Display_Buffer[11]='8';
- sel++;
- }
- if(K_NINE == key)
- {
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
51hei.png (17.86 KB, 下載次數: 44)
下載附件
2021-1-21 16:52 上傳
本系統所設計的空調溫度控制器僅對溫度部分實現了控制,但對于實際空調中的模式選擇以及定時運行等工作過程還無法實現,希望在以后的學習研究中能夠解決這些問題。
所有資料51hei提供下載:
基于單片機設計的空調溫度控制器.zip
(655.11 KB, 下載次數: 134)
2021-1-21 16:47 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|