ARM課程設(shè)計的報告_第1頁
ARM課程設(shè)計的報告_第2頁
ARM課程設(shè)計的報告_第3頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、IENHNOLOG電控學院課程設(shè)計(論文)課程名稱:ARM嵌入式系統(tǒng)題目:ARM數(shù)字電壓表院(系):測控技術(shù)與儀器專業(yè)班級:測控1001班姓名:王朵學號:10060701151006070105指導教師:黃夢濤李紅巖2013年12月29日目錄摘要2第一章緒論21.1設(shè)計背景21.2設(shè)計要求2第二章系統(tǒng)介紹22.1系統(tǒng)簡述22.2上位機簡述32.3下位機簡述3第三章硬件設(shè)計43.1系統(tǒng)電路原理圖43.2A/D轉(zhuǎn)換器53.3報警電路53.5LPC2131最小系統(tǒng)6第四章軟件設(shè)計74.1系統(tǒng)功能流程圖74.2程序8第五章設(shè)計心得15致謝17參考文獻18基于LPC2131的數(shù)字電壓表設(shè)計摘要本設(shè)計介紹

2、了一種基于LPC2131的數(shù)字電壓表。根據(jù)數(shù)據(jù)數(shù)據(jù)采集的工作原理,設(shè)計實現(xiàn)數(shù)字電壓表,然后完成微控制器與上位機EasyARM的通信,將所測量的電壓值傳送給EasyARM的顯示界面,進行顯示。該電壓表的主控芯片LPC2131內(nèi)部有一個10位8路A/D轉(zhuǎn)換器,這個A/D轉(zhuǎn)換器即可單路軟件啟動也可對某幾路信號逐個循環(huán)采樣。這種電壓表不僅整個電路結(jié)構(gòu)簡單、明了,直觀的顯示測量結(jié)果,而且具有精度高,性價比高,使用方便等特點?!娟P(guān)鍵詞】電壓測量,LPC2131,LED,蜂鳴器報警第一章緒論1.1設(shè)計背景隨著電子科學技術(shù)不斷發(fā)展,電子測量也變得越來越普遍,并且對測量的精度和功能的要求也是越來越高,而電壓的測

3、量尤為突出,因為電壓的測量最為普遍。而且隨著電子技術(shù)的日益發(fā)展,更是經(jīng)常需要測量高精度的電壓,數(shù)字電壓表就成為一種必不可少的測量儀器。數(shù)字電壓表(DigitalVoltmeter)簡稱DVM,它是采用數(shù)字化測量技術(shù),把連續(xù)的模擬量(直流或交流輸入電壓)轉(zhuǎn)換成不連續(xù)的、離散的數(shù)字形式并加以顯示的儀表。由于數(shù)字是儀表具有讀書準確方便、精度高、誤差小、靈敏度高和分辨率高、測量速度快等特點而倍受青睞。1.2設(shè)計要求以ARM為控制器,采用中斷方式,對2路0-5v的模擬電壓進行循環(huán)采集,每路連續(xù)采集16次,取平均值。采集的數(shù)據(jù)送LED顯示,并存入內(nèi)存。超過界限時指示燈閃爍10次后一直亮,指示燈閃爍時喇叭發(fā)

4、聲,以示警告。第二章系統(tǒng)介紹2.1系統(tǒng)簡述數(shù)字電壓表主要由模數(shù)轉(zhuǎn)換部分、串口數(shù)據(jù)發(fā)送部分、上線報警部分三部分組成。其中LPC2131自帶的10位ADC作為轉(zhuǎn)換電路,將輸入的模擬信號進行采樣、轉(zhuǎn)換、然后將轉(zhuǎn)換的數(shù)字信號送入MCU進行處理,得出測量結(jié)果送入上位機進行顯示。2.2上位機簡述為了給系統(tǒng)提供更友好的人機界面,我們可以通過上位機軟件實現(xiàn)各種顯示輸出或操作輸入,EasyARM軟件是上位機人機界面軟件,通過RS232串口通訊完成各種功能控制。全仿真的DOS字符窗口是具有25行80列的字符顯示窗(顯示字符的前景/背景顏色可設(shè)置),具有8個仿真LED數(shù)碼管和8個仿真發(fā)光二極管,還有20個模擬按鍵(

5、按鍵名可重新定義)。串口模式可設(shè)置,具有單獨的數(shù)據(jù)發(fā)送/接收調(diào)試窗,方便地監(jiān)視串口接收到的數(shù)據(jù)或調(diào)試串口。2.3下位機簡述LPC2131/2132/2138是基于一個支持實時仿真和跟蹤的16/32位ARM7TDMI-STMCPU,并帶有32kB、64kB和512kB嵌入的高速Flash存儲器。128位寬度的存儲器接口和獨特的加速結(jié)構(gòu)使32位代碼能夠在最大時鐘速率下運行。對代碼規(guī)模有嚴格控制的應(yīng)用可使用16位Thumb模式將代碼規(guī)模降低超過30%,而性能的損失卻很小。較小的封裝和很低的功耗使LPC2131/2132/2138特別適用于訪問控制和POS機等小型應(yīng)用中;由于內(nèi)置了寬范圍的串行通信接口

