HT1621硬件接线和软件编程
用Keil C软件自带的逻辑分析仪仿真HT1621驱动的段码型LCD

用Keil C软件自带的逻辑分析仪仿真HT1621驱动的段码型LCD 一:大体按图示3步进行,首先对项目进行编译OK,其次对软件仿真设置,最后调试输出。
二:在debug项下勾选“Use Simulator”
三:进入Debug,进入调试界面
(P2_0, P2_1, P2_2是我这块板上对应的HT1621与MCU连接的3个硬件引脚,分别对应CS/,WR/,Data。
)
点击”Logic Analyzer”的Setup,进入设置界面,因P2_0, P2_1, P2_2均以位输出,所以在”Display Type”中要设置成”Bit”,并设置不同的颜色,对示区分波形。
点击全速运行后,调节逻辑分析仪的缩放,输出合适的波形。
说明:
对应HT1621、HT1621B、HT1620等手册,对波形进行解析(已解析)
101(兰色字)是3位命令码,表示写模式
000101(红色字)是6位地址码,RAM的地址是0X05
0011(黑色字)是4位数据码,RAM的数据是0X03
也就是说,此波形的含义是在对应LCD的SEG5与COM1、COM0相交的字段点亮了。
可以过LCD实物验证。
最后说明:
本人对比硬件逻辑分析仪,波形相似度相当高。
用Keil C软件自带的逻辑分析仪仿真对于编程调试还是相当有用的,如PWM、UART等。
对于更复杂的处理也是无能为力的,比如触发方式、采样率、采样深度的设置,测量解析波形数据,如各种协议等,还得依赖硬件的逻辑分析仪。
HT1621程序

