客車空調(diào)控制系統(tǒng)

上傳人:文*** 文檔編號:64462131 上傳時間:2022-03-21 格式:DOC 頁數(shù):28 大?。?57.50KB
收藏 版權(quán)申訴 舉報 下載
客車空調(diào)控制系統(tǒng)_第1頁
第1頁 / 共28頁
客車空調(diào)控制系統(tǒng)_第2頁
第2頁 / 共28頁
客車空調(diào)控制系統(tǒng)_第3頁
第3頁 / 共28頁

下載文檔到電腦,查找使用更方便

28 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《客車空調(diào)控制系統(tǒng)》由會員分享,可在線閱讀,更多相關(guān)《客車空調(diào)控制系統(tǒng)(28頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、文檔供參考,可復(fù)制、編制,期待您的好評與關(guān)注! 客車空調(diào)系統(tǒng) ●?空調(diào)系統(tǒng)的組成 空調(diào)系統(tǒng)主要由壓縮機、冷凝器、蒸發(fā)器、膨脹閥、干燥儲液器及管路等組成 ● 空調(diào)制冷原理 1)?用戶按操作程序啟動汽車空調(diào)系統(tǒng)之后,壓縮機在發(fā)動機帶動下開始工作,驅(qū)使制冷劑(R134a,一種環(huán)保型制冷劑,不會破壞臭氧層、無毒性、無刺激、不燃燒、無腐蝕性)在密封的空調(diào)系統(tǒng)中循環(huán)流動,壓縮機將氣態(tài)制冷劑壓縮成高溫高壓的制冷劑氣體后排出壓縮機。 2)?高溫高壓制冷劑氣體經(jīng)管路流入冷凝器后,在冷凝器內(nèi)散熱、降溫,冷凝成高溫高壓的液態(tài)制冷劑流出。 3)?高溫高壓液態(tài)制冷劑經(jīng)管路進入干燥儲液器內(nèi),經(jīng)過干

2、燥、過濾后流進膨脹閥。 4)?高溫高壓液態(tài)制冷劑經(jīng)膨脹閥節(jié)流,狀態(tài)發(fā)生急劇變化,變成低溫低壓的液態(tài)制冷劑。 5)?低溫低壓液態(tài)制冷劑立即進入蒸發(fā)器內(nèi),在蒸發(fā)器內(nèi)吸收流經(jīng)蒸發(fā)器的空氣熱量,使空氣溫度降低,吹出冷風(fēng),產(chǎn)生制冷效果,制冷劑本身因吸收了熱量而蒸發(fā)成低溫低壓的氣態(tài)制冷劑。 6)?低溫低壓的氣態(tài)制冷劑經(jīng)管路被壓縮機吸入,進行壓縮,進入下一個循環(huán),只要壓縮機連續(xù)工作,制冷劑就在空調(diào)系統(tǒng)中連續(xù)循環(huán),產(chǎn)生制冷效果;壓縮機停止工作,空調(diào)系統(tǒng)內(nèi)制冷劑隨之停止流動,不產(chǎn)生制冷效果。 ● 電路控制原理系統(tǒng)框架 二.控制面板部分 1. 硬件部分 a.電源電路 工作原理:R

3、/Y端口為24V電源輸入一路經(jīng)自恢復(fù)保險PT3二極管D8限流電阻R38穩(wěn)壓二極管V1輸出穩(wěn)定12V電源為開關(guān)電路供電,另一路經(jīng)繼電器KA6輸出24v給驅(qū)動電路供電,經(jīng)二極管D12限流電阻R39到三端穩(wěn)壓器LM7805的輸入端經(jīng)穩(wěn)壓后為中央處理器(MCU)和EEROM提供5v電壓。 b.開關(guān)機電路 工作原理:(1) 當(dāng)K7按下時基集成電路NE555P的6腳(閥值)電壓高于6v ,3腳(輸出)就輸出低電平0v 到電源電路三極管Q2的基極,Q2截止繼電器失去供電而斷開供電實現(xiàn)關(guān)機 (2)當(dāng)K1按下時基集成電路NE555P的2腳(觸發(fā))電壓接地0v ,3腳(輸出)就輸出高電

