




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
PAGE5嵌入式系統(tǒng)設計實驗考試報告課題題目:基于ARM的失重稱實驗姓名:喬喬日期:2012-目錄TOC\o"1-4"\h\u39一、設計內(nèi)容 1133421.1實驗考試目的 132165二、設計方案 2143992.1實驗考試設計要求 2114122.2方案論證 326137三、硬件設計 3115653.1設計思路 360073.2系統(tǒng)電路原理 427473.2.1穩(wěn)壓電源電路 421673.2.2可調(diào)電源的電路圖 4324743.2.3鍵盤輸入與顯示電路 5108393.2.4差動信號放大電路 69119四、軟件設計 734544.1設計思路 7132904.2程序清單 8一、設計內(nèi)容1.1實驗考試目的1、注重培養(yǎng)綜合運用所學知識、獨立分析和解決實際問題的能力,培養(yǎng)創(chuàng)新意識和創(chuàng)新能力,并獲得科學研究的基礎訓練。2、了解所選擇的ARM9芯片各個引腳功能,工作方式,計數(shù)/定時,I/O口,中斷等的相關原理,并鞏固學習嵌入式的相關內(nèi)容知識。3、通過軟硬件設計實現(xiàn)利用ARM9芯片來完成失重稱的設計。二、設計方案2.1實驗考試設計要求1、查閱相關文獻資料,熟悉所選ARM9芯片及所選擇的各個器件。2、總體設計方案規(guī)劃3、系統(tǒng)硬件設計,包括鍵盤輸入和顯示等相關以及重力的變化轉換為電壓的變化等。4、系統(tǒng)軟件設計,包括完成對外部輸入信號的AD采樣并且將所測得的重量通過SPI發(fā)送到鍵盤顯示板上進行顯示等。用c語言編程。5、設計心得體會及總結2.2方案論證有許多客觀需求促進了ARM處理器的設計改進。首先,便攜式的嵌入式系統(tǒng)往往需要電池供電。為降低功耗,ARM處理器已被特殊設計成較小的核,從而延長了電池的使用時間。高的代碼密度是嵌入式系統(tǒng)的又一個重要需求。由于成本問題和物理尺寸的限制,嵌入式系統(tǒng)的存儲器是很有限的。所以,高的代碼密度對于那些只限于在板存儲器的應用是非常有幫助的。另外,嵌入式系統(tǒng)通常都是價格敏感的,因此一般都使用速度不高、成本較低的存儲器。ARM內(nèi)核不是一個純粹的RISC體系結構,這是為了使它能夠更好的適應其主要應用領域--嵌入式系統(tǒng)。在某種意義上,甚至可以認為ARM內(nèi)核的成功,正是因為它沒有在RISC的概念上沉入太深。現(xiàn)在系統(tǒng)的關鍵并不在于單純的處理器速度,而在于有效的系統(tǒng)性能和功耗。在本實驗方案的設計過程中,根據(jù)嵌入式系統(tǒng)的基本設計思想,系統(tǒng)采用了模塊化的設計方法,并且根據(jù)系統(tǒng)的功能要求和技術指標,系統(tǒng)遵循自上而下、由大到小、由粗到細的設計思想,按照系統(tǒng)的功能層次,在設計中把硬件和軟件分成若干功能模塊分別設計和調(diào)試,然后全部連接起來統(tǒng)調(diào)。三、硬件設計3.1設計思路1、輸出12V的直流穩(wěn)壓電源為傳感器供電,輸出為3.3V的直流電源為邏輯控制器供電。2、設計出鍵盤輸入與顯示電路(鍵盤顯示板),用來顯示當前的重量。3、將托盤的重力轉換為電壓輸出,并對輸出的差動信號放大。4、運用邏輯控制器將輸出放大信號進行A/D采樣,完成自動校零與自動校滿,并將重量在鍵盤顯示板上進行顯示與通過鍵盤顯示板控制系統(tǒng)的運行。3.2系統(tǒng)電路原理在本系統(tǒng)中需要兩種不同電壓值的直流電源,分別為12V和3.3V。采用LM7812作為電橋及放大電路的供電穩(wěn)壓管。選擇LM317將其輸出調(diào)為3.3V為邏輯控制器件提供電壓。運算放大器采用LM324以及移位寄存器采用74LS164。3.2.1穩(wěn)壓電源電路圖1為12V穩(wěn)壓電源的電路圖。經(jīng)過變壓器后將220V的市電降壓為16V的交流電,經(jīng)過C1將交流電中的高次諧波過濾后接入到整流橋整流后再經(jīng)過1000uF的C2和220uF的C3平波后接入穩(wěn)壓管LM7812,后面輸出為穩(wěn)定的12V直流壓,C4和C5的作用是進一步濾除直流電壓中的高頻交流成分,使電源更穩(wěn)定。圖1.12V穩(wěn)壓電源的電路圖3.2.2可調(diào)電源的電路圖圖2為運用LM317輸出可調(diào)電源的電路圖。將經(jīng)過LM7812穩(wěn)壓輸出的12V電壓輸入到該電路的端,經(jīng)電容C1濾波后送入LM317第3腳(輸入端),二腳輸出穩(wěn)定的直流電壓,調(diào)正端(一腳)與輸出端的電壓為1.25V的基準電壓為了保證穩(wěn)壓管的輸出特性,R1的電阻應小于240Ω。為了輸出電壓可調(diào),調(diào)整端與地之間接可變電阻器R2,調(diào)節(jié)R2的值可將輸出電壓調(diào)整為3.3V。輸出電壓的計算公式為:電路中C1是為了濾除輸入電壓存在的交流成分,C3是為了旁路基準電壓的紋波,提高電源的紋波抑制性能。圖2.LM317輸出可調(diào)電源3.2.3鍵盤輸入與顯示電路圖3為鍵盤輸入與顯示的電路圖。數(shù)據(jù)通過JP1接口中的DATA在CLK的上升沿作用下以串行的方式輸入到移位寄存器,可以將CLK端接在SPI的時鐘端上,將DATA端接在SPI的MOSI(主出從入)端口上,這樣通過SPI就能將所要存入移位寄存器的數(shù)發(fā)送出去。從圖中可見,第一片移位寄存器控制的是數(shù)碼管的位碼,第二位移位寄存器控制的是數(shù)碼管的段碼。因此,在SPI發(fā)送數(shù)據(jù)時應該先將8位段碼發(fā)送到第一片寄存器中,然后發(fā)送8位位碼。這樣,第一片寄存器中的段碼被移入到第二片中,第一片寄存器中保存的是數(shù)碼管的位碼。同時,8個按鍵的公共端是通過上拉電阻電阻R9接到VCC,而且在JP1中還有一個端口KEY作為按鍵到ARM的輸入端。圖3鍵盤顯示板電路3.2.4差動信號放大電路將3個差動信號的正負分別通過10KΩ的電阻接入到運算放大器的正負端,就會通過第一級差動放大器將差動信號放大10倍,然后放大信號輸入到第二級的放大電路。電路里接入了一個滑動變阻器,用于調(diào)節(jié)輸出信號的零點。在電路的最后接入了一個470uF的平波電容,是為了使輸出的信號更加穩(wěn)定,減少各種因素帶來的電路輸出信號的波動。圖4為用于對輸入的差動電壓信號進行放大的電路。圖4.差動信號放大電路四、軟件設計4.1設計思路本系統(tǒng)軟件部分的主要功能是完成對外部輸入信號的AD采樣,并且在對重量自校零和校滿后使AD值與重量的量綱相對應,并且將所測得的重量通過SPI發(fā)送到鍵盤顯示板上進行顯示,其流程圖(圖6)如下:圖6.程序流程圖4.2程序清單#include"config.h"uint8constwm[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};uint8constdm[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uint8constM_8pai[8]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};uint8data_buf[8];uint32xs_cs=0; //需要顯示的數(shù)值uint32ADC_Data=0;uint8count; //正在發(fā)送第幾位段碼 uint32time_ds=0; //定時共用變量uint8time_20ms_flag=0; //定時20ms標志uint8time_2ms_flag=0; //2ms定時標志uint8key_n=9; //保存第幾號鍵被按下//********************************************************************uint8dw0(uint8n) //對IO0PIN第n位進行讀操作{ uint8i; if((IO0PIN&(1<<n))==0)i=0; elsei=1; returni;}//*****************************************************************voidDelayNS(uint32dly) //長軟件延時{ uint32i; for(;dly>0;dly--) for(i=0;i<5000;i++);}//*****************************************************************uint8key_sm(void) //按鍵函數(shù),在使用完key_n后{ //要將key_n置為大于7的數(shù) uint8statickey; uint8statickey_befor=0,key_now=0,ax_flag=0; key_befor=key_now; key_now=dw0(3); if((key_befor==1)&&(key_now==0)&&(ax_flag==0)) { ax_flag=1; key=count; } if((key_befor==1)&&(key_now==1)&&(ax_flag==1)&&(key==count)) {ax_flag=0;returnkey; } return9;}//*****************************************************************voidad_int(void) //AD初始化函數(shù){ PINSEL1=1<<28; //P0.30連接到AD0.3 /*進行ADC模塊設置*/ AD0CR=(1<<3) | //SEL=8,選擇通道3 ((Fpclk/1000000-1)<<8) | //轉換時鐘為1MHz (0<<16) | //BURST=0,軟件控制轉換操作 (0<<17) | //CLKS=0,使用11clock轉換 (1<<21) | //PDN=1,正常工作模式 (0<<22) | //TEST1:0=00,正常工作模式 (1<<24) | //START=1,直接啟動ADC轉換 (0<<27); //直接啟動ADC轉換時,此位無效 DelayNS(10); ADC_Data=AD0DR; //讀取ADC結果并清除DONE標志位}//*****************************************************************voidbin_bcd(uint32xs_data) //二進制轉BCD碼函數(shù){ uint32sum; uint8i; sum=xs_data; for(i=0;i<8;i++) { data_buf[i]=sum%10; sum=sum/10; }//****************************************************************voidtimer0int(void) //定時器初始化函數(shù){ T0TC=0; T0PR=0; T0MCR=0x03; T0MR0=Fpclk/500; //定時為2ms T0TCR=0x01;}//*****************************************************************voidmspi_send(uint8data) //spi發(fā)送程序{ S0PDR=data; while((S0PSR&0x80)==0);}//*****************************************************************void__irqtimer0_isr(void) //定時器0中斷服務程序,發(fā)送數(shù)據(jù){ mspi_send(dm[data_buf[count]]); //發(fā)送段碼mspi_send(~(wm[count])); //發(fā)送位碼,數(shù)碼管共陰,按位取反 key_n=key_sm(); //按鍵返回部分 count++; //發(fā)送下一個if(count>=8)count=0;time_2ms_flag=1; //2ms定時,置1time_ds++;if(time_ds>=5001) //最長定時10s time_ds=0;if(time_ds%10==0) //20ms定時 time_20ms_flag=1; T0IR=0x01; VICVectAddr=0x00;}//*****************************************************************voidvic_timer0_int(void) //定時器0中斷初始化函數(shù){ VICIntSelect&=~1<<4; VICVectCntl0=0x20|4; VICVectAddr0=(uint32)timer0_isr; VICIntEnable|=1<<4; IRQEnable();}//*****************************************************************voidmspi_int(void) //SPI初始化函數(shù){ PINSEL0=(PINSEL0&(~(0xFF<<8)))|(0x55<<8); S0PCR=(0<<3)| (1<<4)|(1<<5)|(0<<6)|(0<<7); S0PCCR=10;}intmain(void){ uint8key_7_n=0; uint16adc_base=0; uint16adc_base_400=0; uint8adc_count=0; uint16ad_data_50=0; //求50平均值后的AD值 uint16zl_g=0; //重量,單位為g uint32adc_data_buf=0; PINSEL0&=~(3<<6); //將p0.3設為gpio IO0DIR&=~(1<<3); //p0.3設為輸入功能 PINSEL2&=~(1<<3); //選擇P1.16~P1.25為GPIO功能 IO1DIR|=0xFF<<18; //將P1.18~P1.25設為輸出功能 IO1CLR|=0xFF<<18; //輸出低電平 timer0int(); vic_timer0_int(); mspi_int(); ad_int(); while(1) { if(time_20ms_flag==1) { time_20ms_flag=0; if(adc_count<50) { AD0CR|=1<<24; //進行第一次轉換 while((ADDR&0x80000000)==0); //等待轉換結束 AD0CR|=1<<24; //再次啟動轉換 while((AD0DR&0x80000000)==0); //等待轉換結束 ADC_Data=AD0DR; //讀取ADC結果 ADC_Data=(ADC_Data>>6)&0x3ff; ADC_Data=ADC_Data*2480; //參考電壓經(jīng)過3/4分壓 ADC_Data=ADC_Data/1024; adc_data_buf+=ADC_Data; adc_count++; } else {adc_count=0; ad_data_50=adc_data_buf/50; adc_data_buf=0; } } if(key_n==0) { key_n=9; key_7_n++; if(key_7_n==1) //按下第一次記下AD基數(shù) adc_base=ad_data_50; if(key_7_n==2) { adc_base_400=ad_data_50;//按下第二次,記下AD key_7_n=0;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨床試驗結果分析原則考核試卷
- 農(nóng)機租賃市場定位與租賃服務網(wǎng)絡布局分析考核試卷
- 講座教育的評價體系考核試卷
- 交通規(guī)劃與災害恢復重建規(guī)劃協(xié)調(diào)考核試卷
- 產(chǎn)科病房護士工作總結10篇
- 會計專業(yè)考試初級會計實務試卷與參考答案(2025年)
- 湖南省名校聯(lián)考聯(lián)合體2024-2025學年高一下學期第二次聯(lián)考物理試卷(A)(含解析)
- 歌曲活動策劃方案
- 植樹節(jié)汽車養(yǎng)護活動方案
- 民政服務活動方案
- 桌游店創(chuàng)業(yè)初期計劃書
- 智能垃圾分類中轉站建設與環(huán)保技術升級合同
- 小學數(shù)學單元整體教學問題與對策
- 獄政管理業(yè)務培訓體系構建
- 核電質(zhì)量保證體系培訓
- 部編版三年級下冊語文同步作文(全冊)
- 芒硝散外敷治療水腫
- 光伏電站運維安全操作規(guī)程
- 2025春季學期國開電大專科《管理學基礎》期末紙質(zhì)考試總題庫
- 物流倉儲設備選型與配置規(guī)范
- T-BSRS 124-2024 伴生放射性礦開發(fā)利用場地土壤放射性污染調(diào)查和修復監(jiān)測技術規(guī)范
評論
0/150
提交評論