前面文章介绍的大部分是SMD或者COB封装的LCD驱动器。这里介绍另外一种封装(COG)的LCD驱动器。
COB和COG的区别:
COB----CHIP ON BOARD,就是把IC裸片(没有做硬封装)直接贴在PCB上,用机器把IC的信号和功能脚用铝线(金线)连接到对应的PCB脚位,再用树脂胶包裹住IC裸片的方式。这种工艺在一定程度上降低了芯片成本,但是需要工程师自己设计LCD驱动板,对工程师而言工作量较大;
COG----CHIP ON GLASS,就是把IC裸片直接贴在显示玻璃上,用ACF(各向异性导电膜)把IC的PIN与LCD的PIN进行连接的工艺方式。这种工艺能极大减少显示产品的厚度(一般都能做到2mm),对于应用工程师而言只需了解驱动IC的用法,不用处理显示屏内部走线。COG工艺是手机、平板显示产品的主要工艺方式。
一、ST7567基本特点
ST7567是矽创公司推出的一款经典12864点阵控制IC。是ST7565P/7565R的升级产品,目前有UC1701系列和AIP产品可替代。
*集控制器和驱动器功能一体;
*片载DDRAM,65x132=8580bits,DDRAM直接映射显示屏;
*可编程选择DUTY:1/33、1/49、1/55、1/65;
*支持8080、6800、SPI-4接口;
*内部升压VLCD,3X/4X/5X
*工作电压1.8-3.3V;
*封装形式:COG
二、ST7567典型应用方式
2.1 128x32点阵:1/33duty,VLCD=6.0-7.0V;
2.2 128x64点阵:1/65duty,VLCD=9.0V;
2.3 132x65点阵:1/65duty,VLCD=9.0V;
三、ST7567指令表
ST7567共有22条指令,通过对这些指令的设置,可实现显示屏的基本显示功能,这里对22条指令做说明供大家参考。
*1、Display On/off, 显示开关设置,必须设置显示开(D=1)。
*2、Set Start Line, 设置显示起始位置,表示从显示屏的哪一行开始显示,取值0-63。
*3、Set Page Add, 设置起始页,ST7567的显存是按页方式读写的,分8页(64行),取值0-7;Y3=1时,选取光标行。
*4、Set Column Add, 设置起始列,取值0-131。
*5、Read State, 读状态,串口模式下无用。
*6、Write Data, 写数据,把显示数据从MCU写入到指定位置,并在显示屏上显示。
*7、Read Data, 读数据,把指定位置的显示数据从DDRAM读回到MCU。(一般不用)
*8、SEG Direction, 设置列扫描方向(MX=0,从S0-S131显示;MX=1,从S131-S0显示)。
*9、Inverse Dispaly, 设置反向显示(即黑白反向)。
*10、All PIXEL ON, 设置所有SEG显示开(正常不用)。
*11、Bias Select, 设置偏压比,通常设BS=0。
*12-13、Read-Modify-Write End,自动读写,与End指令配对使用。(一般不用)
*14、Reset, ST7567内部寄存器复位(起始列、页地址、COM方向恢复默认值),跟硬件RSET不完全一样。
*15、Com Direction, 设置行扫描方向,或者简单理解为从上向下还是从下向上扫描。
*16、Power Contral, 设置内部升压方式。通常都设为开(ON)模式。
*17、Regulation Ratio,设置内部升压调节比例,一般设0x27(VLCD=9.0V时)。
*18、Set EV, 设置VLCD微调参数,这是2字节指令,第一个“0x81”是进入微调模式,第二个是设定微调参数(0-63)。通过调整EV值可以把VLCD调整到一个合适的值,以达到最佳显示效果。
*19、Powr Save, 省电模式,这是一个复合指令设置,按照"0xAE"->"0xA5"顺序写入指令,就可以进入省电模式;按照"0xA4"->"0xAF"顺序写入指令,就退出省电模式,自动恢复先前的显示状态。
*20、Set Booster, 设置倍压系数(4X/5X),参考下表。
*21、22 一个是等待(NOP),一个是测试(TEST),可忽略。
四、ST7567数据传送格式
ST7567支持8位并口通讯(8080/6800)及SPI-4串口通讯,按照指令表MCU直接发送指令或显示数据即可。
五、DDRAM与显示屏对应关系(见下图)
从图中可以看出DDRAM与显示屏的像素点是一一对应的,也就是说在ST7567允许的范围内,设置的DDRAM任意位置都能在显示屏对应位置显示出来。 注意ST7567显示数据是纵向排列,高位在前。
六、应用实例
广泛应用于点钞机、个人POS、考勤机、密码箱等
七、原理图参考
PROTEL99及以上版本。
八、实例程序(此处仅给出初始化部分代码,完整例程请直接下载附件)
//*********************************************************/ /****************** ST7567初始化***************************/ /**********************************************************/ void LCD_Init() { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABL E); //使能ABC端口时钟 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin _5|GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin _6|GPIO_Pin_7); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_ Pin_13; GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIOB GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化GPIOC GPIO_SetBits(GPIOC,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15); RST=0; delay_ms(100); RST=1; delay_ms(20); Writecom(0xe2); /*software reset*/ Writecom(0xae); /* display off */ Writecom(0xa2); /*1/9 bias*/ Writecom(0xa0); /*seg normal direction s0-132*/ Writecom(0xc8); /*com64-com1*/ Writecom(0x25); /*粗调对比度,0x20~0x27*/ Writecom(0x81); /*微调对比度*/ Writecom(0x3a); /*内部电位器调节对比度(ST7567的范围0~63)*/ Writecom(0x2f); /*voltage follower ON regulator ON booster ON*/ Writecom(0xa6); //Normal Display (not reverse dispplay) Writecom(0xa4); //Entire Display Disable Writecom(0x40); /*start line*/ Writecom(0xb0); /*Set Page Address = 0*/ Writecom(0x10); /*Set Column Address 4 higher bits = 0*/ Writecom(0x04); Writecom(0xaf); /*Display on*/ }
九、显示效果(图片与例程有所不同)
十、程序压缩包
G12864-LCD-STM32F103C8T6_8位并口(ST7567).rar