4、平12-0.8=11.2v 到電源電路三極管Q2的基極,Q2導(dǎo)通繼電器恢復(fù)供電而接通供電實現(xiàn)關(guān)機 c.驅(qū)動電路 d.中央處理器(MCU) 工作原理:當(dāng)中央處理器:供電5v,復(fù)位電路,時鐘電路這3個條件成立中央處理器就能正常工作。 e.顯示及按鍵電路 2. 軟件部分 ● 軟件控制流程圖 ● 軟件組成 1. 頭文件(STC12C5410AD.H,define_i/o.h ,main.h) 2. 按鍵檢測與處理(按鍵檢測端口與顯示LED端口公用) 3. 故障處理子程序 4. 溫度檢測,理子程序 5. 顯示子程序 6. 強冷子程序 7. 工作時間記錄子程

5、序 8. 抗干擾處理 (看門狗:當(dāng)系統(tǒng)非正常進入死循環(huán)不能每隔一段時間把看門狗清零計時器溢出把系統(tǒng)復(fù)位。形象一點就是必須在狗餓之前喂一次狗(清零)要不然狗會以為你亂了(程序跑飛)就會叫醒你(系統(tǒng)復(fù)位進入正常) ●功能要求 功能說明: 1、ON鍵。按ON鍵,接通控制面板電源,數(shù)字顯示回風(fēng)傳感器感應(yīng)溫度值。 2、溫度設(shè)定與改變(接通控制面板電源后可操作) 2.1、缺省溫度設(shè)定為24℃。溫度設(shè)定值范圍在16~27℃改變。 2.2、按下△一次,溫度設(shè)定值升高1℃,顯示2秒鐘。 2.3、按下▽一次,溫度設(shè)定值降低1℃,顯示2秒鐘。 2.4、溫度設(shè)定值顯示2秒鐘后,轉(zhuǎn)

6、換顯示車內(nèi)溫度值,車內(nèi)溫度顯示范圍為12~60℃(精度為0.5℃)。車內(nèi)溫度低于12℃顯示LO,車內(nèi)溫度高于60℃顯示HI。 3、制冷鍵控制功能。 3.1、制冷鍵只有在蒸發(fā)風(fēng)機工作的情況下才能接通。 3.2、在初始狀態(tài)下,按制冷鍵一次,制冷指示燈亮,"制冷"輸出為正,允許最大感性負(fù)載1A。 3.3、在初始狀態(tài)下,按制冷鍵兩次,制冷指示燈熄滅,"制冷"輸出為零。 3.4、再次啟動時,恢復(fù)初始狀態(tài)。 4、新風(fēng)鍵控制功能。 4.1、按新風(fēng)鍵一次(車內(nèi)溫度≤27℃),新風(fēng)指示燈亮,"新風(fēng)控制"輸出為正。 4.2、按新風(fēng)鍵兩次,新風(fēng)指示燈熄滅,"新風(fēng)控制"輸出為零

7、。 5、壓縮機啟??刂乒δ?。 5.1、左右除霜傳感器感應(yīng)溫度≥3.5℃時,制冷輸出為正;左右除霜傳感器感應(yīng)溫度≤2℃,制冷輸出為零。 5.2、車內(nèi)溫度超過設(shè)定值0.5℃時,制冷輸出為正;車內(nèi)溫度低于設(shè)定值1.5℃時,制冷輸出為零。 6、風(fēng)速鍵調(diào)節(jié)風(fēng)量功能。 6.1、在初始狀態(tài)下,按動風(fēng)速鍵一次,蒸發(fā)風(fēng)機啟動,風(fēng)量為低速,允許最大感性負(fù)載1A,低速指示燈亮。 6.2、在初始狀態(tài)下,按動風(fēng)速鍵兩次,蒸發(fā)風(fēng)機啟動,風(fēng)量為中速,允許最大感性負(fù)載1A,中速指示燈亮。 6.3、在初始狀態(tài)下,按動風(fēng)速鍵三次,蒸發(fā)風(fēng)機啟動,風(fēng)量為高速,允許最大感性負(fù)載1A,高速指示燈亮。

8、 6.4、連續(xù)按動風(fēng)速鍵,風(fēng)量按照:低→中→高→低 循環(huán)。 6.5、再次啟動時,恢復(fù)初始狀態(tài)。 6.6、在通風(fēng)狀態(tài)下,通風(fēng)輸出(13#)線一直輸出高電位,允許最大感性負(fù)載1A(主要驅(qū)動空調(diào)無電瓶發(fā)電機供電繼電器),注意:在風(fēng)速轉(zhuǎn)換過程中,此輸出不得跳動,保持平穩(wěn),只有在按OFF鍵后才失電。 7、控制面板總負(fù)載不超過3A。 8、OFF鍵。按動OFF鍵,關(guān)閉控制面板電源。 9、其他功能。 9.1、在空調(diào)系統(tǒng)出現(xiàn)高低壓故障時,按制冷鍵一次,制冷輸出(4#)仍為高電位(通過電器盒繼電器禁止壓縮機啟動),用發(fā)光二極管閃動顯示Er1,閃動頻率為1HZ(1秒鐘1次)。 9.2

9、、溫度傳感器短路,用發(fā)光二極管閃動顯示Er2,閃動頻率1HZ(1秒鐘1次)。 9.3、溫度傳感器斷路,用發(fā)光二極管閃動顯示Er3,閃動頻率1HZ(1秒鐘1次)。 10、強冷功能。 按ON鍵,接通控制面板電源,按動風(fēng)速鍵,啟動蒸發(fā)風(fēng)機,將制冷鍵按下5秒鐘,啟動壓縮機和冷凝風(fēng)機(只有在蒸發(fā)風(fēng)機工作的情況下,才具備此功能)。并當(dāng)轉(zhuǎn)換風(fēng)速和新風(fēng)狀態(tài)時,強冷功能不應(yīng)消失。 11、同時按"△▽"鍵顯示空調(diào)使用時間。單位為10小時。 ● 控制源程序 #include "STC12C5410AD.H" #include "define_io.h" #include "main.

10、h" unsigned char KeyFlag; const unsigned int TempTable[] = { //0 1 2 3 4 5 6 7 8 9 14230,13600,13010,12450,11910,11400,10920,10460,10020,9596, //10 11 12 13 14 15 16 17 18 19 9197,8817,8454,8108,7779,7467,7164,6877,6603,6342, //20

11、 25 6092,5854,5626,5408,5199,5000,4811,4630,4456,4291, //30 4132,3980,3835,3695,3562,3434,3311,3193,3081,2972, //40 2869,2769,2673,2581,2493,2409,2327,2249,2174,2102, //50 2032,1965,1901,1839,1780,1722,1667,1614,1563,1514, //60 1466,1421,1376,1334,1293 }; voi

12、d delay(unsigned int n) { unsigned int i; for(i = 0; i < n; i ++) { ; } } /* void Ldelay(unsigned char n) { unsigned char i,j,k; for(i = 0; i < n; i ++) { for(j = 0; j < 0xff; j ++) { for(k = 0; k < 0xff; k ++) {WDT_CONTR = 0x38;} } } } */ void

13、trans_led_data(unsigned char DAT) { unsigned char Data[17] = { //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 //0 1 2 3 4 5 6 7 8 9 H I L o 無 E r 0xc0,0xf9,0xa4,0xb0,0x99

14、,0x92,0x82,0xf8,0x80,0x90,0x89,0xf9,0xc7,0xa3,0xff,0x86,0xaf }; unsigned char i,j; i = Data[DAT] & dp; CY = 0; for(j = 0; j < 8; j ++) { i <<= 1; LED_DATA = CY; LED_CLK = 0; LED_CLK = 1; } } void show_temp() { unsigned char a,b,c; if(!set_time) { if(temp_num >

15、 59) //溫度超過60度 { a = 14; //不顯示 c = 10; //顯示字母"H" b = 11; //顯示字母"I" // flag = 0; //不顯示點"." } else if(temp_num <= 12) //溫度低于12度 { c = 12; //顯示字母“L” b = 13; //顯示"O" a = 14; //不顯示 // flag = 0; //不顯示點"." } else { a = temp_dot; b = temp_num%10;

16、 c = temp_num/10; // flag = 1; //顯示點"." //--------------------------- if(a==5) { a=0; } else { a=5; if(b) { b-=1; } else { c-=1; b=9; } } //--------------------------- } } else { a = 0; b =

17、 set_temp%10; c = set_temp/10; // flag = 1; //顯示點"." } LED3_ON = 0; dp = 0xff; trans_led_data(c); LED1_ON = 1; delay(1000); LED1_ON = 0; dp = 0x7f; trans_led_data(b); LED2_ON = 1; delay(1000); LED2_ON = 0; dp = 0xff; trans_led_data(a); LED3_ON = 1; del

18、ay(1000); WDT_CONTR = 0x3c; //喂狗 } void show_error(unsigned char num) { unsigned char i; i = num; LED3_ON = 0; trans_led_data(15); //E LED1_ON = 1; delay(1000); LED1_ON = 0; trans_led_data(16); //r LED2_ON = 1; delay(1000); LED2_ON = 0; trans_led_data(i)

19、; LED3_ON = 1; delay(1000); WDT_CONTR = 0x3c; //喂狗 } void show_temp_err() //顯示溫度或錯誤標(biāo)志 { if(((!error_flag)||((error_flag==1)&&(!SW_N_FLAG))||(set_time))) //當(dāng)無錯時(error_flag=0)或錯為1(欠壓,error_flag=1),并且制冷鍵沒按下時,溫度調(diào)節(jié)時也顯示溫度,顯示溫度 { show_temp(); } else //當(dāng)錯為2(溫感器短路)或3(溫感器開路)時,或錯為1(Er1)且

20、制冷鍵按下顯示Err { if(flag) show_error(error_flag); else { LED1_ON = 0; LED2_ON = 0; LED3_ON = 0; } } } void make_cool(void) //制冷動作程序 { // if(!SW_N_ERR_TIME) //有欠壓故障后,制冷鍵按下0.5S后起作用 if(!ERR_ACT_DELAY) { if(!make_cool_flag) //如果沒有開強冷功能 { if(error_flag >

21、1) //如果出現(xiàn)溫感器開路或短路故障,不能開制冷功能 { CON4 = OFF; SW_N_FLAG = 0; //關(guān)了制冷便不管是否欠壓都不顯示出錯信息 } else //沒有出現(xiàn)溫感器開路或短路故障 { if(con4_flag) //如果制冷按下 { if((temp_w_num >= 4)&&(temp_s_num >= 4)&&(temp_num>set_temp)) //4 { CON4 = ON; if(error_flag == 1) //出現(xiàn)欠壓

22、故障時: SW_N_FLAG = 1; //欠壓時開了制冷標(biāo)志 } else { if((temp_w_num <= 2)||(temp_s_num <= 2)||(temp_num<(set_temp-1))) //2 { CON4 = OFF; //關(guān)制冷 SW_N_FLAG = 0; //關(guān)了制冷便不管是否欠壓都不顯示出錯信息 } } } else //如果制冷關(guān)掉 { CON4 = OFF;

23、//關(guān)制冷 SW_N_FLAG = 0; //關(guān)了制冷便不管是否欠壓都不顯示出錯信息 } } } else //強冷功能 { if(error_flag > 1) //如果出現(xiàn)溫感器開路或短路故障,不能開制冷功能 { CON4 = OFF; SW_N_FLAG = 0; //關(guān)了制冷便不管是否欠壓都不顯示出錯信息 } else { if(con4_flag) //如果制冷按下 { CON4 = ON; if(error_flag ==

24、 1) //出現(xiàn)欠壓故障時: SW_N_FLAG = 1; //欠壓時開了制冷標(biāo)志 } else //如果制冷關(guān)掉 { CON4 = OFF; //關(guān)制冷 SW_N_FLAG = 0; //關(guān)了制冷便不管是否欠壓都不顯示出錯信息 } } } } } void show_time() { unsigned char a,b; a = clock_time%10; b = clock_time/10; LED1_ON = 0; LED3_ON = 0

25、; dp = 0xff; trans_led_data(b); LED2_ON = 1; delay(1000); LED2_ON = 0; dp = 0xff; trans_led_data(a); LED3_ON = 1; delay(1000); WDT_CONTR = 0x3c; //喂狗 } void led_clear() //清LED顯示 { LED1_ON = 0; LED2_ON = 0; LED3_ON = 0; dp = 0xff; trans_led_data(14);

26、 } unsigned char check_key() { unsigned char i,j; i = 0x7f; for(j = 0; j < 8; j ++) { i <<= 1; LED_DATA = CY; LED_CLK = 0; LED_CLK = 1; if(!KEY_INPUT) { delay(200); if(!KEY_INPUT) { break; } } } return j; } void active_key() { bit Te

27、mpBit = 0; unsigned char i,j,k; //check_err(); led_clear(); //清LED顯示 j = check_key(); k = j; switch(j) { case 1: //制冷鍵 if(((temp_w_num >= 4)&&(temp_s_num >= 4)&&(temp_num>set_temp))||(con4_flag)) { if(error_flag < 2) //溫度傳感器沒有出現(xiàn)短路或斷路故障時,制冷鍵才起作用 { if

28、(mec_flag) //如果風(fēng)速鍵按過后制冷鍵才起作用 { // if(error_flag==1) //欠壓故障出現(xiàn) // SW_N_ERR_TIME = 5; KeyFlag = 1; con4_flag = ~con4_flag; //制冷控制 make_cool(); } } make_cool_flag = 0; //強冷標(biāo)志清0,不用強冷 } make_cool_time = 5; //制冷鍵按下后,5S計時裝載,如果5S后依然按下,則為強冷

29、 show_clock_flag = 0; set_time = 0; break; case 0: //風(fēng)速鍵 if(((CON3)&&(CON1)&&(CON2))||(!CON1)) { CON3 = ON; CON1 = OFF; } else if(!CON3) { CON3 = OFF; CON2 = ON; } else if(!CON2) { CON2 = OFF; CON1 = ON; }

30、 mec_flag = 1; set_time = 0; show_clock_flag = 0; break; case 2: // - DEC_FLAG = 1; //-鍵按下標(biāo)志置1 set_time_delay = 10; //設(shè)定溫度-鍵按下后持續(xù)時間 break; case 3: // + ADD_FLAG = 1; //+鍵按下標(biāo)志置1 set_time_delay = 10; //設(shè)定溫度+鍵按下后持續(xù)時間 break; case 5: //新風(fēng)鍵 C

31、ON5 = ~CON5; set_time = 0; show_clock_flag = 0; break; default: show_clock_flag = 0; break; } while(!KEY_INPUT) //按鍵按下沒松開時執(zhí)行的程序 { WDT_CONTR = 0x3c; //喂狗 led_clear(); //清LED顯示 if((show_clock_flag)&&(!show_clock_delay)) //如果+-兩鍵同時按下,并且延時后 show_time(

32、); //顯示開機總時間 else show_temp_err(); //顯示溫度或故障信息 led_clear(); //清LED顯示 if(mec_flag) //強冷功能,制冷鍵按下5秒才起作用 { if(error_flag < 2) //溫度傳感器沒有出現(xiàn)短路或斷路故障時,制冷才起作用 { if((k==1)&&(!make_cool_time)) { // con4_flag = 1; // CON4 = ON; if((!TempBit)&&(!KeyFlag))

33、 { make_cool_flag = 1; //強冷標(biāo)志置1,開強冷功能 TempBit = 1; con4_flag = ~con4_flag; //制冷控制 make_cool(); } make_cool(); } } } if(!clock_flag) //如果+-鍵沒有同時按下,不需顯示時間 { if(!set_time_delay) //如果設(shè)定溫度+-鍵按下過了1秒 { if(k==2) { if(set_

34、temp > 16) set_temp --; set_time = 4; //按鍵放開后繼續(xù)顯示的時間 set_time_delay = 3; //延時后再減 } if(k==3) { if(set_temp < 28) set_temp ++; set_time = 4; //按鍵放開后繼續(xù)顯示的時間 set_time_delay = 3; //延時后再加 } key_flag=1; } } if((k == 2)||(k =

35、= 3)) //檢測是否+-兩鍵同時按下程序 { led_clear(); //清LED顯示 i = 0x7f; for(j = 0; j < 8; j ++) { i <<= 1; LED_DATA = CY; LED_CLK = 0; LED_CLK = 1; if(!KEY_INPUT) { delay(200); if(!KEY_INPUT) { if(((j == 3)&&(k == 2))||((j == 2)&&(k =