else DATA_LOW;
WR_HIGH;
command = command << 1;
}
WR_LOW;
WR_HIGH;
WR_HIGH;
WR_LOW;
DATA_LOW;
WR_HIGH;
WR_LOW;
WR_HIGH;
for (unsigned short int i =0;i<=7;i++)
{
WR_LOW;
#define _lcd_MHZ 74
#define _lcd_KW 75
#define _lcd_MA 76
#define _lcd_MV 77
#define _lcd_KHZ 78
#define _lcd_W 79
#define _lcd_LOCK 95
#define _lcd_BELL 103
#define _lcd_COLON2 111
#define _lcd_BAT 119
#define _lcd_MAX 124
#define _lcd_MIN 125
#define _lcd_AM 86
#define _lcd_CARD 87
#define _lcd_AT3 88
#define _lcd_AT2 89
#define _lcd_AT1 90
#define _lcd_AT0 91
{
WR_LOW;
if ((data & 0x01) !=0) DATA_HIGH;
基于单片机的HT1621液晶显示系统设计方法

基于单片机的HT1621液晶显示系统设计方法HT1621 液晶显示控制器是多功能全自动智能开关的显示部件,能实时、准确、在线监控供电线路的运行情况。
一旦线路出现漏电、过载、短路、过压、欠压和缺相时,智能安全用电开关能立刻启动保护程序,并显示在HT1621 液晶显示控制器上。
在智能化楼宇、中高档家庭住宅、电力系统、工矿企业、国家重点消防单位以及石油化工、文教卫生、金融、电信等领域。
基于单片机的HT1621 液晶显示控制器应用广泛。
本文详细讨论段式液晶模块HT1621D 与单片机STC89C52 的一种硬件接口电路和软件编程方法。
1 HT1621 液晶模块与STC89CS2 单片机HT1621 是128 点内存映像和多功能的LCD 驱动器,HT1621 的软件配置特性使它适用于多种LCD 应用场合,包括LCD 模块和显示子系统。
静态显示内存RAM 以32×4位的格式储存所显示的数据。
RAM 的数据直接映像到LCD 驱动器,可以用READ,WRITE 和READ-MODIFY-WRITE 命令访问。
HT1 621D 引脚图如图1 所示。
各引脚功能如下:◆片选输入,接一上拉电阻。
当为高电平,读写HT1621 的数据和命令无效,串行接口电路复位;当为低电平和作为输入时,读写HT1621 的数据和命今有效。
◆READ 脉冲输入,接一上拉电阻。
在信号的下降沿,HT1621 内存的数据被读到DATA 线上,主控制器可以在下一个上升沿时锁存这些数据。
◆WRITE 脉冲输入,接一上拉电阻。
在信号的上升沿,DATA 线上的数据写到HT1621.。
HT1621液晶驱动芯片的51单片机程序

uchar code
Ht1621Tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00};
//delay us
void Delay(uchar us) //5,7,9
#define WDTDIS 0X0A //0b1000 0000 1010 禁止看门狗
//HT1621控制位(液晶模块接口定义,根据自已的需要更改)
sbit HT1621_DAT=P3^4; //HT1621数据引脚
sbit HT1621_CS=P3^2; //HT1621使能引脚
sbit HT1621_WR=P3^3; //HT1621时钟引脚
#define XTAL 0x28 //0b1000 0010 1000 外部接时钟
#define RC256 0X30 //0b1000 0011 0000 内部时钟
#define TONEON 0X12 //0b1000 0001 0010 打开声音输出
#define TONEOFF 0X10 //0b1000 0001 0000 关闭声音输出
HT1621液晶驱动芯片的51单片机程序
/********************************************************
功能描述: HT1621芯片测试程序
说 明:本测试程序能够测试HT1621的每一个字段,
依次点亮每一个字段
参数:
********************************************************/
Ht1621使用手册及编程说明

Ht1621液晶显示驱动使用说明1.概述HT1621是128点内存映象和多功能的LCD驱动器,HT1621的软件配置特性使它适用于多种LCD应用场合,包括LCD模块和显示子系统。
用于连接主控制器和HT1621的管脚只有4或5条,HT1621还有一个节电命令用于降低系统功耗。
在虎风所做的这个系统中ht1621用于驱动一个静态的LCD液晶显示器。
液晶显示的方式分为静态显示和动态显示。
静态与动态的区别在于静态显示是持续供电的,而动态显示是利用人的视觉停留效果,快速扫描数码管各个段,让人在视觉上感觉到数码管是同时显示的。
2.HT1621接线原理图3.静态LCD结构图4.几个曾经纠结的概念Time base:时基,即时间基准,可以用来输出,作为外部时钟的时间基准。
占空比:将所有公共电极(COM)各施加一次扫描电压的时间叫一帧,单位时间内扫描多少帧的频率叫帧频,将扫描公共电极(COM)选通的时间与帧周期之比叫占空比。
通常占空比等于公共电极数N的倒数,即1/N。
这就是说假如你要驱动4个液晶,就需要4个COM,那么你的占空比就要设定为1/4。
偏压比:指的是液晶的偏压系数,可以看看专业技术文章,偏压目的是克服交叉效应,通过把半选择点与非选择点的电压平均,适度提高非选择点的电压来抵消半选择点上的一部分电压,使半选择点上的电压下降,从而提高显示对比度;最终行半选择点和非选择点上的电压均为显示电压的1/a,1/a就称为偏压系数,也称为偏压。
此方法称为1/a偏压的平均电压法,简称为1/a偏压法。
VLCD(LCD驱动电压): LCD的驱动电压为加在点亮部分的段电压与公共电压之差(峰-峰值)。
5.关于RAM地址映射的概念为了这个问题困扰了很久,虎风太愚钝啦……Ht1621有一个32*4的LCD驱动,映射到32*4的RAM地址。
上图中写命令101后面跟6位RAM地址,那么这个地址是如何确定的呢?其实说白了也很简单,RAM地址就是SEG的序号。
HT1621测试驱动程序,高手勿喷!

HT1621测试驱动程序,高手勿喷!最近在某宝淘元件的时候,一同买了几种段码LCD模块。
据说是HT1621驱动的,所以在网上搜索来搜索去。
下了好多代码,基本都是加了其他功能的,对于我一个新手来说,其实要的只是驱动显示LCD的程序就可以了。
在不断的搜索研究中发现一位网友发布的一个HT1621测试驱动程序。
这里我在里做了一点点修改和增加了一些备注。
下面上代码:1.// - - * * * * * * * HT1621 段码屏驱动 * * * * * * *2.// - - * MCU: AT89C51 单片机 *3.// - - * MCU-Crystal: 12M 24M 晶振 *4.// - - * Version: 00 版本 *5.// - - * Last Updata: *6.// - - * Author: *7.// - - * Description: HT1621 段码屏驱动 *8.// - - * C 语言程序 *9.// - - * * * * * * * * * * * * * * * * * * * * * * *10.11.12./********************************************************13.功能描述: HT1621芯片测试程序14.15.说明:本测试程序能够测试HT1621的每一个字段,16.17.依次点亮每一个字段18.19.参数:20.********************************************************/21.22.// - - 引用库23.#include24.25.26.// - - 定义函数27.#define uchar unsigned char28.#define uint unsigned int29.30.#define BIAS 0x52 //0b1000 0101 0010 1/3duty 4com31.#define SYSDIS 0X00 //0b1000 0000 0000 关振系统荡器和LCD偏压发生器32.#define SYSEN 0X02 //0b1000 0000 0010 打开系统振荡器33.#define LCDOFF 0X04 //0b1000 0000 0100 关LCD偏压34.#define LCDON 0X06 //0b1000 0000 0110 打开LCD偏压35.#define XTAL 0x28 //0b1000 0010 1000 外部接时钟36.#define RC256 0X30 //0b1000 0011 0000 内部时钟37.#define TONEON 0X12 //0b1000 0001 0010 打开声音输出38.#define TONEOFF 0X10 //0b1000 0001 0000 关闭声音输出39.#define WDTDIS 0X0A //0b1000 0000 1010 禁止看门狗40.41.// - - 定义接口42.// - - HT1621控制位(液晶模块接口定义,根据自已的需要更改)43.sbit HT1621_CS=P3^2; // - - HT1621使能引脚44.sbit HT1621_WR=P3^3; // - - HT1621时钟引脚45.sbit HT1621_DAT=P3^4; // - - HT1621数据引脚46.47.// - - 定义变量,数组48.uchar code49.Ht1621Tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,50.51.0x00,0x00,0x00,0x00,0x00};52.53.// - - 定义子程序函数54.void Ht1621_Init(void); // - - 初始化 HT162155.void Ht1621Wr_Data(uchar Data,uchar cnt); // - - HT1621 写入数据函数56.void Ht1621WrCmd(uchar Cmd); // - - HT1621 写入命令函数57.void Ht1621WrOneData(uchar Addr,uchar Data); // - - HT1621 在指定地址写入数据函数58.void Ht1621WrAllData(uchar Addr,uchar *p,uchar cnt); // - - HT1621 连续写入数据函数59.60.void Ht1621_delay_10us(uint n); // - - 10微秒的延时子程序61.void Ht1621_delayms(uint xms); // - - 1毫秒延时程序62.63./********************************************************64.函数名称:void Ht1621_Init(void)65.功能描述: HT1621初始化66.全局变量:无67.参数说明:无68.返回说明:无69.版本:1.070.说明:初始化后,液晶屏所有字段均显示71.********************************************************/72.void Ht1621_Init(void)73.{74.HT1621_CS=1;75.HT1621_WR=1;76.HT1621_DAT=1;77.Ht1621_delayms(500); // - - 延时使LCD工作电压稳定78.Ht1621WrCmd(BIAS);79.Ht1621WrCmd(RC256); // - - 使用内部振荡器80.Ht1621WrCmd(SYSDIS); // - - 关振系统荡器和LCD偏压发生器81.Ht1621WrCmd(WDTDIS); // - - 禁止看门狗82.Ht1621WrCmd(SYSEN); // - - 打开系统振荡器83.Ht1621WrCmd(LCDON); // - - 打开声音输出84.}85.86./******************************************************87.函数名称:void Ht1621Wr_Data(uchar Data,uchar cnt)88.功能描述: HT1621数据写入函数89.全局变量:无90.参数说明:Data为数据,cnt为数据位数91.返回说明:无92.说明:写数据函数,cnt为传送数据位数,数据传送为低位在前93.*******************************************************/94.void Ht1621Wr_Data(uchar Data,uchar cnt)95.{96.uchar i;97.for (i=0;i<>98.{99.HT1621_WR=0;100.Ht1621_delay_10us(1);101.HT1621_DAT=Data&0x80;102.Ht1621_delay_10us(1);103.HT1621_WR=1;104.Ht1621_delay_10us(1);105.Data<>106.}107.}108.109./******************************************************** 110.函数名称:void Ht1621WrCmd(uchar Cmd)111.功能描述: HT1621命令写入函数112.全局变量:无113.参数说明:Cmd为写入命令数据114.返回说明:无115.说明:写入命令标识位100116.********************************************************/ 117.void Ht1621WrCmd(uchar Cmd)118.{119.HT1621_CS=0;120.Ht1621_delay_10us(1);121.Ht1621Wr_Data(0x80,4); // - - 写入命令标志100 122.Ht1621Wr_Data(Cmd,8); // - - 写入命令数据123.HT1621_CS=1;124.Ht1621_delay_10us(1);125.}126.127./******************************************************** 128.函数名称:void Ht1621WrOneData(uchar Addr,uchar Data)129.功能描述: HT1621在指定地址写入数据函数130.全局变量:无131.参数说明:Addr为写入初始地址,Data为写入数据132.返回说明:无133.说明:因为HT1621的数据位4位,所以实际写入数据为参数的后4位134.********************************************************/ 135.void Ht1621WrOneData(uchar Addr,uchar Data)136.{137.HT1621_CS=0;138.Ht1621Wr_Data(0xa0,3); // - - 写入数据标志101139.Ht1621Wr_Data(Addr<2,6); -="" -="">140.Ht1621Wr_Data(Data<4,4); -="" -="">141.HT1621_CS=1;142.Ht1621_delay_10us(1);143.}144.145./******************************************************** 146.函数名称:void Ht1621WrAllData(uchar Addr,uchar *p,uchar cnt)147.功能描述: HT1621连续写入方式函数148.全局变量:无149.参数说明:Addr为写入初始地址,*p为连续写入数据指针,t为写入数据总数151.返回说明:无152.说明:HT1621的数据位4位,此处每次数据为8位,写入数据153.总数按8位计算154.********************************************************/ 155.void Ht1621WrAllData(uchar Addr,uchar *p,uchar cnt) 156.{157.uchar i;158.HT1621_CS=0;159.Ht1621Wr_Data(0xa0,3); // - - 写入数据标志101160.Ht1621Wr_Data(Addr<2,6); -="" -="">161.for (i=0;i<>162.{163.Ht1621Wr_Data(*p,8); // - - 写入数据164.p++;165.}166.HT1621_CS=1;167.Ht1621_delay_10us(1);168.}169.170.void Ht1621_delay_10us(uint n) // - - 10微秒的延时子程序171.{172.uint i,j;173.for(i=n;i>0;i--)174.for(j=2;j>0;j--);175.}176.177.void Ht1621_delayms(uint xms) // - - 1毫秒延时程序178.{179.uint i,j;180.for(i = xms;i > 0;i --)181.for(j = 110;j > 0;j --);182.}183.184.185./***********************************186.HT1621 测试程序,作为库文件请注释掉187.***********************************/188.void main()189.{190.uchar i,j,t;191.Ht1621_Init(); // - - 上电初始化LCD192.Ht1621_delayms(5000); // - - 延时一段时间193.while(1){194.Ht1621_delayms(2000);195.Ht1621WrAllData(0,Ht1621Tab,16); // - - 清除1621寄存器数据,暨清屏196.for (i=0;i<>197.{198.t=0x01;199.for (j=0;j<>200.{201.Ht1621WrOneData(i,t);202.t<>203.t++;204.P1_5=~P1_5; // - - 循环点亮LED205.Ht1621_delayms(500);206.}207.}208.}209.}210.经测试在12M 24M 的晶振下能正常显示。
HT1621驱动程序(SONIX)

HT1621驱动程序(SONIX)HT1621_STARTON1: //关闭中断B0BCLR CS //复位1621接口NOP //CS脉冲输出NOP //空操作NOP //B0BSET CS //NOP //NOP //NOP //B0BCLR CS //NOP //NOP //NOP //B0BSET CS //P63 置1,/CS=1MOV A,#11100011B //COMMAND TNORMAL MOV COMMAND,A //CALL C_WRITE //MOV A,#10000000B //COMMAND /IRQ禁止MOV COMMAND,A //CALL C_WRITE //MOV A,#00101001B //COMMAND BIAS1/3,4 COM MOV COMMAND,A //CALL C_WRITE //MOV A,#00000101B //COMMAND WDT 禁止MOV COMMAND,A //CALL C_WRITE //MOV A,#00001100B //MOV COMMAND,A //CALL C_WRITE //MOV A,#00000110B //COMMAND TIMER ON MOV COMMAND,A //CALL C_WRITE //MOV A,#00001100B //MOV COMMAND,A //CALL C_WRITE //MOV A,#00000001B //COMMAND SYS_EN MOV COMMAND,A //CALL C_WRITE //MOV A,#00000011B //COMMAND LCD_ON MOV COMMAND,A //CALL C_WRITE //MOV A,#00FH //LCD MAP SET TO 1MOV wrong,A //S0MOV celsius,A //S1MOV ONE_L,A //S2MOV ONE_H,A //S3MOV TEN_L,A //S4MOV TEN_H,A //S5MOV HUNDRED_L,A //S6MOV HUNDRED_H,A //S7CALL LCD_WRITE //显示所有图标NOP //NOP ////打开中断RET //C_WRITE: MOV A,#08MOV R_LOOP,AB0BSET WR//BS P6,1 ;/WR=1B0BCLR CS//BC P6,3 ;/CS=0NOPNOPB0BCLR WR//BC P6,1 ;/WR=0B0BSET SDA//BS P6,2 ;DATA=1NOPNOPB0BSET WR//BS P6,1 ;/WR=1NOPNOPNOPB0BCLR WR//BC P6,1 ;/WR=0B0BCLR SDA// BC P6,2 ;DATA=0NOPNOPB0BSET WR//BS P6,1 ;/WR=1NOPNOPNOPB0BCLR WR//BC P6,1 ;/WR=0B0BCLR SDA//BC P6,2 ;DATA=0NOPNOPB0BSET WR//BS P6,1 ;/WR=1NOPNOPNOPB0BCLR WR//BC P6,1 ;/WR=0C8_C1_WRITE: B0BTS0 COMMAND.7//JBC COMMAND,7 ;COMMAND,7=0JMP SET_DATA_1B0BCLR SDA//BC P6,2 ;DATA=0NOPNOPJMP NEXT_1SET_DATA_1: BSET SDA//BS P6,2 ;DATA=1 NEXT_1: RLCM COMMAND//RLC COMMAND B0BSET WR//BS P6,1 ;/WR=1NOPNOPNOPB0BCLR WR//BC P6,1 ;/WR=0DECMS R_LOOP//DJZ R_LOOPJMP C8_C1_WRITEB0BCLR SDA//BC P6,2 ;DATA=0B0BSET WR//BS P6,1 ;/WR=1B0BSET CS//BS P6,3 ;/CS=1RETLCD_WRITE:B0BSET WR//BS P6,1 ;/WR=1B0BCLR CS//BC P6,3 ;/CS=0NOPNOPB0BCLR WR//BC P6,1 ;/WR=0B0BSET SDA//BS P6,2 ;DATA=1NOPNOPB0BSET WR//BS P6,1 ;/WR=1NOPNOPB0BCLR WR//BC P6,1 ;/WR=0B0BCLR SDA//BC P6,2 ;DATA=0NOPNOPB0BSET WR//BS P6,1 ;/WR=1NOPNOPNOPB0BCLR WR//BC P6,1 ;/WR=0B0BSET SDA//BS P6,2 ;DATA=1NOPNOPB0BSET WR//BS P6,1 ;/WR=1NOPNOPNOPB0BCLR WR//BC P6,1 ;/WR=0B0BCLR SDA//BC P6,2 ;DATA=0, 1 NOPNOPB0BSET WR//BS P6,1 ;/WR=1B0BCLR WR//BC P6,1 ;/WR=0,DATA=0, 2 NOPNOPNOPB0BSET WR//BS P6,1 ;/WR=1NOPNOPB0BCLR WR//BC P6,1 ;/WR=0 ;DATA=0, 3 NOPNOPNOPB0BSET WR//BS P6,1 ;/WR=1NOPNOPNOPB0BCLR WR// BC P6,1 ;/WR=0;DATA=0, 4 NOPNOPNOPB0BSET WR// BS P6,1 ;/WR=1NOPNOPNOPB0BCLR WR//BC P6,1 ;/WR=0;DATA=0, 5 NOPNOPNOPB0BSET WR//BS P6,1 ;/WR=1NOPNOPNOPB0BCLR WR//BC P6,1 ;/WR=0;DATA=0, 6 NOPNOPNOPB0BSET WR //BS P6,1 ;/WR=1MOV A,WRONG //错误显示寄存器MOV LCDRAM,A //SEG0CALL LCDDATA_W //MOV A,CELSIUS //摄氏度显示寄存器MOV LCDRAM,A //SEG1CALL LCDDATA_W //MOV A,ONE_L //个位显示寄存器低MOV LCDRAM,A //SEG2CALL LCDDATA_W //MOV A,ONE_H //个位显示寄存器高MOV LCDRAM,A //SEG3CALL LCDDATA_W //MOV A,TEN_L //十位显示寄存器低MOV LCDRAM,A //SEG4CALL LCDDATA_W //MOV A,TEN_H //十位显示寄存器高MOV LCDRAM,A //SEG5CALL LCDDATA_W //MOV A,HUNDRED_L //百位显示寄存器低MOV LCDRAM,A //SEG6CALL LCDDATA_W //MOV A,HUNDRED_H //百位显示寄存器高MOV LCDRAM,A //SEG7CALL LCDDATA_W //B0BSET CS //BS P6,3 ;/CS=1NOP //NOP //NOP //NOP //RET //LCDDATA_W: MOV A,#04 //RAM DATA WRITE MOV R_LOOP,A //DATA_W: BTS0 LCDRAM.0 //JBC LCDRAM,0 JMP RAM_SET //B0BCLR SDA // BC P6,2 ;DATA=0JMP NEXT_3 //RAM_SET: B0BSET SDA // BS P6,2 ;DATA=1 NEXT_3: RRCM LCDRAM //RRC LCDRAMB0BSET WR //BS P6,1 ;/WR=1NOP //NOP //NOP //B0BCLR WR //BC P6,1 ;/WR=0DECMS R_LOOP //DJZ R_LOOPJMP DATA_W //NOP //NOP //NOP //RET //HT1621初始化程序结束HT1621_STARTOFF: CLR WRONG //LCD显示关闭CLR CELSIUS //CLR ONE_L //CLR ONE_H //CLR TEN_L //CLR TEN_H //CLR HUNDRED_L //CLR HUNDRED_H //MOV A,#00000010B //HT1621关闭程序开始MOV COMMAND,A //LCD显示关闭CALL C_WRITE //RET //返回;HT1621关闭程序结束。
HT1621驱动段码液晶屏

第十七节:液晶屏第三大类定律—任意位置显示一个点(HT1621驱动段码液晶屏)(1)开场白:段码液晶屏往往应用在出货量比较大的家用消费类电子,比如空调遥控器,小时候带的电子手表等,都是段码屏。
段码屏是非标屏,都是客户定做的,第一次开模费大概一两千元,厂家一般都会有起订量的要求,除此之外,它的单位成本相对要比点阵屏要便宜,而且我个人认为显示的效果要比点阵屏漂亮。
段码屏的驱动程序跟数码管的静态驱动程序一样,只要我们弄懂了怎样显示一个基本单位,根据此基本单位编写一个字库表,然后用与(&)和或(|)这两种位运算符就可以随心所欲编写我们要显示的数字或者形状。
有两种常用的驱动方案:第一种:如果单片机内部集成了seg和com引脚的液晶驱动模块,直接用单片机驱动。
第二种:单片机用3个IO口跟HT1621进行通讯,用HT1621驱动段码屏。
这节我重点介绍第二种。
HT1621有4个COM,分别是com3,com2,com1,com0。
有32个SEG,分别是SEG0,SEG1….SEG31。
什么是COM,什么是SEG?用鸿哥的思路来解释,COM就是横向上的X坐标,SEG就是纵向上的Y坐标。
X坐标与Y坐标组合成一张表格,每格代表一个显示点。
比如HT1621,有4个COM,32个SEG,组成一个32行,每行装4个点的表格,一共有128个点,也就是最多可以显示128个点,用数码管的思路,最多可以显示128个LED灯。
因为纵向上有32行,因此Y轴的地址范围是0到31。
每一行X轴上的4个点,我们用一个字节来表示。
一个字节有8位,高4位分别代表这个4个点,低4位为空。
比如第一行(SEG0行)的第1个(COM3)要显示,第2个(COM2)要显示,第3个(COM1)不要显示,第4个(COM0)不要显示,那么用一个字节来表示就是十六进制的0xc0.要把这两个点点亮,只要把X轴的数据设置成0xc0,Y轴的数据设置成0x00,然后放到鸿哥精心研制的seg_display(unsigned char col, unsigned char pag)驱动程序里就可以了.(2)功能需求:在COM和SEG组成的4X32表格中,显示第二行的第3和第4两个点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HT1621硬件原理图及软件编程
1、Ht1621的硬件接线是怎样的呢?
需要将LCD的SEG(段电极)和COM(公共电极)与HT1621的SEG与COM 对应相连。
在就是HT1621会有几个接口是与单片机的I/0口相连像/CS(片选)/WR(写操作) / RD(读操作)(一般不用)/DATA(数据) 通过软件程序对I/O的控制进而控制HT1621的读写操作。
通过送数的不同达到想要的效果。
2、软件上是怎样控制点亮或者熄灭的呢?
想显示那些就把相应的段在程序里赋 1 如果想全显示就全赋 1 想都不显就都赋0。
3、HT1621B驱动4位8段LCD,用单片机怎样控制?其中的D0~D3,A0~A5各
表示什么意思?
1621B最多带32SEGx4COM,128段。
显示数据与显示内容是这样对应的:一个8位二进制数对应2根SEG线上的8个段码,1为显示,0不显。
例如seg0上的内容是ABCD四个段码,SEG1上的内容是EFGH四个段码,背电极COM 上,C0连AE2个段码,C1连BF,C2连CG,C3连DH,按此显示逻辑输入“01100011”时,高4位对应SEG1,低4位对应SEG0,将同时显示FGAB四个段码。
输入的显示数据不重新输入的话会一直显示,要同时显示2位数字和段码只要将这些数字和段码在逻辑表上对应的数据置1即可同时显示。
D0-D3是显示数据,1显示0不显示,A0-A5是芯片内置的RAM地址。
看上图1621的显示RAM对应表,你的显示模块资料上必定有这个逻辑表(实在没有你只能逐个地址逐个段码点亮,自己填上),你给一个地址送4位数据,对应的是一个SEG上的4个段(编程上一般送8位对应2根SEG8个段,因为RAM 地址会自动加1,你可以连续输入数据,我原来说的8位只是方便编程,你4位
8位甚至一次输完整个RAM表数据都行),IC工作的时候它是将它内部的这个RAM表读出来,将“1”的数据对应的段码显示出来,明白了这个对应关系应该就清楚了,要液晶变换显示内容只需要改写这个RAM表。
4、HT1621这款IC的驱动是128个点32seg*4com ,里面的seg和com分别是指什么?LCD都是使用SEG,COM的扫描来驱动的,为使需要点亮的内容呈显示状态,须将交流驱动电压加在LCD的段电极与公共电极之间。
打个比喻:一个‘井’字,是两行两列组成的,共有四个交点,其实就好比是2个SEG,2个COM,要驱动一个固定的点,要相应的一条COM和一条SEG都有效如果要几个点亮,几个点灭,就需要用到扫描的原理,与行列键盘的原理差不多。
5、段位式液晶中,TN、STN有什么区别呢?
TN价格较低,加工周期较短,视角不是很好(从不同角度看过去,是否清楚)。
STN价格贵一些。
6、段位式液晶中半透和全透有什么区别呢?
半透的液晶可以加背光,也可以不用背光,背光可以控制,加背光后没有全透的亮。
全透的液晶必须加背光才能显示,全透的比半透的亮,但是不能控制背光。
7、段位式液晶中,偏压比、占空比是什么意思呢?
1/2,1/3是偏压,决定了液晶显示的对比度。
偏压比通常选1/3。
通常占空比等于公共电极数N的倒数,即1/N。
如果用4个COM,则占空比为1/4。
8、定制的段位式液晶,可以使用双排插针吗?
一般使用单排插针,单排插针长度不够的话,可以考虑双排插针,不过双排插针通常是在液晶的上方做一排,下方做一排。