N76E003 和 STM8S003F3 的特性对比
IC解密液晶驱动的选择
段式液晶由于其功耗低、价格便宜在很多家电中得到广泛的应用,其驱动其实并不复杂,大多是情况下都是用HT1621B进行驱动。
IC解密HT1621是128 点内存映象和多功能的LCD驱动器HT1621 的软件配置特性使它适用于多种LCD应用场合包括LCD模块和显示子系统用于连接主控制器和HT1621的管脚只有4 或5 条HT1621 还有一个节电命令用于降低系统功耗。
在使用HT1621进行驱动时,IC解密首先得根据订做的液晶进行原理设置。驱动液晶实际上就是往HT1621的内部寄存器中写数据,至于数据如何去驱动液晶我们可以不去理会它。下面也一款订做的液晶为例进行说明:
IC解密HT1621的驱动程序参考
- //1 led1 p05
- //2 data p06
- //3 wr p07
- //10 cs p15
- void ini_io_lcd(void)
- {
- P05_PushPull_Mode;
- P06_PushPull_Mode;
- P07_PushPull_Mode;
- P15_PushPull_Mode;
- clr_P05;
- clr_P06;
- clr_P07;
- clr_P15;
- }
- //锁定显示数据 3v=300khz=0.3M=3.3us 5v=500khz=0.5M=2us 16M=1/16us delay(40/16)=2.5us 参考ht1621b串行数据时钟
- void lock_data(void)
- {
- delay(40);
- LCD_WR_0 ;
- delay(40);
- LCD_WR_1 ;
- delay(40);
- }
- //移位送8位数据
- void shift(uchar i)
- {
- uchar j ;
- for(j = 0; j < 8; j++)
- {
- if(i & 0x80)LCD_DATA_1 ;
- else LCD_DATA_0 ;
- lock_data();
- i <<= 1 ;
- }
- }
- //移位送n位数据
- void shift2(uchar i, uchar n)
- {
- ucharj ;
- for(j = 0; j < n; j++)
- {
- if(i & 0x80)LCD_DATA_1 ;
- else LCD_DATA_0 ;
- lock_data();
- i <<= 1 ;
- }
- }
- //写命令
- void disp_cmd(uchar cmd)
- {
- //uchar i=0 ;
- LCD_CS_0 ;
- LCD_DATA_1 ;
- lock_data();
- LCD_DATA_0 ;
- lock_data();
- LCD_DATA_0 ;
- lock_data();
- shift(cmd);
- //空数据
- lock_data();
- LCD_CS_1 ;
- }
- void beep(uchar t)
- {
- if(BeeEn)
- {
- disp_cmd(0x09);
- beep_time = t ;
- }
- }
- void beep3(void)
- {
- beep_count = 3;
- beep_delay = 1;
- }
- uchar disp_hi(uchar temp)
- {
- return num[temp/10%10];
- }
- uchar disp_low(uchar temp)
- {
- return num[temp%10];
- }
- uchar disp_hi2(uchar temp)
- {
- return num2[temp/10%10];
- }