0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于ARM7微处理器LPC2138实现OLED显示器的应用系统设计

电子设计 来源:世界产品与技术 作者:高俊尧 2020-12-07 10:22 次阅读

ARM处理器凭借其强大的功能、极低的功耗、较小的封装广泛应用于门禁、无线抄表、智能温控等小型系统中,在这些系统中人机交互界面一般由LCD完成,但是通常LCD在显示亮度、环境适应等方面存在缺陷,所以越来越多新技术新产品逐渐出现,OLED就是一种。本文介绍了一种基于OLED的显示器VGS12864E的结构原理,给出了其在ARM7微处理器LPC2138系统应用中的硬件连接和具体程序设计。

系统简述

LPC2138简介

LPC2138是基于支持实时仿真嵌入式跟踪的32/16 位ARM7TDMI-S CPU微控制器,带有512 KB高速Flash和32KB的SRAM。128位宽度的存储器接口和独特的加速结构使32 位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16 位Thumb模式将代码规模降低超过30%,而性能的损失却很小。

LPC2138内含2个32位定时器、2个10位8路ADC、10位DAC、PWM通道和47个GPIO以及多达9个边沿或电平触发的外部中断,它还具有多个串口,包括2个16C550工业标准UART、2个高速I 2 C接口(400kbit/s)、SPITM和SSP(具有缓冲功能,数据长度可变)。

较小的封装和极低的功耗使LPC2138可理想地用于工业控制和医疗等小型系统中,如访问控制和POS机、通信网关、协议转换器、软modem、声音辨别和低端成像等等。

VGS12864E结构原理

VGS12864E是128列×64行点阵单色OLED图形字符显示模块,由于其采用有机发光技术,无需背光源,所以与传统LCD相比在阳光照射下更能呈现清晰的图像和数据,另外它还具有高亮度、高对比度、宽视角、低驱动电压和高发光效率等优越的特性,较宽的温度范围(存储温度:?30℃“80℃,工作温度:?20℃”70℃)也能适应更恶劣的环境。

VGS12864E使用两片列驱动控制器,分别驱动1-64列和65-128列和一片有64行输出的行驱动器,内藏64×64显示数据RAM,RAM中每位数据对应屏上一个点的亮、暗,其结构如图1所示:它把一个半屏分成了按行的八页,因为每个字节的数据按低位(LSB)在上,高 位(MSB)在下的结构排列,所以在提取字库的时候,需要设置取字模的方式为:纵向取模,字节倒序。

系统硬件结构

VGS12864E共有20个引脚,功能定义如表2,它与LPC2138的连接如图2所示。尽管LPC2138的I/O口可以承受5V的输入电压,但是其输出的高电平电压不能驱动VGS12864,所以在它们中间需要加一个电平转换芯片。本系统电平转换采用IDT74FCT164245T芯片,它是基于高速CMOS技术的16位3.3V到5V的双向转换口(其中P1.28口负责数据方向的控制)。

程序设计

对VGS12864E的各种操作都是通过其指令系统完成的,通过控制脚的高低电平和数据口的数据来完成各种操作。显示时一般需要设置列地址和页地址,然后进行相应的读写操作(在写操作前都要读“忙”状态),最后根据需要进行相应的循环。在同页内,列地址在执行完读写操作后自动加一。

本文程序有如下宏定义:

#define uint32 unsigned int

#define uint16 unsigned short

#define uchar unsigned char

#define DIS_DIR 1读“忙”状子程序

在对VGS12864E的各种写操作执行之前都需要进行读“忙”操作,防止在“忙”状态下“写”操作的不正确执行,程序代码如下:

void read_status()

{ uchar busy;

uchar temp;

IOCLR0 = DIS_DI; //选择“指令”寄存器

IOSET0 = DIS_RW; //选择“读”操作

IOCLR1 = DIS_DIR; //控制电平转换方向

do

{ IOPIN0 = (IOPIN0 & 0xFFFFFF00) | 0xff;

IOSET0 = DIS_E;

busy=(IOPIN0 & 0xff);

IOCLR0 = DIS_E; //使能操作

temp=busy & 0x80;

}while(temp!=0); //忙则继续循环

IOSET1 = DIS_DIR; //控制电平转换方向

}

写指令子程序

// 对左半屏写指令操作,右半屏操作只需要改变片选电平(DIS_CS1、DIS_CS2)

void wr_command1()

{

IOCLR1 = DIS_CS1; //选择左半屏

IOSET0 = DIS_CS2;

read_status(); //读“忙”状态

IOSET0 = DIS_DI; //选择“写”操作

IOCLR0 = DIS_RW; //选择“指令”寄存器

IOPIN0 = (IOPIN0 & 0xFFFFFF00) | com; //送指令

IOSET0 = DIS_E; //使能操作

IOCLR0 = DIS_E;

}

写数据子程序

//对左半屏写数据操作,右半屏操作只需要改变片选电平(DIS_CS1、DIS_CS2)

void wr_data1()

{

IOCLR1 = DIS_CS1; //选择左半屏

IOSET0 = DIS_CS2;

read_status(); //读“忙”状态

IOSET0 = DIS_DI; //选择“写”操作

IOCLR0 = DIS_RW; //选择“数据”寄存器

IOPIN0 = (IOPIN0 & 0xFFFFFF00) | dat;//送数据

IOSET0 = DIS_E; //使能操作

IOCLR0 = DIS_E;

}

其他子程序

