




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.硬件設(shè)計(jì) 軟件設(shè)計(jì)/*/#include <C8051F410.H>#include <math.H>#include <RT12832.H>#include <string.H>#include <stdio.h>/*/#define BYTE unsigned char#define WORD unsigned int#define D_WORD unsigned long/*/#define AD_TEMP 0x01/*/#define L_0mm 1964#define L_100mm 3396#define T_223de
2、gree 1231#define T_989degree 3239 /*/WORD idata ADC_ = 0;float idata Temp_Given = 0; /溫度擴(kuò)大10倍/*/WORD idata L_WARNING = 100; WORD idata H_WARNING = 1000; /*/int idata TEMP_SET14=0;int idata L_A_H_SET4=0;int idata L_A_L_SET3=0;WORD idata TEMP_SET_ = 0;WORD idata L_A_H_SET_ = 0;WORD idata L_A_L_SET_ =
3、0;/*/BYTE xdata DispStr132,DispStr232;WORD xdata AD_BUF40; /= 12,11,10,9,8,7,6,5,4,3,2,1;/*/sbit BEER_A = P05;sbit TEST_XH = P04;sbit SST_CON = P03;sbit KEY_SWITCH = P23;sbit KEY_SET = P20;sbit KEY_SHIFT = P22;sbit KEY_INC = P21;bit KEY_SWITCH_H_BIT = 0;bit KEY_SWITCH_L_BIT = 0;bit KEY_SET_H_BIT = 0
4、;bit KEY_SET_L_BIT = 0;bit KEY_SHIFT_H_BIT = 0;bit KEY_SHIFT_L_BIT = 0;bit KEY_INC_H_BIT = 0;bit KEY_INC_L_BIT = 0;BYTE idata KEY_SWITCH_COUNT = 0;BYTE idata KEY_SHIFT_COUNT1 = 0;BYTE idata KEY_SHIFT_COUNT2 = 0;BYTE idata KEY_SHIFT_COUNT3 = 0;/*/float idata L_yw = 0;float idata T_yw = 0;float idata
5、T_yw_buf1= 0;float idata T_yw_buf2= 0;WORD idata L_yw_ = 0;WORD idata T_yw_ = 0;WORD idata Count_ = 0;BYTE idata Count_ = 0;/*/WORD xdata MCH_JISHU60 = 0;WORD idata T0_BUF = 0;WORD idata ZHUANSU = 0;BYTE idata T3INT_JISHU = 0;BYTE idata Count_n = 0; WORD idata K = 0; bit CESU_BIT = 0; /速度脈沖時(shí)間計(jì)數(shù)控制標(biāo)志,
6、下降沿啟動(dòng)或停止計(jì)數(shù)bit INT0_BIT = 0;bit CHAOSHI_BIT = 1; /INT0超時(shí)標(biāo)志,超過100ms沒有INT0中斷,即被置位。bit Warning_bit = 0;bit S1_BIT = 0;bit WENKONG_BIT = 0;bit BEER_A_BIT = 0;WORD idata WENDU_JISHU = 0;BYTE idata Warning_Count=0;BYTE idata INT0_CHAOSHI_JSH = 0;/PCA計(jì)數(shù)中斷加1,INT0中斷清0,超過總值20認(rèn)為INT0超時(shí),置位CHAOSHI_BIT。/*/void CONF
7、IG();void YSH(D_WORD x);/*/void CONFIG() PCA0MD = 0x07; /看門狗禁止,PCA用于對(duì)ECI計(jì)數(shù) REG0CN = 0x10; /內(nèi)部LDO使能 PFE0CN = 0X20; /預(yù)取指令允許 XBR1 = 0x40; /使能交叉開關(guān) P0MDIN = 0xfd; /P0.1配置成模擬輸入 P2MDOUT = 0x40; /P2.6配置成模擬輸入/- OSCICN = 0xc7; /開啟內(nèi)部振蕩器不分頻/內(nèi)部振蕩器控制寄存器/位7:IOSCEN:內(nèi)部振蕩器使能位,0:內(nèi)部振蕩器禁止。1:內(nèi)部振蕩器使能。/位6:IFRDY:內(nèi)部振蕩器頻率準(zhǔn)備好標(biāo)
8、志,0:內(nèi)部振蕩器未運(yùn)行在編程頻率。1:內(nèi)部振蕩器按編程頻率運(yùn)行。/位5:SUSPEND:內(nèi)部振蕩器掛起使能位,向該位寫1將內(nèi)部振蕩器置于SUSPEND模式。當(dāng)有一個(gè)SUSPEND模式喚醒事件發(fā)生時(shí),內(nèi)部振蕩器恢復(fù)運(yùn)行。/位4-3:未用。讀 = 00b,寫 = 忽略。/位2-0:IFCN2-0:內(nèi)部振蕩器頻率控制位,/000:SYSCLK為內(nèi)部振蕩器128分頻(缺?。?001:SYSCLK為內(nèi)部振蕩器64分頻。/010:SYSCLK為內(nèi)部振蕩器32分頻。/011:SYSCLK為內(nèi)部振蕩器16分頻。/100:SYSCLK為內(nèi)部振蕩器8分頻。/101:SYSCLK為內(nèi)部振蕩器4分頻。/110:S
9、YSCLK為內(nèi)部振蕩器2分頻。/111:SYSCLK為內(nèi)部振蕩器不分頻。/- CLKSEL = 0x30; /配置振蕩器為系統(tǒng)時(shí)鐘/-/VREF初始化 REF0CN = 0x13;/-/ADC初始化 ADC0CF = 0xf8; ADC0CN = 0x80; ADC0TK = 0xff; ADC0MX = 0x01; /-/IDAC0初始化 IDA0CN = 0xf6; IDA0H = 0x04; IDA0L = 0xff;/-/T0作為PCA輸入頻率,T1用來測量電機(jī)速度 IT0 = 1; CKCON = 0xcc; /T0采用系統(tǒng)時(shí)鐘,T1采用系統(tǒng)時(shí)鐘,T2采用系統(tǒng)時(shí)鐘/12,T3采用系統(tǒng)
10、時(shí)鐘 TMOD = 0x19; /T0定時(shí)器模式,由INT0決定。 TR0 = 1; /- IT01CF = 0x02; /p0.2口 EX0 = 1;/-/T2初始化 TMR2CN = 0x04; TMR2RLL = 0x3f; TMR2RLH = 0xb0; TMR2L = 0x3f; TMR2H = 0xb0; ET2 = 1;/-/T3初始化 TMR3CN = 0x00; TMR3RLL = 0x00; TMR3RLH = 0x00; TMR3L = 0x00; TMR3H = 0x00;/- EA = 1;/*/void INT0_INT() interrupt 0 float x
11、= 0; BYTE i = 31; BYTE j = 0; T0_BUF = TL0 + 256*TH0; TH0=0; TL0=0; for(i=59;i>=1;i-) MCH_JISHUi = MCH_JISHUi-1; MCH_JISHU0 = T0_BUF; for(j=0;j<=59;j+) x += MCH_JISHUj; x = x/60.0; ZHUANSU = x;/*/void T2_INT() interrupt 5 TMR2CN &= 0x7f; Count_n+; if(Count_n > 2000) Count_n = 0; Warning
12、_Count+; if(Warning_Count > 100) Warning_Count = 0; Warning_bit = !Warning_bit; S1_BIT = 1; if(WENKONG_BIT = 1) WENDU_JISHU+; if(WENDU_JISHU>270) WENDU_JISHU = 270;BEER_A_BIT = 1;WENKONG_BIT = 0; /*/void T3_INT() interrupt 14 TMR3CN &= 0x7f;/*/延時(shí)子程序void YSH(D_WORD x) while(x>0) x-; /*/波
13、形發(fā)生void BOXING() TEST_XH = 0; YSH(100); TEST_XH = 1; YSH(100);/*/液位換算void YEWEI_HS() L_yw = 1000.0*(float)(ZHUANSU) - L_0mm)/(L_100mm-L_0mm); if(L_yw<0) L_yw = 0; L_yw_= (WORD)L_yw; /*/溫度換算void TEMP_HS() T_yw = 766.0*(float)(ADC_)-T_223degree)/(T_989degree-T_223degree)+223.0; T_yw_= (WORD)T_yw;/*
14、/WORD ADC0(BYTE AD_LU) BYTE x; WORD y; ADC0MX = AD_LU; ADC0CN |= 0x10; x = ADC0CN&0x20; while(x = 0) x = ADC0CN&0x20; ADC0CN = ADC0CN&0xdf; y = 256*ADC0H+ADC0L; return y;/*/WORD ADC0_PINGJUN(BYTE AD_LU) BYTE i; float x=0; AD_BUFCount_ = ADC0(AD_LU); Count_+; if(Count_>40) Count_=0; fo
15、r(i=0;i<40;i+) x += AD_BUFi; return (x/40.0);/-void DispLCD()int i;for(i=0;i<16;i+)DispStr1i = 32;DispStr2i = 32;switch(KEY_SWITCH_COUNT) case 0:/溫度液位報(bào)警顯示 if(L_yw_<L_WARNING) if(Warning_bit = 0) sprintf(DispStr1,"Low Warning"); sprintf(DispStr2,"Level:%3d.%dmm",L_yw_/10,
16、L_yw_%10); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); else sprintf(DispStr1," "); sprintf(DispStr2," "); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); else if(L_yw_>H_WARNING) if(Warning_bit = 0) sprintf(DispStr1,&
17、quot;High Warning"); sprintf(DispStr2,"Level:%3d.%dmm",L_yw_/10,L_yw_%10); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); else sprintf(DispStr1," "); sprintf(DispStr2," "); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,
18、DispStr2,8); else sprintf(DispStr1,"Temp:%3d.%d%d",T_yw_/10,T_yw_%10,WENDU_JISHU); sprintf(DispStr2,"Level:%3d.%dmm",L_yw_/10,L_yw_%10); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); break; case 1:/溫度液位顯示 sprintf(DispStr1,"Temp:%3d.%d",T_yw
19、_/10,T_yw_%10); sprintf(DispStr2,"Level:%3d.%dmm",L_yw_/10,L_yw_%10); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); break; case 2: /溫度設(shè)置 switch(KEY_SHIFT_COUNT1) case 0: sprintf(DispStr1,"Temp SET:"); sprintf(DispStr2,"Temp:%d%d%d.%d",TEMP_
20、SET10,TEMP_SET11,TEMP_SET12,TEMP_SET13); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); break; case 1: if(Warning_bit = 0) sprintf(DispStr1,"Temp SET:"); sprintf(DispStr2,"Temp:%d%d%d.%d",TEMP_SET10,TEMP_SET11,TEMP_SET12,TEMP_SET13); RT12832_WRITE_HAN
21、ZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); else sprintf(DispStr1,"Temp SET:"); sprintf(DispStr2,"Temp:%d%d%d. ",TEMP_SET10,TEMP_SET11,TEMP_SET12); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); break; case 2: if(Warning_bit = 0) sprint
22、f(DispStr1,"Temp SET"); sprintf(DispStr2,"Temp:%d%d%d.%d",TEMP_SET10,TEMP_SET11,TEMP_SET12,TEMP_SET13); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); else sprintf(DispStr1,"Temp SET:"); sprintf(DispStr2,"Temp:%d%d .%d",TEMP_SET10,
23、TEMP_SET11,TEMP_SET13); DispStr2strlen(DispStr2)=32; RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); break; case 3: if(Warning_bit = 0) sprintf(DispStr1,"Temp SET:"); sprintf(DispStr2,"Temp:%d%d%d.%d",TEMP_SET10,TEMP_SET11,TEMP_SET12,TEMP_SET13); RT128
24、32_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); else sprintf(DispStr1,"Temp SET:"); sprintf(DispStr2,"Temp:%d %d.%d",TEMP_SET10,TEMP_SET12,TEMP_SET13); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); break; case 4: if(Warning_bit
25、 = 0) sprintf(DispStr1,"Temp SET:"); sprintf(DispStr2,"Temp:%d%d%d.%d",TEMP_SET10,TEMP_SET11,TEMP_SET12,TEMP_SET13); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); else sprintf(DispStr1,"Temp SET:"); sprintf(DispStr2,"Temp: %d%d.%d"
26、;,TEMP_SET11,TEMP_SET12,TEMP_SET13); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); break; default: break; KEY_SHIFT_COUNT2 = 0; KEY_SHIFT_COUNT3 = 0; break; case 3: /高液位報(bào)警設(shè)置 switch(KEY_SHIFT_COUNT2) case 0: sprintf(DispStr1,"High Alarm SET:"); sprintf(DispStr2
27、,"Level:%d%d%d.%dmm",L_A_H_SET0,L_A_H_SET1,L_A_H_SET2,L_A_H_SET3); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); break; case 1: if(Warning_bit = 0) sprintf(DispStr1,"High Alarm SET:"); sprintf(DispStr2,"Level:%d%d%d.%dmm",L_A_H_SET0,L_A_H_S
28、ET1,L_A_H_SET2,L_A_H_SET3); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); else sprintf(DispStr1,"High Alarm SET:"); sprintf(DispStr2,"Level:%d%d%d. mm",L_A_H_SET0,L_A_H_SET1,L_A_H_SET2); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,
29、DispStr2,8); break; case 2: if(Warning_bit = 0) sprintf(DispStr1,"High Alarm SET:"); sprintf(DispStr2,"Level:%d%d%d.%dmm",L_A_H_SET0,L_A_H_SET1,L_A_H_SET2,L_A_H_SET3); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); else sprintf(DispStr1,"High Ala
30、rm SET:"); sprintf(DispStr2,"Level:%d%d .%dmm",L_A_H_SET0,L_A_H_SET1,L_A_H_SET3); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); break; case 3: if(Warning_bit = 0) sprintf(DispStr1,"High Alarm SET:"); sprintf(DispStr2,"Level:%d%d%d.%dmm"
31、;,L_A_H_SET0,L_A_H_SET1,L_A_H_SET2,L_A_H_SET3); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); else sprintf(DispStr1,"High Alarm SET:"); sprintf(DispStr2,"Level:%d %d.%dmm",L_A_H_SET0,L_A_H_SET2,L_A_H_SET3); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT128
32、32_WRITE_HANZI(0x90,DispStr2,8); break; case 4: if(Warning_bit = 0) sprintf(DispStr1,"High Alarm SET:"); sprintf(DispStr2,"Level:%d%d%d.%dmm",L_A_H_SET0,L_A_H_SET1,L_A_H_SET2,L_A_H_SET3); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); else sprintf(Dis
33、pStr1,"High Alarm SET:"); sprintf(DispStr2,"Level: %d%d.%dmm",L_A_H_SET1,L_A_H_SET2,L_A_H_SET3); RT12832_WRITE_HANZI(0x80,DispStr1,8); RT12832_WRITE_HANZI(0x90,DispStr2,8); break; default: break; KEY_SHIFT_COUNT1 = 0; KEY_SHIFT_COUNT3 = 0; break; case 4: /低液位報(bào)警設(shè)置 switch(KEY_SHIFT_COUNT3) case 0: spri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 代理買社保合同范本
- 亞克力盒制作合同范本
- 勞務(wù)合同范本無固定
- 公寓購買講價(jià)合同范本
- 醫(yī)院物業(yè)采購合同范本
- 加梯安裝合同范本
- 公司做假雇傭合同范本
- 公司與政府合同范本
- 企業(yè)合同范本牛廠
- 交定金認(rèn)購合同范本
- 井工煤礦中長期防治水規(guī)劃編制細(xì)則
- 官兵成長規(guī)劃方案
- 2024年湘中幼兒師范高等專科學(xué)校高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 設(shè)備使用手冊(范例模板)
- 上海房屋修繕工程培訓(xùn)課件
- 醫(yī)院電梯安全操作培訓(xùn)記錄
- 《讀懂財(cái)務(wù)報(bào)表》課件
- 《瘋狂動(dòng)物城》全本臺(tái)詞中英文對(duì)照
- 建筑施工安全管理及揚(yáng)塵治理檢查投標(biāo)方案(技術(shù)方案)
- 六年級(jí)毛筆書法教案(下冊)
- 秘魯農(nóng)村公路
評(píng)論
0/150
提交評(píng)論