大家好,欢迎来到IT知识分享网。
一、HT1621
1) DATASHEET
2) 个人描述
HT1621是LCD屏幕的驱动电路芯片,负责点亮LCD屏上的灯,一个HT1621能驱动很多不同的LCD屏幕
3)容易混淆的概念:
Ps:LCD屏幕是屏幕,屏幕驱动芯片是芯片,HT1621 ≠ LCD屏幕
二、代码驱动
1.驱动代码(.c文件)
驱动代码GPIO控制理解为模拟I2C即可
#define CS_HIGH #define CS_LOW #define WR_HIGH #define WR_LOW #define DATA_HIGH #define DATA_LOW #define BIAS 0x50 #define SYS_EN 0X02 #define LCD_ON 0X06 #define RC256 0X30 #define WDT_DIS 0x0a #define TIME_DIS 0X08 static void ht1621write_data_LOW(uint8_t data,uint8_t n_bit) {
uint8_t current; for( current = 0 ; current < n_bit ; current++) {
WR_LOW; Delay(2); if( (data & 0x01) == 1) DATA_HIGH; else DATA_LOW; Delay(2); WR_HIGH; data >>= 1; Delay(2); } } static void ht1621write_data(uint8_t data,uint8_t n_bit) {
uint8_t current; for( current = 0 ; current < n_bit ; current++) {
WR_LOW; Delay(2); if(((data & 0x80) >> 7) == 1) DATA_HIGH; else DATA_LOW; Delay(2); WR_HIGH; data <<= 1; Delay(2); } } static void ht1621write_cmd(uint8_t cmd) {
CS_LOW; Delay(2); ht1621write_data(0x80,4); ht1621write_data(cmd,8); Delay(2); CS_HIGH; } void ht1621write_val(uint8_t addr , uint8_t data) {
addr <<= 2; CS_LOW; Delay(2); ht1621write_data(0xA0,3); ht1621write_data(addr,6); ht1621write_data_LOW(data,4); Delay(2); CS_HIGH; } void HT1621_INIT( void *pvParameters ) {
CS_HIGH; WR_HIGH; DATA_HIGH; ht1621write_cmd(BIAS); ht1621write_cmd(RC256); ht1621write_cmd(WDT_DIS); ht1621write_cmd(TIME_DIS); ht1621write_cmd(SYS_EN); ht1621write_cmd(LCD_ON); }
2.驱动LCD屏幕
//思路程序模板举例 int i; for(i = 0 ; i < SEG_MAX; i++) {
if( i > 0 ) ht1621write_val(i-1,0xF); ht1621write_val(i,0x0); delay(5s); } //加个延时,就能看清每个地址对应的字段了
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121805.html