关于STM8L系列LCD驱动的备忘录以及移位解释
1.这是此屏幕的对应的表:
采用COM0-COM3对应此LCD真值表的COM1-COM4端口;
REG0-REG8对应5-13脚;换算真值表如下:
根据STM5L手册,COM0对应RAM_REGx的0-2;依次上图颜色;
编程需要注意事项:
1.由于是4个位选,所以, LCD_Init(LCD_Prescaler_64, LCD_Divider_30, LCD_Duty_1_4,
LCD_Bias_1_3, LCD_VoltageSource_External); //采用外部电源,其LCD_Duty_1_4必须选择1/4周期,如果是8个数码管,就是_1_8;在这里编程折腾了非常长的时间未注意看这个参数-切记;
2.驱动显示时,对应如下: 最高位ABCDEFGT3对应,A是最高位;看上图A-H;
//以第一个数码管为例DIG1-
//com1
LCD->RAM[LCD_RAMRegister_0]&=(~0x06);
LCD->RAM[LCD_RAMRegister_0] |=(((LCD_MODEL[num1]<<2)&0x04)+((LCD_MODEL[num1])&0x02)); //1A 1B
//com2
LCD->RAM[LCD_RAMRegister_3]&=(~0x60);
LCD->RAM[LCD_RAMRegister_3] |=(((LCD_MODEL[num1]<<1)&0x40)+((LCD_MODEL[num1]>>1)&0x20)); //1F 1G
//com3
LCD->RAM[LCD_RAMRegister_7]&=(~0x06);
LCD->RAM[LCD_RAMRegister_7] |=(((LCD_MODEL[num1]>>2)&0x04)+((LCD_MODEL[num1]>>1)&0x02)); //1E 1C
//com4
LCD->RAM[LCD_RAMRegister_10]&=(~0x60);
LCD->RAM[LCD_RAMRegister_10] |=(((LCD_MODEL[num1]<<3)&0x40)+((LCD_MODEL[num1]>>2)&0x20)); //1D 1-T3
解释:由于1A对应在S0[2]寄存器处,硬件电路接它REG0脚,所以,需要向RAM显示缓存区右移2位,确保与LCD资料的位置一致;
同理:1B在S0[1]寄存器处;而硬件接REG1脚,所以,不需要移动,保持原位即可;其他原理类似;
因没有任何人请教及说明,导致此驱动折腾了近12个小时,其中11个小时折腾在原来借用的程序是8个数码管,而我的是4个引起的!
记录技术点滴,努力成长,技术就是层纸,破了就简易了!