6、和8/16/32kB的片內(nèi)SRAM,它們也非常適合于通信網(wǎng)關(guān)、協(xié)議轉(zhuǎn)換器、軟件modem、語音識別、低端成像,為這些應(yīng)用提供大規(guī)模的緩沖區(qū)和強大的處理功能。多個32位定時器、1個或2個10位8路的ADC、10位DAC、PWM通道、47個GPIO以及多達9個邊沿或電平觸發(fā)的外部中斷使它們特別適用于工業(yè)控制應(yīng)用以及醫(yī)療系統(tǒng)。主要特性:1)16/32位ARM7TDMI-S核,超小LQFP64封裝。2)8/16/32kB的片內(nèi)靜態(tài)RAM和口32/64/512kB的片內(nèi)Flash程序存儲器。128位寬度接口/加速器可實現(xiàn)高達60MHz工作頻率。3)通過片內(nèi)boot裝載程序?qū)崿F(xiàn)在系統(tǒng)編程/在應(yīng)用編程(IS

7、P/IAP)。單扇區(qū)或整片擦除時間為400ms。256字節(jié)行編程時間為1ms。4)EmbeddedlCE?RT和嵌入式跟蹤接口通過片內(nèi)RealMonitorTM軟件對代碼進行實時調(diào)試和高速跟蹤。5)1個(LPC2131/2132)或2個(LPC2138)8路10位的A/D轉(zhuǎn)換器,共提供16路模擬輸入,每個通道的轉(zhuǎn)換時間低至2.44us。6)1個10位的D/A轉(zhuǎn)換器,可產(chǎn)生不同的模擬輸出。(僅適用LPC2132/2138)7)2個32位定時器/計數(shù)器(帶4路捕獲和4路比較通道)、PWM單元(6路輸出)和看門狗8)實時時鐘具有獨立的電源和時鐘,可在節(jié)電模式中極大地降低功耗。9)多個串行接口,包括2

8、個16C550工業(yè)標準UART、2個高速I2C接口(400kbit/s)、SPITM和具有緩沖作用和數(shù)據(jù)長度可變功能的SSP。10)向量中斷控制器??膳渲脙?yōu)先級和向量地址。11)小型的LQFP64封裝上包含多達47個通用I/O口(可承受5V電壓)。12)多達9個邊沿或電平觸發(fā)的外部中斷管腳。13)通過片內(nèi)PLL(100us的設(shè)置時間)可實現(xiàn)最大為60MHz的CPU操作頻率。14)片內(nèi)晶振頻率范圍:130MHz。15)低功耗模式:空閑和掉電。16)可通過個別使能/禁止外部功能和外圍時鐘分頻來優(yōu)化功耗。17)通過外部中斷將處理器從掉電模式中喚醒。18)單電源,具有上電復(fù)位(POR)和掉電檢測(BO

9、D)電路。19)CPU操作電壓范圍:3.0V3.6V(3.3V±10%),I/O口可承受5V的電壓。第二章硬件設(shè)計3.1系統(tǒng)電路原理圖圖3-1系統(tǒng)原理圖iH111AtHblHliNCiti.gH-idBPIi申Am4.JI.<Lit*r41IhrUu1r-*JI""系統(tǒng)功能:該系統(tǒng)主要實現(xiàn)對電壓的測量,經(jīng)測試端輸入的電壓,分壓采樣后送到LPC2131程序處理,最后將測量結(jié)果在EasyARM顯示界面顯示,由于ADC本身的輸入范圍的限制,我們這里輸入信號最大值為+3.3V,采樣率達到100Hz,精度高于0.9%,在實際應(yīng)用中,可以增加前級信號調(diào)理電路使輸入信號的

