2 系统简介
硬件设计
3.1 主要芯片介绍
(2)USB接口芯片CH375
3.2 USB模块硬件电路设计
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与单片机的连接框图。
本文的外部存储器接口工作在复用方式,通过配置 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机的情况下进行数据交换。增强了电路系统的实用性,扩大了其应用范围。