數(shù)字萬用表課程設(shè)計報告_第1頁
數(shù)字萬用表課程設(shè)計報告_第2頁
數(shù)字萬用表課程設(shè)計報告_第3頁
數(shù)字萬用表課程設(shè)計報告_第4頁
數(shù)字萬用表課程設(shè)計報告_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、HUBEI UNIVERSJTY OF ECONOMICS湖北經(jīng)濟學(xué)院電子工程系課程設(shè)計報告課題名稱:智能數(shù)字萬用表指導(dǎo)教師: 王金庭、汪成義、劉光然學(xué)生班級:學(xué)生姓名: 洪菁、楊飛、趙婷婷學(xué) 號:學(xué)生院系:電子工程系2011年7月目錄一、設(shè)計背景 3二、系統(tǒng)設(shè)計 31系設(shè)計方框圖 32系統(tǒng)設(shè)計方案 3三、硬件電路設(shè)計 41. A/轉(zhuǎn)換模塊 42. 動量程轉(zhuǎn)換模塊 53. 直流轉(zhuǎn)換模塊 54. 電阻測量模塊 6四、軟件設(shè)計 7五、系統(tǒng)調(diào)試 81. 測使用的儀器 82. 標(biāo)測試和測試結(jié)果 8六、體會與感受 933摘要:本設(shè)計采用單片機芯片M3S811設(shè)計一個智能數(shù)字萬用表,能夠精確 的測量直流電

2、壓、交流電壓和電阻,具有測量精度高,抗干擾能力強等特點。整 個硬件系統(tǒng)有幾大模塊聯(lián)合構(gòu)成:交直流轉(zhuǎn)換模塊、電阻測量模塊、A/D轉(zhuǎn)換模塊以及自動量程轉(zhuǎn)換模塊。軟件部分則實現(xiàn)硬件控制和自動睡眠功能。關(guān)鍵字:M3S811 A/D轉(zhuǎn)換、多量程轉(zhuǎn)換、自動睡眠一、設(shè)計背景隨著電子技術(shù)的迅速發(fā)展,電子產(chǎn)品已經(jīng)滲透到我們生活的方方面面, 人們對電子不再感到陌生,對電路基礎(chǔ)以及電子元器件的了解也開始慢慢普及。 在一些小家電維修或檢測中,通常對電路比較了解人們會使用萬用表對未知電阻 進行測量。而對于未知的電壓電流,則需要輔助電路對其進行輔助測量,即繁瑣, 精確度又低。而對于那些電路基礎(chǔ)相對薄弱的人們, 那只能是望

3、洋興嘆了。于是, 設(shè)計一臺數(shù)字智能便攜式電阻、電壓測量儀器成為必要。系統(tǒng)設(shè)計1.系統(tǒng)設(shè)計方框圖圖1-系統(tǒng)模塊框圖2. 系統(tǒng)設(shè)計方案系統(tǒng)設(shè)計是由硬件電路和軟件編程兩大模塊組成。硬件電路又由多個模塊組成。硬件部分,首先以A/D轉(zhuǎn)換器(MC14433)和CD4052為核心,設(shè)計一個多檔的直流電壓測量電路,再在此基礎(chǔ)上對電路進行擴展 ,使其能多量程的測量直流 電流和電阻的測量電路。然后通過單片機(Cotex-M3)編程對各個主要模塊的進 行智能控制和數(shù)據(jù)處理,實現(xiàn)對直流電壓、電流和電阻測量對象切換;手動和自 動量程轉(zhuǎn)換等功能,并將測量數(shù)據(jù)轉(zhuǎn)換為人們?nèi)粘A?xí)慣的十進制數(shù)字形式顯示在 LCD 液晶屏上。所以

4、系統(tǒng)硬件設(shè)計大致可以分為多檔位直流電壓測量電路、交流 /直流轉(zhuǎn)換電路、電阻測量、功能控制和數(shù)據(jù)顯示電路這五個主要電路模塊。三、硬件電路設(shè)計1. A/D轉(zhuǎn)換模塊選用的MC14433是一個低功耗3 1/2位雙積分式A/D轉(zhuǎn)換器,MC1403!供輸出可調(diào)基準(zhǔn)電壓Vref (大小為2V),被測信號(0-2V的直流電壓)從MC14433 的Vin引腳輸入A/D轉(zhuǎn)換器MC14433當(dāng)A/D轉(zhuǎn)換結(jié)束時,MC14433勺EOC引腳輸出一個高電平脈沖給單片機,單片機進入中斷處理程序。然后單片機對MC1443的 DS1DS進行動態(tài)掃描,將Q0Q3S行轉(zhuǎn)換之后讀取MC14433勺Q0-Q3 引腳的數(shù)據(jù)由LCD顯示。

