HT1621段码液晶屏

2021/4/6
第一次用HT1621控制的段码液晶屏,东西还没到,先在淘宝买了个小显示屏调试。

或置位,与清零
(x|=(1<<y)) 置位x的第y位
(x&=~(1<<y)) 清零x的第y位

命令格式100开始,8位命令,1位补位
例如:打开LCD偏置发生器 LCD ON 命令
100 00000011 x

写数据格式101开始,6位地址,4位数据
101 A5A4A3A2A1A0 D0D1D2D3
地址就是SEG的序号。


16个引脚,4个COM,12个SEG。
1-16 从左至右

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
com1 com2 com3 com4 seg11 seg10 seg9 seg8 seg7 seg6 seg5 seg4 seg3 seg2 seg1 seg0

12个SEG脚每两个控制一个数码管。

以第六个数码管为例


显示数字0,ABCDEF置1,GP置0。

数据位是
0b01111101=0x7D
D0D1D2D3D0D1D2D3
每个是四个二进制码,这里使用8个二进制码,地址自动向下移一位。

上面说写数据中的6位地址就是SEG的序号。是真的地址,10进制的。

控制SEG0 地址码就是0(十进制)

A5 A4 A3 A2 A1 A0
0 0 0 0 0 0

控制SEG2 地址码就是2(十进制),二进制0b10

A5 A4 A3 A2 A1 A0
0 0 0 0 1 0

控制代码:
由于HT1621需要纳秒级延时,先用定时器写一个纳秒级的延时函数。设置定时器2为1ns触发一次。

void HAL_Delay_us(uint16_t us)
{uint16_t differ=0xffff-us-5;HAL_TIM_Base_Start(&htim2);__HAL_TIM_SetCounter(&htim2,differ);while(differ < 0xffff-5){differ = __HAL_TIM_GetCounter(&htim2);}HAL_TIM_Base_Stop(&htim2);
}

纳秒级延时完成。

先设置引脚。MCU要控制的是WR,DA,CS三个引脚。用户自己选择自己板子的引脚设置

#define RESET_WR();       HAL_GPIO_WritePin(GPIOX, GPIO_PIN_x, GPIO_PIN_RESET);
#define SET_WR();        HAL_GPIO_WritePin(GPIOX, GPIO_PIN_x, GPIO_PIN_SET);
#define RESET_DA();      HAL_GPIO_WritePin(GPIOX, GPIO_PIN_x, GPIO_PIN_RESET);
#define SET_DA();        HAL_GPIO_WritePin(GPIOX, GPIO_PIN_x, GPIO_PIN_SET);
#define RESET_CS();      HAL_GPIO_WritePin(GPIOX, GPIO_PIN_x, GPIO_PIN_RESET);
#define SET_CS();        HAL_GPIO_WritePin(GPIOX, GPIO_PIN_x, GPIO_PIN_SET);

向HT1621发送字节的函数。sdat是具体数据,cnt是要发送的个数(单位是二进制)。

void HT1621_SendBit(uint8_t sdat,uint8_t cnt)
{uint8_t i=0;for(i=0;i<cnt;i++){RESET_WR();HAL_Delay_us(20);if(sdat&0x80){SET_DA(); }else{RESET_DA();}HAL_Delay_us(20);SET_WR();HAL_Delay_us(20);sdat<<=1;}
}

发送命令函数,0x80是0b10000000,100是HT1621的命令指令,command就是要控制的指令,如打开时钟等。此函数一般在液晶初始化设置模式时使用。

void HT1621_SendCmd(uint8_t command)
{RESET_CS();HT1621_SendBit(0x80,4);HT1621_SendBit(command,8);SET_CS();
}

发送数据函数,addr是地址(也就是上面说的SEG的引脚序号),左移2位是因为地址时六位,而uint8_t型是八位,前面空了两位。sdat是数据(就是四个COM口)。如果是向连续地址写,比如数码管,则可以使用发送8位数据的(注释部分)。

void HT1621_WriteData(uint8_t addr,uint8_t sdat)
{addr<<=2;sdat<<=4;RESET_CS();HT1621_SendBit(0xa0,3);//1010HT1621_SendBit(addr,6);HT1621_SendBit(sdat,4);     //一次只发送4位数据,一个地址发送1次,低四位//HT1621_SendBit(sdat,8);SET_CS();
}

关闭液晶。

#define LCD_OFF      0x04
void LCD_off(void)
{HT1621_SendCmd(LCD_OFF);
}

打开液晶

#define LCD_ON       0x06
void LCD_on(void)
{HT1621_SendCmd(LCD_ON);
}

清屏函数,SEG是用到了多少个SEG脚。

#define SEG 14
void LCD_Clear(void)
{uint8_t i;uint8_t addr=0;for(i=0;i<SEG;i++){HT1621_WriteData(addr,0x00);addr++;}
}

液晶初始化

#define ComMode      0x52//1/3偏执,4COM口  1000 01010010
#define SYS_EN      0x02
#define RC_OSC      0x30
#define XTAL_OSC    0x28
void HT1621_Init(void)
{LCD_off();HT1621_SendCmd(SYS_EN);HT1621_SendCmd(RC_OSC);//内部时钟HT1621_SendCmd(ComMode);LCD_on();
}

代码就是这样了。具体使用,就可以照着液晶的引脚,使用HT1621_WriteData函数控制各个部分亮起熄灭。

