基于C8051F020和USB的OLED控制系统设计
扫描二维码
随时随地手机看文章
1 引言
与传统的液晶显示屏相比,OLED显示模块具有高亮度、高对比度、宽视角、响应速度快、功耗低等特点。因此,随着电子产品高度集成化的发展,OLED显示模块在移动终端、工业控制、便携式电子产品等领域应用十分广泛。本文介绍了一种将USB技术应用于OLED显示控制系统中的设计,该系统以C8051F020为核心控制器件。由于USB具有安装方便、高速、灵活、低成本、易扩展、支持热插拔等优点,使得本系统可以轻松地实现在线数据更新,并通过外扩的Flash实现系统的脱机显示。
2 系统简介
系统的工作和组成原理如图1所示。
如图1所示,整个系统由单片机、OLED显示模块、USB模块、外扩数据存储器模块组成。核心控制芯片是Silicon公司的C8051F020,这是一款功能强大的单片机;用来在线更新显示数据的USB模块,它以CH375V作为接口控制芯片,支持USB主机和USB设备两种方式;AMD公司的闪存AM29LV081B作为单片机外部扩展数据存储器。96×64像素的全彩色OLED显示屏,它的驱动IC采用Solomon公司的SSD1332。
500)this.style.width=500;" border="0" />
硬件设计
3.1 主要芯片介绍
(1)核心控制芯片C8051F020 单片机C8051F020是完全集成的混合信号系统级SCM芯片,具有64个数字I/O引脚,具有片内VDD监视器、看门狗定时器和时钟振荡器,是真正能独立工作的片上系统,所有模拟和数字外设均可由用户固件配置为使能/禁止和配置。Flash存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051固件。
(2)USB接口芯片CH375
CH375是一个USB总线的通用接口芯片,支持USB-HOST主机和USB-DEVICE/SLAVE设备两种方式。在本地端,CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机等控制器的系统总线上。在USB主机方式下,CH375还提供了串行通讯方式,通过串行输入、串行输出和中断输出与单片机等相连接。
CH375的USB主机方式支持常用的USB全速设备,外部单片机可以通过CH375按照相应的USB协议与USB设备通讯。CH375还内置了处理Mass-Storage海量存储设备的专用通讯协议的固件,外部单片机可以直接以扇区为基本单位读写常用的USB存储设备。
3.2 USB模块硬件电路设计
本文在C8051F020的使用中需要配置交叉开关,为了方便控制OLED的显示和系统的控制操作,除了CH375必需的一个中断外,还配置了两个定时器中断T1和T2以及一个外部中断。将USB连接产生的中断设置分配到INT0#,再多一个外部中断INT1#。还考虑到CH375支持串行通信,所以将其和单片机的串口通信也设计在内,使用TX0和RX0。但是在串行方式下工作,数据传输速度慢,所以本文的研究采取并行接口。根据单片机优先权交叉开关译码表,按照优先级别,TX0使用P0.0,RX0使用P0.1,INT0#使用P0.2,T1使用P0.3,INT1#使用P0.4,由于P0.5~0.7由外部数据存储器接口驱动,所以T2使用P1.0。图2为USB模块的连接电路图。
500)this.style.width=500;" border="0" />
CH375芯片的RD#和WR#分别连接到单片机的读选通输出引脚RD#(P0.6)和写选通输出引脚WR#(P0.7)。CS#由地址译码电路驱动,用于当单片机具有多个外围器件时进行设备选择。INT#输出的中断请求是低电平有效,连接到单片机的中断输入引脚P0.2,单片机使用中断方式获知中断请求。当WR#为高电平并且CS#和RD#及A0都为低电平时,CH375中的数据通过D7~D0输出;当RD#为高电平并且CS#和WR#及A0都为低电平时,D7~D0上的数据被写入CH375芯片中;当RD#为高电平并且CS#和WR#都为低电平而A0为高电平时,D7~D0上的数据被作为命令码写入CH375芯片中。
3.3 外部数据存储模块
对于全彩的 96×64像素的 OLED屏,每个像素由两个字节组成,显示一幅图片需要的内存空间为 96×64×2=12.288KB,而本文采用的单片机内部只有 64KB的 Flash存储器,最多只能显示 5幅图片,如果要显示图像是不可能的,所以必须在外部扩展数据存储器,使之能够显示动态图像。图 3为外扩的 Flash与单片机的连接框图。
500)this.style.width=500;" border="0" />
本文的外部存储器接口工作在复用方式,通过配置 PRTSEL(EMIOCF.5)的状态决定 EMIF工作在低端口或是高端口错误!未找到引用源。。本文对外部存储器Flash的读写采用高端口(P4~P7)。地址总线A19~16使用P4.4~P4.1脚,地址总线A15~8使用 P6口,地址总线低 8位A7~0与数据总线复用 P7口,ALE使用P4.5,RD#使用P4.6,WR#使用 P4.7。
在复用方式下工作时,要用一个外部锁存器保持 RAM地址的低 8位。本文的外部锁存器选74LS373。它由ALE(地址锁存使能)信号控制,ALE信号由单片机外部存储器接口逻辑驱动。在复用方式工作时,可以根据 ALE信号的状态分两个阶段,在第一个阶段,ALE为高电平,锁存器选通,锁存器的 Q输出与 D输入状态相同,P7输出为地址总线的低 8位。ALE由高变低标志第二阶段开始,锁存器的输出保持不变,即与锁存器的输入无关。在第二阶段稍后,当RD#(P4.6)或 WR#(P4.7)有效时,数据总线控制 P7端口的状态。
3.4 OLED显示模块
此模块的驱动电路核心部分应用 Solomon公司的SSD1332芯片,在驱动电路获得控制信号和显示数据后,由芯片 SSD1332产生 OLED所需的行驱动和列驱动的信号,驱动OLED,并把显示数据传送到 OLED显示。
4 读取显示数据程序设计
本文研究的该部分的程序主要是显示数据的采集,它是通过中断响应方式进行的。CH375的中断信号INT#连接单片机的INT0,设置成外部中断,配置为下降沿触发输入,由IT0(TCON.0)和IT1(TCON.2)的设置决定,IE0(TCON.1)为外部中断INT0的中断标志,产生中断后即CPU在转向ISR时自动清除响应的中断标志。该中断的初始化程序如下: void INT_Init(void) {
EA = 1; //中断总允许
EX0 = 1; //INT0中断允许
IT0 = 1; //INT0设置为下降沿触发
PX0 = 1; //INT0(/UINT)设置为高优先级,可中断其他正在执行的中断程序 }
程序中将 CH375中断信号设为最高优先级,一旦有 U盘插入,立即产生中断,之后进入中断程序入口,执行中断程序,进行文件数据的读取操作。软件实现如错误!未找到引用源。所示,首先调用CH375DiskConnect()查询是否真的有 U盘插入,否则的话立即返回主程序,继续执行原来的程序,如果有 U盘插入,接着调用CH375Init(),进行初始化复位;然后判断 U盘是否准备好,等待其准备好后,即可调用函数CH375FileOpen(),根据参数(一般是文件名和完整的路径名)打开指定的文件。文件如果不能正常打开,可能文件并不存在,立即返回主程序,结束本次读取,也可以通过调用CH375FileEnumer()查询文件是否存在。文件正常打开后,调用 CH375ByteLocate()函数执行指针定位,以字节为单位移动当前文件指针,进入字节模式。然后调用CH375ByteRead(),以字节为基本单位从当前文件读取数据。全部读完后,调用CH375FileClose()关闭文件,并返回主程序,最后完成数据的读取。
5结论
本文所设计的系统能够实现文字、图片和图像的动静态显示。并将USB接口设计在内,实现嵌入式USB主机,使系统可以作为USB主机与U盘通信,通过读U盘来完成显示数据的更新,使嵌入式系统和移动存储设备能够在脱离PC机的情况下进行数据交换。增强了电路系统的实用性,扩大了其应用范围。