5、原理圖如下圖2-AD轉(zhuǎn)換電路圖單片機其中,三號引腳Vi為被測電壓的輸入端,被測電壓與基準(zhǔn)電壓有以下關(guān)系:因此,滿量程的Vx=R。當(dāng)滿量程選為1.999V,Vr可取2.000V,而當(dāng)滿量程為199.9mV時,Vr取200.0mV,在實際的應(yīng)用電路中,根據(jù)需要,VR值可在200m 2.000V之間選取。2. 自動量程轉(zhuǎn)換模塊自動量程轉(zhuǎn)換電路的作用是按輸入條件信號(過量程、欠量程信號)和時鐘 信號(EOC DS1DS)發(fā)生相應(yīng)的量程信號控制。通過單片機讀取 MC14433勺數(shù) 字信號,通過數(shù)字信號的大小來控制模擬開關(guān), 從而改變反饋電阻的大小來實現(xiàn) 檔位的不同選擇。模擬開關(guān)的導(dǎo)通由Q3和Q0決定,當(dāng)

6、被測電壓過量程時(Q3=0 且Q0=1,向高量程變化;欠量程時(Q3=1且 Q0=1,向低量程變化;在量程 時,保持原來狀態(tài)不變。相關(guān)參數(shù)計算:Au - -Rf/R, R=100k,如果要實現(xiàn) 4個檔位,可以將 Rf設(shè)為1k、10k、100k和1M然后通過控制開關(guān)來接通電阻,從而實現(xiàn)換檔。原理圖如下:3.交直流轉(zhuǎn)換模塊D1導(dǎo)通、D2截止;所運放A1和D1、D2組成半波整流電路。當(dāng)Ui0時,D1截止、D2導(dǎo)通,運放A1構(gòu)成反相器,所以UA=-Ui。對運放A2來說,它構(gòu)成的是反相加法電路,Ua被反相放大2倍,與輸入信號疊加,即U=-2UA-Ui。此時輸入信號的正半周被保留,負半周被抵消,再加上 剩

7、下的Ua就變成了一個完整的全波整流電路原理圖如下:fR/200 kOhnn/50%涉1 kOhm/50%74110kOhmwv741圖4交直流轉(zhuǎn)換電路4.電阻測量模塊利用運算放大器采用反相比例運算的方法,將電阻轉(zhuǎn)換成與之相關(guān)的電壓,將電壓輸入MC14433測量電路,并通過單片機計算在液晶屏上顯示出來。具體 的電路及換算公式如下:U /R i =Uo/Rx,推得:Rx=R* Uo/ U i。原理圖如下:10 kOhm -A/W0 kOhrnn圖5電阻測量電路四、軟件設(shè)計以下是通過軟件編程實現(xiàn)功能的流程圖,源代碼見附錄單片機和液晶屏初始化多功能數(shù)字萬用表F下一頁A DC電壓呂電阻CAC電壓D:返回

8、誤標(biāo)差輸值值誤標(biāo) 差稱 值值誤標(biāo)值值誤標(biāo) 羞;輸 值值五、系統(tǒng)調(diào)試1、測試使用的儀器(1)數(shù)字萬用表M890G(2)EE1640C型函數(shù)信號發(fā)生器(3)RIGOL DS5062M型示波器2、指標(biāo)測試和測試結(jié)果(1)直流電壓的測試測試方案:通過撥動開關(guān)和單片機選擇直流檔,由直流電源提供電壓進行測 量,然后由單片機顯示輸出檔位輸入電壓實測電壓誤差(%2V2V0.6372v0.14%(2)電阻的測試測試方案:通過撥動開關(guān)和單片機選擇電阻檔,由電平轉(zhuǎn)換電路提供2V的基準(zhǔn)電壓,將待測電阻接入測量端,然后選擇合適的檔位進行測量。檔位輸入電阻實測電阻誤差(%200165.0160.03.12%172.018

9、3.56.3%(3)交流電壓的測試測試方案:通過撥動開關(guān)和單片機選擇交流檔,由函數(shù)信號發(fā)生器提供一個 正弦交流電壓,輸入到交流端進行測量。(4)相對誤差(厶%的測試測試方案:通過撥動開關(guān)和單片機選擇相應(yīng)的檔位進行測量時, 可以通過按 鍵輸入標(biāo)稱值,單片機得到標(biāo)稱值之后進行智能的換算得到值并顯示出來。結(jié)果分析:由于時間限制以及能力有限,該塊功能暫時還沒有實現(xiàn)。六、體會與感受經(jīng)過短短十天左右的培訓(xùn),我們從對 Cotex-M3 無所知變成了初步了解, 現(xiàn)在拿著我們歷經(jīng)十天奮戰(zhàn)而來的小項目, 確實感受頗深。從開始的電路成立到 最后的系統(tǒng)調(diào)試,我們遇到了很多問題和波折,但是經(jīng)過一番糾結(jié)和努力,我們 最終

10、將這些問題順利解決了。我們不僅完成了該項目所必須的基本要求,并且豐富和拓展了力所能及的其它功能:1直流電壓的測量2交流電壓的測量3電阻的 測量4自動量程轉(zhuǎn)換5自動關(guān)機功能6相對誤差的測量。當(dāng)然,因為時間和能力 的限制,該項目還有許多值得修飾和改進的地方。 我相信,在接下來的培訓(xùn)時間 里,我們所有組員都會更加認真努力的接受新的知識, 并在后續(xù)的項目中將每一 位組員都發(fā)揮到最好。七、附錄1.整機電路圖#I人交倉何號rl*um史電直vaTm-ouiis7IPOT111 1削 kUh-p-i-nrCTD盧建自動轉(zhuǎn)轍電路+T ri丄HC14433ni j4fLHZZk22.源代碼本系統(tǒng)源程序代碼共分為三

11、個部分如下:/*跳線說明:1)將 EXP-LM3S811板卡上JP9跳至左側(cè)(短接1-2);2)將EXP-LM3S811板卡上JP13用跳線短接至左側(cè)或右側(cè)都可以;3)將 EXP-min_system_board板卡上 JP13 JP14 JP15 JP16跳至右側(cè)(短 接 2-3)操作過程:1)將EXP-min_system_board板卡上K1撥動開關(guān)撥至 ON狀態(tài),給液晶上 電;2)調(diào)節(jié)RP1電位器,使液晶有合適的背光;3)上電,編譯并下載程序,復(fù)位后全速運行程序;觀察液晶顯示的內(nèi)容, 再修改程序使之顯示自己的內(nèi)容。*/#i ncludesystem Ini t.h#i ncludelc

12、d.h#defi neCTL_PERIPH1SYSCTL_PERIPH_GPIOC/控制液晶所用的片內(nèi)端口外設(shè)定義#defi neCTL_PORTGPIO_PORTC_BASE#defi neSCKGPIO_PIN_4/定義信號SCK#defi neSIDGPIO_PIN_5/定義信號SID#defi neCSGPIO_PIN_6/定義信號CS#defi nePSBGPIO_PIN_7/定義信號PSB#defi neSCK_LGPIOPi nWrite(CTL_PORT,SCK,OxOO);/定義信號輸出低電平#defi neSID_LGPIOPi nWrite(CTL_PORT,SID,Ox

13、OO);#defi neCS_LGPIOPi nWrite(CTL_PORT,CS,OxOO);#defi nePSB_LGPIOPi nWrite(CTL_PORT,PSB,OxOO);#defi neSCK_HGPIOPi nWrite(CTL_PORT,SCK,OxFF);/定義信號輸出高電平#defi neSID_HGPIOPi nWrite(CTL_PORT,SID,OxFF);#defi neCS_HGPIOPi nWrite(CTL_PORT,CS,OxFF);#defi nePSB_HGPIOPi nWrite(CTL_PORT,PSB,OxFF);#define SID RE

14、ADGPIOPi nRead(CTL_PORT,SID);/定義讀回的數(shù)據(jù)#defi ne SID_INGPIOP in TypeGPIOI nput(CTL_PORT,SID); / 定義SID信號為輸入#defi ne SID_OUTGPIOPi nTypeGPIOOutput(CTL_PORT,SID); 定義SID信號為輸出#defi neREADDATA_PERIPHSYSCTL_PERIPH_GPIOB#defi neREADDATA_PORTGPIO_PORTB_BASE#defi ne READDATAGPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1|GPIO_

15、PIN_0#defi neINTGPIO_PIN_4#defi neSCAN_PERIPHSYSCTL_PERIPH_GPIOA#defi neSCAN_PORTGPIO_PORTA_BASE#defi neSCAN#defi neOUTPUT_PERIPH#defi neOUTPUT_PORT#defi neOUTPUTSYSCTL_PERIPH_GPIOEGPIO_PORTE_BASEGPIO_PIN_1|GPIO_PIN_0GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0#defi ne KEY_PORTGPIO_PORTD_BASE#defi ne

16、 KEY_RowGPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0/掃描信號輸出 PD30#defi ne KEY_cloGPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4/按鍵信號輸入 PD74#defi ne KEY_PERIPH SYSCTL_PERIPH_GPIOD#defi ne SysCtIPeriClkGat ing SysCtIPeripheralClockGati ng#defi ne SysCtlPeriSlpE nable SysCtlPeripheralSleepE nable/*#define A

17、DCSequEnable/ADC的宏定義#define ADCSequDisable#define ADCSequConfig#define ADCSequStepConfig #define ADCSequDataGet */ADCSeque nceEn ableADCSeque nceDisableADCSeque nceCon figureADCSeque nceStepC on figureADCSeque nceDataGet#defi ne BitRate115200特率#defi ne DataWidth 8定數(shù)據(jù)寬度/設(shè)定波/設(shè)/tBoolean ADC_E ndFlag =

18、false;/定義ADC轉(zhuǎn)換結(jié)束的標(biāo)志un sig ned char AC_TABLE=0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,/第一行漢字位置第二行0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,/漢字位置;un sig ned charmenu1_1=多功能數(shù)字萬用表;/選擇提示un sig ned charmen u1_2=F:下一頁”;un sig ned charmenu2_1=A:DC 電壓B:電阻;/輸入提示un sig ned charmenu2_2=C:AC 電壓D:返回;/un sig ned char

19、menu 3_1=預(yù)設(shè)(099):nj/輸入提示un sig ned charmenu3_2=實測值:E;/un sig ned charmenu 4_1=預(yù)設(shè)(099):nj/輸入提示un sig ned charmenu4_2=實測值:Q;/*unsigned char str=溫度:;/定義將要顯示的漢字與字符unsigned char str1=芯片的溫度顯示;unsigned char str3= C ;unsigned char str3=C;unsigned char c1;float v=0;*/exter n un sig ned char key_val;exter n v

20、oid key_check(void);void para_i nput_display(void);void display_me nu1(void);void display_me nu 2(void);void display_me nu 3(void);void display_me nu 4(void);void WriteNu m(un sig ned char nu m);exter n void judge_display(void);int k;un sig ned char a4,flag0,flag1,flag2,flag3;void GPI On it()SysCtlP

21、eripheralE nable(READDATA_PERIPH);GPIOPi nTypeGPIOI nput(READDATA_PORT,READDATA);SysCtlPeripheralE nable(SCAN_PERIPH);GPIOPi nTypeGPIOI nput(SCAN_PORT,SCAN);SysCtIPeripheralE nable(OUTPUT_PERIPH);GPIOPi nTypeGPIOOutput(OUTPUT_PORT,OUTPUT);GPIOPi nTypeGPIOI nput(READDATA_PORT,INT);GPIOI ntTypeSet(REA

22、DDATA_PORT,INT,GPIO_RISING_EDGE);GPIOP inlntEn able(READDATA_PORT,INT);In tE nable(INT_GPIOB);In tMasterE nable();/所用的芯片端口初始化void in it(void)SysCtlPeripheralE nable( CTL_PERIPH );/ 使能所用的端口GPIODirModeSet(CTL_PORT, (SCK | PSB | CS ) ,GPIO_DIR_MODE_OUT);/設(shè)置信號 的方向GPIOPadConfigSet(CTL_PORT, (SCK | PSB |

23、CS ),GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD_WPU);/設(shè)置IO的驅(qū)動能力/串行方式發(fā)送一個字節(jié)void Sen dByte( un sig ned char Dbyte)un sig ned char i ;for(i=0 ;i 8 ;i+)SCK_L ;SID_OUT;if (Dbyte & 0x80)SID_H;elseSID_L;Dbyte=Dbyte1 ; SCK_H ; SCK_L ; /串行方式接收一個字節(jié)un sig ned char ReceiveByte(void)un sig ned char i,temp1,t,temp2;temp

24、仁temp2=0 ;for(i=0 ;i8 ;i+) temp1=temp11 ; SCK_L ;SCK_H ;SCK_L ;SIDN;t=SID_READ;if (t) temp1+ ;for(i=0 ;i8 ;i+)temp2=temp21 ;SCK_L ;SCK_H ;SCK_L ;SID_IN; t=SID_READ; if (t) temp2+ ;return (0xf0&temp1)+(0x0f&temp2); /判斷是否忙碌void CheckBusy( void )doSen dByte(Oxfc);11111,RW(1),RS(0),0while(0x80&ReceiveBy

25、te(); 忙碌:BF(.7)=1 Busy/向液晶發(fā)送命令void WriteComma nd( un sig ned char Cbyte ) CS_H;CheckBusy();Sen dByte(0xf8);11111,RW(0),RS(0),0Sen dByte(0xf0&Cbyte);Sen dByte(0xf0&Cbyte4);(先執(zhí)行 ; ;)CS_L;/向液晶發(fā)送顯示數(shù)據(jù)void WriteData( un sig ned char Dbyte )CS_H ;CheckBusy();Sen dByte(0xfa);11111,RW(0),RS(1),0Sen dByte(0xf

26、0&Dbyte);Sen dByte(0xf0&Dbyte4);(先執(zhí)行 ; ;)CS_L ;/ 字節(jié)格式:/判斷是否/ 字節(jié)格式:/高四位/低四位顯示字符/ 字節(jié)格式:/高四位/低四位/延時函數(shù)void Delay(u nsig ned int MS) un sig ned char us,us n ; while(MS!=0)usn = 2 ;while(us n!=0)us=0xf5 ; while (us!=O)us- ;usn-;MS-;/維捷登測試架專用延時函數(shù)void DelayKey(u nsig ned int Seco nd , un sig ned int MS100)/

27、輸入精確到0.1S是用,un sig ned int i ;for(i=0 ;iSeco nd*100+MS100*10 ;i+)Delay(10);/初始化void In it(void)SysCtIPeripheralE nable(SYSCTL_PERIPH_SSI);/ 使能片內(nèi)SSI外設(shè),為SSI提供時鐘SSIC on fig(SSI_BASE, SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER,BitRate, DataWidth);/ 設(shè)置SPI為主機模式0,8位數(shù)據(jù)寬度,115200的波特率SSIE nable(SSI_BASE);/使能SPI/液晶初始

28、化函數(shù)void Lcm In it( void )WriteComma nd(0x30) ;/8BitMCU,基本指令集合WriteCommand(0x03) ;/ AC 歸0,不改變DDRAM內(nèi)容WriteComma nd(0x0c) ;/顯示ON,游標(biāo)Off,游標(biāo)位反白OFFWriteComma nd(0x01) ;/清屏,AC歸0WriteCommand(0x06) ;/寫入時,游標(biāo)右移動void PutStr1( un sig ned char row, un sig ned char col,u nsig ned char *puts)/128X32 方式/起/判斷字符WriteCo

29、mma nd(0x30);8BitMCU,基本指令集合WriteComma nd(AC_TABLE8*row+col);始位置一while(*puts != 0)串是否顯示完畢if(col=8)/判斷換行/若不判斷,則自動從第一行到第三行col=0 ;row+ ;if(row=2)/ 一屏顯示完,回到屏左上角,128x32時為row=2row=0 ;DelayKey(1,5);Delay(2000);WriteComma nd(AC_TABLE8*row+col);WriteData(*puts) ;/ 一個漢字要寫兩次puts+ ;WriteData(*puts);puts+ ;col+ ;

30、 void sca n() un sig ned char sca n_num; scan_num=GPIOPi nRead(SCAN_PORT,SCAN)&OxOf; switch (sca n_num)caseOxO1:a3=GPIOPi nRead(READDATA_PORT,READDATA )&OxOf;flagO=1;break; caseOxO2:a2=GPIOPi nRead(READDATA_PORT,READDATA )&OxOf;flag1=1;break; caseOxO4:a1=GPIOPi nRead(READDATA_PORT,READDATA )&0x0f;fl

31、ag2=1;break; caseOxO8:aO=GPIOPi nRead(READDATA_PORT,READDATA )&0x0f;flag3=1;break; void GPIO_Port_BSR(void)un sig ned long ulStatus; ulStatus=GPIOPi nln tStatus(READDATA_PORT,true); GPIOPi nln tClear(READDATA_PORT,ulStatus);if(ulStatus&l NT)while(!(flag0=1)&(flag 仁=1)&(flag2=1)&(flag3=1)sca n();flag

32、O=O;flag 仁0;flag2=0;flag3=0;void judge_display1(void)un sig ned char over_low=0;un sig ned char un der_ra nge=0;un sig ned char polarity=O;un sig ned char qia n=0,bai=0,shi=0,ge=0;if(a3&0x04)=0x04)判斷正負,Q2=0 為負,Q2=1 為正polarity=1;elsepolarity=0;if(a3 &0x09)=0x09)over_low=0; un der_ra nge=1; _else if(a

33、3 &0x09)=0x01)over_low=1;un der_ra nge=0; _elseover_low=0; un der_ra nge=0; _if(a3 &0x08)=0x08)qia n=0;elseqia n=1;bai=a2;shi=a1;ge=a0;/WriteComma nd(0x94);if(polarity=1)WriteData(+);elseWriteData(-);if(over_low=1)&(un der_ra nge=0)while(1)GPIOPi nWrite(0UTPUT_P0RT,GPI0_PIN_0,0xff);GPIOPi nWrite(OUT

34、PUT_PORT,GPIO_PIN_1,0x00); sca n();if(a3 &0x08)=0x08)qia n=0;elseqia n=1;bai=a2;shi=a1;ge=a0;WriteComma nd(0x94);if(polarity=1)WriteData(+);elseWriteData(-);WriteNum(bai);WriteData(T);WriteNum(shi);WriteNum(ge);if(over_low=0)&(un der_ra nge=1) 一 一GPIOPi nWrite(0UTPUT_P0RT,GPI0_PIN_0,0x00);GPIOPi nWr

35、ite(OUTPUT_PORT,GPIO_PIN_1,0xff); sca n();if(a3 &0x08)=0x08)qia n=0;elseqia n=1;bai=a2;shi=a1;ge=a0;WriteComma nd(0x94);if(polarity=1)WriteData(+);elseWriteData(-);WriteNum(0);WriteData(T);WriteNum(qia n);WriteNum(bai);WriteNum(shi);WriteNum(ge);if (over_low=0)&(un der_ra nge=0) 一 一if(GPIOPi nRead(O

36、UTPUT_PORT,GPIO_PIN_0)=Oxff)&(GPIOPi nRead(OUTP UT_PORT,GPIO_PIN_1)=OxOO)GPIOPi nWrite(OUTPUT_PORT,GPIO_PIN_O,Oxff);GPIOPi nWrite(OUTPUT_PORT,GPIO_PIN_1,OxOO);sea n();if(a3 &0x08)=0x08)qia n=0;elseqia n=1;bai=a2;shi=a1;ge=a0;WriteComma nd(0x94);if(polarity=1)WriteData(+);elseWriteData(-);WriteNum(ba

37、i);WriteData(T);WriteNum(shi);WriteNum(ge);if(GPIOPi nRead(OUTPUT_PORT,GPIO_PIN_O)=Oxff)&(GPIOPi nRead(OUTPUT_PORT,GPIO_PIN_1)=Oxff)GPIOPi nWrite(OUTPUT_PORT,GPIO_PIN_O,Oxff);GPIOPi nWrite(OUTPUT_PORT,GPIO_PIN_1,Oxff);if(a3 &0x08)=0x08)qia n=0;elseqia n=1;bai=a2;shi=a1;ge=a0;WriteComma nd(0x94);if(p

38、olarity=1)WriteData(+);elseWriteData(-);WriteNum(qia n);WriteData(T);WriteNum(bai);WriteNum(shi);WriteNum(ge);void judge_display2(void) _un sig ned char over_low=0;un sig ned char un der_ra nge=0;un sig ned char polarity=0;un sig ned char qia n=0,bai=0,shi=0,ge=0;if(a3&0x04)=0x04)判斷正負,Q2=0 為負,Q2=1 為

