第一篇:嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)總結(jié)報(bào)告
嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)
嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)
結(jié)題報(bào)告
學(xué)
生1: 學(xué)
生2: 學(xué)
生3: 組
長: 組長電話: 指導(dǎo)老師: 完成時間:
嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)
目錄
目錄....................................................................2 摘 要...................................................................3
一、課題概述...........................................................4
二、課題實(shí)施方案.......................................................4
2.1 方案說明........................................................4
2.1.1 LCD圖像顯示模塊設(shè)計(jì)方案..................................4 2.1.2 觸摸屏模塊設(shè)計(jì)方案........................................5 2.1.3 音樂播放模塊設(shè)計(jì)方案......................................5 2.1.4 鍵盤模塊設(shè)計(jì)方案..........................................6 2.2 工程規(guī)范........................................................6
三、課題實(shí)施過程詳述...................................................6
四、系統(tǒng)測試方法.......................................................8
五、結(jié)果分析...........................................................8
六、總結(jié)................................................................9 參考文獻(xiàn)................................................................9 附錄....................................................................9
嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)
摘 要
隨著智能手機(jī)和平板電腦等便攜式設(shè)備的興起,ARM已經(jīng)成為全球領(lǐng)先的半導(dǎo)體知識產(chǎn)權(quán)提供商,全世界超過95%的智能手機(jī)和平板電腦都采用ARM架構(gòu)。ARM技術(shù)具有性能高、成本低和能耗省的特點(diǎn)。本文旨在初步接觸嵌入式ARM技術(shù)。我們使用了天嵌TQ2440開發(fā)板以及ADS1.2來進(jìn)行相關(guān)實(shí)驗(yàn),主要制作了一個帶背景音樂、可以使用觸摸屏和鍵盤進(jìn)行前后照片切換的數(shù)碼相框。通過這次實(shí)驗(yàn),我們對ARM技術(shù)有了一個初步的認(rèn)識和了解,同時也掌握了一些編程和調(diào)試技術(shù)。
關(guān)鍵詞:嵌入式,LCD圖像顯示,觸摸屏
Abstract With the development of the smartphone and tablet computer, ARM has already become a leading semiconductor intellectual property provider in global market.More than 95% of the smartphone and tablet computer use the ARM framework.ARM has the advantages in performance, cost and efficiency.This paper aim at having a rough contact with embedded ARM and we use TQ2440 and ADS1.2 to conduct relevant experiments.Generally, we have made a digital album which can be controlled by touch panel.Through this experiment, we have grown a general acknowledge of ARM technology and master some coding and debugging technology.Keywords:embedded system, LCD display, touchpanel 3
嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)
一、課題概述
本文展示了一個使用ARM技術(shù)制作而成的帶有背景音樂并且可以通過觸摸屏和鍵盤控制的數(shù)碼相框。數(shù)碼相框在當(dāng)今市面上也有銷售,其功能主要是放映照片,絕大部分能夠通過無線或藍(lán)牙與移動設(shè)備進(jìn)行連接,以達(dá)到實(shí)時放映的效果。我們所制作的數(shù)碼相框總體而言功能并不是很強(qiáng)大,但也符合數(shù)碼相框的基本原理并且實(shí)現(xiàn)了基本功能。本課題的核心問題是如何實(shí)現(xiàn)觸摸屏精確地點(diǎn)擊、圖像切換顯示還有音樂播放功能。
二、課題實(shí)施方案
本課題的基本設(shè)計(jì)方案分為四個模塊,LCD圖像顯示模塊、觸摸屏模塊、音樂播放模塊以及鍵盤模塊。整體的設(shè)計(jì)流程為首先完成在TQ2440開發(fā)板液晶顯示屏上顯示出六張自定義圖像;然后實(shí)現(xiàn)按鍵控制圖像的切換;再加入對觸摸屏的操作,使得能夠使用觸摸屏切換圖像;最后加上PWM蜂鳴器播放音樂的功能。
2.1 方案說明
2.1.1 LCD圖像顯示模塊設(shè)計(jì)方案
為了實(shí)現(xiàn)帶有背景音樂并且能夠使用觸摸屏控制的數(shù)碼相框,我們首先要能夠在開發(fā)板的顯示屏上顯示用戶自定義的照片。由于我們所使用的開發(fā)板配備的是4.3寸的顯示屏,所以圖片尺寸要設(shè)定為480*272才能完美適應(yīng)屏幕大小。在程序代碼中,顯示圖片的功能由Paing_Bmp定義,具體為Paint_Bmp(0, 0, 480, 272, TQ_LOGO),其中,480、272對應(yīng)的是要顯示的照片的尺寸,因?yàn)槲覀冇玫氖?.3寸屏,所以設(shè)定為480、272;而TQ_LOGO是圖片的名稱,名稱由用戶自己定義,這里的TQ_LOGO對應(yīng)的是開發(fā)板開機(jī)顯示的第一張LOGO照片。照片的顯示本質(zhì)上是對屏幕上每一個像素點(diǎn)賦值的過程,不斷賦值的一個過程其實(shí)就是實(shí)現(xiàn)了對LCD的每個像素點(diǎn)進(jìn)行逐行掃描寫入不同像素點(diǎn)對應(yīng)圖片的不同位置的顏色值的過程。
圖 1.像素掃描原理
因此,只要將圖片的每一個像素點(diǎn)的值寫入程序,就能夠?qū)崿F(xiàn)照片顯示的功能。這里我們使用了天嵌科技光盤附帶的bmp2h程序,將一個BMP圖片文件轉(zhuǎn)換為帶有每行像素值的C文件,然后將C文件中的代碼復(fù)制到LCD顯示程序代碼下,即可實(shí)現(xiàn)照片顯示功能。
另外,由于480*272照片文件容量較大,缺省的內(nèi)存設(shè)置無法滿足顯示6張照片的功能,會導(dǎo)致顯示花屏。針對這個問題,我們是在nand.c文件中修改RdNF2SDRAM()函數(shù)中的U32 size = 0x100000,我們改成U32 size = 0x800000,這樣就滿足了照片顯示的內(nèi)存需求。
嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)
2.1.2 觸摸屏模塊設(shè)計(jì)方案
四線電阻式觸摸屏硬件工作原理按照工作原理和傳輸信息的介質(zhì)不同,觸摸屏分為電阻式、電容感應(yīng)式、紅外線式以及表面聲波式。由于電阻式觸摸屏具有工作面與外界完全隔離,受環(huán)境影響較小,具有不怕灰塵和水汽、穩(wěn)定性高、不漂移等優(yōu)點(diǎn),特別適合工業(yè)現(xiàn)場使用。因此我們選擇了四線電阻式觸摸屏。
我們使用觸摸屏進(jìn)行相冊的前進(jìn)和后退,具體來說,就是觸摸屏幕上半部分,就跳轉(zhuǎn)到前一張照片;反之,觸摸下半部分,就跳轉(zhuǎn)到下一張照片。實(shí)現(xiàn)該功能的關(guān)鍵在于設(shè)置一個標(biāo)志位來判斷當(dāng)前放映的是6張照片中的哪一張,當(dāng)xdata>500時,判斷為下半部分;xdata<500時,判斷為上半部分,然后一旦觸摸屏幕,在判斷觸摸的是哪一個部分后就會進(jìn)行加一或減一,以此循環(huán)。具體實(shí)現(xiàn)就是在LCD代碼的while(1)中,加入一段判斷選擇程序,其中xdata對應(yīng)的是屏幕的豎軸,ydata對應(yīng)橫軸。
另外,由于觸控比較靈敏,會出現(xiàn)輕輕按一下卻切換了好幾張照片的情況,為了解決這個問題,就需要加入一段中斷以及判斷按下和松開狀態(tài)。
圖 2.狀態(tài)轉(zhuǎn)換圖
2.1.3 音樂播放模塊設(shè)計(jì)方案
S3C2440A 有五個十六位計(jì)時器。計(jì)時器 0, 1, 2, 和3有 Pulse Width Modulation(PWM)功能.計(jì)時器4 只有一個內(nèi)部計(jì)時器,沒有外部輸出管腳。定時器0 有一個死區(qū)發(fā)生器,這可以給大電流設(shè)備使用。
定時器0和1共用一個8位預(yù)分頻器,而定時器2、3和4共用其他一個8位預(yù)分頻器。每個定時器有一個時鐘分頻器,可以生成5種不同的信號(1 / 2,1 / 4,1/ 8,1 / 16,和TCLK)。每個定時器模塊,接收從其自己的時鐘分頻器發(fā)出的信號,收到相應(yīng)的8位預(yù)分頻器的時鐘的時鐘信號的時候。8位預(yù)分頻器是可編程的,并且可以根據(jù)存儲在TCFG0和TCFG1寄存器中的裝載值細(xì)分(確定)像素時鐘PCLK。
當(dāng)計(jì)時器時使能的時候,該計(jì)時器的計(jì)數(shù)緩沖寄存器(TCNTBn)初始化,同時裝載初始值到向下計(jì)數(shù)器當(dāng)中。計(jì)時器的比較緩沖寄存器(TCMPBn)初始化的時候,自動裝載一個初始值,用來和向下計(jì)數(shù)器的值進(jìn)行比較。這種雙重緩沖寄存器的機(jī)構(gòu),TCNTBn和TCMPBn,使計(jì)時器可以在PWM頻率和占空比改變的時候保持穩(wěn)定的PWM輸出。
每一個定時器都有自己的有機(jī)器時鐘驅(qū)動的十六位向下計(jì)數(shù)器。當(dāng)向下計(jì)數(shù)器到達(dá)零的時候,定時器中斷請求產(chǎn)生并通知CPU,定時器操作已經(jīng)完成。當(dāng)定時器向下計(jì)數(shù)器達(dá) 5
嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)
零的時候,相應(yīng)的TCNTBn將會自動為下一次操作裝載相應(yīng)的計(jì)數(shù)值。然而,當(dāng)計(jì)時器被停止的時候,例如,當(dāng)定時器控制寄存器TCONn的使能位被清零的時候,TCNBn的值就不會被重新裝載進(jìn)計(jì)數(shù)器。TCMPBn的值是用于控制脈寬調(diào)制(PWM)的。定時器控制當(dāng)向下計(jì)數(shù)器的值等于compare的值時,輸出電平邏輯改變。因此,compare寄存器的值決定了PWM的占空比。
我們要調(diào)整PWM 的占空比進(jìn)行電機(jī)控制或者電源控制的時候,只需要在程序中不斷修改rTCNTB0 的值就可以了;而如果我們要改變PWM 的頻率,我們只要通過不斷的修改rTCNTB0 的值就可以了(當(dāng)然也可以通過修改rTCNTB0 =(PCLK>>7)/freq 中的freq 的值來間接實(shí)現(xiàn)修改rTCNTB0 的值)。
2.1.4 鍵盤模塊設(shè)計(jì)方案
我們知道有時觸摸屏?xí)惶糜?,比如手濕了或者戴手套的時候,這時有了按鍵功能,就能起到很好的替換效果。我們主要用按鍵功能實(shí)現(xiàn)照片的前后切換,其原理和之前觸摸屏切換類似,這里不多撰述。
2.2 工程規(guī)范
在本次課題實(shí)施中我們就TQ2440開發(fā)板實(shí)際開發(fā)操作方面總結(jié)出規(guī)范如下:(1)不要著急寫代碼,首先要將設(shè)計(jì)思路、功能模塊等規(guī)劃完成,然后才能進(jìn)行下一步的工作。這樣做有助于實(shí)際操作過程中的條理性,并且可以使項(xiàng)目處于可控、可實(shí)現(xiàn)的狀態(tài)。
(2)在編寫代碼的時候一定要添加上相應(yīng)的注釋,增加代碼的可讀性,方便自己以后的修改和別人的理解。
(3)硬件上,接線時一定要仔細(xì)。注意串口線連接的位置,因?yàn)檫@涉及到燒錄程序時端口的選擇。
(4)從直觀上看問題。每次修改程序之后先錄入開發(fā)板,從顯示屏實(shí)際顯示效果上看是否實(shí)現(xiàn)功能而不是糾結(jié)于程序是否修改正確。
三、課題實(shí)施過程詳述
1、實(shí)現(xiàn)六張圖像的鍵盤控制切換;
在keyscan.c的static void __irq Key_ISR(void)中加入以下代碼:
if(key == 0xff){flag3=0;Uart_Printf(“Interrupt occur...Key is released!n”);} else{ flag3++;if(flag3 == 8)flag3 = 2;if(flag3 == 1){
if(key == 2 && flag4<=6)
{flag4++;if(flag4==7)flag4=1;}
嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)
else if(key == 1 && flag4<=6){flag4--;if(flag4==-1)flag4=6;} else if(key == 3){flag5=1;Main();}}
Uart_Printf(“Interrupt occur...K%d is pressed!n”, key);ExitCritical(&r);}
switch(flag4){
case 1:Paint_Bmp(0, 0, 480, 272, tu1_320240);break;
case 2:Paint_Bmp(0, 0, 480, 272, tu2_320240);break;
case 3:Paint_Bmp(0, 0, 480, 272, tu3_320240);break;
case 4:Paint_Bmp(0, 0, 480, 272, tu4_320240);break;
case 5:Paint_Bmp(0, 0, 480, 272, tu5_320240);break;
case 6:Paint_Bmp(0, 0, 480, 272, tu6_320240);break;
}
2、實(shí)現(xiàn)觸摸屏控制圖片切換功能;
(1)在while(1)中來實(shí)現(xiàn):通過使用對觸摸屏進(jìn)行觸摸操作時返回的xdata 和ydata 的數(shù)值對我們要顯示的圖片進(jìn)行控制選擇,如下:
while(1)//to check Pen-up state { if(rSUBSRCPND &(BIT_SUB_TC))//check if ADC is finished with interrupt bit {
flag = 0;break;//if Stylus is up(1)state} flag++;if(flag == 8)
flag = 2;if(flag == 1){
if(xdata>500 && flag1<=6)
{flag1++;if(flag1==7)flag1=1;}
else if(xdata<500 && flag1<=6)
{flag1--;if(flag1==-1)flag1=6;}
else
flag1=0;
switch(flag1){
case 1:Paint_Bmp(0, 0, 480, 272, tu1_320240);break;
case 2:Paint_Bmp(0, 0, 480, 272, tu2_320240);break;
case 3:Paint_Bmp(0, 0, 480, 272, tu3_320240);break;
case 4:Paint_Bmp(0, 0, 480, 272, tu4_320240);break;
case 5:Paint_Bmp(0, 0, 480, 272, tu5_320240);break;
case 6:Paint_Bmp(0, 0, 480, 272, tu6_320240);break;
}} }
(2)編譯修改好的程序生成所需要的bin文件,錄入開發(fā)板并觀測圖像顯示。
3、PWM蜂鳴器音樂播放功能。
這部分功能就是在原先功能基礎(chǔ)上加入了蜂鳴器的播放功能。
嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)
四、系統(tǒng)測試方法
本文所使用的硬件環(huán)境為天嵌TQ2440,是由廣州天嵌計(jì)算機(jī)科技有限公司所制造。軟件環(huán)境為WINDOWS 10,帶有2.40 GHz Core? i5 處理器以及4GB RAM。編譯環(huán)境為ARM Developer Suite(ADS)1.2版。
五、結(jié)果分析
由于無法體現(xiàn)觸控功能和音樂播放功能,這里只展示了照片顯示功能。數(shù)碼相框顯示的照片如下,從圖片中可以看到照片顯示功能十分完好:
嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)
六、總結(jié)
本文展現(xiàn)了我們制作的數(shù)碼相框,雖然總的來講功能比較簡陋,但也是我們的一片心血。通過這次實(shí)驗(yàn),我們對于ARM嵌入式開發(fā)有了一個初步的認(rèn)識,也熟悉了整個開發(fā)過程。最為重要的是,這次的實(shí)驗(yàn)為我們未來的學(xué)習(xí)與工作打下了一個良好的基礎(chǔ),我們不僅體驗(yàn)了當(dāng)今最為流行的嵌入式技術(shù),更是懂得了嵌入式開發(fā)的思想核心。在這里,我們要感謝負(fù)責(zé)嵌入式實(shí)驗(yàn)相關(guān)工作的王建敏老師,以及教授嵌入式課程的韓軍老師、薛雷老師以及陸小峰老師,他們?yōu)檫@門課付出了自己的心血,傳授給我們無價的知識??偟膩碚f,這次實(shí)驗(yàn)難度并不大,但學(xué)到的東西并不少,相信未來我們也許也將走上嵌入式開發(fā)的道路,為嵌入式領(lǐng)域貢獻(xiàn)自己的一份力量。
參考文獻(xiàn)
[1] 裸奔三部曲.廣州天嵌計(jì)算機(jī)科技有限公司.2012:1-59 [2] TQ2440開發(fā)板使用手冊.廣州天嵌計(jì)算機(jī)科技有限公司.2012:271-298 附錄
(1)觸摸屏ADC 中斷初始化的程序段
rADCDLY=50000;
//Normal conversion mode delay about(1/3.6864M)*50000=13.56ms rADCCON=(1<<14)+(ADCPRS<<6);//ADCPRS En, ADCPRS Value Uart_Printf(“nTouch Screen testn”);rADCTSC=0xd3;//Wfait,XP_PU,XP_Dis,XM_Dis,YP_Dis,YM_En pISR_ADC =(int)AdcTsAuto;rINTMSK=~BIT_ADC;//ADC Touch Screen Mask bit clear rINTSUBMSK=~(BIT_SUB_TC);(2)觸摸屏中斷程序斷
void __irq AdcTsAuto(void){ U32 saveAdcdly;if(rADCDAT0&0x8000){ //Uart_Printf(“nStylus Up!n”);rADCTSC&=0xff;// Set stylus down interrupt bit
嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)
} //else //Uart_Printf(“nStylus Down!n”);rADCTSC=(1<<3)|(1<<2);//Pull-up disable, Seq.X,Y postion measure.saveAdcdly=rADCDLY;rADCDLY=40000;
//Normal conversion mode delay about(1/50M)*40000=0.8ms rADCCON|=0x1;
//start ADC while(rADCCON & 0x1);
//check if Enable_start is low while(!(rADCCON & 0x8000));
//check if EC(End of Conversion)flag is high, This line is necessary!while(!(rSRCPND &(BIT_ADC)));//check if ADC is finished with interrupt bit xdata=(rADCDAT0&0x3ff);ydata=(rADCDAT1&0x3ff);//check Stylus Up Interrupt.rSUBSRCPND|=BIT_SUB_TC;ClearPending(BIT_ADC);rINTSUBMSK=~(BIT_SUB_TC);rINTMSK=~(BIT_ADC);rADCTSC =0xd3;
//Waiting for interrupt rADCTSC=rADCTSC|(1<<8);
// Detect stylus up interrupt signal.while(1)
//to check Pen-up state { if(rSUBSRCPND &(BIT_SUB_TC))//check if ADC is finished with interrupt bit { //Uart_Printf(“Stylus Up Interrupt~!n”);break;//if Stylus is up(1)state } } Uart_Printf(“count=%03d XP=%04d, YP=%04dn”, count++, xdata, ydata);//X-position Conversion data rADCDLY=saveAdcdly;rADCTSC=rADCTSC&~(1<<8);// Detect stylus Down interrupt signal.rSUBSRCPND|=BIT_SUB_TC;rINTSUBMSK=~(BIT_SUB_TC);// Unmask sub interrupt(TC)ClearPending(BIT_ADC);}(3)PWM蜂鳴器音階發(fā)生功能
while(1){
U16 freq =800;
if((xdata>719 && ydata>800)){ Paint_Bmp(0,0,480,272,tu3_480272);freq=220;Buzzer_Freq_Set(freq);}
嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)
else if(xdata>526 && ydata>800){ Paint_Bmp(0,0,480,272,tu2_480272);freq=247;Buzzer_Freq_Set(freq);} else if(xdata>332 && ydata>800){ Paint_Bmp(0,0,480,272,tu1_480272);freq=262;Buzzer_Freq_Set(freq);} else if(xdata>719 && ydata<225){Paint_Bmp(0,0,480,272,tu6_480272);freq=294;Buzzer_Freq_Set(freq);} else if(xdata>526 && ydata<225){Paint_Bmp(0,0,480,272,tu5_480272);freq=330;Buzzer_Freq_Set(freq);} else if(xdata>332 && ydata<225){Paint_Bmp(0,0,480,272,tu4_480272);freq=349;Buzzer_Freq_Set(freq);} else if(xdata>719 && ydata>225&& ydata<800){freq=392;Buzzer_Freq_Set(freq);} else {freq=392;Buzzer_Freq_Set(freq);Buzzer_Stop();} Paint_Bmp1(-40, 70, 480, 272,4, tu1_480272);Paint_Bmp1(-40, 140, 480, 272,4, tu2_480272);Paint_Bmp1(-40, 210, 480, 272,4, tu3_480272);Paint_Bmp1(400, 70, 480, 272,4, tu4_480272);Paint_Bmp1(400, 140, 480, 272,4, tu5_480272);Paint_Bmp1(400, 210, 480, 272,4, tu6_480272);Delay(500);} }
第二篇:嵌入式系統(tǒng)基礎(chǔ)課程設(shè)計(jì)報(bào)告
河南機(jī)電高等??茖W(xué)校
嵌入式系統(tǒng)基礎(chǔ)課程設(shè)計(jì)報(bào)告
系 部: 電子通信工程系 專 業(yè): 班 級: 學(xué)生姓名: 學(xué) 號:
2012年 06月
嵌入式系統(tǒng)基礎(chǔ)課程設(shè)計(jì)任務(wù)書
1.時間:2012年06月11日~2012年06月15日 2.課程設(shè)計(jì)單位:河南機(jī)電高等??茖W(xué)校
3.課程設(shè)計(jì)目的:深入學(xué)習(xí)單片機(jī)編程技巧,熟悉電子產(chǎn)品設(shè)計(jì)制作全過程。能夠利用匯編語言完成十字路口交通燈的設(shè)計(jì)。4.課程設(shè)計(jì)任務(wù):
按交通燈的具體要求來寫
―――-紅色文字為說明,寫報(bào)告時請先刪除?。?/p>
嵌入式系統(tǒng)基礎(chǔ)課程設(shè)計(jì)報(bào)告
前言:
×××××××××××××××××××××××××××××××××××××××××××××××-----宋體,小四,不加粗,單倍行距
實(shí)訓(xùn)報(bào)告: ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
??????
×××××××××××××××××××××××××××××××
―――-紅色文字為說明,寫報(bào)告時請先刪除??!
心得體會: ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
??????
××××××××××××××××××××××××××××××××××××××××××××××××××
參考文獻(xiàn):
???以下紅色文字為“參考文獻(xiàn)”的示例,寫報(bào)告時請先刪除??!填寫上你自己的“參考文獻(xiàn)”
[1] 周小謙,丁功揚(yáng),郭日彩,三峽電力系統(tǒng)的形成和發(fā)展,電網(wǎng)技術(shù)。1998,88(3):p1-3 [2]-----宋體,小五,不加粗,單倍行距
第三篇:嵌入式系統(tǒng)基礎(chǔ)課程設(shè)計(jì)報(bào)告
河南機(jī)電高等??茖W(xué)校
《嵌入式系統(tǒng)基礎(chǔ)》 課程設(shè)計(jì)報(bào)告
設(shè)計(jì)題目: 系 部: 電子通信工程系 班 級: 學(xué) 號: 學(xué)生姓名: 成 績:
2012年 05月
《嵌入式系統(tǒng)基礎(chǔ)》課程設(shè)計(jì)任務(wù)書 1.時間:2012年05月14日~2011年05月25日 2.課程設(shè)計(jì)單位:河南機(jī)電高等??茖W(xué)校
3.課程設(shè)計(jì)目的:掌握《嵌入式系統(tǒng)基礎(chǔ)》課程基本概念、基本原理,具有一定的單片機(jī)設(shè)計(jì)能力,能夠利用所學(xué)知識完成設(shè)計(jì)內(nèi)容,提高實(shí)際動手能力。4.課程設(shè)計(jì)任務(wù):
①參考相關(guān)的的書籍、資料,根據(jù)設(shè)計(jì)要求完成原理圖設(shè)計(jì); ②制作電路板并完成調(diào)試; ③繪制軟件流程圖; ④完成軟件設(shè)計(jì)并完成調(diào)試;
⑤作好筆記,對自己所發(fā)現(xiàn)的疑難問題及時請教解決; ⑥聯(lián)系自己所學(xué)知識,總結(jié)本次設(shè)計(jì)經(jīng)驗(yàn); ⑦認(rèn)真完成課程設(shè)計(jì)報(bào)告。
5.設(shè)計(jì)要求
根據(jù)所給具體的設(shè)計(jì)要求來寫!
《嵌入式系統(tǒng)基礎(chǔ)》課程設(shè)計(jì)報(bào)告
前言:
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
一、硬件設(shè)計(jì)
1.設(shè)計(jì)思路及原理框圖
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
………………
××××××××××××××××××××××××××××××× 2.采用的芯片功能介紹
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
………………
××××××××××××××××××××××××××××××× 3.原理圖
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
………………
×××××××××××××××××××××××××××××××
二、軟件設(shè)計(jì)
1.設(shè)計(jì)思路
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
………………
××××××××××××××××××××××××××××××× 2.程序流程圖(必須要有)
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× ………………
××××××××××××××××××××××××××××××× 3.具體程序(可選,但流程圖一定要有)
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
………………
×××××××××××××××××××××××××××××××
心得體會: ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
………………
×××××××××××××××××××××××××××××××
參考文獻(xiàn):
[1] 付家才 電子實(shí)驗(yàn)與實(shí)踐.北京:高等教育出版社130-150頁
[2] 李東生、張勇、許四毛 《Protel 99SE電路設(shè)計(jì)技術(shù)入門與應(yīng)用》電子工業(yè)出版社231-300頁
………………
格式要求:
標(biāo)題按照所給模板格式書寫。
正文字體為:中文宋體,西文(字母和數(shù)字):Times New Roman,小四號字; 段落:兩端對齊,首行縮進(jìn)2字符,行距固定值20磅,其他設(shè)置為默認(rèn)。
―――-紅色文字為說明,寫報(bào)告時請先刪除??!
第四篇:嵌入式系統(tǒng)原理實(shí)驗(yàn)總結(jié)報(bào)告
嵌入式系統(tǒng)原理實(shí)驗(yàn)總結(jié)報(bào)告
車輛座椅控制系統(tǒng)實(shí)驗(yàn)
2014/5/23
嵌入式系統(tǒng)原理實(shí)驗(yàn)總結(jié)報(bào)告
一、技術(shù)性總結(jié)報(bào)告
(一)題目:車輛座椅控制系統(tǒng)實(shí)驗(yàn)
(二)項(xiàng)目概述:
1.為了實(shí)現(xiàn)車輛座椅控制的自動化與智能化。
2.方便用戶通過智能手機(jī)與車載傳感器之間的聯(lián)動。3.使車輛作為當(dāng)今物聯(lián)網(wǎng)中重要的一個節(jié)點(diǎn)發(fā)揮作用。
4.通過車輛座椅控制系統(tǒng)實(shí)驗(yàn)實(shí)現(xiàn)對嵌入式系統(tǒng)原理課程的熟練掌握與對嵌入式系統(tǒng)原理知識的深化記憶。
5.加強(qiáng)本組學(xué)生對嵌入式系統(tǒng)原理的更深層次的理解與運(yùn)用。
(三)技術(shù)方案及原理
本次試驗(yàn)分為軟件、硬件兩個部分。1.軟件部分。
A.智能手機(jī)部分,包括通過智能手機(jī)對座椅的控制部分、手機(jī)所攜帶的身份信息部分。
本部分軟件使用Java編寫,其程序部分為: 主程序:
package com.example.seat;
import android.support.v7.app.ActionBarActivity;import android.support.v7.app.ActionBar;import android.support.v4.app.Fragment;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.os.Build;
import java.io.BufferedReader;import java.io.IOException;
import java.io.InputStreamReader;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.InetAddress;import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;
import android.view.KeyEvent;import android.view.View;import android.widget.Button;
public class MainActivity extends ActionBarActivity { private Button Up = null;private Button Left = null;private Button Dowm = null;private Button Right = null;private Socket socket = null;
private static final String HOST = “192.168.1.142”;
private static final int PORT = 10007;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initControl();
}
private void initControl(){
Up =(Button)findViewById(R.id.button1);
Up.setOnClickListener(new ReceiverListener());
}
class ReceiverListener implements OnClickListener {
protected String line;
@Override
public void onClick(View v){
// TODO Auto-generated method stub
new Thread(){
@Override
public void run(){
try {
Socket socket = new Socket(HOST, PORT);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
line = br.readLine();
br.close();
} catch(UnknownHostException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
handler.sendEmptyMessage(0);
}
}.start();
}
}
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
super.handleMessage(msg);
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu){
// Inflate the menu;this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
// Handle action bar item clicks here.The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();
if(id == R.id.action_settings){
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment(){
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
return rootView;
}
} } 界面代碼:
package=“com.example.seat” android:versionCode=“1” android:versionName=“1.0” > android:name=“android.permission.ACCESS_NETWORK_STATE”/> android:minSdkVersion=“8” android:targetSdkVersion=“19” /> android:allowBackup=“true” android:icon=“@drawable/ic_launcher” android:label=“@string/app_name” android:theme=“@style/AppTheme” > android:name=“com.example.seat.MainActivity” android:label=“@string/app_name” >
host = '' port = 10007
pwm = PWM(0x6F, debug=True)
servoMin = 125 # Min pulse length out of 4096 , 0.5 servoMax = 575 # Max pulse length out of 4096 , 2.3
def setServoPulse(channel, pulse):
pulseLength = 1000000
# 1,000,000 us per second
pulseLength /= 60
# 60 Hz
print “%d us per period” % pulseLength
pulseLength /= 4096
# 12 bits of resolution
print “%d us per bit” % pulseLength
pulse *= 1000
pulse /= pulseLength
if(pulse>servoMax): pulse = servoMax
if(pulse pwm.setPWM(channel, 0, int(pulse)) pwm.setPWMFreq(60) # Set frequency to 60 Hz pwm.setPWM(0, 0, servoMax) if __name__ == '__main__': s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((host, port)) s.listen(3) print 'Server is running on port %d, press Ctrl-C to terminate it.' % port pulse_ud = 1.9 pulse_lr = 1.9 setServoPulse(0,pulse_ud) setServoPulse(1,pulse_lr) while True: clientsock, clientaddr = s.accept() clientfile = clientsock.makefile('rw', 0) ctrlinfo = clientfile.readline().strip() print 'Control info is %s.n' % ctrlinfo if ctrlinfo == “up”: pulse_ud += 0.1 elif ctrlinfo == “down”: pulse_ud-= 0.1 elif ctrlinfo == “l(fā)eft”: pulse_lr += 0.1 elif ctrlinfo == “right”: pulse_lr-= 0.1 else: print “ERRORn” setServoPulse(0,pulse_ud) setServoPulse(1,pulse_lr) clientfile.close() clientsock.close() 2.硬件部分。 對車載座椅控制部分發(fā)出的信息的接受、識別、執(zhí)行部分。本次試驗(yàn)使用的硬件設(shè)備包括:智能手機(jī)一部、“樹莓派”一臺、小舵機(jī)兩臺、舵機(jī)驅(qū)動板一個、無線網(wǎng)卡一個、杜邦線若干、5V電源一個、無線路由器一個 智能手機(jī) 樹莓派(外) 樹莓派(內(nèi)) 小舵機(jī) 舵機(jī)驅(qū)動板 無線網(wǎng)卡 杜邦線 5V電源 無線路由器 (四)實(shí)驗(yàn)流程及結(jié)果 1.打開智能手機(jī)上的控制軟件。 2.向車載座椅控制臺發(fā)送信息。(發(fā)送信息分別為上、下、左、右)3.車載座椅控制臺接受、識別并執(zhí)行信息。4.通過小舵機(jī)的動作驗(yàn)證該實(shí)驗(yàn)是否成功。(詳細(xì)見視頻) 二、工作進(jìn)度自評表 本次試驗(yàn)完成。 本次試驗(yàn)計(jì)劃分為三個階段。 第一階段:智能手機(jī)部分、車載座椅控制部分和硬件部分的分別完成。本階段完成。 第二階段:智能手機(jī)部分、車載座椅控制部分和硬件部分的整合階段。本階段完成。 第三階段:車輛座椅控制系統(tǒng)實(shí)驗(yàn)的驗(yàn)收調(diào)試階段。本階段完成。 三、組內(nèi)人員自評 本次試驗(yàn)打到預(yù)期的實(shí)驗(yàn)?zāi)康?。雖然在實(shí)驗(yàn)進(jìn)行過程中遇到了不少的麻煩,但是通過我們成員自身的努力學(xué)習(xí)掌握了實(shí)驗(yàn)所要求的知識。最后實(shí)驗(yàn)的成功與組員之間的互相幫助與緊密配合是分不開的。 四、個人學(xué)習(xí)心得 本人通過此次實(shí)驗(yàn),對于嵌入式系統(tǒng)原理有了更加深層次的了解。對于設(shè)計(jì)嵌入式系統(tǒng)原理的實(shí)驗(yàn)也有了較為高程度的提高。為了以后更進(jìn)一步的學(xué)習(xí)并掌握嵌入式系統(tǒng)打下了堅(jiān)實(shí)的一步。對于了解車輛座椅控制的自動化與智能化;了解用戶通過智能手機(jī)與車載傳感器之間的聯(lián)動;了解車輛作為當(dāng)今物聯(lián)網(wǎng)中重要的一個節(jié)點(diǎn)都發(fā)揮了重要作用。通過車輛座椅控制系統(tǒng)實(shí)驗(yàn)實(shí)現(xiàn)對嵌入式系統(tǒng)原理課程的熟練掌握與對嵌入式系統(tǒng)原理知識的深化記憶。加強(qiáng)本組學(xué)生對嵌入式系統(tǒng)原理的更深層次的理解與運(yùn)用。 嵌入式系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)報(bào)告 班 級:學(xué) 號:姓 名:成 績:指導(dǎo)教師: 20090612 2009112107 侯金鐘 武俊鵬、劉書勇 1.實(shí)驗(yàn)一 1.1 實(shí)驗(yàn)名稱 嵌入式系統(tǒng)硬件開發(fā)環(huán)境 1.2 實(shí)驗(yàn)?zāi)康?/p> 1.熟悉UP-net3000實(shí)驗(yàn)平臺。 2.超級終端設(shè)置及BIOS 功能使用。 1.3 實(shí)驗(yàn)環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。 軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 1.4 實(shí)驗(yàn)內(nèi)容及要求 熟悉UP-net3000實(shí)驗(yàn)平臺的硬件電路和外設(shè),ARM JTAG的安裝和使用,利用超級終端檢驗(yàn)外設(shè)的工作狀態(tài)。 1.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟 1.建立工程 (1)運(yùn)行ARM SDT 2.5 集成開發(fā)環(huán)境(ARM Project Manager).(2)在新建的工程中,如圖1A-2 所示,選中工程樹的“根部”。 (3)因?yàn)殚_發(fā)板上的嵌入式處理器ARM7TDMI 沒有浮點(diǎn)處理器,所以,如圖1A-3 所 示,在彈出的對話框中設(shè)置Floating Point Processor 為none,并保持其他的設(shè)置不變。(4)選中工程樹的“根部”,通過菜單Project | Tool Configuration for work1.apj | asmlink | Set,對整個工程的連接方式進(jìn)行設(shè)置。(5)在彈出的對話框中,選中Entry and Base 標(biāo)簽,如圖1A-4 所示,設(shè)置連接的Read-Only(只讀)和Read-Write(讀寫)地址。 (6)選擇Linker Configuration 的ImageLayout 標(biāo)簽,(7)選擇Project | Edit Project Tamplete 菜單,彈出Project Template Editor 對話框。 (8)選擇Project | Edit Variables for work1.apj,彈出Edit Variables for work1.apj 對話框。 2.進(jìn)行程序的在線仿真、調(diào)試 1.6 實(shí)驗(yàn)過程與分析 熟悉UP-net3000實(shí)驗(yàn)平臺的硬件電路和外設(shè),安裝了ARM JTAG,利用超級終端檢驗(yàn)了外設(shè)的工作狀態(tài)。 1.7 實(shí)驗(yàn)結(jié)果總結(jié) 軟件安裝成功,結(jié)果顯示正常。 1.8 心得體會 通過此次試驗(yàn),我對ARM的環(huán)境的功能有一定的了解與完善。對試驗(yàn)臺有了基本的認(rèn)識與使用。 2.實(shí)驗(yàn)二 2.1 實(shí)驗(yàn)名稱 嵌入式系統(tǒng)軟件開發(fā)環(huán)境 2.2 實(shí)驗(yàn)?zāi)康?/p> 1.熟悉ADS1.2 開發(fā)環(huán)境,學(xué)會ARM 仿真器的使用。 2.使用ADS 編譯、下載、調(diào)試并跟蹤一段已有的程序,了解嵌入式開發(fā)的基本思想和過程。 2.3 實(shí)驗(yàn)環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。 軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 2.4 實(shí)驗(yàn)內(nèi)容及要求 本次實(shí)驗(yàn)使用ADS 集成開發(fā)環(huán)境。新建一個簡單的工程文件,并編譯這個工程文件。學(xué)習(xí)ARM 仿真器的使用和開發(fā)環(huán)境的設(shè)置。下載已經(jīng)編譯好的文件到嵌入式控制器中運(yùn)行。學(xué)會在程序中設(shè)置斷點(diǎn),觀察系統(tǒng)內(nèi)存和變量。 2.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟 (1)運(yùn)行ADS1.2 集成開發(fā)環(huán)境(CodeWarrior for ARM Developer Suite)。 (2)在新建的工程中,選擇Debug 版本,使用Edit | Debug Settings菜單對Debug 版本進(jìn)行參數(shù)設(shè)置。(3)在Debug Settings 對話框中選擇Target Settings 項(xiàng)。在Post-linker一欄中選擇ARM from ELF。 (4)在Debug Settings 對話框中選擇ARM Linker 項(xiàng) (5)在第四步中如果選擇簡單的地址連接設(shè)置,在Debug Settings 對話框中選擇ARM Linker 項(xiàng) (6)回到的工程窗口中,選擇Release 版本,使用Edit | Release Settings 菜單對Release 版本進(jìn)行參數(shù)設(shè)置。(7)參照第(3)、(4)、(5)、(6)步在Release Settings 對話框中設(shè)置Release版本的Post-linker、連接地址范圍、入口模塊和輸出文件。(8)回到如圖1B-3 所示的工程窗口中,選擇Targets 選項(xiàng)卡,如圖1B-11 所示。選中DebugRel 版本,按Del 鍵將其刪除。DebugRel 子樹是一個折衷版本,通常用不到,所以在這里刪除。 2.6 實(shí)驗(yàn)過程與分析 1)回到工程窗口選中Debug 版本,執(zhí)行菜單Project | Make 對工程進(jìn)行編譯連接。(2)在ADS 中執(zhí)行菜單Project | Debug 啟動ADS1.2 的調(diào)試工具AXD。(3)在AXD 中執(zhí)行菜單Options | Configure Target 對AXD 進(jìn)行設(shè)置。(4)點(diǎn)Select 按鈕選擇遠(yuǎn)程連接為ARM ethernet driver,點(diǎn)Configure 按鈕輸入仿真器的IP 地址。 (5)等待程序裝載完畢以后,通過Execute | Go 菜單以及Execute | Stop(或者工具欄中的相應(yīng)按鈕)運(yùn)行或暫停程序。程序暫停后在窗口中將顯示出程序暫停的位置。(6)通過Execute | Step 菜單(或者工具欄中的相應(yīng)按鈕)可以單步運(yùn)行程序。 (7)程序停止后可以通過Processor Views | Sources 菜單查看源文件,并可在適當(dāng)位置按F9 設(shè)置端點(diǎn)。 (8)使用在Processor View 菜單下的Registers、Variables 和Memory 命令可以查看工作寄存器或者內(nèi)存變量。讀者可以逐一地嘗試,為以后調(diào)試程序打下基礎(chǔ)。 2.7 實(shí)驗(yàn)結(jié)果總結(jié) 超級終端輸出“Hello World!”。 2.8 心得體會 基本了解了ADS1.2的配置條件,學(xué)會了ARM仿真器的使用方法。 3.實(shí)驗(yàn)三 3.1 實(shí)驗(yàn)名稱 鍵盤及LED實(shí)驗(yàn) 3.2 實(shí)驗(yàn)?zāi)康?/p> 1.學(xué)習(xí)鍵盤及LED 驅(qū)動原理。 2.掌握ZLG7289芯片串行接口的使用方法,用ZLG7289芯片驅(qū)動17鍵的鍵盤和8個共陰極LED。 3.3 實(shí)驗(yàn)環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。 軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 3.4 實(shí)驗(yàn)內(nèi)容及要求 通過ZLG7289芯片驅(qū)動17鍵的鍵盤和8個共陰極LED,將按鍵值在LED上顯示出來。要求從右至左循環(huán)顯示至少四位數(shù)字。 基本功能實(shí)現(xiàn)之后可考慮實(shí)現(xiàn)從左至右顯示四位及四位以上數(shù)字(最大八位),并可設(shè)置清零鍵等擴(kuò)展功能。 3.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟 利用所給的基礎(chǔ)代碼進(jìn)行調(diào)試,觀察輸出結(jié)果,結(jié)合指導(dǎo)書和教材掌握基本原理和源代碼的編寫方式。根據(jù)實(shí)驗(yàn)的要求設(shè)計(jì)函數(shù)流程,并反復(fù)調(diào)試,實(shí)現(xiàn)功能。1.新建工程,將“Exp3 鍵盤及LED 驅(qū)動實(shí)驗(yàn)”中的文件添加到工程。2.定義ZLG7289 寄存器(ZLG7289.h) #define ZLG7289_CS(0x20)//GPB5 #define ZLG7289_KEY(0x10)//GPG4 #define ZLG7289_ENABLE()do{ZLG7289SIOBand=rSBRDR;ZLG7289SIOCtrl=rSIOCON;rSIOCON=0x31;rSBRDR=0xff;rPDATB&=(~ZLG7289_CS);}while(0)#define ZLG7289_DISABLE()do{rPDATB|=ZLG7289_CS;rSBRDR=ZLG7289SIOBand;rSIOCON=ZLG7289SIOCtrl;}while(0)3.編寫ZLG7289 驅(qū)動函數(shù)(ZLG7289.c)4.定義鍵盤映射表:(Keyboard16.c) unsigned char KeyBoard_Map[]= {4,8,11,0,0,0,0,0,5,9,12,15,1,0,0,0,6,10,13,16,2,3,0,0,7,0,14,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//64 鍵值映射表,通過查找鍵盤映射表來確定鍵盤掃描碼對應(yīng)的按鍵值。 5.定義鍵值讀取函數(shù)。(Keyboard16.c)6.編寫主函數(shù),將按鍵值在數(shù)碼管上顯示。 3.6 實(shí)驗(yàn)過程與分析 利用鍵盤驅(qū)動函數(shù)實(shí)現(xiàn)基本數(shù)字輸入,然后利用循環(huán)左移函數(shù)實(shí)現(xiàn)輸入數(shù)字做一樣功能,并通過改變函數(shù)中相應(yīng)delay的值來消除鍵盤按鍵帶來的抖動。 3.7 實(shí)驗(yàn)結(jié)果總結(jié) 按鍵值可以在LED上顯示出來。要求從右至左循環(huán)顯示八位數(shù)字,同時可以復(fù)位清零。達(dá)到實(shí)驗(yàn)的效果。 3.8 心得體會 通過本次實(shí)驗(yàn),我了解了LED的顯示屏幕的數(shù)字的移位功能,這個功能不止可以用一個方法實(shí)現(xiàn),而循環(huán)左移是其中比較巧妙且省力的一種,在遇到類似情況的時候,可以優(yōu)先考慮能不能利用到文件中已經(jīng)存在的函數(shù),這樣可以不必自己編寫函數(shù),省時省力。是一種可靠的方法。4.實(shí)驗(yàn)四 4.1 實(shí)驗(yàn)名稱 電機(jī)轉(zhuǎn)動控制及中斷實(shí)驗(yàn) 4.2 實(shí)驗(yàn)?zāi)康?/p> 1.熟悉ARM本身自帶的六路即三對PWM,掌握相應(yīng)寄存器的配置。 2.編程實(shí)現(xiàn)ARM系統(tǒng)的PWM輸出和I/O輸出,前者用于控制直流電機(jī),后者用于控制步進(jìn)電機(jī)。 3.了解直流電機(jī)和步進(jìn)電機(jī)的工作原理,學(xué)會用軟件的方法實(shí)現(xiàn)步進(jìn)電機(jī)的脈沖分配,即用軟件的方法代替硬件的脈沖分配器。 4.了解44B0處理器上中斷的應(yīng)用。5.學(xué)習(xí)在44B0處理器上中斷的應(yīng)用。 6.進(jìn)一步熟悉平臺外圍硬件及其驅(qū)動程序的編寫。 4.3 實(shí)驗(yàn)環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。 軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 4.4 實(shí)驗(yàn)內(nèi)容及要求 1.學(xué)習(xí)步進(jìn)電機(jī)和直流電機(jī)的工作原理,了解實(shí)現(xiàn)兩個電機(jī)轉(zhuǎn)動對于系統(tǒng)的軟件和硬件要求。學(xué)習(xí)ARM 知識,掌握 PWM 的生成方法,同時也要掌握 I/O的控制方法。 2.編程實(shí)現(xiàn)ARM芯片的一對PWM輸出用于控制直流電機(jī)的轉(zhuǎn)動,通過A/D旋鈕控制其轉(zhuǎn)動方式。 3.編程實(shí)現(xiàn)ARM的四路I/O通道,實(shí)現(xiàn)環(huán)形脈沖分配用于控制步進(jìn)電機(jī)的轉(zhuǎn)動,通過A/D旋鈕控制步進(jìn)電機(jī)的轉(zhuǎn)角。 4.通過鍵盤控制直流電機(jī)與步進(jìn)電機(jī)的切換。5.設(shè)置并啟動定時器。 6.設(shè)置中斷,編寫定時器中斷服務(wù)程序,對中斷次數(shù)進(jìn)行計(jì)數(shù)并在LED上顯示結(jié)果。 4.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟 1.添加并打開工程。 2.進(jìn)行直流電機(jī)初始化設(shè)置和代碼編寫。3.進(jìn)行步進(jìn)電機(jī)初始化設(shè)置和代碼編寫。 4.對Timer3編程,編寫定時器中斷服務(wù)程序,完成對中斷次數(shù)的計(jì)數(shù)。5.編寫LED計(jì)數(shù)顯示函數(shù),使LED能正確計(jì)數(shù)并顯示0-9999。6.編寫中斷初始化函數(shù)和中斷響應(yīng)函數(shù)。7.終端下載測試。 4.6 實(shí)驗(yàn)過程與分析 1.對直流電機(jī)進(jìn)行編程和測試,掌握轉(zhuǎn)速和旋轉(zhuǎn)方向的設(shè)定方法。 2.對步進(jìn)電機(jī)進(jìn)行編程和測試,掌握ARM的四路I/O通道,實(shí)現(xiàn)環(huán)形脈沖分配用于控制步進(jìn)電機(jī)的轉(zhuǎn)動,通過A/D旋鈕控制步進(jìn)電機(jī)的轉(zhuǎn)角。 3.對主函數(shù)進(jìn)行編程,用鍵盤響應(yīng)直流電機(jī)與步進(jìn)電機(jī)的切換控制。 4.掌握中斷相關(guān)語句的應(yīng)用,弄清定義的中斷向量、中斷向量號,編寫中斷響應(yīng)函數(shù),并完成中斷響應(yīng)控制。 4.7 實(shí)驗(yàn)結(jié)果總結(jié) 實(shí)現(xiàn)了直流電機(jī)與步進(jìn)電機(jī)的基本設(shè)置和控制,可以通過鍵盤控制電機(jī)之間的切換。完成了中斷的響應(yīng)和定時中斷。當(dāng)對其中一個旋鈕轉(zhuǎn)動時,就可以由直流電機(jī)轉(zhuǎn)換成步進(jìn)電機(jī)的轉(zhuǎn)換,達(dá)到實(shí)驗(yàn)的效果。 4.8 心得體會 通過本次實(shí)驗(yàn),我了解了直流電機(jī)和步進(jìn)電機(jī)的工作原理,同時也知曉了電機(jī)間的轉(zhuǎn)換過程,了解其中的道理內(nèi)涵,熟悉了ARM自帶的A/D轉(zhuǎn)換器的工作原理及編程方法,了解了中斷的意義和實(shí)現(xiàn)方法,實(shí)現(xiàn)了簡單了中斷處理程序。同時我也收獲了很多關(guān)于ARM處理機(jī)的相關(guān)知識。 5.實(shí)驗(yàn)五 5.1 實(shí)驗(yàn)名稱 觸摸屏驅(qū)動實(shí)驗(yàn) 5.2 實(shí)驗(yàn)?zāi)康?/p> 1.了解觸摸屏的基本概念與原理。 2.理解觸摸屏與LCD的關(guān)系。3.編程實(shí)現(xiàn)對觸摸屏的控制。 4.熟悉用 ARM 內(nèi)置的 LCD控制器驅(qū)動 LCD。 5.3 實(shí)驗(yàn)環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。 軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 5.4 實(shí)驗(yàn)內(nèi)容及要求 1.了解觸摸屏基本原理,理解對觸摸屏進(jìn)行輸出標(biāo)定、與LCD顯示器配合的過程。2.通過編程實(shí)現(xiàn)觸摸兩點(diǎn)自動在兩點(diǎn)間劃直線。3.通過編程實(shí)現(xiàn)在觸摸屏上動態(tài)畫出曲線。5.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟 1.添加并打開工程。 2.在頭文件中定義宏和常量及驅(qū)動函數(shù)。 #define ADS7843_CTRL_START 0x80 #define ADS7843_GET_X 0x50 #define ADS7843_GET_Y 0x10 #define ADS7843_CTRL_12MODE 0x0 #define ADS7843_CTRL_8MODE 0x8 #define ADS7843_CTRL_SER 0x4 #define ADS7843_CTRL_DFR 0x0 #define ADS7843_CTRL_DISPWD 0x3 // Disable power down #define ADS7843_CTRL_ENPWD 0x0 // enable power down #define ADS7843_PIN_CS(1<<6)//GPF6 #define ADS7843_PIN_PEN(1<<5)//GPG5 /////////觸摸屏動作//////// #define TCHSCR_ACTION_NULL 0 #define TCHSCR_ACTION_CLICK 1 //觸摸屏單擊 #define TCHSCR_ACTION_DBCLICK 2 //觸摸屏雙擊 #define TCHSCR_ACTION_DOWN 3 //觸摸屏按下 #define TCHSCR_ACTION_UP 4 //觸摸屏抬起 #define TCHSCR_ACTION_MOVE 5 //觸摸屏移動 #define TCHSCR_IsPenNotDown()(rPDATG&ADS7843_PIN_PEN)(ADS7843_CTRL_START|ADS7843_GET_X|ADS7843_CTRL_12MODE |ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)//采樣x 軸電壓值,數(shù)據(jù)為12 位,參考電壓輸入模式為差分模式,允許省電模式 #defineADS7843_CMD_Y(ADS7843_CTRL_START|ADS7843_GET_Y|ADS7843_CTRL_12MODE |ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)int TchScr_Xmax=1840,TchScr_Xmin=176, TchScr_Ymax=195,TchScr_Ymin=1910;//觸摸屏返回電壓值范圍 #defineADS7843_CMD_X 3.校準(zhǔn)觸摸屏坐標(biāo),進(jìn)行坐標(biāo)轉(zhuǎn)換。 4.實(shí)現(xiàn)觸屏取點(diǎn)并顯示功能。 將觸摸動作及觸摸點(diǎn)坐標(biāo)在超級終端上顯示出來。5.實(shí)現(xiàn)兩點(diǎn)間自動劃線功能。6.實(shí)現(xiàn)觸摸屏動態(tài)劃線功能。 可以使用TchScr_GetScrXY()函數(shù)(第三個參數(shù)為0)來獲得液晶屏的x、y 方向的電壓 范圍,分別點(diǎn)觸摸屏有效面積的左上角和右下角,得到下列參數(shù): TchScr_Xmax=1840;TchScr_Xmin=176;TchScr_Ymax=195;TchScr_Ymin=1910;//此數(shù)值僅供參考,請以實(shí)際校對為準(zhǔn) 5.6 實(shí)驗(yàn)過程與分析 1.在定義觸屏響應(yīng)功能的函數(shù)中對點(diǎn)擊觸屏進(jìn)行響應(yīng)函數(shù)的修改,在其中添加修改點(diǎn)顏色的函數(shù),修改得到的觸摸點(diǎn)的顏色,并顯示在LCD上。 2.獲取第一個點(diǎn)坐標(biāo)并儲存,獲取第二個點(diǎn)坐標(biāo)并儲存,由編寫的劃線函數(shù)取得儲存的兩點(diǎn)間直線上所有點(diǎn)的坐標(biāo),并對其改變顏色,顯示在LCD上,即完成劃直線功能。 3.將劃線函數(shù)應(yīng)用到響應(yīng)觸屏移動消息的函數(shù)下,即可對連續(xù)獲得的觸摸坐標(biāo)進(jìn)行連續(xù)的畫短直線,連接成曲線,完成動態(tài)劃線功能。 5.7 實(shí)驗(yàn)結(jié)果總結(jié) 了解了觸摸屏響應(yīng)動作消息的函數(shù)的工作原理,通過修改實(shí)現(xiàn)了觸摸屏響應(yīng)不同動作進(jìn)行畫點(diǎn)、劃線、動態(tài)劃線的功能。驗(yàn)證觸摸屏的靈敏度的實(shí)驗(yàn)。 5.8 心得體會 通過這次實(shí)驗(yàn),我基本掌握了通過編程驅(qū)動觸摸屏以及觸摸屏響應(yīng)時間,實(shí)現(xiàn)了觸摸屏對不同動作消息的響應(yīng)。同時也知曉了在觸摸屏上的描點(diǎn)畫線的實(shí)現(xiàn),但是由于不知名的原因,描點(diǎn)畫線的誤差較大,位置偏差較大,同時觸摸屏有時會不靈敏,出現(xiàn)時好時壞的現(xiàn)象,但是由于我們的辛勤鉆研,最終克服了這個困難,實(shí)現(xiàn)了最后的觸摸屏的實(shí)現(xiàn)。 6.實(shí)驗(yàn)六 6.1 實(shí)驗(yàn)名稱 UCOS-Ⅱ在ARM微處理器上的裁剪 6.2 實(shí)驗(yàn)?zāi)康?/p> 1.了解UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu)。 2.掌握UCOS-Ⅱ裁剪的基本原理與嵌入式編程實(shí)現(xiàn)方法。3.學(xué)習(xí)如何根據(jù)具體情況對UCOS-Ⅱ操作系統(tǒng)進(jìn)行裁剪。 4.通過對UCOS-Ⅱ配置文件(OS_CFG.H)中相關(guān)的配置常量進(jìn)行設(shè)置,實(shí)現(xiàn)對UCOS-Ⅱ的裁剪。 6.3 實(shí)驗(yàn)環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。 軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 6.4 實(shí)驗(yàn)內(nèi)容及要求 對UCOS-Ⅱ內(nèi)核進(jìn)行裁剪并移植到ARM7微處理器上。 6.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟 1.按照要求,載入STARTUP目錄下文件,完成系統(tǒng)初始化、環(huán)境配置。2.載入U(xiǎn)COS-Ⅱ的全部源碼,與處理器架構(gòu)相關(guān)的文件位于arch目錄下。3.在os_cpu.h中編寫與處理器和編譯器相關(guān)的代碼。 4.編寫os_cpu_c.c等6個與操作系統(tǒng)相關(guān)的函數(shù)。5.編寫os_cpu.asm等4個與處理器相關(guān)的函數(shù)。 6.6 實(shí)驗(yàn)過程與分析 按照實(shí)驗(yàn)步驟進(jìn)行,得到了需要的系統(tǒng)。 6.7 實(shí)驗(yàn)結(jié)果總結(jié) 按照要求進(jìn)行了裁剪,得到了滿足需要又緊湊的應(yīng)用軟件系統(tǒng)。 6.8 心得體會 通過本次實(shí)驗(yàn),我了解了UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu),掌握UCOS-Ⅱ裁剪的基本原理與嵌入式編程實(shí)現(xiàn)方法,學(xué)會了如何根據(jù)具體情況對UCOS-Ⅱ操作系統(tǒng)進(jìn)行裁剪。 7.實(shí)驗(yàn)七 7.1 實(shí)驗(yàn)名稱 UCOS-Ⅱ在ARM微處理器上的移植和編譯 7.2 實(shí)驗(yàn)?zāi)康?/p> 1.了解UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu)。 2.掌握將UCOS-Ⅱ內(nèi)核移植到ARM7處理器上的基本方法。 7.3 實(shí)驗(yàn)環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。 軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 7.4 實(shí)驗(yàn)內(nèi)容及要求 1.將UCOS-Ⅱ內(nèi)核進(jìn)行移植到ARM7微處理器上。 2.編寫兩個簡單任務(wù),在超級終端上觀察兩個任務(wù)的切換。 7.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟 1.該實(shí)驗(yàn)的文件分為兩類,其一是 STARTUP 目錄下的系統(tǒng)初始化、配置等文件,其二是 UCOS-Ⅱ的全部源碼,arch 目錄下的 3 個文件是和處理器架構(gòu)相關(guān)的。 2.設(shè)置 os_cpu.h 中與處理器和編譯器相關(guān)的代碼。 3.用 C 語言編寫 6 個操作系統(tǒng)相關(guān)的函數(shù)(OS_CPU_C.C)。4.用匯編語言編寫 4 個與處理器相關(guān)的函數(shù)(OS_CPU.ASM)。5.編寫一個簡單的多任務(wù)程序來測試一下移植是否成功。6.編譯并下載移植后的 UCOS-Ⅱ。 7.6 實(shí)驗(yàn)過程與分析 1.按照實(shí)驗(yàn)步驟進(jìn)行,將μC/OS-II 內(nèi)核移植到了ARM7 微處理器上。2編寫了兩個簡單任務(wù),在超級終端上觀察兩個任務(wù)的切換。 7.7 實(shí)驗(yàn)結(jié)果總結(jié) 將μC/OS-II 內(nèi)核順利移植到了ARM7 微處理器上。 7.8 心得體會 通過本次實(shí)驗(yàn),使我更加了解了μC/OS-II 內(nèi)核的主要結(jié)構(gòu),掌握了ARM的C語言和匯編語言的編程方法,了解了ARM7處理器結(jié)構(gòu),掌握了將μC/OS-II 內(nèi)核移植到ARM 7 處理器上的基本原理與嵌入式編程實(shí)現(xiàn)方法。 8.實(shí)驗(yàn)八 8.1 實(shí)驗(yàn)名稱 綜合實(shí)驗(yàn) 8.2 實(shí)驗(yàn)?zāi)康?/p> 對前七次實(shí)驗(yàn)進(jìn)行總結(jié),應(yīng)用之前所學(xué)的知識,將前幾次實(shí)驗(yàn)內(nèi)容結(jié)合起來,完成鍵盤,LED,觸摸屏,直流電機(jī),步進(jìn)電機(jī)各種功能的組合。實(shí)現(xiàn)一個較為全面的功能結(jié)構(gòu)。 8.3 實(shí)驗(yàn)環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。 軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 8.4 實(shí)驗(yàn)內(nèi)容及要求 對前七次實(shí)驗(yàn)進(jìn)行總結(jié),應(yīng)用之前所學(xué)的知識,完成自擬的嵌入式系統(tǒng),要求綜合前期基礎(chǔ)實(shí)驗(yàn)的各種功能。 8.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟 1.添加并打開工程。2.進(jìn)行LCD設(shè)計(jì),在LCD顯示屏輸出文本。 3.進(jìn)行LED及鍵盤設(shè)計(jì),完成LED輸出顯示功能和鍵盤輸入功能。4.進(jìn)行電機(jī)控制設(shè)計(jì),完成鍵盤控制電機(jī)轉(zhuǎn)動功能。5.進(jìn)行中斷設(shè)計(jì),完成定時中斷功能。 6.進(jìn)行觸摸屏設(shè)計(jì),完成觸摸屏感應(yīng)和劃線功能。7.進(jìn)行裁剪和移植功能設(shè)計(jì)和完成。 8.6 實(shí)驗(yàn)過程與分析 1.完成LCD顯示功能,在LCD顯示屏上輸出文本:“Hello World!”。2.進(jìn)入界面觸屏控制選擇功能,實(shí)現(xiàn)觸屏選擇功能。 3.自定義四種種功能,第一為電機(jī)控制,從鍵盤讀取命令,并將功能編號顯示在LED上,LED顯示的是計(jì)數(shù)的數(shù)據(jù),同時旋轉(zhuǎn)按鈕完成電機(jī)轉(zhuǎn)速的控制選擇。 4.第三種功能為劃線,功能編號顯示在LED高四位上,同時LCD屏幕清屏,為劃線功能做準(zhǔn)備,可以實(shí)現(xiàn)劃線功能。 5.第四種功能為定時中斷,當(dāng)由鍵盤控制時,LED顯示數(shù)值清零,實(shí)現(xiàn)了中斷。6.實(shí)現(xiàn)裁剪與移植功能。 8.7 實(shí)驗(yàn)結(jié)果總結(jié) 完成了各種基本功能,并通過自擬的系統(tǒng)將各種功能整合起來,完成了一個小的嵌入式系統(tǒng),對前七次的功能有了更深入的了解。通過LED的計(jì)數(shù),當(dāng)在計(jì)數(shù)值在前30秒之內(nèi),由鍵盤控制LED的數(shù)值及顯示,按鍵盤上的某一個按鍵,實(shí)現(xiàn)對LED上的數(shù)值清零,后30秒由觸摸屏控制清零,并且在前30秒之內(nèi),旋轉(zhuǎn)按鈕,實(shí)現(xiàn)對直流電機(jī)的運(yùn)轉(zhuǎn),并且到步進(jìn)電機(jī)的轉(zhuǎn)換。 8.8 心得體會 通過這次實(shí)驗(yàn),我更加深刻地掌握了前幾次實(shí)驗(yàn)中的基本功能的實(shí)現(xiàn)方法,并且把幾種功能聯(lián)合在一起,實(shí)現(xiàn)一些功能,把LED 顯示屏,LCD觸摸屏,鍵盤,直流電機(jī),步進(jìn)電機(jī)等等設(shè)備聯(lián)合在一起,對該實(shí)驗(yàn)有一定的幫助與提高,而我和我的隊(duì)友也對嵌入式系統(tǒng)有了更深入的了解,在此期間,也學(xué)習(xí)了關(guān)于ARM處理器的開發(fā)與實(shí)踐,了解了關(guān)于手機(jī)的嵌入式設(shè)備的產(chǎn)生過程,我也深深的對此充滿了興趣,對未來的嵌入式課程設(shè)計(jì)奠定了深厚的基礎(chǔ),可是令我遺憾的是,我和隊(duì)員的水平所限,沒有完成中斷優(yōu)先級的控制。本來想完成更多的功能,可是最后由于時間緊迫,也有一些其他的事情來分神分心,所以就只能完成這些,但是在未來的幾周內(nèi),嵌入式課程設(shè)計(jì)也給了我們很大的空間去做未完成的事情。我相信我們會做的更加完美,功能更強(qiáng)大,用于未來的生活中去實(shí)踐。第五篇:嵌入式系統(tǒng)設(shè)計(jì)報(bào)告