当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于ARM7的LCD设计与实现

本文介绍了利用S3C4510B的通用I/O口,采用串行方式控制液晶模块显示的方法。并给出了S3C4510B与LCD模块的硬件连接图和显示程序的部分原代码。

1 引言

随着科技的发展,ARM在社会各个方面的应用越来越广。ARM芯片广泛应用于无线产品、PDA、GPS、网络、消费电子产品、STB及智能卡。

S3C4510B是SAMSUNG公司生产的基于ARM7TDMI的RISC微处理器,主频可达50MHZ。液晶显示是嵌入式系统中反映系统输入/输出的人机交互界面,液晶显示以其微功耗、体积小、显示内容丰富、模块化,接口电路简单等诸多优点得到广泛应用。由于S3C4510B主要是针对以太网应用系统设计的,所以其内部没有LCD控制模块,这样在一些需要人机可视话交互过程中会产生诸多不便。我们在看重高性价比的情况下,利用S3C4510B的通用I/O口来控制液晶显示屏的软硬件方法,实现了与LCD控制模块一样的功能。

2 S3C4510B介绍

S3C4510B是三星公司的一款基于以太网应用系统的高性价比16/32位(精简指令集)RISC微控制器,内含一个由ARM公司设计的ARM7TDMI RISC处理器核,ARM7TDMI为低功耗、高性能的16/32核。支持大、小端模式,内部架构为大端模式,外部存储器可为大、小端模式;基于JTAG的调试方案;边界扫描接口。支持ROM/SRAM、FLASH、DRAM和外部I/O以8/16/32位的方式操作。最适合用于对价格及功耗敏感的应用场合。

除了ARM7TDMI核以外,S3C4510B比较重要的片内外围功能模块包括:

      ·2个带缓冲描述符(Buffer Descriptior)的HDLC通道;

      ·2个UART通道;

      ·2个GDMA通道;

      ·2个32位定时器;

      ·18个可编程的I/O口。

S3C4510B提供了18个可编程的通用I/O端口,用户可将每个端口配置为输入模式、输出模式或特殊功能模式,由片内的特殊功能寄存器IOPMOD和IOPCON控制。所传输的数据存放在寄存器IOPDATA中。

端口0~端口7的工作模式仅由IOPMOD寄存器控制。另外通过设置IOPCON寄存器,端口8~端口11可用作外部中断请求INTREQ0~INTREQ3的输入。端口12、端口13可用作外部DMA请求XDREQ0、XDREQ1的输入。端口14、端口15可作为外部DMA请求的应答信号XDACK0、XDACK1,端口16可作为定时器0的溢出TOUT0,端口17可作为定时器1的溢出TOUT1。

I/O口模式寄存器IOPMOD中的低18位用于配置I/O口P17~P0的工作方式。0为输入、1为输出。

3 OCMJ4X8C液晶模块

该款液晶采用台湾矽创电子公司生产的ST7920中文图形控制芯片。液晶屏幕为128X64点。其可以显示字母、数字符号、中文字型及图形,具有绘图及文字画面混合显示功能。内置2M中文字型ROM(CGROM)总共提供8192个中文字型(16X16点阵),16K半宽字型ROM(HCGROM)总共提供126个符号字型(16X8点阵),64X16位字型产生RAM(CGRAM),另外绘图显示画面提供个个64X256点的绘图区域(GDRAM),可以和文字画面混合显示。提供多功能指令:画面清除(Display clear)、光标归位(Return home)、显示打开/关闭(Display on/off)、光标显示/隐藏(Cursor on/off)、显示字符闪烁(Display character blink)、光标移位(Cursor shift)、显示移位(Display shift)、垂直画面旋转(Vertical line scroll)、反白显示(By_line_reverse display)、待命模式(Standby mode)。

OCMJ4X8C(128X64)引脚说明(表1)

       管脚号
        管脚符号
        说明
        1
        VSS
        逻辑电源地
 
       2
        VDD
        逻辑电源+5V
 
       3
        NC
        无连接
 
       4
        RS(CS)
        高:数据/低:指令(串行输入的片选)
 
       5
        R/W(SID)
        高:读/低:写(串行数据)
 
       6
        E(SCLK)
        使能端(串行时钟)
 
       7-14
        DB0-DB7
        并行数据端
 
       15
        PSB
        高:并行/低:串行
 
       16
        NC
        无连接
 
       17
        /RST
        系统复位 低电平有效
 
       18
        NC
        无连接
 
       19
  LEDA
  背光电源+5V
 
  20
  LEDK
  背光电源0V
 
