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

最新更新时间:2011-03-27来源: 互联网关键字: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_NUM8 //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应用自如。

参考文献
1 王鑫,周军,周德俭,等. 有机电致发光屏显示模块研究. 液晶与显示,2003;18(2)
2 黄锡珉. 有源矩阵OLED. 液晶与显示,2003;18(3)
3 周立功 等编著 深入浅出ARM7.北京:北京航空航天大学出版社,2005
4 SSD1303 Advance Information 132 x 64 Dot Matrix OLED/PLED Segment/Common Driver with Controller http://www.solomon-systech.com
关键字:OLED  SSD1303  ARM  陀螺仪 编辑:神话 引用地址:超薄显示屏OLED在陀螺经纬仪中的应用

上一篇:智能传感器及其在高速机车状态监测中的应用
下一篇:非接触式传感器在离散制造业的应用

推荐阅读最新更新时间:2023-10-12 23:07

快速学Arm(13)--看门狗(WatchDog)
WatchDog,中文为 看门狗 ,老外起的名字有时很有趣也很贴切,这些从事技术的老外对生活总是充满了乐观的态度,把工作当成乐趣而不要认为他是痛苦的事情,这样才能把工作做好.否则就不要去做,不仅仅是为了不至于让你变得忧郁,关键是天天做自己认为痛苦的事情,其最终的结果往往也是痛苦的. 一样,我总是喜欢用自己的理解而不是无聊的术语来讲解我所理解的东西.WatchDog是为了能够防止程序跑飞而使用的一种东西.如果你的程序没有跑飞,那么你的程序会定时的去喂的看门狗,如果你的程序跑飞了,那么就不会再去喂狗了,如果超过了喂狗的时间,那么狗就会自己生成一个信号来重新reset你的CPU,重新开始.这是一种在很重要的情况下防止系统跑飞的一种方
[单片机]
快速学<font color='red'>Arm</font>(13)--看门狗(WatchDog)
CES 2018五大显示技术横评,激光电视是未来?
显示技术一直都是 CES 展会的主角,2018年CES展会正在美国举行,这一届展会各种电视设备仍旧争奇斗艳。这几年传统液晶电视技术遭遇发展瓶颈,各种升级技术层出不穷,CES展会上的新词汇让很多消费者感到头大,诸如量子点、 OLED 以及 激光电视 等新设备纷纷亮相,到底这些设备的成熟度如何?未来发展的趋势又如何?今天我们就来快速解读。   生不逢时?IPS Nano Color技术 首先我们来看LG推出的的IPS Nano Color技术。IPS面板大家都很熟悉,这种广视角的面板如今已非常常见,已经逐渐不是LG宣传的重点。为什么这么说呢?因为广视角可以利用多种技术呈现,IPS面板,PLS面板以及VA面板都可以实现广视角,单纯从这个
[嵌入式]
DSP + ARM架构处理器为机器视觉带来强大运算和控制能力
一些工业、航空电子控制、视觉应用和高端测量测试,如生物影像处理等在实现控制、显示的同时,还需要较强的运算和信号处理能力。德州仪器 (TI) 近日宣布在现有DSP + ARM产品的成功基础上推出Integra系列处理器C6A816x,集成了高性能ARM Cortex-A8内核和高达1.5 GHz的单内核浮点与定点DSP性能。   “有很多算法在DSP平台可以实现,在ARM上也可以;但有些特定的算法,如数据滤波、图像处理等放在DSP上运行的效率会高很多,可能达到60%以上。因此DSP + ARM 的组合架构堪称理想架构”,TI数字信号处理系统业务拓展经理程自清说,因为 DSP 可专门用于处理密集型信号处理需求、复杂的数学函数
[单片机]
DSP + <font color='red'>ARM</font>架构处理器为机器视觉带来强大运算和控制能力
ARM汇编指令集之五——乘法指令与乘加指令
ARM微处理器支持的乘法指令与乘加指令共有6条,可分为运算结果为32位和运算结果为64位两类,与前面的数据处理指令不同,指令中的所有操作数、目的寄存器必须为通用寄存器,不能对操作数使用立即数或被移位的寄存器,同时,目的寄存器和操作数1必须是不同的寄存器。 乘法指令与乘加指令共有以下6条: 1、 MUL指令 MUL指令的格式为: MUL{条件}{S} 目的寄存器,操作数1,操作数2 MUL指令完成将操作数1与操作数2的乘法运算,并把结果放置到目的寄存器中,同时可以根据运算结果设置CPSR中相应的条件标志位。其中,操作数1和操作数2均为32位的有符号数或无符号数。 指令示例: MUL R0,R1,
[单片机]
基于ARM与有理数滤波的甲烷体积分数监测系统
随着能源需求的增加,石油、天然气以及煤炭开发不断扩大,生产环境中含有大量甲烷,甲烷属于易燃易爆气体,与空气混合能形成爆炸性混合物,遇热源和明火有燃烧爆炸的危险。这使得探测甲烷气体在工业生产中的浓度成为面临的一个重要问题。甲烷检测多以热导式分析法、气相色谱法和电化学方法为主,不仅检测周期长而且探测范围小。本系统选用红外气体传感器,具有响应速度快、抗干扰能力强的优点。选用ARM核心的S3C44BOX处理器,提高系统处理器性能。在信号调理中采用了锁相放大器,软件处理中采用了有理数滤波技术,处理器端可以通过串口与PC通信完成监控计算机的相关操作。由此构成的甲烷体积分数监测系统可以广泛应用在矿山矿井中,对于预防事故的发生具有重要意义。 1
[测试测量]
基于<font color='red'>ARM</font>与有理数滤波的甲烷体积分数监测系统
STM32和ARM的区别
这个问题大概2009年的时候很多人就在问,请看09年的时候大家给出的若干比喻: http://www.amobbs.com/forum.php?mod=viewthread&tid=3784815&highlight 以后的ARM初学者也都在问。 笔者也是菜鸟,到网上搜了搜。下面先看一张图: 这张图是我在意大利与法国合资的意法半导体公司(ST,世界几大半导体公司之一)的官网上看到的。这说明,STM32是意法半导体公司的产品。 意法半导体(ST)后面为什么要加上M32呢? 这是由于该产品使用的是ARM公司的32-bit ARM Cortex MCUs,我想这就是STM32名字的由来(个人观点哈,反正也是菜鸟笔记)。 想起
[单片机]
STM32和<font color='red'>ARM</font>的区别
基于ARM设计的嵌入式数控系统方案
传统的数控系统通常是在通用计算机或工控机的基础上加装运动控制卡,使用Windows操作系统,并安装昂贵的数控软件构成的。此类系统成本高,功耗大,不太适合中小规模的应用场合。而嵌入式产品具有系统结构精简、功耗低等特点,能弥补传统数控系统的不足。 目前,嵌入式数控系统主要有两种形式:完全依靠嵌人式处理器控制的系统以及嵌入式处理器和运动控制芯片相结合的系统。与前者相比,后者南于采用了专业的运动控制芯片,在实时性和精度等方面的表现更好,因而成为未来的一个发展方向。本文介绍了一种基于ARM控制器和FPGA运动控制芯片的主从式数控系统,希望能为AR M在嵌入式数控系统中的应用提供一些参考。 1 总体设计 本系统为
[单片机]
基于<font color='red'>ARM</font>设计的嵌入式数控系统方案
HI3531ARM调试printf的实现
void UART_Putc(char c) { if (c == 'n') *(unsigned int *)(UART0_ADDR + 0X00) = 'r'; delay_x(0x800); *(unsigned int *)(UART0_ADDR + 0X00) = c; } unsigned int val_i=0; void UART_Print(const char *str,...) { va_list unnamed_p; char *sval; unsigned int tmp=0; va_start( unnamed_p, str); whil
[单片机]
小广播
最新传感器文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved