HT1621段码液晶屏
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段码液晶屏相关推荐
- 段码液晶屏学习应用笔谈
液晶显示屏,英文简称LCD,全称为Liquid Crystal Display. LCD从类型上分:有TN型LCD,STN型LCD和TFT型LCD等. 不同类型LCD差别: TN型 STN型 TFT型 ...
- 怎么点亮段码屏_段码液晶屏实现原理及应用
什么是段码液晶屏 段码液晶或段码液晶屏,只是液晶屏的用户对于某一类液晶显示屏的一种叫法,但是在液晶行业之内,一般都称之为图案型的液晶屏,从而来区别于点阵型的液晶屏,故段码液晶屏并不是一个很严格的表述或 ...
- 定制段码液晶屏,不的不了解的知识!
段码液晶屏和点阵式液晶屏不同的是,段码液晶屏显示內容是固定不动的,仅仅根据手机软件操纵什么段亮,什么段没亮,需要出模定制,定制后如需更改显示屏的内容,则需再次出模:而点阵式液晶屏显示內容是由手机软件自 ...
- 如何驱动段码液晶屏?
日常生活中我见的较多的就是段码液晶屏了,如遥控器.冰箱.电子体温计.设备上的显示器等等,段码屏应用如此广泛主要是它即有着普通数码管的特征,又有着点阵液晶屏的特征:有固定的图形,不但成本低而且又美观.那 ...
- 段码液晶屏怎么焊接?
这一期是焊接段码液晶屏的干货,各位小主还请注意查收! 说起焊接段码液晶屏,之前小编给大家避雷过一个焊接方法,叫波峰焊焊接,这个焊接方法非常的不适用于咱们的段码液晶屏,很容易造成屏的损坏,那么正确的焊接 ...
- LCD段码液晶屏开模过程参数
许多客户在问液晶的打样时间是总觉得时间太长,无法接受,但一般厂商不会告诉他立即可以出来,这是有原因的,下面我们来做个简单流程介绍: 一:开模的基本流程: 基础资料核实 : 尺寸.逻辑表.显示模式.显示 ...
- 段码液晶屏的连接方式剖析
之前有为大家介绍过定制段码液晶屏的十大参数,其中有一个很重要的参数就是它的连接方式,主要是三种连接方式,分别是:金属PIN连接,导电胶条和FPC.今天我们就这三种联系方式,来详细聊一聊,帮助大家了解的 ...
- 段码液晶屏驱动芯片如何选择
有个客户来开模定制段码液晶屏的时候问我:是否段码液晶屏直接加直流电源供电就可以显示了.我被这个问题弄的哭笑不得.在跟他说明了段码液晶屏的工作原理和显示条件之后,觉得很有必要给初次接触段码液晶屏的工程师 ...
- 段码液晶屏过ESD测试
大部分电子产品需要通过电快速瞬变脉冲群(EFT)和静电放电(ESD)等项目的标准测试.EFT和ESD是两种典型的突发干扰,EFT信号单脉冲的峰值电压可高达4kV,上升沿5ns.接触放电测试时的ESD信 ...
最新文章
- ES curl bulk 导入数据
- WebService入门教程_Schema学习
- android开发将h5转换成pdf_一键将PDF转换成PPT,秒懂!
- UVa10779 - Collectors Problem(最大流)
- Jenkins入门指南
- 行内元素与块级元素,以及区别
- 利用汇编与机器码定位崩溃点
- Shiro学习总结(2)——Apache Shiro快速入门教程
- 英特尔推出新CPU架构!3D封装打破摩尔定律限制,10nm芯片明年上市
- HALCON 20.11:深度学习笔记(5)---设置超参数
- opencv 学习第一课 图像读取、显示、写入 代码注释版 保证你每一行都能读懂
- lamp php的ssl,ssh支持
- html修改字体大小到10像素,ps怎么修改字体大小
- cfree5.0中文版
- 计算机配置内存容量怎么调,如何设置电脑虚拟内存,电脑虚拟内存设置多少最合理?...
- Baby-step giant-step算法
- Python实现自动通关别踩白块儿
- 义隆单片机学习笔记之(三) 应用例程
- Chrome插件离线安装方法及编程思路
- Win10应用卸载(针对控制面板的卸载程序页面找不到的那些应用)
热门文章
- maya2020卸载不干净_maya怎样卸载干净,如何完全彻底删除清理干净MAYA各种残留注册表和文件?...
- ZYNQ-UART串口中断测试
- python编写代码实现文件的拷贝功能_python从一个文件夹自动拷贝文件到目标文件夹的代码...
- 乐高大颗粒作品17:托马斯小火车
- 1.简述GPS载波相位测量的基本原理。2.在高精度GPS测量工作中,为什么需要采用载波相位测量方法进行三维定位。3.载波相位测量中,确定整周未知数主要有哪些方法?GNSS测量与数据处理(第六周作业)
- 布丁怪兽-csdn博客_证明在评论中-不是布丁
- hdu 2023 求平均成绩
- 解决65535的方法
- 2016 ACM ICPC Asia Region - Tehran
- 计算机科学技术的道与术