36、= 3))) //如果+和-鍵都按下了 { clock_flag = 1; set_time_delay = 0; if(!show_clock_flag) //如果+-鍵同時按下,顯示時間標(biāo)志為0 { show_clock_flag = 1; //顯示時間標(biāo)志置1 show_clock_delay = 2; //+-鍵同時被按下后,到顯示出時間需要的延時 } break; } } } } }

37、 check_key(); } //-------------------------------------------------------按鍵放開后 if(!clock_flag) //如果+-鍵沒有同時被按下 { if(ADD_FLAG) //如果+鍵按下標(biāo)志為1 { ADD_FLAG = 0; //+鍵按下標(biāo)志清0 if(set_temp < 28) //如果設(shè)定溫度小于最大設(shè)定值,28度 set_temp ++; set_time = 4; //設(shè)定溫度后需繼續(xù)顯示設(shè)定值的時間 } if(DE

38、C_FLAG) //如果-鍵按下標(biāo)志為1 { DEC_FLAG = 0; //-鍵按下標(biāo)志清0 if(set_temp > 16) //如果設(shè)定溫度大于最小設(shè)定值,16度 set_temp --; //設(shè)定值減1 set_time = 4; //設(shè)定溫度后需繼續(xù)顯示設(shè)定值的時間 } } else //如果+-鍵同時按下標(biāo)志是1 { clock_flag = 0; //按鍵一旦松開,時間顯示標(biāo)志關(guān)掉 ADD_FLAG = 0; //+-鍵按下,調(diào)設(shè)定溫度標(biāo)志清0 DEC_FLAG = 0; } Key