代码如下
链接:https://pan.baidu.com/s/10Sld5Ynln1dZaH3J8kwulw
提取码:dirj

如果觉得文章有用就点个赞吧!!!

HT1621段码液晶屏相关推荐

  1. 段码液晶屏学习应用笔谈

    液晶显示屏,英文简称LCD,全称为Liquid Crystal Display. LCD从类型上分:有TN型LCD,STN型LCD和TFT型LCD等. 不同类型LCD差别: TN型 STN型 TFT型 ...

  2. 怎么点亮段码屏_段码液晶屏实现原理及应用

    什么是段码液晶屏 段码液晶或段码液晶屏,只是液晶屏的用户对于某一类液晶显示屏的一种叫法,但是在液晶行业之内,一般都称之为图案型的液晶屏,从而来区别于点阵型的液晶屏,故段码液晶屏并不是一个很严格的表述或 ...

  3. 定制段码液晶屏,不的不了解的知识!

    段码液晶屏和点阵式液晶屏不同的是,段码液晶屏显示內容是固定不动的,仅仅根据手机软件操纵什么段亮,什么段没亮,需要出模定制,定制后如需更改显示屏的内容,则需再次出模:而点阵式液晶屏显示內容是由手机软件自 ...

  4. 如何驱动段码液晶屏?

    日常生活中我见的较多的就是段码液晶屏了,如遥控器.冰箱.电子体温计.设备上的显示器等等,段码屏应用如此广泛主要是它即有着普通数码管的特征,又有着点阵液晶屏的特征:有固定的图形,不但成本低而且又美观.那 ...

  5. 段码液晶屏怎么焊接?

    这一期是焊接段码液晶屏的干货,各位小主还请注意查收! 说起焊接段码液晶屏,之前小编给大家避雷过一个焊接方法,叫波峰焊焊接,这个焊接方法非常的不适用于咱们的段码液晶屏,很容易造成屏的损坏,那么正确的焊接 ...

  6. LCD段码液晶屏开模过程参数

    许多客户在问液晶的打样时间是总觉得时间太长,无法接受,但一般厂商不会告诉他立即可以出来,这是有原因的,下面我们来做个简单流程介绍: 一:开模的基本流程: 基础资料核实 : 尺寸.逻辑表.显示模式.显示 ...

  7. 段码液晶屏的连接方式剖析

    之前有为大家介绍过定制段码液晶屏的十大参数,其中有一个很重要的参数就是它的连接方式,主要是三种连接方式,分别是:金属PIN连接,导电胶条和FPC.今天我们就这三种联系方式,来详细聊一聊,帮助大家了解的 ...

  8. 段码液晶屏驱动芯片如何选择

    有个客户来开模定制段码液晶屏的时候问我:是否段码液晶屏直接加直流电源供电就可以显示了.我被这个问题弄的哭笑不得.在跟他说明了段码液晶屏的工作原理和显示条件之后,觉得很有必要给初次接触段码液晶屏的工程师 ...

  9. 段码液晶屏过ESD测试

    大部分电子产品需要通过电快速瞬变脉冲群(EFT)和静电放电(ESD)等项目的标准测试.EFT和ESD是两种典型的突发干扰,EFT信号单脉冲的峰值电压可高达4kV,上升沿5ns.接触放电测试时的ESD信 ...

最新文章

  1. ES curl bulk 导入数据
  2. WebService入门教程_Schema学习
  3. android开发将h5转换成pdf_一键将PDF转换成PPT,秒懂!
  4. UVa10779 - Collectors Problem(最大流)
  5. Jenkins入门指南
  6. 行内元素与块级元素,以及区别
  7. 利用汇编与机器码定位崩溃点
  8. Shiro学习总结(2)——Apache Shiro快速入门教程
  9. 英特尔推出新CPU架构!3D封装打破摩尔定律限制,10nm芯片明年上市
  10. HALCON 20.11:深度学习笔记(5)---设置超参数
  11. opencv 学习第一课 图像读取、显示、写入 代码注释版 保证你每一行都能读懂
  12. lamp php的ssl,ssh支持
  13. html修改字体大小到10像素,ps怎么修改字体大小
  14. cfree5.0中文版
  15. 计算机配置内存容量怎么调,如何设置电脑虚拟内存,电脑虚拟内存设置多少最合理?...
  16. Baby-step giant-step算法
  17. Python实现自动通关别踩白块儿
  18. 义隆单片机学习笔记之(三) 应用例程
  19. Chrome插件离线安装方法及编程思路
  20. Win10应用卸载(针对控制面板的卸载程序页面找不到的那些应用)

热门文章

  1. maya2020卸载不干净_maya怎样卸载干净,如何完全彻底删除清理干净MAYA各种残留注册表和文件?...
  2. ZYNQ-UART串口中断测试
  3. python编写代码实现文件的拷贝功能_python从一个文件夹自动拷贝文件到目标文件夹的代码...
  4. 乐高大颗粒作品17:托马斯小火车
  5. 1.简述GPS载波相位测量的基本原理。2.在高精度GPS测量工作中,为什么需要采用载波相位测量方法进行三维定位。3.载波相位测量中,确定整周未知数主要有哪些方法?GNSS测量与数据处理(第六周作业)
  6. 布丁怪兽-csdn博客_证明在评论中-不是布丁
  7. hdu 2023 求平均成绩
  8. 解决65535的方法
  9. 2016 ACM ICPC Asia Region - Tehran
  10. 计算机科学技术的道与术