10、范圍擴大。3.2A/D轉(zhuǎn)換器特性:1)10位逐次逼近式A/D轉(zhuǎn)換器2)測量范圍03.3V3)10位轉(zhuǎn)換時間2.44卩s4)一路或多路輸入的Burst轉(zhuǎn)換模式5)轉(zhuǎn)換觸發(fā)信號可選擇:輸入引腳的跳變或定時器的匹配6)具有掉電模式A/D轉(zhuǎn)換器的基本時鐘由VPB時鐘提供,可編程分頻器可將時鐘調(diào)整至44.5MHz(逐步逼近轉(zhuǎn)換的最大時鐘),10位精度要求的轉(zhuǎn)換需要11個A/D轉(zhuǎn)換器。XZL3.3報警電路使用GPIO的P0.7控制蜂鳴器鳴叫報警LED發(fā)光二極管閃爍十次后一直亮(LED1表示通道1,LED2表示通道2)圖3-4LED報警電路3.5LPC2131最小系統(tǒng)最小系統(tǒng)包含時鐘電路和復(fù)位電路圖3-5最

11、小系統(tǒng)第四章軟件設(shè)計4.1系統(tǒng)功能流程圖根據(jù)設(shè)計要求,結(jié)合硬件原理圖與LPC2131的使用手冊,為采樣頻率達到100Hz,把電壓測量結(jié)果直觀顯示出來,軟件程序流程圖如圖4-1開始1jjii進行ADC模莫塊設(shè)置1r延時3F讀取ADC結(jié)果,志位并清楚DONE標i是等待轉(zhuǎn)換結(jié)果讀取ADC轉(zhuǎn)換結(jié)果再次啟動轉(zhuǎn)換等待轉(zhuǎn)換結(jié)果大于上限值設(shè)置通道2,并進行第一次轉(zhuǎn)換等待轉(zhuǎn)換結(jié)果1LED閃爍10次二LED常亮蜂鳴器報警是否AD數(shù)值串口發(fā)送給上位機1r延時設(shè)置AD通道1,并進行第一次轉(zhuǎn)換圖4-1系統(tǒng)功能流程圖* 4.2程序/*文件名:main.c*功能:使用ADC模塊的通道0、1進行電壓的測量,然后將轉(zhuǎn)換結(jié)果從串

12、口輸出,上位機使用EasyARM軟件全仿真的DOS字符窗口觀察。*說明:跳線JP8、JP30短接。由W1、W2調(diào)節(jié)測量電壓值。通訊格式:8位數(shù)據(jù)位,1位停止位,無奇偶校驗,波特率為115200*/#include"config.h"#defineLED11<<16/P2.16#defineLED21<<17/P2.17#defineBEEPCON1<<20/P0.7引腳控制B1,低電平蜂鳴#defineLEDCON0x00000000/*名稱:DelayNS()*功能:長軟件延時*入口參數(shù):dly延時參數(shù),值越大,延時越久*出口參數(shù):無*