39、正polarity=1;elsepolarity=0;if(a3 &0x09)=0x09)over_low=0;un der_ra nge=1; _else if(a3 &0x09)=0x01)over_low=1;un der_ra nge=0; _elseover_low=0;un der_ra nge=0; _if(a3 &0x08)=0x08)qia n=0;elseqia n=1;bai=a2;shi=a1;ge=aO;WriteComma nd(0x94);if(polarity=1)WriteData(+);elseWriteData(-);GPIOPi nWrite(0UTPU

40、T_P0RT,GPI0_PIN_0,0xff);GPIOPi nWrite(OUTPUT_PORT,GPIO_PIN_1,0xff); WriteNum(qia n);WriteNum(bai);WriteNum(shi);WriteData(T);WriteNum(ge);/顯示一級菜單函數(shù)void display_me nu1(void) _un sig ned char i;/端口初始/串行方/液晶初始in it();化PSB丄式SysCtlDelay(250*(SysCtlClockGet()/3000); LcmI nit();化WriteComma nd(0x30);WriteCo

41、mma nd(0x80); for(i=0;me nu1_1i!=0;i+) _WriteData(me nu1_1i); WriteComma nd(0x91);WriteData(0x15);WriteData(0x15);WriteComma nd(0x92);for(i=0;me nu1_2i!=0;i+) _WriteData(me nu1_2i); _WriteComma nd(0x96);WriteData(0x15);WriteData(0x15);SysCtlDelay(500*(SysCtlClockGet()/3000);/顯示二級菜單函數(shù)void display_me

42、nu 2(void) _un sig ned char i;in it();化PSB丄式SysCtlDelay(250*(SysCtlClockGet()/3000);Lcml nit();化WriteComma nd(0x30);WriteComma nd(0x80);for(i=0;me nu2_1i!=0;i+) _WriteData(me nu 2_1i);WriteComma nd(0x90);for(i=0;me nu2_2i!=0;i+)WriteData(me nu2_2i); _SysCtlDelay(500*(SysCtlClockGet()/3000);/顯示三級菜單vo

43、id display_me nu 3(void) _un sig ned char i;in it();化PSB_L;GPIO_I ni t();/端口初始/串行方/液晶初始/端口初始/串行方式SysCtlDelay(250*(SysCtlClockGet()/3000);Lcml nit();化WriteComma nd(0x30);WriteComma nd(0x80); for(i=0;me nu 3_1i!=0;i+) _WriteData(me nu 3_1i); _WriteComma nd(0x83);para_i nput_display();WriteComma nd(0x9

44、0);for(i=0;me nu3_2i!=0;i+)WriteData(me nu3_2i); _while(1)WriteComma nd(0x94);judge_display1();SysCtlDelay(5000 * (TheSysClock / 3000);WriteComma nd(0x08);SysCtlDelay(5000 * (TheSysClock / 3000); WriteComma nd(0x0c);/WriteComma nd(0x97);/WriteData(0x19);do key_check(); while(key_val!=14);一一display_m

45、e nu4();_/顯示四級菜單void display_me nu 4(void) _un sig ned char i;in it();化PSB_L;GPIO_I ni t();行方式/液晶初始/端口初始/串SysCtlDelay(250*(SysCtlClockGet()/3000);Lcml nit();/液晶初始WriteComma nd(0x30); WriteComma nd(0x80); for(i=0;me nu 4_1i!=0;i+) _WriteData(me nu 3_1i); _ WriteComma nd(0x83); para_i nput_display(); WriteComma nd(0x90); for(i=0;me nu4_2i!=0;i+) WriteData(me nu3_2i); _ while(1)WriteComma nd(0x94); judge_display2();/輸出參數(shù)提示void s

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論