硬件电路:

对于该款液晶模块,当PSB端接高电平时,模块将进入并行模式,并行模式又分为8-位和4-位传输模式。当PSB段接低电平时,模块将进入串行模式。该设计采用4线串行输入方式,所以将PSB端接地。并将背光电源端LEDA接电源+5V,LEDK接地。

然后,将S3C4510B的IO口分别与液晶模块相接如下:IO3—SCLK、IO5—CS、IO7—SID、IO9—/RST。这里要注意的是需要通过软件设置S3C4510B相应的特殊功能寄存器,将IO3,IO5,IO7,IO9设置为输出模式。硬件连接图如图1所示:

4 软件实现

软件开发环境为ARM SDT V2.5。程序分为两部分:首先为ARM初始化,使用汇编语言书写。然后才是用C语言书写的显示主程序。

下面分别将两部分结合原代码略加说明。
汇编语言部分:

IOPMOD              EQU              0x3FF5000            ;定义IO口模式寄存器

IOPDATA       EQU              0x3FF5008       ;定义IO口数据寄存器

       IMPORT  Main

       AREA    Init,CODE,READONLY

       ENTRY

       LDR   R0, =0x3FF0000                   

       LDR   R1, =0xE7FFFF80            ;配置SYSCFG,片内4Kcache,4KSRAM

       STR    R1, [R0]    

       LDR   SP, =0x3FE1000                ;SP指向4KSRAM的尾地址,堆栈向下生成

       LDR   R0,  =0X3FF5000

       LDR   R1,  =0X000002A8          ;设置IO3,IO5,IO7,IO9为输出模式

       STR   R1,[R0]

       BL      Main

       B        .

       END

      C语言部分:因篇幅有限,这里就不完整的给出源程序了,只列出几个子函数。

      #include "typDef.h"          

      #define  IOPMOD       (*(volatile unsigned *)0x03FF5000)

      #define  IOPDATA      (*(volatile unsigned *)0x03FF5008)

      /*定义子函数如下*/

      void clr_lcd_rst(void){ IOPDATA &=0XFDFF;}      清零复位引脚

      void set_lcd_rst(void){ IOPDATA |=0X0200;}     置位复位引脚

      void clr_lcd_sclk(void){IOPDATA &=0XFFF7;}    时钟端置低

      void set_lcd_sclk(void){IOPDATA |=0X0008;}     时钟端置高

      void clr_lcd_sid(void){IOPDATA &=0XFF7F;}     串行输出数据0

      void set_lcd_sid(void){IOPDATA |=0X0080;}      串行输出数据1

      void clr_lcd_cs(void){IOPDATA &=0XFFDF;}      清零使能端

      void set_lcd_cs(void){IOPDATA |=0X0020;}       置位使能端

      void print_led_p0(void){IOPDATA |=0X0001;}     使led0亮

      void print_led_p1(void){IOPDATA |=0X0002;}     使led1亮

      void off_led_p0(void){IOPDATA &=0XFFFE;}      使led0灭

      /*液晶初始化部分*/

      void Init_lcd(void)

      {set_lcd_rst();

       delay(4);

       write_lcd(0,0x01);        清除显示

       delay(4);

       write_lcd(0,0x0c);        显示状态设置

       delay(4);

       write_lcd(0,0x30);        设置为8位控制接口

       delay(4);

         }

程序严格按照串行的写操作时序(如图2所示)。此外应该注意当模块在接受指令前,微处理器必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。

5结束语

本文介绍的方法可以实现汉字字符,英文字母,图形显示。除了上述的静态显示方式外,还可以通过编程来实现字符的动态显示及一些特效(如字符的移动,渐变,闪烁)显示。达到了与内置LCD控制器相同的功能。

6创新点

本文的创新之处在于通过使用ARM微处理器的4个通用I/O口就达到了控制液晶模块显示的功能,节省了硬件资源,仅仅增加了少量软件代码,为人机交互界面中的LCD控制驱动与接口提供了一种实用方案。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