版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 問題描述</b></p><p><b> 系統基本背景</b></p><p> 這學期我們專業(yè)開設了《嵌入式系統課程設計》這門課程,是《嵌入式系統》課程的輔助教學課程。通過課程設計,使我們掌握嵌入式ARM的基本概念,結合實際的操作和設計,鞏固課堂教學內容,使我們掌握嵌入式系統的基本概念、原理和技術,將理論與實
2、際相結合,應用現有的仿真工具和嵌入式軟件開發(fā)平臺,規(guī)范、科學地完成一個小型LCD顯示電路的設計與實現,把理論課與實驗課所學內容做一綜合,并在此基礎上強化我們的實踐意識、提高其實際動手能力和創(chuàng)新能力。</p><p> 芯片及開發(fā)軟件的選擇</p><p> 本課程設計采用了LPC2106 ARM嵌入式處理器和LM016L液晶顯示模塊,在實現軟件商使用了Proteus Version 7
3、.5進行電路仿真和設計,程序設計上采用RealView MDK來設計實現。</p><p><b> 電路設計</b></p><p> Proteus創(chuàng)建工程過程</p><p><b> 圖1.1 創(chuàng)建工程</b></p><p> 打開Proteus Version 7.5點擊工具欄下
4、面一行第一個圖標創(chuàng)建一張電路板,保存在選定好的路徑上。</p><p><b> 元件的選擇</b></p><p> 點擊側欄項目元件列表上的P鍵,彈出元件庫,在搜索框中搜索LPC2106和LM016L并雙擊添加元件到左側元件列表。</p><p> 圖1.2 添加LPC2106ARM處理器</p><p>
5、圖1.3 添加LM016L液晶顯示模塊</p><p> 圖1.4 添加元件到項目元件列表</p><p> 在左側元件列表中元件添加到右側電路圖上,同樣操作添加另一個元件,調整好對應位置,效果如下圖。</p><p> 圖1.5 添加元件到電路圖上</p><p> 電路連線及對應參數配置</p><p>
6、 選擇左側工具欄中的終端模式,將地線和電源添加進電路圖,本設計采用了兩種電源設計,所以要添加兩個電源在后續(xù)的配置中配置電源屬性。</p><p> 圖1.6 添加電源和地線到電路圖上</p><p> 圖1.7配置電源電壓參數</p><p> 選中電源,右鍵菜單,會出現圖1.6效果,選中Edit properties會彈出圖1.7菜單在String欄中輸入+
7、3.3V,同理配置另外一個電源為+1.8v。</p><p> 圖1.8連接芯片電源線和地線</p><p> 圖1.9添加總線到電路圖</p><p> 按圖1.8連接好電源線和地線,調整好元件位置,點擊左側工具欄選中終端模式,點擊BUS,在兩個元器件之間添加總線,調整好位置。將芯片的13到35引腳連接到總線上,將液晶顯示器模塊的4到14引腳連接到總線上,連
8、接好后的效果圖如圖1.10所示。</p><p> 圖1.10通過總線連接處理器和液晶顯示器模塊</p><p> 圖1.11右鍵調處總線配置菜單</p><p> 圖1.12總線配置菜單</p><p> 圖1.13右鍵調處總線配置菜單</p><p> 按照圖1.11右鍵總線調出如圖1.12配置菜單后,在
9、String欄中輸入P0.[0..10]點擊確認,總線參數配置完畢接下來配置各個連線,選中13腳右鍵菜單,點擊place wire label得到圖1.14,按照引腳功能選擇P0.0,如圖配置好13到35引腳。</p><p><b> 圖1.14連線配置</b></p><p> 圖1.15總線連接配置完成后截圖</p><p> 配置
10、完LPC2106引腳后配置液晶模塊引腳,引腳7到14依次配置P0.0到P0.7,4引腳配置P0.8,5引腳配置P0.9,6引腳配置P0.10。到此總線及總線連接配置完畢。</p><p> 圖1.16右鍵調處晶振頻率配置菜單</p><p> 圖1.17仿真器晶振頻率配置菜單</p><p> 最后配置好仿真器晶振頻率,選中LPC2106的11引腳,右鍵選中E
11、dit properties得到圖1.17菜單,在Clock Frequency欄中輸入12MHZ。到此電路圖的連接及配置完成。</p><p><b> 電路效果圖</b></p><p> 圖1.18電路最終效果圖</p><p><b> 程序設計</b></p><p> RealV
12、iew MDK創(chuàng)建工程過程</p><p> 打開軟件,在工具欄上選擇project菜單項,選擇第一個新建一個工程,填好工程名字lcd_dw,然后點擊確認創(chuàng)建,選擇目標設備,以便添加啟動代碼,根據之前的設計,我們選擇NXP,在里面選擇LPC2106,然后在隨后彈出的對話框中選確認創(chuàng)建啟動代碼。創(chuàng)建成功后,在左側項目管理樹形圖中選擇一個文件夾右鍵,點manage components,在這個菜單中創(chuàng)建src 和i
13、nc文件夾,然后點擊target options按鈕,在output選項條中點擊select Folder for objects選擇之前在項目文件夾中創(chuàng)建好的目錄。同樣的設置listing選項卡中的select Folder for objects選項。這樣RealView MDK的工程就創(chuàng)建完成了。之后就可以導入開發(fā)好的頭文件和住函數文件進行開發(fā)了。</p><p><b> 圖1.19新建工程&
14、lt;/b></p><p> 打開RealView MDK軟件,在第四個菜單項project下創(chuàng)建新的工程。</p><p> 圖1.20保存工程位置</p><p> 圖1.21選擇仿真硬件</p><p> 在選擇完保存路徑后,在彈出的對話框點擊“確定”,之后進入硬件仿真選擇對話框,在對話框中選擇NXP下的LPC2106,
15、點擊“OK”,隨后兩個對話框默認選擇是。</p><p> 圖1.22添加源程序文件</p><p> 將寫好的源文件放在新建的工程文件夾下,在工程項目欄剛剛新建的工程下添加源文件。</p><p> 圖1.23選擇源文件</p><p> 首先添加main函數文件,之后再選擇功能函數config、LPC2106、LCD_PRO添加到
16、文件。</p><p> 圖1.24修改options屬性</p><p><b> 功能函數</b></p><p> // File: main.c</p><p> // 功能:向LCD輸出HelloWorld</p><p> #include "config.h&q
17、uot;</p><p> #define rs (1<<8)//10000000</p><p> #define rw (1<<9)//100000000</p><p> #define en (1<<10)//1000000000</p><p> #define busy (1<&l
18、t;7)//1000000</p><p> //uint8 txt[]={"HelloWorld"};</p><p> //名稱:ChkBusy()</p><p> // 功能:檢查總線是否忙</p><p> void ChkBusy()</p><p><b> {&l
19、t;/b></p><p> IODIR=0x700;</p><p><b> while(1)</b></p><p><b> {</b></p><p><b> IOCLR=rs;</b></p><p><b> I
20、OSET=rw;</b></p><p><b> IOSET=en;</b></p><p> if(!(IOPIN & busy))break;</p><p><b> IOCLR=en;</b></p><p><b> }</b></
21、p><p> IODIR=0x7ff;</p><p><b> }</b></p><p> //名稱:WrOp()</p><p> //功能:寫指令函數</p><p> void WrOp(uint8 dat)</p><p><b> {<
22、/b></p><p> ChkBusy();</p><p> IOCLR=rs;//全部清零</p><p><b> IOCLR=rw;</b></p><p> IOCLR=0xff;//先清零</p><p> IOSET=dat;//再送數</p>
23、;<p><b> IOSET=en;</b></p><p><b> IOCLR=en;</b></p><p><b> }</b></p><p> // 名稱:WrDat()</p><p> //功能:寫數據函數</p><
24、;p> void WrDat(uint8 dat)</p><p><b> {</b></p><p> ChkBusy();</p><p><b> IOSET=rs;</b></p><p><b> IOCLR=rw;</b></p>
25、<p> IOCLR=0xff;//先清零</p><p> IOSET=dat;//再送數</p><p><b> IOSET=en;</b></p><p><b> IOCLR=en;</b></p><p><b> }</b></p
26、><p> // 名稱:lcd_init()</p><p> // 功能:lcd初始化函數</p><p> void lcd_init(void)</p><p><b> {</b></p><p> WrOp(0x38);</p><p> WrOp(
27、0x06);//光標加1</p><p> WrOp(0x0c);//開顯示</p><p><b> }</b></p><p> // 名稱:DisText()</p><p> //功能:顯示文本函數</p><p> void DisText(uint8 addr,u
28、int8 *p)</p><p><b> {</b></p><p> WrOp(addr);</p><p> while(*p !='\0')WrDat(*(p++));</p><p><b> }</b></p><p><b>
29、 //功能:延時程序</b></p><p> void delay(uint16 n)</p><p><b> {</b></p><p><b> uint8 i;</b></p><p> for(;n>0;n--)</p><p> fo
30、r(i=5;i>0;i--);</p><p><b> }</b></p><p><b> 主函數</b></p><p> int main(void)</p><p><b> { </b></p><p> uint8 t
31、xt[]={"HelloWord"};</p><p> uint8 txt1[]={" "};</p><p> lcd_init();</p><p> IODIR=0x7ff;//設置為輸出</p><p> IOCLR=0x7ff;</p><p&
32、gt;<b> while(1){</b></p><p> DisText(0x80,txt);</p><p> delay(111);</p><p> DisText(0x80,txt1);</p><p> DisText(0x82,txt);</p><p> delay(
33、111);</p><p> DisText(0x82,txt1);</p><p> DisText(0x84,txt);</p><p> delay(111);</p><p> DisText(0x84,txt1);</p><p> DisText(0x86,txt);</p><
34、;p> delay(111);</p><p> DisText(0x86,txt1);</p><p><b> }</b></p><p><b> }</b></p><p><b> 編譯結果</b></p><p> 圖1.2
35、7編譯成功,無報錯無警告</p><p><b> 設計效果</b></p><p><b> 圖1.26</b></p><p> 設計效果實現了文字從右向左的循環(huán)移動,達到了預期的設計目的。</p><p><b> 參考文獻</b></p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于arm7的lcd顯示電路仿真-課程設計報告
- 基于arm7的lcd顯示電路仿真
- 電路仿真綜合課程設計報告
- 電路課程設計--通信電路仿真課程設計
- 差動放大電路仿真課程設計報告
- multisim 電路仿真 課程設計
- 電路課程設計---電路仿真設計實驗
- 基于arm7的uclinux移植嵌入式課程設計
- arm7電子時鐘嵌入式課程設計報告
- 收音機課程設計---音頻放大電路仿真設計
- 基于arm7的gui設計
- 基于arm的lcd顯示設計與實現
- 電路仿真課程設計--智力競賽搶答器
- 單相交流調壓電路仿真研究課程設計
- 課程設計--基于arm7的可調、準點報時萬年歷
- 課程設計---基于單片機的lcd顯示系統設計
- multisim對于負反饋放大發(fā)電路仿真課程設計
- 基于ARM7的移頻軌道電路測試系統設計.pdf
- lcd顯示設計單片機課程設計
- 基于arm7的交通燈設計
評論
0/150
提交評論