13、/voidDelayNS(uint32dly)uint32i;for(;dly>0;dly-)for(i=0;i<5000;i+);/*名稱:UART0Init()*功能:初始化串口0。設(shè)置為8位數(shù)據(jù)位,1位停止位,無奇偶校驗*入口參數(shù):bps通訊波特率*出口參數(shù):無*/voidUARTOInit(uint32bps)uint16Fdiv;PINSELO=(PINSELO&(OxOF)|0x05;/不影響其它管腳連接,設(shè)置I/O連接至UUART0UOLCR=0x83;/DLAB=1,可設(shè)置波特率Fdiv=(Fpclk/16)/bps;/設(shè)置波特率U0DLM=Fdiv/256

14、;UODLL=Fdiv%256;UOLCR=0x03;/*名稱:UART0SendByte()*功能:向串口發(fā)送字節(jié)數(shù)據(jù),并等待發(fā)送完畢。*入口參數(shù):data要發(fā)送的數(shù)據(jù)*出口參數(shù):無*/voidUART0SendByte(uint8data)U0THR=data;/發(fā)送數(shù)據(jù)while(U0LSR&0x40)=0);/等待數(shù)據(jù)發(fā)送完畢/*名稱:UART0SendStr()*功能:向串口發(fā)送一字符串*入口參數(shù):srt要發(fā)送的字符串的指針*出口參數(shù):無*voidUARTOSendStr(char*str)whileif(*str='0')break;UARTOSendByt

15、e(*str+);/發(fā)送數(shù)據(jù)/*名稱:PCDispChar()*功能:向PC機發(fā)送顯示字符。*入口參數(shù):x顯示位置的縱坐標,0-79y顯示位置的橫坐標,0-24chr顯示的字符,不能為0xffcolor顯示的狀態(tài)包括前景色、背景色、閃耀位。它與dos的字符顯示狀態(tài)一樣。* 即03位:前景色,46位:背景色,7位:閃耀位。*出口參數(shù):無*IvoidPCDispChar(uint8x,uint8y,uint8chr,uint8color)UART0SendByte(0xff);/發(fā)送起始字節(jié)/發(fā)送字符顯示坐標(x,y)/發(fā)送顯示字符UART0SendByte(x);UART0SendByte(y)

16、;UART0SendByte(chr);UART0SendByte(color);/*名稱:ISendStr()*功能:向PC機發(fā)送字串,以便顯示。*入口參數(shù):x顯示位置的縱坐標,0-79y顯示位置的橫坐標,0-24color顯示的狀態(tài)包括前景色、背景色、閃耀位。它與dos的字符顯示狀態(tài)一樣。* 即03位:前景色,46位:背景色,7位:閃耀位。str要發(fā)送的字符串,字串以'0'結(jié)束*出口參數(shù):無*/voidISendStr(uint8x,uint8y,uint8color,char*str)while(1)if(*str='O')break;/若為'0&

17、#39;,則退出PCDispChar(x+,y,*str+,color);/發(fā)送顯示數(shù)據(jù)if(x>=80)x=0;y+;/*名稱:main()*功能:進行通道0、1電壓ADC轉(zhuǎn)換,并把結(jié)果轉(zhuǎn)換成電壓值,然后發(fā)送到串口*說明:在CONFIG.H文件中包含stdio.h。*intmain(void)uint32ADC_Data;charstr20;UARTOInit(115200);PINSEL1=0x01400000;AIN1IO1DIR=BEEPCON;/設(shè)置IO2DIR=0x00000000;IO1SET=BEEPCON;/*進行ADC模塊設(shè)置,其中x<<n表示第延)*/A

18、DCR=(1<<0)|(Fpclk/1000000-1)<<8)|-1,即轉(zhuǎn)換時鐘為1MHz(0<<16)|(0<<17)|(1<<21)|電轉(zhuǎn)換模式)(0<<22)|(非測試模式)(1<<24)|(0<<27);觸發(fā)ADC轉(zhuǎn)換)DelayNS(10);ADC_Data=ADDR;while(1)ADCR=(ADCR&0x00FFFF00)|0x01|(1<<24);while(ADDR&0x80000000)=0);ADCR=ADCR|(1<<24);whi

19、le(ADDR&0x80000000)=0);ADCData=ADDR;/初始化UART0/設(shè)置P0.27、P0.28連接到AIN0、I/O為輸出n位設(shè)置為x(若x超過一位,則向高位順/SEL=1,選擇通道0/CLKDIV=Fpclk/1000000/BURST=0,軟件控制轉(zhuǎn)換操作/CLKS=0,使用11clock轉(zhuǎn)換/PDN=1,正常工作模式(非掉/TEST1:0=00,正常工作模式/START=1,直接啟動ADC轉(zhuǎn)換/EDGE=0(CAP/MAT引腳下降沿/讀取ADC結(jié)果,并清除DONE標志位/設(shè)置通道1,并進行第一次轉(zhuǎn)換/等待轉(zhuǎn)換結(jié)束/再次啟運轉(zhuǎn)換/等待轉(zhuǎn)換結(jié)束/讀取ADC結(jié)果

20、ADC_Data=(ADC_Data>>6)&0x3FF;/ADC_Data=ADC_Data*3300;/提取AD轉(zhuǎn)換值數(shù)值轉(zhuǎn)換ADC_Data=ADC_Data/1024;sprintf(str,"%4dmVatVIN1",ADC_Data);ISendStr(30,23,0x30,str);if(ADC_Data>=3000)uint32i;for(i=0;i<10;i+)IO1SET=BEEPCON;IO2DIR=0x00010000;DelayNS(15);/BEEPCON=1IO1CLR=BEEPCON;IO2DIR=0x0000

21、0000;DelayNS(15);IO2DIR=0x00010000;DelayNS(150);elseIO1SET=BEEPCON;IO2DIR=0x00000000;/BEEPCON=0/BEEPCON=0ADCR=(ADCR&0x00FFFF00)|0x02|(1<<24);轉(zhuǎn)換/設(shè)置通道2,并進行第一次while(ADDR&0x80000000)=0);ADCR=ADCR|(1<<24);while(ADDR&0x80000000)=0);ADC_Data=ADDR;ADC_Data=(ADC_Data>>6)&0x3

22、FF;ADC_Data=ADC_Data*3300;/等待轉(zhuǎn)換結(jié)束/再次啟運轉(zhuǎn)換/等待轉(zhuǎn)換結(jié)束/讀取ADC結(jié)果/提取AD轉(zhuǎn)換值數(shù)值轉(zhuǎn)換/ADC_Data=ADC_Data/1024;)sprintf(str,"%4dmVatVIN2",ADC_Data);ISendStr(30,21,0x30,str);if(ADC_Data>=2500)uint32i;for(i=0;i<10;i+)IO1SET=BEEPCON;IO2DIR=0x00020000;/BEEPCON=1DelayNS(15);IO1CLR=BEEPCON;/BEEPCON=0IO2DIR=0x