39、Flag = 0; } void check_temp_num() { unsigned char i; unsigned long int j,k,TtemNUM1; Rgt = (ADC_G_DATA * R)/(Uvcc - ADC_G_DATA); Rwt = (ADC_W_DATA * R)/(Uvcc - ADC_W_DATA); Rst = (ADC_S_DATA * R)/(Uvcc - ADC_S_DATA); for (i = 1; i < 62; i ++) { active_key(); if(LED_I

40、NIT_FLAG) //剛開機等到HI顯示過去,顯示穩(wěn)定后再顯示,去除開機時顯示"HI"現(xiàn)象 show_temp_err(); //顯示溫度或故障信息 j = TempTable[i + 1]; k = TempTable[i]; TtemNUM1 = (j / 2) + (k / 2); if((Rgt <= k) && (Rgt > j)) { temp_num = i; if(Rgt <= TtemNUM1) temp_dot = 5; else temp_dot = 0; } if

41、((Rwt <= k) && (Rwt > j)) temp_w_num = i; if((Rst <= k) && (Rst > j)) temp_s_num = i; } } void check_err() //檢測故障程序 { if((ADC_G_DATA >5000)||(ADC_W_DATA > 5000)||(ADC_S_DATA > 5000)) //溫度傳感器開路故障 5000 { if(ERR_ACT_FLAG!=3) { ERR_ACT_DELAY = 5; ERR_ACT_FL

