当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]超薄显示屏OLED在陀螺经纬仪中的应用

摘要:本文在简要介绍Solomon公司出品的CMOS OLED/PLED显示驱动SSD1303芯片的基础上,重点讨论台湾铼宝公司最新产品,内嵌SSD1303驱动芯片的超薄OLED显示屏P09703在陀螺经纬仪中的应用问题,给出了硬件电路图和软件流程图,为开发带有显示屏的便携设备提供参考。

关键词:OLED SSD1303 ARM 陀螺仪

陀螺经纬仪通过敏感地球自转的水平分量来测定仪器架设点真北方位的精密仪器,工作情况类似于电子经纬仪,所不同的是电子经纬仪只能测定两个目标的相对夹角,而陀螺经纬仪不仅可以测定目标之间的相对夹角,而且可以测定目标与地理北或真北方位之间的夹角。仪器工作通常在野外进行,环境条件较为恶劣。以前显示部分用液晶实现,带来的问题是除重量和体积外,低温靠加热实现,功耗大,野外作业对电池要求较高。另一个问题是采取任何措施,都无法解决太阳照射下,液晶显示不清楚这个问题,这是由于液晶显示自身特性决定的。

OLED 在显示信息方面有许多吸引人的特点。OLED 无LCD 的视角问题,可提供全视角显示。由于OLED 具有能自发光的特点,在亮度上也比LCD 高得多,也不像LCD 需要背光源,所以不仅提高了电源的有效功率,功耗只有LCD 的一半,而且器件厚度也比LCD 薄。OLED 响应时间比典型LCD 快一千倍。所以,它具有高效率、高对比度、宽视角、工作电压低等优点[1 -2]。台湾铼宝公司生产的内嵌SSD1303驱动芯片的超薄OLED显示屏P09703点阵数128X64,厚度仅2.05毫米,重量仅11.1克,工作温度-40℃到+85℃。在陀螺经纬仪上选用该产品,很好的解决了显示问题。下面重点讨论电路设计的实现问题。

1 SSD1303简介

目前,主要有Solomon 公司和美国的Clare公司等几家公司生产OLED 驱动IC。Solomon 投入市场的SSD1303,是一枚把行驱动、列驱动和控制器集成为一体的OLED 驱动器芯片。这个驱动器为132 × 64点阵OLED 图形显示而设计的,包括行驱动器、列驱动器、电流参考发生器、对比度控制、振荡器和几个MCU 接口模式。工作逻辑电压2.4V~3.5V,具有丰富的软件功能,支持4种颜色选择和每种颜色64级控制,它的软件对比度具有256级控制,内嵌的132 × 64 bit 的图形动态随机存储器( GDDRAM),提供了行remapping、列remapping、垂直滚动和部分显示功能。使该驱动器适合于不同像素尺寸和颜色的多种OLED 显示。

2 P09703与LPC2131的硬件连接

LPC2100/lLPC2105/LPC2106 系列微控制器是飞利浦半导体推出的基于16/32 位ARM7TDMI-S CPU,并带有128/256 k字节(kB)嵌入的高速Flash存储器的微控制器,128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16 位Thumb 模式将代码规模降低超过30%,而性能的损失却很小。由于LPC2100/lLPC2105/LPC2106系列微控制器采用非常小的64脚封装、极低的功耗、多个32位定时器、4路10位ADC PWM 输出以及多达9个外部中断,这使它们特别适用于工业控制、医疗系统、访问控制和电子收款机(POS)等应用领域。因为LPC2100系列微控制器没有外部总线控制器,所以它们外接扩展芯片不是很方便。不过,因为它们的速度很快,所以即使使用软件模拟总线外接扩展芯片也比普通的80c51快得多,而丰富的片内资源也不是普通51能够比拟的。
 
鉴于P09703与P09702具有相同的图形显示控制器SSD1303,而P09702硬件接口适合试验连接,下面以P09702与LPC2131为例进行说明,由于OLED显示屏P09702的逻辑电平为2.4V - 3.5V,我们选用PHILIPS公司生产的基于ARM7TDMI-S、单电源供电的微控制器LPC2131作为控制器,图一给出了包括电源、时钟、复位等一个嵌入式处理系统正常工作的最小电路外,电源电路提供模拟3.3V和数字3.3V,以提高系统工作稳定性。同时绘制了P09702与LPC2131的硬件连接方式。

超薄显示屏OLED在陀螺经纬仪中的应用

图 一

3 软件编程

