LPC2132在嵌入式系统中的应用技术
发布时间:2008/5/27 0:00:00 访问次数:522
摘要 arm7微处理器lpc2132具有高的集成度和高性价比,很适合于嵌入式系统设计,本文设计了lpc2132与lcm的硬件接口,在软件接口中,提出用汇编语言文件存储汉字点阵信息,而在c语言文件中调用汉字点阵信息的混合编程方法,提高了资源利用效率,针对常见液晶显示刷新速度慢的现象,提出了提高液晶显示刷新速度的方法。提出了用时钟寄存器保存系统参数,从而使lpc2132具有数据掉电保存功能,并介绍了i2c总线应用技术等。
关键词 嵌入式系统;lpc2132; arm ; lcm显示
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个(lpc2132/2132)或2个(lpc2138)8路10位a/d转换器共包含16个模拟输入,1个10位d/a转换器,可提供不同的模拟输出(lpc2132/2138)。多个串行接口,包括2个16c550工业标准uart、2个高速i2c接口(400kbit/s)、spitm 和ssp。内部集成实时时钟等,资源比较丰富,使它们特别适用于工业控制和医疗等嵌入式系统。本文以lpc2132为例,介绍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口驱动能力较弱,lpc2132能可靠控制背光led的亮与灭,且对系统无干扰。
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,文件具体内容如下:
摘要 arm7微处理器lpc2132具有高的集成度和高性价比,很适合于嵌入式系统设计,本文设计了lpc2132与lcm的硬件接口,在软件接口中,提出用汇编语言文件存储汉字点阵信息,而在c语言文件中调用汉字点阵信息的混合编程方法,提高了资源利用效率,针对常见液晶显示刷新速度慢的现象,提出了提高液晶显示刷新速度的方法。提出了用时钟寄存器保存系统参数,从而使lpc2132具有数据掉电保存功能,并介绍了i2c总线应用技术等。
关键词 嵌入式系统;lpc2132; arm ; lcm显示
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个(lpc2132/2132)或2个(lpc2138)8路10位a/d转换器共包含16个模拟输入,1个10位d/a转换器,可提供不同的模拟输出(lpc2132/2138)。多个串行接口,包括2个16c550工业标准uart、2个高速i2c接口(400kbit/s)、spitm 和ssp。内部集成实时时钟等,资源比较丰富,使它们特别适用于工业控制和医疗等嵌入式系统。本文以lpc2132为例,介绍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口驱动能力较弱,lpc2132能可靠控制背光led的亮与灭,且对系统无干扰。
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,文件具体内容如下:
深圳服务热线:13692101218 13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)

深圳市碧威特网络技术有限公司
付款方式