23、00000000;DelayNS(15);IO2DIR=0x00020000;DelayNS(150);elseIO1SET=BEEPCON;/BEEPCON=0IO2DIR=0x00000000;return(0);第五章設(shè)計心得【硬件】王朵這次的課程設(shè)計是基于LPC2131的數(shù)字電壓表設(shè)計,實現(xiàn)的主要功能:以ARM為控制器,采用中斷方式,對2路0-5V的模擬電壓進行循環(huán)采集,采集的數(shù)據(jù)送LED顯示,并存入內(nèi)存,超過界限時指示燈閃爍。在做數(shù)字電壓表的設(shè)計時,開始時遇到不少的問題,比如我們想電壓是如何采集的,數(shù)字電壓表到底是什么設(shè)計原理呢,畢竟還沒有接觸過實際設(shè)計和開發(fā),所以在考慮問題的時候往

24、往是不全面的,也就是說這次設(shè)計還有不少的方面沒有考慮周全,也一定存在著這樣那樣的問題。經(jīng)過這一個星期的實習,從開始時充滿激情,到最后差點有想放棄的沖動,這之間的復(fù)雜心情,點點滴滴無不令我回味無長。特別是在設(shè)計程序的過程中,我明白到做一個好程序的不易,做一個好的編程者就更加艱難,突然就很佩服那些編程者。我們組一個兩個人,整體上是我們兩個人都在做,但個人的側(cè)重點不同,我主要負責查詢資料和硬件設(shè)計方面,屈豆主要負責軟件編程及調(diào)試,通過這次課程設(shè)計,加強了我們動手、思考和解決問題的能力。在整個設(shè)計過程中主要是軟件調(diào)試,這個我們花了好長時間,在調(diào)試過程中稍微有點錯誤就出現(xiàn)問題,這個真是對我們耐心的大挑戰(zhàn)

25、,不過最后還是沒達到預(yù)期的效果,感覺有點遺憾。我覺得做課程設(shè)計是對課本知識的鞏固和加強,平時看課本,有時問題老是弄不懂,做完課程設(shè)計后,那些問題就迎刃而解了。認識來源于實踐,實踐是認識的動力和最終目的。這次課程設(shè)計對我們有很大的幫助,在課程設(shè)計過程中,我們真正體會到了理論與實踐之間的差距,更重要的是讓我們感受到了團隊合作的重要性,讓我們懂得,我們必須得各盡所長才能解決各種困難?!拒浖壳惯@次的課程設(shè)計是基于LPC2131的數(shù)字電壓表設(shè)計,實現(xiàn)的主要功能:以ARM為控制器,采用中斷方式,對2路0-5V的模擬電壓進行循環(huán)采集,采集的數(shù)據(jù)送LED顯示,并存入內(nèi)存,超過界限時指示燈閃爍。當老師在之前給我們選題目時,我就開始在網(wǎng)上、圖書館查找資料,當接觸到數(shù)字電壓表設(shè)計這個題目時,我很迷茫,不知從何下手,雖說這學期已經(jīng)開ARM課了,但是自認為學的一點都不好。隨后我們?nèi)ゾW(wǎng)上查找各種相關(guān)資料,去圖書館查找文獻,但是都沒有找到類似

溫馨提示

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

評論

0/150

提交評論