在与计算机连接方面,SSD1303的接口,包括数据输入缓存器、数据输出锁存器,指令寄存器及译码器,忙状态触发器以及时序控制电路等,具有高性能的接口控制电路。计算机可以随时访问SSD1303而不需要判断其当前状态,与以前用的以T6963C控制器不同,SSD1303判断忙状态在操作上不是那么重要,因为SSD1303的接口部能够适时地接收计算机的访问。只是在计算机对显示存储器大量的数据传输时与控制部向驱动部传输显示数据相冲突,会在显示屏上出现“雪花”。但是由于这个间隙时间很短,加上人眼在视觉上的惰性而看不出“雪花”现象,有时判断忙标志再进行显示数据传输时,忙标志已经消失了。正是由于这些,计算机访问SSD1303的操作流程非常简单。但要注意的是SSD1303的接口控制电路内有几套时序电路以适配不同计算机操作时序的要求。时序适配电路的设置端为BS0,BS1,BS2。在P09703中选择BS1和BS2不同的连接,以确定选择Intel8080时序还是M6800时序。在P09702中由于没有BS1和BS2的选择,出厂时已经设置为Intel8080时序,所以下面的程序为Intel8080时序。

#define  AD0_PIN_NUM    8   //8位数据总线
#define  DC_PIN_NUM     5   //P0.5 数据/指令控制位,低电平—指令操作,高电平—数据操作
#define  WR_PIN_NUM     6   //P0.6 写数据/指令控制位,高电平变低电平时写入
#define  RD_PIN_NUM     7   //P0.7 读数据/指令控制位,低电平有效
#define  CS_PIN_NUM     16  //P0.16 使能位,低电平有效
void ExBusInit(void)    //初始化P09702OLED显示屏总线
{    uint32 temp;
// 设置引脚连接模块:DC_PIN_NUM、WR_PIN_NUM、RD_PIN_NUM、CS_PIN_NUM、 AD0_PIN_NUM为GPIO
    PINSEL0 &= ~(3 << (2 * DC_PIN_NUM)); 
    PINSEL0 &= ~(3 << (2 * WR_PIN_NUM));
    PINSEL0 &= ~(3 << (2 * RD_PIN_NUM));
       PINSEL0 &= ~(3 << (2 * (CS_PIN_NUM-16)));
    for (temp= AD0_PIN_NUM; temp < 16; temp++){
        PINSEL0 &= ~(3 << (2 *temp));
    }
// 设置引脚方向,所有相关引脚为输出
    temp = 0xff << AD0_PIN_NUM;
    IODIR = IODIR | temp;
IODIR = IODIR | (1 << WR_PIN_NUM) | (1 << RD_PIN_NUM) | (1 << DC_PIN_NUM) | (1 << CS_PIN_NUM);
// 设置引脚输出值,除CS_PIN_NUM输出为低电平外,其余均为高电平
       IOCLR = (1 << CS_PIN_NUM);
    IOSET = (1 << DC_PIN_NUM) | (1 << WR_PIN_NUM) | (1 << RD_PIN_NUM);
    temp = 0xff << AD0_PIN_NUM;
    IOSET = IOSET | temp;
}
 
uint8 ReadData(void)     //从P09702OLED显示屏读取数据
{   uint32 temp,temp1;
    temp1 = IODIR;
    IODIR = temp1 & (~(0xff << AD0_PIN_NUM));  // 设置AD0_PIN_NUM为输入
    IOCLR = 1 << RD_PIN_NUM;
    temp = IOPIN;
    IOSET = 1 << RD_PIN_NUM;
    IODIR = temp1 | (0xff << AD0_PIN_NUM);
    temp = temp >> AD0_PIN_NUM;
    return (uint8) temp;
}
 
void WriteCommand(uint8 Data)   //写指令代码到P09702OLED显示屏
{     IOCLR = 1 << DC_PIN_NUM;
    IOSET = Data << AD0_PIN_NUM;
    Data = ~Data;
    IOCLR = Data << AD0_PIN_NUM;
    IOCLR = 1 << WR_PIN_NUM;
    IOSET = 1 << WR_PIN_NUM;
    IOSET = 1 << DC_PIN_NUM;
}
 
void WriteData(uint8 Data)   //写参数及数据到P09702OLED显示屏
{     IOSET = Data << AD0_PIN_NUM;
    Data = ~Data;
    IOCLR = Data << AD0_PIN_NUM;
    IOCLR = 1 << WR_PIN_NUM;
    IOSET = 1 << WR_PIN_NUM;
}
main(){   int j, i;
ExBusInit();       //初始化P09702OLED显示屏总线
InitOled();        //初始化P09702OLED显示屏,由于SSD1303软件控制指令非常丰富,该函数内容较长,在这里不做描述,详情见P09702应用笔记,这里要说明的是:InitOled()中的comm_out2()函数用WriteCommand()函数替代
for(i=0;i<8;i++)
WriteCommand (0xB0+i);    //设置显示位置—行
WriteCommand (0x02);      //设置显示位置—列低地址
WriteCommand (0x10);      //设置显示位置—列高地址
for(j=0;j<128;j++)        
WriteData((0xFF);        //屏幕显示,全亮
}
}

上述仅是对P09702基本的应用,有关更多的SSD1303软件控制指令,通过该文介绍的方法,并结合SSD1303的指令集[4],读者能够对P09702应用自如。

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

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 信息技术
关闭
关闭