42、AG = 3; //出錯 } if(!ERR_ACT_DELAY) error_flag = 3; //出錯標(biāo)志置3,將顯示"Er3" } else { if((ADC_G_DATA < 100)||(ADC_W_DATA < 100)||(ADC_S_DATA < 100)) //溫度傳感器短路故障 100 { // error_flag = 2; //出錯標(biāo)志置2,將顯示"Er2" if(ERR_ACT_FLAG!=2) { ERR_ACT_FLAG = 2; //出錯 ER

43、R_ACT_DELAY = 5; } if(!ERR_ACT_DELAY) error_flag = 2; } else { if((SW_N)&&(!CON4)) //高低壓故障 { // error_flag = 1; //出錯標(biāo)志置1,將顯示"Er1" if(ERR_ACT_FLAG!=1) { ERR_ACT_FLAG = 1; //出錯 ERR_ACT_DELAY = 5; } if(!ERR_ACT_DELAY)

44、 error_flag = 1; } else { if(!SW_N) { // error_flag = 0; //沒有故障 if(ERR_ACT_FLAG!=0) { ERR_ACT_FLAG = 0; //沒錯 ERR_ACT_DELAY = 5; } if(!ERR_ACT_DELAY) error_flag = 0; } } } } } unsigned lon

45、g int ADC_active(void) { unsigned char i; unsigned long int adc_num,adc_num1,adc_num2; adc_num2 = 0; for(i = 0; i < 8; i ++) { ADC_DATA = 0; //清空ADC數(shù)據(jù) ADC_CONTR |= 0x08; //啟動ADC轉(zhuǎn)換 while(!(ADC_CONTR & 0x10)); //等待ADC轉(zhuǎn)換完成 00010000,ADC_FLAG,ADC轉(zhuǎn)換完成標(biāo)志位,完成后為1; // {WDT_CONTR = 0x3

46、8;} //喂狗} ADC_CONTR &= 0xe7; //清0 ADC_FLAG,ADC_START 位,停止ADC轉(zhuǎn)換 adc_num1 = ADC_DATA; adc_num2 = adc_num2 + adc_num1; //保存AD轉(zhuǎn)換結(jié)果 } if(LED_INIT_FLAG) //剛開機等到HI顯示過去,顯示穩(wěn)定后再顯示,去除開機時顯示"HI"現(xiàn)象 { show_temp_err(); //顯示溫度或故障信息 } adc_num = adc_num2 / 8; return adc_num; } void A

47、DC_control(void) { unsigned long int adc_mid_data; //------------- ADC ---------------------- ADC_CONTR |= 0x80; //開ADC電源 delay(30); //------------通道0-------------------- ADC_CONTR = 0xe0; //1,11,00,000 轉(zhuǎn)換速度(11)210, ADC通道(000)0 delay(3); adc_mid_data = ADC_active(); ADC_G_DA

48、TA = (adc_mid_data*Uvcc)/256; //----------------------------------------- //------------通道1-------------------- ADC_CONTR = 0xe1; //1,11,00,001 轉(zhuǎn)換速度(11)210, ADC通道(001)1 delay(3); adc_mid_data = ADC_active(); ADC_W_DATA = (adc_mid_data*Uvcc)/256; //---------------------------------------

49、-- //------------通道2-------------------- ADC_CONTR = 0xe2; //1,11,00,010 轉(zhuǎn)換速度(11)210, ADC通道(010)2 delay(3); adc_mid_data = ADC_active(); ADC_S_DATA = (adc_mid_data*Uvcc)/256; //----------------------------------------- ADC_CONTR &= 0x7f; //關(guān)ADC電源 } main() { unsigned char i; //-

50、- I/O口功能設(shè)置 --- P1M0 = 0x87; P1M1 = 0x78; P2M0 = 0x8c; P2M1 = 0x70; P3M0 = 0xdf; P3M1 = 0x20; led_clear(); //清LED顯示 //--------------------- P1 = 0x78; //CON1~5斷開 P2 = 0x40; P3 = 0x00; CON4 = OFF; LED_INIT_FLAG=0; //用于開機延時片刻,消除“HI”顯示 mec_flag = 0; //風(fēng)速鍵按下指示標(biāo)志 set_t

51、emp = 20; set_time = 0; DEC_FLAG = 0; //-鍵按下標(biāo)志清0 ADD_FLAG = 0; //+鍵按下標(biāo)志清0 set_time_delay = 0; make_cool_time = 0; show_clock_delay = 0; //+-鍵同時被按下后,到顯示出時間需要的延時清0 con4_flag = 0; make_cool_flag = 0; //強冷標(biāo)志清0,不用強冷 error_flag = 0; SW_N_FLAG = 0; ERR_ACT_DELAY=0; ERR_ACT_FLAG =

52、 0; SW_N_ERR_TIME = 0; show_clock_flag = 0; //顯示時鐘標(biāo)志 key_flag = 0; //-- 定時器設(shè)置 --- TMOD = 0x10; TH1 = 0x7d; //0.1s TL1 = 0xcb; EA = 1; ET1 = 1; TR1 = 1; KeyFlag = 0; count = 0; sec_count = 0; min_count = 0; hou_count = 0; clock_time = 0; //---------------------

53、WDT_CONTR = 0x3c; //看門狗設(shè)置 while(1) { if(!LED_INIT_FLAG) //剛開機等到HI顯示過去,顯示穩(wěn)定后再顯示,去除開機時顯示"HI"現(xiàn)象 { for(i = 0; i < 10; i ++) { led_clear(); //清LED顯示 ADC_control(); check_temp_num(); check_err(); //檢測故障程序 } } LED_INIT_FLAG = 1; ADC_control(); //AD測溫

54、 check_err(); //檢測故障程序 if(!count) //每秒測一次溫度 { ADC_control(); check_temp_num(); check_err(); //檢測故障程序 show_temp_err(); //顯示溫度或故障信息 } active_key(); make_cool(); show_temp_err(); //顯示溫度或故障信息 WDT_CONTR = 0x3c; //喂狗 } } void it_timer1(void) inter

55、rupt 3 { TH1 = 0x7d; TL1 = 0xcb; WDT_CONTR = 0x3c; if(count == 0) flag = 0; if(count == 5) flag = 1; if(set_time_delay) set_time_delay --; if(ERR_ACT_DELAY) ERR_ACT_DELAY--; // if(SW_N_ERR_TIME) // SW_N_ERR_TIME --; if(count >= 10) { count = 0; sec_c

56、ount ++; if(set_time) set_time --; if(show_clock_delay) //+-鍵同時被按下后,到顯示出時間需要的延時 show_clock_delay --; if(make_cool_time) make_cool_time --; if(sec_count == 60) { sec_count = 0; min_count ++; if(min_count ==60) { min_count = 0; hou_count ++; if(hou_count == 10) { hou_count = 0; clock_time += 10; } } } // delay_num --; } else count ++; } 28 / 28

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!