版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、西安郵電大學(xué)嵌入式系統(tǒng)設(shè)計實驗報告專 業(yè)班 級學(xué) 號學(xué)生姓名指導(dǎo)教師學(xué) 期2013-2014學(xué)年第2學(xué)期完成日期2014-06-25基于lpc2131的模擬電梯控制實驗1、 實驗?zāi)康?、 熟悉arm & ads v1.2 的環(huán)境2、 理解lpc2131芯片引腳功能的選擇3、 理解gpio的使用設(shè)置、輸入驅(qū)動方法4、 理解spi全雙工同步串行通信原理,學(xué)習(xí)arm spi資源的驅(qū)動編程5、 學(xué)習(xí)在lpc2131上移植ucos系統(tǒng)2、 實驗內(nèi)容及要求1、 通過鍵盤輸入樓層,輸入之后數(shù)碼管從當(dāng)前位置向上或向下運行,流水燈表示運動方向。2、 流水燈在運行中顯示電梯正在運行的方向,并且在電梯到達時在該樓層
2、閃爍3次。3、 電梯運行到對應(yīng)樓層,數(shù)碼管顯示樓層號。4、 流水燈表示電梯運行樓層。5、 系統(tǒng)可同時滿足多用戶需求。達到該系統(tǒng)與現(xiàn)實電梯系統(tǒng)的一致性。3、 系統(tǒng)總體設(shè)計(總體方案及系統(tǒng)框圖)主要是創(chuàng)建了四個任務(wù),分別為電梯總?cè)蝿?wù)、按鍵檢測任務(wù)、電梯方向改變?nèi)蝿?wù)及電梯向上或向下運行任務(wù),然后啟動多任務(wù)環(huán)境,通過事件標志組發(fā)送和接收消息,進而實現(xiàn)電梯的一些基本的功能。蜂鳴器模塊數(shù)碼管顯示模塊spi串口模塊lpc2131led顯示與鍵盤模塊4、 系統(tǒng)詳細設(shè)計(模塊詳細設(shè)計及流程圖)5、 系統(tǒng)測試(數(shù)據(jù)測試結(jié)果及分析) 通過鍵盤按鍵輸入樓層數(shù),發(fā)送到開發(fā)板,數(shù)碼管和led燈初始化時會停留在電梯的第一層
3、。接受到數(shù)據(jù)后數(shù)碼管會自動變化到該樓層,并且led燈在數(shù)碼管變化的同時會顯示電梯當(dāng)前的運動狀態(tài),上或者下。在程序運行的任何期間都可以從鍵盤輸入電梯的樓層數(shù)。而且程序會自動判斷要滿足的用戶的優(yōu)先級。此次試驗達到的效果基本與現(xiàn)實中電梯的運行模式達到了一致。六、總結(jié)在整個課程設(shè)計中,我們組員一起認真地查找相關(guān)資料,然后又對書中的相關(guān)內(nèi)容仔細翻閱,通過虛心請教和不懈的努力,最終完成了整個設(shè)計,心中的喜悅實在無以言表。此刻,我非常感謝我們組長的鼓勵和幫助,感謝同學(xué)們諸多的幫助!本次設(shè)計不僅讓我收獲了許多,也讓我對以前所學(xué)習(xí)的arm知識有了進一步的深化與鞏固,最關(guān)鍵的是,它給了我一份自信。但我很明白,作品
4、中還存在著比較多的不足,這些都需要進一步的改善,我會不驕傲,不氣餒,用著自信與執(zhí)著盡最大努力將其完善。7、 附錄(代碼+注釋)#include config.h#include stdlib.h#definekey11 16 / p0.16連接key1#definekey21 17 / p0.17連接key2#definekey31 18 / p0.18連接key3#definekey41 19 / p0.19連接key4#definekey51 20 / p0.20連接key5#definekey61 21 / p0.21連接key6#define beep 1 7 / p0.7控制蜂鳴器b
5、eep#define hc595_cs (1 29) /p0.29口為74hc595的片選#definetaskstklengh64/define the task0 stack length 定義用戶任務(wù)0的堆棧長度 int semaphore7 = 0, 0, 0, 0, 0, 0, 0; /定義一個信號量數(shù)組int current_floor; int work_count = 0;int direction;int is_working;uint8 const disp_tab10 = 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x
6、80, 0x90; /數(shù)碼管顯示數(shù)字列表os_stktaskstk taskstklengh;/define the task0 stack 定義用戶任務(wù)0的堆棧os_stktask0stk taskstklengh;os_stktask1stk taskstklengh;os_stktask2stk taskstklengh;os_flag_grp *direct_chan; /事件標志組os_event *u_d;void elevator(void *pdata); /電梯總?cè)蝿?wù)聲明void is_button_press(void *pdata); /檢測按鍵任務(wù)聲明void dire
7、ction_change(void *pdata); /電梯方向改變?nèi)蝿?wù)聲明void up_down(void *pdata);/電梯向上、向下運行任務(wù)聲明void mspi_init(void) pinsel0 = (pinsel0 & 0xffff00ff) | 0x00005500;/ 設(shè)置管腳連接spi/pinsel0 = (pinsel0 & (0xff 8) | (0x15 8) ; spi_spccr = 0x52; / 設(shè)置spi時鐘分頻 spi_spcr = (0 3) |/ cpha = 0, 數(shù)據(jù)在sck 的第一個時鐘沿采樣 (1 4) |/ cpol = 1, sck
8、為低有效 (1 5) |/ mstr = 1, spi 處于主模式 (0 6) |/ lsbf = 0, spi 數(shù)據(jù)傳輸msb (位7)在先 (0 7);/ spie = 0, spi 中斷被禁止uint8 mspi_senddata(uint8 data) ioclr = hc595_cs; / 片選74hc595 spi_spdr = data; while( 0 = (spi_spsr & 0x80);/ 等待spif置位,即等待數(shù)據(jù)發(fā)送完畢 ioset = hc595_cs; return(spi_spdr);int main(void)int8u error;osinit ();u
9、_d = ossemcreate(0); /創(chuàng)建向上或向下的信號量direct_chan = osflagcreate(0, &error); /創(chuàng)建方向改變的事件標志組ostaskcreate (elevator,(void *)0, &taskstktaskstklengh - 1, 2); /創(chuàng)建電梯總?cè)蝿?wù)osstart (); /啟動多任務(wù)環(huán)境return 0;void elevator(void *pdata)pdata = pdata;targetinit (); /初始化目標板pinsel1 = 0x00000000; /選擇管腳連接到gpioio0dir = beep; /設(shè)置
10、蜂鳴器為輸出io0dir = (0x3f) 16; /選擇按鍵作為輸入pinsel2 &= 0x08; /選擇管腳連接到gpioio1dir = 0xff 18; /選擇流水燈作為輸出io1set = 0xff 18; /使流水燈處于高電平,燈熄滅mspi_init(); /spi初始化iodir = hc595_cs; /將spi作為輸出io0dir = (0x3f) 16; /將p0.16p0.21作為輸入ostaskcreate (is_button_press,(void *)0, &task0stktaskstklengh - 1, 4); /創(chuàng)建任務(wù)ostaskcreate (di
11、rection_change,(void *)0, &task1stktaskstklengh - 1, 5);ostaskcreate (up_down,(void *)0, &task2stktaskstklengh - 1, 3);while (1)ostimedly(10); /延時void is_button_press(void *pdata) /判斷按鍵任務(wù)int8u error;pdata = pdata;targetinit (); /目標板初始化化while (1)if (io0pin & key1) = 0) /按下1號鍵 if (semaphore1 != 1) / i
12、o1clr = 1 18; /使第一個流水燈點亮semaphore1 = 1; /將信號量置位work_count+; /電梯工作量增加else if (io0pin & key2) = 0) /按下2號鍵時 if (semaphore2 != 1) io1clr = 1 19; /使第二個流水燈點亮semaphore2 = 1;work_count+;else if (io0pin & key3) = 0) /按下3號鍵時 if (semaphore3 != 1) io1clr = 1 20; /使第三個流水燈點亮semaphore3 = 1;work_count+; else if (io
13、0pin & key4) = 0) /按下4號鍵時 if (semaphore4 != 1) io1clr = 1 21; /使第四個流水燈點亮semaphore4 = 1;work_count+;else if (io0pin & key5) = 0) /按下5號鍵時 if (semaphore5 != 1) io1clr = 1 22; /使第五個流水燈點亮 semaphore5 = 1;work_count+;else if (io0pin & key6) = 0) /按下6號鍵時 if (semaphore6 != 1) io1clr = 1 23;semaphore6 = 1;wor
14、k_count+;if (is_working = 1) /判斷電梯是否運行 ostimedly(os_ticks_per_sec * 0.2);/延時0.2秒else if (work_count != 0) osflagpost(direct_chan, 0x02, os_flag_set, &error); /事件標志組發(fā)送出去ostimedly(os_ticks_per_sec * 0.2);/延時0.2秒else direction = 0;void direction_change(void *pdata)uint8 error;int floor_temp;int up, dow
15、n;pdata = pdata;targetinit (); /目標板初始化direction = 0;while (1)osflagpend(direct_chan, 0x03, os_flag_wait_set_all + os_flag_consume, 0, &error); /接收事件標志組發(fā)送的消息if (direction = 1) for (floor_temp = current_floor + 1; floor_temp = 1 & !semaphorefloor_temp; floor_temp-);if (floor_temp = 0) /如果樓層已到達底層時,改變方向
16、向上運行 direction = 1;else if (direction = 0) is_working = 1;ostimedly(os_ticks_per_sec);is_working = 0;if (work_count = 1) for (floor_temp = 1; floor_temp floor_temp) direction = -1;else direction = 1;else if (current_floor = 1) direction = 1;else if (current_floor = 6) direction = -1;else for (floor_
17、temp = current_floor + 1; floor_temp = 1 & !semaphorefloor_temp; floor_temp-);down = floor_temp;if (up - current_floor current_floor - down) /首先響應(yīng)距離較近的樓層 direction = -1;else if (up - current_floor current_floor - 1) direction = -1;else if (6 - current_floor current_floor - 1) direction = 1;else dire
18、ction = 1;ossempost(u_d);void up_down(void *pdata)int count;uint8 error;pdata = pdata;targetinit (); /目標板初始化current_floor = 1;mspi_senddata(disp_tabcurrent_floor); io1clr = 1 18; /使第一個流水燈點亮osflagpost(direct_chan, 0x01, os_flag_set, &error);while (1) ossempend(u_d, 0, &error); /接收信號量ostimedly(os_tick
19、s_per_sec); /延時io1set = 1 (17 + current_floor); /將當(dāng)前樓層燈熄滅if (direction = 1) current_floor+;else if (direction = -1) current_floor-;io1clr = 1 (17 + current_floor); /使當(dāng)前樓層燈點亮mspi_senddata(disp_tabcurrent_floor); /向數(shù)碼管發(fā)送樓層消息if (semaphorecurrent_floor = 1) count = 3;while (count) /到達目標樓層后燈閃三下 ostimedly
20、(os_ticks_per_sec / 2);io1set = 1 (17 + current_floor); /ostimedly(os_ticks_per_sec / 2);io1clr |= 1 (17 + current_floor);count-;work_count-;semaphorecurrent_floor = 0; /信號量還原為0 osflagpost(direct_chan, 0x01, os_flag_set, &error); 基于lpc2131的模擬mp3播放器實驗1、 實驗?zāi)康?、 熟悉arm & ads v1.2 的環(huán)境7、 理解lpc2131芯片引腳功能的選
21、擇8、 理解gpio的使用設(shè)置、輸入驅(qū)動方法9、 理解pwm的通信原理,學(xué)習(xí)arm pwm資源的通信編程10、 學(xué)習(xí)在lpc2131上移植ucos系統(tǒng)2、 實驗內(nèi)容及要求 (1)通過鍵盤輸入,進入mp3播放器相應(yīng)的功能選項。 (2)mp3播放器具備的功能選項為:播放、暫停、停止、音量控制、音樂下載。 (3)mp3播放器響應(yīng)進入各功能狀態(tài)時,蜂鳴器蜂鳴。 (4)流水燈表示mp3播放器當(dāng)前所處的功能狀態(tài)。 (5)蜂鳴器蜂鳴聲音的大小代表音量的大小,音量控制狀態(tài)和音樂下載狀態(tài)可分別與其他3種狀態(tài)同事存在。 (6)數(shù)碼管數(shù)字大小表示執(zhí)行mp3各功能狀態(tài)的時間。3、 系統(tǒng)總體設(shè)計(總體方案及系統(tǒng)框圖)系
22、統(tǒng)主要創(chuàng)建了六個任務(wù),分別為mp3總?cè)蝿?wù)、判斷按鍵任務(wù)、播放音樂任務(wù)、控制音量任務(wù)、播放上一曲或下一曲任務(wù)及暫停或停止任務(wù),然后啟動多任務(wù)環(huán)境,通過創(chuàng)建的消息郵箱發(fā)送并接收消息,進而實現(xiàn)mp3播放的一些簡單功能。蜂鳴器模塊數(shù)碼管顯示模塊lpc2131pwm串口模塊led顯示與鍵盤模塊4、 系統(tǒng)詳細設(shè)計(模塊詳細設(shè)計及流程圖)5、 系統(tǒng)測試(數(shù)據(jù)測試結(jié)果及分析)通過鍵盤按鍵輸入相應(yīng)功能,發(fā)送到開發(fā)板,數(shù)碼管和led燈接收到數(shù)據(jù)后,數(shù)碼管會自動變化到該按鍵號,并且相應(yīng)的led燈在數(shù)碼管變化的同時會點亮。在程序運行的任何期間都可以從鍵盤輸入相應(yīng)功能,而且程序會自動判斷要滿足的用戶的優(yōu)先級。此次試驗實
23、現(xiàn)了簡單的基本mp3功能。6、 總結(jié)通過這次課程設(shè)計,使我對以前完全陌生的arm 軟件有了初步的接觸,我學(xué)到了如何在arm中實現(xiàn)基本的mp3播放功能。原先我對嵌入式系統(tǒng)并沒有很深刻的了解,在做完課程設(shè)計后,我對數(shù)碼管、蜂鳴器及流水燈的結(jié)構(gòu)和功能有了更進一步的了解,并且知道了一些相關(guān)函數(shù)的功能與運用,真正的把所學(xué)的東西運用到了實際中,更好的把課本知識與實際相結(jié)合,對我以后的學(xué)習(xí)有很大幫助。7、 附錄(代碼+注釋)#include config.h#include stdlib.h#include music.h#definekey11 16 / p0.16連接key1#definekey21 1
24、7 / p0.17連接key2#definekey31 18 / p0.18連接key3#definekey41 19 / p0.19連接key4#definekey51 20 / p0.20連接key5#definekey61 21 / p0.21連接key6#define beep 1 7 / p0.7控制蜂鳴器beep#define hc595_cs (1 0; dly-) for(i = 0; i 0x7ffff; i+);uint8 const disp_tab10 = 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x9
25、0; os_stktaskstk taskstklengh;/define the task0 stack 定義用戶任務(wù)0的堆棧os_stktask0stk taskstklengh;os_stktask1stk taskstklengh;os_stktask2stk taskstklengh;os_stktask3stk taskstklengh;os_stktask4stk taskstklengh;void mp3(void *pdata); /對mp3主任務(wù)聲明void is_button_press(void *pdata); /對判斷按鍵任務(wù)聲明void pwm(void *pda
26、ta); /對音樂播放任務(wù)聲明void voicepend(void *pdata); /對控制音量任務(wù)聲明void b_npend(void *pdata); void p_spend(void *pdata);uint32 voice_global;uint32 b_n_global;uint32 p_s_global;void mspi_init(void) /spi初始化 pinsel0 = (pinsel0 & 0xffff00ff) | 0x00005500;/ 設(shè)置管腳連接spipinsel0 = (pinsel0 & (0xff 8) | (0x15 8) ; spi_spcc
27、r = 0x52; / 設(shè)置spi時鐘分頻 spi_spcr = (0 3) |/ cpha = 0, 數(shù)據(jù)在sck 的第一個時鐘沿采樣 (1 4) |/ cpol = 1, sck 為低有效 (1 5) |/ mstr = 1, spi 處于主模式 (0 6) |/ lsbf = 0, spi 數(shù)據(jù)傳輸msb (位7)在先 (0 7);/ spie = 0, spi 中斷被禁止uint8 mspi_senddata(uint8 data) /向數(shù)碼管發(fā)送消息 ioclr = hc595_cs; / 片選74hc595 spi_spdr = data; while( 0 = (spi_spsr & 0x80);/ 等待spif置位,即等待數(shù)據(jù)發(fā)送完畢 ioset = hc595_cs; return(spi_spdr)
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 密紋唱片產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 螺旋傘齒輪研磨機項目營銷計劃書
- 圖書架產(chǎn)品供應(yīng)鏈分析
- 穿眉孔器械項目運營指導(dǎo)方案
- 員工遷移的商業(yè)管理服務(wù)行業(yè)經(jīng)營分析報告
- 藥品信息頁印刷品項目運營指導(dǎo)方案
- 建筑物熏蒸殺蟲處理行業(yè)營銷策略方案
- 家用視頻游戲機用電池充電器產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 禮品包裝用紙制蝴蝶結(jié)項目營銷計劃書
- 磨床金屬加工市場分析及投資價值研究報告
- 供應(yīng)鏈安全培訓(xùn)教材課件
- 地 理知識點-2024-2025學(xué)年七年級地理上學(xué)期(人教版2024)
- 人教版2024新版七年級上冊數(shù)學(xué)第三章 代數(shù)式學(xué)業(yè)質(zhì)量測試卷(含答案)
- 2024秋期國家開放大學(xué)《可編程控制器應(yīng)用實訓(xùn)》一平臺在線形考(形成任務(wù)3)試題及答案
- 電梯日管控、周排查、月調(diào)度制度及管控清單
- 人教PEP版三年級英語上冊單元詞匯課件 Unit 3
- 多重耐藥菌 課件
- 2024年《經(jīng)濟學(xué)基礎(chǔ)》復(fù)習(xí)考試復(fù)習(xí)題庫(含答案)
- 黑龍江省齊齊哈爾市2022-2023學(xué)年七年級上學(xué)期期末數(shù)學(xué)試題(含答案)6
- 高中 思想政治 必修1 第二課 只有社會主義才能救中國《課時2 社會主義制度在中國的確立》課件
- 2025年廣東省春季高考學(xué)業(yè)水平考試數(shù)學(xué)試卷試題(含答案解析)
評論
0/150
提交評論