爱普生压电喷头行业资讯
2024-05-03
由于OLED显示屏P09703的逻辑电平为2.4V - 3.5V,我们选用ST公司生产的uPSD3200系列单片机时,注意选用3.3V器件,我们以uPSD3234BV为例,给出OLED显示屏P09703与uPSD3234BV单片机的硬件连接图,同时给出利用uPSD3200单片机一个A/D口实现32个按键的原理图,可以大幅度减少对I/O口的占用。如图一所示,这里要说明的是由于OLED显示屏P09703内藏控制器为台湾SOLOMON生产的SSD1303,该控制器在接口控制电路内有两套时序电路,由时序适配电路设置以适配不同计算机操作时序的要求。时序适配电路的设置端为BS1和BS2。BS1和BS2的时序设置如表一所示。OLED显示屏P09703种没有串行接口,图二为P09703OLED显示屏8080时序图。
图一 P09703与uPSD3234BV硬件连接原理图
图二 P09703OLED显示屏8080时序图3 软件编程 在与计算机连接方面,SSD1303的接口,包括数据输入缓存器、数据输出锁存器,指令寄存器及译码器,忙状态触发器以及时序控制电路等,具有高性能的接口控制电路。计算机可以随时访问SSD1303而不需要判断其当前状态,与以前用的以T6963C控制器不同,SSD1303判断忙状态在操作上不是那么重要,因为SSD1303的接口部能够适时地接收计算机的访问。只是在计算机对显示存储器大量的数据传输时与控制部向驱动部传输显示数据相冲突,会在显示屏上出现“雪花”。但是由于这个间隙时间很短,加上人眼在视觉上的惰性而看不出“雪花”现象,有时判断忙标志再进行显示数据传输时,忙标志已经消失了。正是由于这些,计算机访问SSD1303的操作流程非常简单。 sbit DC_PIN_NUM = P0︿5; //P0.5 数据/指令控制位,低电平—指令操作,高电平—数据操作 sbit WR_PIN_NUM = P0︿6; //P0.6 写数据/指令控制位,高电平变低电平时写入 sbit RD_PIN_NUM = P0︿7; //P0.7 读数据/指令控制位,低电平有效 unsigned char ReadData(void) //从P09703OLED显示屏读取数据 { unsigned char temp; DC_PIN_NUM = 1; RD_PIN_NUM = 0; RD_PIN_NUM = 1; temp = P4; return temp; } unsigned char ReadCommand(void) //从P09703OLED显示屏读取寄存器状态 { unsigned char temp; DC_PIN_NUM = 1; RD_PIN_NUM = 0; RD_PIN_NUM = 1; temp = P4; return temp; } void WriteCommand(unsigned char Data) //写指令代码到P09703OLED显示屏 { DC_PIN_NUM = 0; P4=Data; WR_PIN_NUM = 0; WR_PIN_NUM = 1; } void WriteData(uint8 Data) //写参数及数据到P09703OLED显示屏 { DC_PIN_NUM = 1; P4=Data; WR_PIN_NUM = 0; WR_PIN_NUM = 1; } main(){ int j, i; InitOled(); //初始化P09703OLED显示屏,由于SSD1303软件控制指令非常丰富,该函数内容较长,在这里不做描述,详情见P09703应用笔记,这里要说明的是: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); //屏幕显示,全亮 } } 上述仅是对P09703基本的应用,有关更多的SSD1303软件控制指令,通过该文介绍的方法,并结合SSD1303的指令集[3],读者能够对P09703有更深了解。对于按键我们给出了电路原理图,由于编成相对简单,这里就不做描述了。