//OLED初始化子程序

void init_OLED()

{

com =0xc0; //第“0”行开始显示

wr_command1();

wr_command2();

com =0x3f; //打开OLED显示

wr_command1();

wr_command2();

}

//清屏程序

void clear_prog(void)

{

for(i=0;idat=0x00;

wr_data1();//写RAM都为0,这样完成清屏

}

}

}

//汉字显示标准函数:把屏幕分成0,1,2,3四行和64列进行汉字的显示,每个汉字占两//行,字库数据通过指针进行传递

void display(uchar hang,uchar lie,uchar *p_dis_data)

{

for(page=hang;page}

结束语

VGS12864E使用简单,而且相对LCD可以适应恶劣的环境,所以在工业控制、军事等方面都有广泛应用。由于需要通过字模软件设计界面,增强设计灵活性的同时也提高了设计复杂界面的难度,而且生成字库需要占用大量存储空间。而LPC2138是基于ARM7核心的微控制器,配合VGS12864E可以组成非常通用的小型显示控制系统

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OLED
    +关注

    关注

    119

    文章

    6179

    浏览量

    223804
  • 存储器
    +关注

    关注

    38

    文章

    7447

    浏览量

    163582
  • 微处理器
    +关注

    关注

    11

    文章

    2247

    浏览量

    82306
收藏 人收藏

    评论

    相关推荐

    LPC2138资料

    LPC2138单片机芯片资料
    发表于 04-26 10:48

    求助基于ARM7LPC2138)频谱分析

    本帖最后由 nicole1223 于 2015-11-18 18:05 编辑 求助基于ARM7(LPC2138)频谱分析,两个信号相加用到A/D转换(ADC7322/ADC7352)用数码管显示。用proteus和keil
    发表于 11-18 18:04

    arm7 LPC2138中断优先级

    ARM7为内核的LPC2138,只给定时0中断分配了一个VIC通道,但是定时0内部有6个中断F:MR0-3,MC0-3。这6个中断可以同时工作么?优先级怎么设置?
    发表于 09-06 17:02

    ARM7/9微处理器的仿真和分析解决方案

    ARM7/9微处理器的仿真和分析解决方案
    发表于 04-08 14:09

    ARM7 系列微处理器有哪些特点

    ARM7 系列微处理器是低功耗的 32 位 RISC 处理器,最适合用于对价位和功耗要求较低 的消费类应用。ARM7 系列有如下特点。具有嵌入式 ICE-RT(Internet
    发表于 09-25 11:20

    ARM7和LM016L液晶模块的字符串显示怎么实现

    TDMI的RISC微处理器,主频可达50MHz。液晶显示是嵌入式系统中反映系统输入/输出的人机交互界面,液晶显示以其微功耗、体积小、
    发表于 11-05 07:24

    ARM嵌入式基于LPC2138的LCD1602显示屏应用

    1、实现按下键盘数字,显示显示相应的数字2、实现基于ARM嵌入式数控电源的protues仿真3、基于L
    发表于 05-18 15:23

    如何实现基于ARM LPC2138的8*8 LED点阵显示功能呢

    基于ARM LPC2138的8*8的LED点阵显示,利用KEIL与protues实现该功能,该怎么做呢?
    发表于 07-06 10:04

    基于arm7环境监测数据采集系统的开发

    为了实现工业废水实时监测任务,本文给出了一种基于ARM7处理器LPC2138和嵌入式时实操作系统uc/OS-II,开发出一套工业废水指标多点
    发表于 07-30 11:23 30次下载

    LPC2138 RTC使用PCONP时的操作注意点

    LPC2138 RTC使用PCONP时的操作注意点
    发表于 07-23 15:29 24次下载

    基于ARM7的LCD显示电压示波系统的设计

    基于ARM7的LCD显示电压示波系统的设计 本设计以ARM7微处理器为核心,采用ARM7中的高
    发表于 09-03 11:22 951次阅读
    基于<b class='flag-5'>ARM7</b>的LCD<b class='flag-5'>显示</b>电压示波<b class='flag-5'>系统</b>的设计

    基于ARM7微处理器的中文液晶显示技术

    基于ARM7微处理器的中文液晶显示技术 液晶显示屏lcd作为一种功耗低、体积小、无辐射的显示器件,近几年被广泛应用于各式各样的嵌入式电子产
    发表于 01-14 11:14 874次阅读
    基于<b class='flag-5'>ARM7</b><b class='flag-5'>微处理器</b>的中文液晶<b class='flag-5'>显示</b>技术

    基于LPC2138的超市收银机系统设计策略

    基于LPC2138的超市收银机系统设计策略  ARM7 LPC2138介绍    Philips公司的32位的
    发表于 04-23 11:50 3797次阅读
    基于<b class='flag-5'>LPC2138</b>的超市收银机<b class='flag-5'>系统</b>设计策略

    基于ARM7微处理器的中文液晶显示技术

    基于ARM7微处理器的中文液晶显示技术
    发表于 02-08 02:13 12次下载

    基于ARM7嵌入式微处理器的重介工艺参数自动调节系统设计

    电子发烧友网站提供《基于ARM7嵌入式微处理器的重介工艺参数自动调节系统设计.pdf》资料免费下载
    发表于 10-25 11:07 0次下载
    基于<b class='flag-5'>ARM7</b>嵌入式<b class='flag-5'>微处理器</b>的重介工艺参数自动调节<b class='flag-5'>系统</b>设计