新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > LPC2132在嵌入式系統中的應用技術

        LPC2132在嵌入式系統中的應用技術

        作者: 時間:2012-05-21 來源:網絡 收藏

        1. 引言

        SoC在醫療器械中應用前景廣闊[1],LPC2131/2132/2138是基于一個支持實時仿真和嵌入式跟蹤的32/16位ARM7TDMI-STM CPU的微控制器,帶有32kB/64kB/512 kB的嵌入的高速Flash存儲器和8/16/32kB片內靜態RAM。多達47個5V的通用I/O口,1個(/2132)或2個(LPC2138)8路10位A/D轉換器共包含16個模擬輸入,1個10位D/A轉換器,可提供不同的模擬輸出(/2138)。多個串行接口,包括2個16C550工業標準UART、2個高速I2C接口(400kbit/s)、SPITM 和SSP。內部集成實時時鐘等,資源比較豐富,使它們特別適用于工業控制和醫療等。本文以為例,介紹LPC2132的設計經驗與設計技術。

        2. 顯示設計

        顯示設計是所有的重要組成部分之一。顯示器件包括LED、字符LCM、圖形LCM、VFD等,其中圖形LCM(如128x64、 192x64等點陣)可顯示ASCII字符、漢字和圖形,且性價比較高,在中的應用日趨廣泛,雖在MCS-51系列中的設計已非常成熟。但由于 ARM與MCS-51有許多不同之處,其設計方法當然也有差別,下面以LPC2132和192x64點陣LCM為例進行說明。

        2.1 與液晶顯示模塊(LCM)的硬件接口設計

        1) 電平匹配:LPC2132系列操作電壓范圍:3.0~3.6 V,選擇3V的LCM當然沒有問題,但市場上3V的LCM價格常常比5V貴,而LPC2132的I/O口可承受5V的最大電壓,所以可采用5V的LCM,但需在LCM與LPC2132相連的I/O口上接5V上拉電阻。

        2) I/O連接:LPC2132沒有外部總線,所有I/O口都需要進行配置,由內部寄存器決定是輸入還是輸出。其中P0口共有31個I/O口,P1口有16個 I/O口,而且I/O口的編號不連續(如P0.28與P1.25相鄰),由于編程時對I/O口采用位操作,所以具體連接時,可根據硬件電路板布線需求進行連接。為提高顯示刷新速度,需檢測LCM內部的忙標志,每次向LCM寫數據前,先讀取LCM的狀態,當狀態為非忙時才能寫入顯示數據,這樣,要注意動態設置與LCM數據線相連的LPC2132的I/O口方向,而且8個數據位要用IOSET和IOCLR逐一控制。

        3) 液晶背光控制:由于液晶的背光電流需要100多毫安,電壓一般在5V左右,而LPC2132的I/O口驅動能力較弱,采用圖1的驅動電路,LPC2132能可靠控制背光LED的亮與滅,且對系統無干擾。

        圖1液晶背光控制電路

        2.2 液晶顯示的軟件設計

        LPC2132可采用CodeWarrior進行軟件開發,由于用C語言進行編程,開發速度比較快。在編寫LCM程序時,先編寫硬件驅動程序,包括 LCM初始化函數,寫LCM數據函數,寫LCM命令函數,讀LCM數據函數,讀LCM命令函數,在這些函數的基礎上,編寫顯示16x16點陣漢字的函數,設置顯示位置函數等,鑒于篇幅限制,就不在此贅述,下面重點向讀者介紹如何顯示漢字的技巧和提高液晶顯示刷新速度。

        在顯示漢字信息時,需要先用工具軟件提取待顯示漢字的點陣,并將這些點陣信息保存在程序中,如果單純采用C語言,則只能定義數組變量,然后在顯示時調用所定義的數組變量。但采用這種方法有以下缺點。1)采用數組變量定義字符點陣,將浪費寶貴的RAM資源。2)當顯示內容豐富,需定義的大量的點陣數據時,造成RAM容量不足。如果采用匯編語言文件與C語言文件混合編程,將字符點陣信息以程序代碼的形式保存,不占用RAM,則可克服上述問題。下面以顯示漢字“上海”(16x16點陣)為例,介紹具體方法:

        1) 點陣信息的定義。

        建立一個以s為擴展名的匯編語言文件,文件內容具體如下。

        EXPORT shang16x16

        EXPORT hai16x16

        AREA TTTT,CODE,READONLY

        ENTRY;

        shang16x16

        DCB 0,0,0,0,0,0,255,32

        DCB 32,32,32,48,32,0,0,0

        DCB 6,16,16,16,16,16,31,16

        DCB 16,16,16,16,24,16,0,0

        hai16x16

        DCB 16,33,198,144,136,247,148,180

        DCB 212,148,148,246,132,128,0,0

        DCB 2,62,1,0,12,11,8,9

        DCB 10,40,56,15,8,0,0,0

        END

        上面的文件中定義了“上海”的漢字點陣信息,將此文件添加到項目文件中,編譯后點陣信息以程序代碼的方式存儲在FLASH中。

        2) 點陣信息的申明。

        建立一個以h為擴展名的頭文件,對匯編語言文件中定義的字符點陣信息進行申明,以便項目中其他程序可使用定義的點陣信息,例如lattice.h,文件具體內容如下:

        extern unsigned char shang16x16[];

        extern unsigned char hai16x16[];


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阿拉善盟| 峡江县| 轮台县| 边坝县| 徐州市| 随州市| 正镶白旗| 祁连县| 招远市| 佳木斯市| 察哈| 宣恩县| 永胜县| 昔阳县| 汝阳县| 神农架林区| 监利县| 合江县| 崇阳县| 湄潭县| 冕宁县| 昆明市| 仙桃市| 苍山县| 崇义县| 南安市| 巴林右旗| 望都县| 南溪县| 化州市| 大庆市| 昭通市| 明水县| 香格里拉县| 隆昌县| 鄂尔多斯市| 合江县| 高雄县| 新干县| 江永县| 延川县|