1.用LPC2000系列ARM芯片設(shè)計電子琴,用proteus軟件仿真。
2.按下不同的按鍵,揚聲器能夠發(fā)出不同的音調(diào)。
3.用PWM控制揚聲器可以實現(xiàn)音調(diào)的條件。
通過編程,利用按鍵去控制揚聲器的發(fā)聲。 通過小組討論分析,結(jié)合設(shè)計電路性能指標(biāo)、器件的性價比,本設(shè)計電路選擇方案二。 嵌入式的定義: 從技術(shù)的角度定義:以應(yīng)用為中心、以計算機技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計算機系統(tǒng)。 從系統(tǒng)的角度定義:嵌入式系統(tǒng)是設(shè)計完成復(fù)雜功能的硬件和軟件,并使其緊密耦合在一起的計算機系統(tǒng)。術(shù)語嵌入式反映了這些系統(tǒng)通常是更大系統(tǒng)中的一個完整的部分,稱為嵌入的系統(tǒng)。嵌入的系統(tǒng)中可以共存多個嵌入式系統(tǒng)。 3.1 213X系列最小系統(tǒng)板介紹: LPC2131/2132/2138 是基于一個支持實時仿真和嵌入式跟蹤的32/16ARM7TDMI-STM CPU 的微控制器,并帶有32kB、64kB、512 kB 的嵌入的高速Flash 存儲器。128 位寬度的存儲器接口和獨特的加速結(jié)構(gòu)使32 位代碼能夠在最大時鐘速率下運行。對代碼規(guī)模有嚴(yán)格控制的應(yīng)用可使用16 位Thumb模式將代碼規(guī)模降低超過30%,而性能的損失卻很小。 較小的封裝和極低的功耗使 LPC2131/2132/2138 可理想地用于小型系統(tǒng)中,如訪問控制和POS 機。寬范圍的串行通信接口和片內(nèi)8/16/32kB的SRAM使LPC2131/2132/2138 非常適用于通信網(wǎng)關(guān)、協(xié)議轉(zhuǎn)換器、軟modem、聲音辨別和低端成像,為它們提供巨大的緩沖區(qū)空間和強大的處理功能。多個32位定時器、1個或2 個10 位8 路ADC、10 位DAC、PWM 通道和47個GPIO 以及多達9個邊沿或電平觸發(fā)的外部中斷使它們特別適用于工業(yè)控制和醫(yī)療系統(tǒng)。 主要特性如下: (1)16/32位ARM7TDMI-S核,超小LQFP64封裝。 ?? (2)8/16/32kB的片內(nèi)靜態(tài)RAM和32/64/128/256/512kB的片內(nèi)Flash程序存儲器。128位寬度接口/加速器可實現(xiàn)高達60MHz工作頻率。 ?? (3)通過片內(nèi)boot裝載程序?qū)崿F(xiàn)在系統(tǒng)編程/在應(yīng)用編程(ISP/IAP)。單個Flash扇區(qū)或整片擦除時間 為400ms。256字節(jié)行編程時間為1ms。 ?? (4)EmbeddedICE RT和嵌入式跟蹤接口通過片內(nèi)RealMonitor軟件對代碼進行實時調(diào)試和高速跟蹤。 ?? (5)1個(LPC2131/32)或2個(LPC2134/36/38)8路10位的A/D轉(zhuǎn)換器,共提供16路模擬輸入,每個通道的轉(zhuǎn)換時間低至2.44us。 ?? (6)1個10位的D/A轉(zhuǎn)換器,可產(chǎn)生不同的模擬輸出。(LPC2132/34/36/38) ?? (7)2個32位定時器/外部事件計數(shù)器(帶4路捕獲和4路比較通道)、PWM單元(6路輸出)和看門狗。 ?? (8)低功耗實時時鐘具有獨立的電源和特定的32kHz時鐘輸入。 ?? (9)多個串行接口,包括2個16C550工業(yè)標(biāo)準(zhǔn)UART、2個高速I2C總線(400 kbit/s)、SPI和具有緩沖作用和數(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)集成振蕩器與外部晶體的操作頻率范圍為1~30 MHz,與外部振蕩器的操作頻率范圍高達 50MHz。 ?? (15)低功耗模式:空閑和掉電。 ?? (16)可通過個別使能/禁止外部功能和外圍時鐘分頻來優(yōu)化功耗。 ?? (17)通過外部中斷或BOD將處理器從掉電模式中喚醒。 ?? (18)單電源,具有上電復(fù)位(POR)和掉電檢測(BOD)電路。 ?? (19)CPU操作電壓范圍:3.0V~3.6 V (3.3 V± 10﹪),I/O口可承受5V的電壓。 3.2最小系統(tǒng)板結(jié)構(gòu) LPC2131/2132/2138 包含一個支持仿真的ARM7TDMI-S CPU、與片內(nèi)存儲器控制器接口的ARM7 局部總線、與中斷控制器接口的AMBA 高性能總線(AHB)和連接片內(nèi)外設(shè)功能的VLSI 外設(shè)總線(VPB,ARMAMBA 總線的兼容超集)。LPC2131/2132/2138 將ARM7TDMI-S 配置為小端(little-endian)字節(jié)順序。AHB 外設(shè)分配了2M 字節(jié)的地址范圍,它位于4G 字節(jié)ARM 存儲器空間的最頂端。每個AHB 外設(shè)都分配了16k 字節(jié)的地址空間。LPC2131/2132/2138 的外設(shè)功能(中斷控制器除外)都連接到VPB 總線。AHB到VPB 的橋?qū)PB 總線與AHB 總線相連。VPB 外設(shè)也分配了2M 字節(jié)的地址范圍,從3.5GB 地址點開始。每個VPB 外設(shè)在VPB 地址空間內(nèi)都分配了16k 字節(jié)地址空間。 片內(nèi)外設(shè)與器件管腳的連接由管腳連接模塊控制。該模塊必須由軟件進行控制以符合外設(shè)功能與管腳在特定應(yīng)用中的需求。 3.3 片內(nèi)FLASH程序儲存器LPC2131/2132/2138 分別含有32kB、64kB 和512kB 的FLASH 存儲器系統(tǒng)。該存儲器可用作代碼和數(shù)據(jù)的存儲。對FLASH 存儲器的編程可通過幾種方法來實現(xiàn):通過內(nèi)置的串行JTAG 接口,通過在系統(tǒng)編程(ISP)和UART0,或通過在應(yīng)用編程(IAP)。使用在應(yīng)用編程的應(yīng)用程序也可以在應(yīng)用程序運行時對FLAH 進行擦除和/或編程,這樣就為數(shù)據(jù)存儲和現(xiàn)場固件的升級都帶來了極大的靈活性。如果LPC2131/2132/2138 使用了片內(nèi)引導(dǎo)裝載程序(bootloader),32/64/512kB 的Flash 存儲器就可用來存放用戶代碼。 LPC2131/2132/2138 的Flash 存儲器至少可擦除/編程10,000 次,保存數(shù)據(jù)的時間長達10 年。 3.4 片內(nèi)靜態(tài)RAM片內(nèi)靜態(tài)RAM(SRAM)可用作代碼和/或數(shù)據(jù)的存儲,支持8 位、16 位和32 位的訪問。LPC2131/2132/2138 含有8/16/32kB 的靜態(tài)RAM。 LPC2131/2132/2138 SRAM 是一個字節(jié)尋址的存儲器。對存儲器進行字和半字訪問時將忽略地址對準(zhǔn),訪問被尋址的自然對準(zhǔn)值(因此,對存儲器進行字訪問時將忽略地址位0 和1,半字訪問時將忽略地址位0)。 因此,有效的讀寫操作要求半字數(shù)據(jù)訪問的地址線0 為0(地址以0、2、4、6、8、A、C 和E 結(jié)尾),字數(shù)據(jù)訪問的地址線0 和1 都為0(地址以0、4、8 和C 結(jié)尾)。該原則同樣用于片外和片內(nèi)存儲器。 SRAM 控制器包含一個回寫緩沖區(qū),它用于防止CPU 在連續(xù)的寫操作時停止運行。回寫緩沖區(qū)總是保存著軟件發(fā)送到SRAM 的最后一個字節(jié)。該數(shù)據(jù)只有在軟件請求下一次寫操作時才寫入SRAM(數(shù)據(jù)只有在軟件執(zhí)行另外一次寫操作時被寫入SRAM)。如果發(fā)生芯片復(fù)位,實際的SRAM 內(nèi)容將不會反映最近一次的寫請求(即:在一次“熱”芯片復(fù)位后,SRAM 不會反映最后一次寫入的內(nèi)容)。任何在復(fù)位后檢查SRAM 內(nèi)容的程序都必須注意這一點。通過對一個單元執(zhí)行兩次相同的寫操作可保證復(fù)位后數(shù)據(jù)的寫入;蛘,也可通過在進入空閑或掉電模式前執(zhí)行虛寫(dummy write)操作來保證最后的數(shù)據(jù)在復(fù)位后被真正寫入到SRAM。 3.5 存儲器映射概念和操作方式LPC2131/2132/2138 的基本的概念是:每個存儲器組在存儲器映射中都有一個“物理上的”位置。它是一個地址范圍,該范圍內(nèi)可寫入程序代碼。每一個存儲器空間的容量都永久固定在同一個位置,這樣就不需要將代碼設(shè)計成在不同地址范圍內(nèi)運行。 由于ARM7 處理器上的中斷向量位置(地址0x0000 0000~0x0000 001C,見表2),Boot Block 和SRAM空間的一小部分需要重新映射來實現(xiàn)在不同操作模式下對中斷的使用,見表1。中斷的重新映射通過存儲器映射控制特性來實現(xiàn),詳見系統(tǒng)控制模塊一節(jié)。 表1:LPC2131/2132/2138 存儲器映射模式 | | | | | 在任何復(fù)位后都會執(zhí)行 Boot 裝載程序。Boot Block 中斷向量映射到存儲器的底部以允許處理異常并在Boot 裝載過程中使用中斷。 | | | 當(dāng)在存儲器中識別了一個有效的用戶程序標(biāo)識并且Boot 裝載操作未被執(zhí)行時,由Boot 裝載程序啟動。中斷向量沒有重新映射,它位于Flash 存儲器的底部。 | | | 由用戶程序激活。中斷向量重新映射到靜態(tài) RAM 的底部。 | 3.6 系統(tǒng)控制模塊系統(tǒng)控制模塊功能匯總: 系統(tǒng)控制模塊包括幾個系統(tǒng)特性和控制寄存器,這些寄存器具有眾多與特定外設(shè)器件無關(guān)的功能。 1、晶體振蕩器 2、外部中斷輸入 3、存儲器映射控制 4、PLL 5、功率控制 6、復(fù)位 7、VPB 分頻器 8、喚醒定時器 每種類型的功能都有其自身的寄存器,不需要的位則定義為保留位。為了滿足將來擴展的需要,無關(guān)/的功能不共用相同的寄存器地址。 表2:系統(tǒng)控制模塊功能相關(guān)的管腳 | | | | | 晶振輸入--振蕩器和內(nèi)部時鐘發(fā)生器電路的輸入 | | | | | | 外部中斷輸入0--低有效的通用中斷輸入。該管腳可用于將處理器從空閑或掉電模式中喚醒。 P0.1和P0.16可用作EINT0 功能。 | | | 外部中斷輸入1--見上面的EINT0 描述。 P0.3 和P0.14可用作EINT1 功能。 復(fù)位后管腳 P0.14上立即出現(xiàn)的低電平被看作是一個啟動ISP 命令處理器的外部硬件請求 | | | 外部中斷輸入2--見上面的EINT0 描述。 P0.7 和P0.15 可用作EINT2 功能。 | | | 外部中斷輸入3--見上面的EINT0 描述。 P0.9,P0.20和P0.30可用作EINT3 功能。 | | | 外部復(fù)位輸入--該管腳上的低電平將芯片復(fù)位,使I/O 口和外設(shè)恢復(fù)其默認狀態(tài),并使處理器從地址0 開始執(zhí)行程序。 |
圖3.1 LPC2138管腳排列圖 3.7 行列式鍵盤工作原理 ARM嵌入式系統(tǒng)使用常用的行列式鍵盤電路,此電路的優(yōu)點是比較節(jié)省I/0口線,并且接口簡單。它的工作模式如下圖所示。它的行線與按鍵的一個引腳相連,列線與按鍵的另一個引腳相連。平時列線被置成低電平,沒有按鍵被按下時,行線保持高電平,而有按鍵被按下時,行線被拉成低電平。如圖3.2。
圖3.2 鍵盤掃描模式 3.8 鍵盤識別原理 對于常規(guī)的按鍵識別過程一般分為以下幾步: (1)用IF語句判斷按鍵是否按下。 (2)調(diào)用延時函數(shù)延時去除按鍵抖動。 (3)再用IF語句判斷是否真的按下。 (4)是真的按下,則執(zhí)行按鍵處理程序。 (5)用WHILE語句等待按鍵釋放。 為了考慮提高CPU的效率和充分利用CPU的資源等因素,可將第2步和第5步的延時和等待過程用其他方式代替。 3.9鍵盤電路介紹 為了實現(xiàn)電子琴的輸入,需要擴展鍵盤以作為控制輸入。系統(tǒng)采用LPC2138的P0.8--P0.13端口引腳作為2X4矩陣鍵盤的擴展接口,電路原理圖如圖3.3所示。  圖 3.3 鍵盤電路
在擴展鍵盤時需要解決兩個問題,一是鍵盤的抖動,二是多鍵同時按下。鍵盤的去抖動可通過軟件的適當(dāng)延時實現(xiàn),即在讀入端口P0.8~P0.11后,適當(dāng)延時一段時間,再讀入端口P0.12~P0.13,兩次比較后確定按鍵是否真按得下。多鍵同時按下也可通過軟件設(shè)計屏蔽多按下的鍵,對于同一列的鍵同時按下,可以只取鍵值最小的鍵,屏蔽值大的鍵,或反之。對于不同列的鍵,可以將P0.12~P0.13設(shè)置優(yōu)先級,如P0.12最高,P0.13最低,或反之。這樣,只取優(yōu)先級高的鍵,屏蔽優(yōu)先級低的鍵。 在ARM中,必須將管腳置為GPIO口后才能將管腳作為I/O口的功能來使用,由于在I/O的初始化中已經(jīng)將用到的管腳設(shè)置為GPIO口,固可以將管腳作為I/O口的功能來使用。具體方法如下: 先將P0.8-P0.11這4列端口設(shè)置為輸入管腳并且置為低電平,然后將P0.12-P0.13這2行端口設(shè)置為輸出管腳并且置為高電平,通過判斷是否有按鍵按下,如果有按鍵按下則可以首先確定2行端口的代碼,接著再將4列端口設(shè)置為輸出管腳并且置為高電平,將2行端口設(shè)置為輸入管腳并且置為低電平,以此來決定4列端口的代碼,然后再講4列端口代碼和2行端口代碼按照2行為高4位,4列為低4位的順序排成一個8位代碼。 3.10 蜂鳴器驅(qū)動電路分析 蜂鳴器驅(qū)動電路分析如下: 蜂鳴器:發(fā)聲元件,在其兩端施加直流電壓(有源蜂鳴器)或者方波(無源蜂鳴器)就可以發(fā)聲,其主要參數(shù)是外形尺寸、發(fā)聲方向、工作電壓、工作頻率、工作電流、驅(qū)動方式(直流/方波)等。這些都可以根據(jù)需要來選擇。 續(xù)流二極管:蜂鳴器本質(zhì)上是一個感性元件,其電流不能瞬變,因此必須有一個續(xù)流二極管提供續(xù)流。否則,在蜂鳴器兩端會產(chǎn)生幾十伏的尖峰電壓,可能損壞驅(qū)動三極管,并干擾整個電路系統(tǒng)的其它部分。 三極管驅(qū)動蜂鳴器電路:三極管Q1起開關(guān)作用,其基極的高電平使三極管飽和導(dǎo)通,使蜂鳴器發(fā)聲;而基極低電平則使三極管關(guān)閉,蜂鳴器停止發(fā)聲。如圖3.4。
圖3.4實際選用驅(qū)動放大電路
3.11 整體電路圖 如圖3.5所示。 圖3.5 硬件設(shè)計電路整體圖 1.程序流程圖如圖4.1所示。 圖4.1程序流程圖 2.軟件設(shè)計程序代碼如下: 將編譯好的十六制文件下載到proteus中的ARM芯片中。 第一次用軟件調(diào)試時,沒有任何現(xiàn)象,檢查了好久終于發(fā)現(xiàn)了原來是有一個電源沒有設(shè)置數(shù)值,也沒有標(biāo)明電源的極性,將其改為+3.3V時現(xiàn)象就出現(xiàn)了。 依次按下KEY1-KEY,依次發(fā)出不同音調(diào)的聲音,按下復(fù)位鍵系統(tǒng)回歸到初始狀態(tài)。 圖5.1 為硬件設(shè)計電路整體圖。
圖5.1 硬件設(shè)計電路整體圖 此次嵌入式設(shè)計的主要內(nèi)容:基于LPC2000系列的高級電子琴設(shè)計。它的主要功能是:實現(xiàn)不同頻率的音調(diào)輸出。因此要涉及到蜂鳴器的驅(qū)動電路,按鍵的掃描程序,最小系統(tǒng)電路的設(shè)計。 剛開始時拿到這個設(shè)計的題目是還有點不知所措,但通過上網(wǎng)查閱LPC213X系列最小系統(tǒng)板的相關(guān)資料,學(xué)會了用proteus進行ARM仿真,查找了一些以應(yīng)用嵌入式ARM的仿真實例,分析各個實例的工作原理,將各個實例的有用模塊綜合運用得到本實訓(xùn)基于嵌入式ARM的高級電子琴設(shè)計的原理圖,該圖主要包括三個模塊:2*4鍵盤、PWM脈沖輸出、功率放大電路。控制LPC213X系列最小系統(tǒng)板的P0.9口輸出PWM脈沖發(fā)出不同頻率使蜂鳴器發(fā)出不同的聲音,P0.9口外接功放電路連接蜂鳴器發(fā)聲。按鍵輸入功能有8個輸入故最終確定采用2*4的矩陣鍵盤作為電子密碼鎖的鍵盤控制。經(jīng)過網(wǎng)上收集資料與同學(xué)之間的討論,終于明白了鍵盤掃描的工作原理,和51單片機一樣都是利用動態(tài)掃描原理最終實現(xiàn)了鍵盤輸入的功能。依靠程序完成大部分的功能,所以程序的調(diào)試是重中之重,當(dāng)然前提是能夠編寫并會修改程序。 此次設(shè)計總的來說進行的還順利,這是小組成員團結(jié)付出的結(jié)果,當(dāng)然,在此期間指導(dǎo)老師也為我們提供了巨大的幫助,在此表示深深的感謝!在此期間也學(xué)到了許多,特別是對軟件的應(yīng)用,如proteus,ADS1.2,AXD,加強了理論與實踐的聯(lián)系。
完整的Word格式文檔51黑下載地址:
|