产品信息搜索 资料下载搜索
  
LCD驱动芯片
LED驱动
升压芯片
草坪灯IC
烟雾报警器IC
降压芯片
开关电源IC
上海贝岭系列
HT1621应用实例
合泰(Holtek)单片机
100mA降压稳压HT75XX
250mA降压稳压HT73XX
300mA (LDO) CMD73XX
300mA降压稳压HT72XX
30mA降压稳压HT71XX
合泰电压检测HT70XX
100mA(LDO)CMD75XX
时钟芯片
电压检测复位芯片
充电器IC
IC Buy网
军工IC网
18show
千禧网100
电子元器件工厂采购网
中采网
电源网
中国国防电子网
English website
上海图一实业(深圳)有限公司
google
新浪
电子查询网
世界电子元器件
电子元器件交易网

首页 >>> 产品目录 >>> HT1621B >>> HT1621B
产品[液晶,数显LCD驱动HT1621B通用驱动演示程序]资料
如果您对该产品感兴趣的话,可以
产品名称: 液晶,数显LCD驱动HT1621B通用驱动演示程序
产品型号: HT1621B的通用程序
产品展商: 上海图一实业有限公司
简单介绍
HT1621B/HT1621D是32×4的LCD驱动电路。HT1621B和HT1621D封装不同,HT1621B的封装是ssop48而 HT1621D的封装是DIP28;因HT1621B/HT1621D的S/W结构特点,使它适合点阵式LCD显示。HT1621B/HT1621D的驱动程序编写简单,而且在毅钧网站上就有丰富的HT1621B/HT1621D源码下载、同时还有HT1621B/HT1621D的中英文datasheet,文件格式为pdf和doc。
液晶,数显LCD驱动HT1621B通用驱动演示程序的详细介绍

HT1621驱动程序演示程序

下载连接http://www.ic108.com.cn/upload/200731718495029411095.txt


;*********************************************************************************
;文件名:ZY886CDM.asm
;项目: 煤气表LCD显示模块演示程序(1.1版)
;描述: 启动程序即进入正常显示状态(循环显示一系列数字),并通过KEY按键进行全显示状态
; (测功耗)、掉电状态(测功耗)及关断LCM电源(GND端),依此循环。
;最后更新日期:2002/1/07
;*********************************************************************************
;特殊功能寄存器SFR和位地址定义
AUXR1 DATA 0A2H ;辅助功能寄存器,不可位寻址
DIVM DATA 95H ;MCU时钟除数控制寄存器,
P0M1 DATA 84H ;0口工作模式选择寄存器1
P0M2 DATA 85H ;0口工作模式选择寄存器1
P1M1 DATA 91H
P1M2 DATA 92H
PT0AD DATA 0F6H ;0口数字输入功能禁止寄存器

LED1 BIT P0.0 ;状态灯定义
LED2 BIT P1.7 ;正常显示状态时LED1点亮,全显示状态时
LED3 BIT P1.6 ;LED2点亮,掉电状态时LED3点亮,关断LCM电
LED4 BIT P1.4 ;源状态时LED4点亮。
LCMC BIT P0.7 ;LCM的GND控制输出端,实现LCM的电源控制
KEY BIT P1.1 ;KEY的IO定义
keyin BIT 10H ;定义有键盘输出标志位
;定义显示数据计数变量
DCONT DATA 50H ;用于显示位的计数
;状态标志位定义
FLAGS1 DATA 2EH ;状态标志寄存器1
ICERR BIT FLAGS1.5 ;插卡有误
PASS BIT FLAGS1.7 ;门阀已关
SALEF BIT FLAGS1.6 ;请购气
POWERDOWN BIT FLAGS1.4 ;速换电池

;***********************************************************************
; 程序开始
;***********************************************************************
ORG 0000H
AJMP RESET
ORG 080H
RESET:
;安全设置
MOV DIVM,#1 ;CPU工作频率降至正常时的1/4
MOV SP,#59H ;设堆栈指针
MOV TMOD,#01H ;使能定时器0
;显示数据初化
MOV DCONT,#0
MOV FLAGS1,#0FFH
MAIN:
;LCD工作方式设定
CLR LCMC ;打开LCM电源
MOV P1M1,#00H ;将P1.7,P1.6,P1.4置为上拉输出
MOV P1M2,#0D0H
MOV P0M1,#00H ;将P0.7置为上拉输出
MOV P0M2,#01H
ACALL INTI1621
MOV LCDCOMMAND,#Tone4k ;设置音频输出频率为4KHZ
ACALL Send1621Com

;进入正常显示状态
;正常显示情况下,不发送数据时,把SPI口均置为高
SETB LED1 ;点亮LED1
CLR LED2
CLR LED3
CLR LED4
ACALL RUNOK
;进入全显示状态
;LCD各段均显示,然后SPI口设为高阻态,
CLR LED1
SETB LED2
ACALL RUNALL
;进入掉电状态
;掉电状态是把HT1621设置为掉电方式,以降低功耗
CLR LED2
SETB LED3
ACALL RUNDOWN
;进入关断电源状态
;关断HT1621电源,以降低功耗
CLR LED3
SETB LED4
ACALL RUNNOP

SJMP MAIN
;RUNOK
;从0到f循环显示LCD数位(数字右移)
;显示1秒后,所有数字均加1(即缓冲区加11H)
RUNOK:
CLR keyin ;清除keyin标志位
ACALL LOADDAT ;装载数据
CLR C
MOV A,#9
SUBB A,DCONT ;判断DCONT是否大于9,大于9则打开蜂鸣器
JNC RUNOK_L1
MOV LCDCOMMAND,#ToneOn
ACALL Send1621Com
RUNOK_L1:
ACALL BrushLcd
ACALL DELAY_1S
MOV LCDCOMMAND,#ToneOff;关闭蜂鸣器
ACALL Send1621Com
ACALL DELAY_1S ;延时并接收按键
ACALL DELAY_1S
ACALL DELAY_1S

INC DCONT ;计数器加1
CLR C
MOV A,#0FH ;若DCONT的值大于0FH,则复位为0
SUBB A,DCONT
JNC RUNOK_L2
MOV DCONT,#0
ACALL INTI1621
MOV LCDCOMMAND,#Tone4k ;设置音频输出频率为4KHZ
ACALL Send1621Com

RUNOK_L2:
JNB keyin,RUNOK ;判断是否有按键,有则退出正常显示方式
RET

;数据装载程序
;将计数数据进行字模转换后放入显示缓冲区,包括状态字段。
LOADDAT:
MOV R0,#DISBUFFER+10 ;指定显示地址为SEG20开始
MOV R1,DCONT
MOV R7,#4
LOAD_L1: ;将DCONT值依次加1,放入后面相应位置,若加1后超过0FH,则翻卷为0
MOV A,R1
MOV DPTR,#LCDData
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC R1
CLR C
MOV A,R1
SUBB A,#10H
JC LOAD_L2
MOV A,#0
MOV R1,A
LOAD_L2:
DJNZ R7,LOAD_L1

MOV A,FLAGS1 ;装入状态字段
MOV @R0,A

MOV R0,#DISBUFFER+12 ;显示小数点
MOV A,@R0
ORL A,#01H
MOV @R0,A
RET

;RUNALL
;全显示输出,把SPI接口置为高阻态,以便测量LCM功耗
RUNALL:
MOV R7,#5
MOV R0,#DISBUFFER+10
RUNALL_L1:
MOV @R0,#0FFH ;装入数据0FFH
INC R0
DJNZ R7,RUNALL_L1

ACALL BrushLcd ;刷新LCD显示
ORL P0M1,#2AH ;设置IO口为高阻态
ANL P0M2,#0D5H
MOV PT0AD,#2AH
RUNALL_L2: ;等待按键
JB KEY,$
MOV R7,#0FFH
DJNZ R7,$
JB KEY,RUNALL_L2
JNB KEY,$

ANL P0M1,#0D5H ;恢复IO口
MOV PT0AD,#00H
RET
;RUNDOWN
;掉电方式,把SPI接口置为高阻态,以便测量LCM功耗
RUNDOWN:
ACALL HT1621DOWN ;进入掉电状态
ORL P0M1,#2AH
ANL P0M2,#0D5H
MOV PT0AD,#2AH
RUNDOWN_L1:
JB KEY,$
MOV R7,#0FFH
DJNZ R7,$
JB KEY,RUNDOWN_L1
JNB KEY,$

RET

;RUNNOP
;关断LCD电源,把SPI接口置为高阻态。
RUNNOP:
SETB LCMC ;关断LCM电源
RUNNOP_L1:
JB KEY,$
MOV R7,#0FFH
DJNZ R7,$
JB KEY,RUNNOP_L1
JNB KEY,$

ANL P0M1,#0D5H ;恢复IO口设置
MOV PT0AD,#00H
CLR LCMC ;打开LCM电源
RET


;-----------------------------------------------
;延时1S子程序
; 在延时过程序可以判断有无按键,有按键时置位keyin位,无按
;键时不对keyin操作。
DELAY_1S:
SETB TR0 ;启动定时器
MOV R0,#2
BACK:
MOV TL0,#0B0H ;置初值
MOV TH0,#3CH
DL:
JB KEY,DL_1
MOV R7,#0FFH ;有按键,进行去抖动处理
DJNZ R7,$
JB KEY,DL_1
SETB keyin ;是按键,置位keyin
DL_1: JNB TF0,DL
CLR TF0
DJNZ R0,BACK ;等待定时时间到
JNB KEY,$ ;等待按键放开
RET

;包含1621操作软件包
$INCLUDE(LCD621.INC) ;包含头文件,头文件内已定义SPI,显示缓冲区,
;及各操作变量,ZY886C型LCD数字显示表等
END
;LCD 设定(命令模式字的低8位数据)
BIAS EQU 52H ;1/3 偏压4背极
RC256 EQU 30H ;系统时钟选用片内RC振荡器
SYSEN EQU 02H ;打开系统时钟
LCDON EQU 06H ;打开偏压发生器
SYSDIS EQU 00H ;关闭系统时钟和偏压发生器
X32K EQU 28H ;系统时钟选择为片外晶振
ToneOn EQU 12H ;打开音频输出
ToneOff EQU 10H ;关闭音频输出
Tone4k EQU 80H ;音频输出频率为4K
Tone2k EQU 0C0H ;音频输出频率为2K
TIMEREN EQU 0CH ;时基输出使能
TIMERDIS EQU 08H ;时基输出禁能
CLRtime EQU 18H ;清零进基发生器
WDTEN EQU 0EH ;使能WDT溢出标志输出
WDTDIS EQU 0AH ;禁止WDT溢出标志输出
CLRWDT EQU 1CH ;清零WDT
IRQEN EQU 10H ;使能IRQ输出
IRQDIS EQU 00H ;禁止IRQ输出
FR1 EQU 40H ;设置时基输出1HZ,WDT溢出时间4s
;HT1621B控制位(液晶模块接口定义,用户根据自已的需要更改)
CS BIT P0.1 ;HT1621B片选
WRITE BIT P0.3 ;HT1621B写控制位
SDATA BIT P0.5 ;HT1621B数据线
;显示缓冲区(用户根据自已的需要更改变量的存储地址)
DISBUFFER EQU 34H ;显示缓冲区地址34H--43H(16字节)
;临时变量定义(不会破坏这些资源,只是临时占用,用户不要自行修改)
lcdbitcnt EQU 03H ;发送位计数器
lcdcommand EQU 02H ;发送命令缓冲器
lcdadr EQU 01H ;lcd显存指针
LCDBYTECNT EQU 04H ;发送字节数记数器
;===================================================================================
; 向HT1621B发送命令和数据模块
;软件包面向用户的界面程序:
; Send1621Com 发送命令子程序,命令ID为100+0型式 + 命令字
; Send1621ComB 发送命令子程序(B),命令ID为100+1型式 + 命令字
; HT1621DOWN 设置1621进行掉电工作方式
; INTI1621 初化1621,并打开LCD显示,用户可更改相应初化字,进行1621的不同设置。
; BrushLcd 刷新LCD显示,即将显示缓冲区的16字节数据发送到1621,从SEG0段开始。
; DISDPTR 将DPTR指向的程序存储器的数据(连续16字节)发送到1621显示。
;这此子程序都会自动保护所需的临时单元,所以占用较多的堆栈,用户要注意这一点。
;===================================================================================
;发送命令程序
;名称: Send1621Com
;描述: 向HT1621B发送控制命令,命令内容在LCDCOMMAND中。
;所发的命令类型为ID=100+0+命令,占用堆栈。
Send1621Com:
PUSH ACC
PUSH LCDBITCNT
ACALL INTI ;起动1621(即初化)
MOV LCDBITCNT,#04h
MOV A,#80h ;发送ID值100+0
ACALL sendb0
MOV A,LCDCOMMAND ;取得命令字
ACALL send1621byte ;发送到1621
SETB write
SETB cs
SETB sdata
POP LCDBITCNT
POP ACC
RET
;发送命令程序(B)
;名称: Send1621ComB
;描述: 向HT1621B发送控制命令,命令内容在LCDCOMMAND中。
;所发的命令类型为ID=100+1+命令,占用堆栈。
Send1621ComB:
PUSH ACC
PUSH LCDBITCNT
ACALL INTI ;起动1621(即初化)
MOV LCDBITCNT,#04h
MOV A,#90h ;发送ID值100+0
ACALL sendb0
MOV A,LCDCOMMAND
ACALL send1621byte
SETB write ;将SPI接口均置为高电平
SETB cs
SETB sdata
POP LCDBITCNT
POP ACC
RET
;HT1621B掉电模式
;使1621进行掉电模式,以降低功耗
HT1621DOWN:
PUSH LCDCOMMAND
MOV LCDCOMMAND,#SYSDIS ;关闭系统振荡器即进行掉电方式
ACALL Send1621Com
POP LCDCOMMAND
RET
;1621设置
;描述:进行1621的基本设置,偏压、背极、系统工作方式
;用户添加初化内容或更改设置内容。
INTI1621:
PUSH LCDCOMMAND
MOV LCDCommand,#bias
ACALL Send1621Com ;工作于1/3偏压,4背极
MOV LCDCommand,#X32K
ACALL Send1621Com ;系统时钟选择为外部时钟
MOV LCDCommand,#wdtdis
ACALL Send1621Com ;关闭看门狗
MOV LCDCommand,#timerdis
ACALL Send1621Com
MOV LCDCommand,#sysen ;启动1621系统振荡器
ACALL Send1621Com
MOV LCDCommand,#LCDON ;启动1621显示偏压发生器,启动显示
ACALL Send1621Com
POP LCDCOMMAND
RET
;刷新显示子程序
;名称:BrushLcd
;描述:把显示缓冲区DISBUFFER共16个单元的内容送到1621中
BrushLcd:
PUSH LCDBYTECNT
PUSH LCDADR
MOV LCDBYTECNT,#16 ;发送16个数据
MOV LCDADR,#DISBUFFER ;指向显示缓冲区
DISPLAY0:
LCALL SEND1621DATA ;调用发送数据子程序,从SEG0段开始
POP LCDADR
POP LCDBYTECNT
RET
;函数名:DISDPTR
;功能: 把DPTR指向的程序存贮器的16个字节内容直接送到1621的显示缓冲区内
;参数: DPTR-缓冲区指针
;返回值:无
DISDPTR:
PUSH 07H
PUSH 00H
PUSH 06H
PUSH ACC
MOV R7,#10H ;设置各指针及变量初值
MOV R0,#DISBUFFER ;先把数据读入显示缓冲区
MOV R6,#00
ICERRORCON:
MOV A,R6
MOVC A,@A+DPTR ;读取程序区的数据
MOV @R0,A ;放入显示缓冲区
INC R0
INC R6
DJNZ R7,ICERRORCON
ACALL BrushLcd ;输出显示
POP ACC
POP 06H
POP 00H
POP 07H
RET
;*******************************************************************
; 子程序
;用启尽量不要单独的调用这此子程序
;***********************************************
;************************************************
;发送数据程序
;名称: Send1621Data
;描述: 向HT1621B发送BYTECNT个数据(从SEG0开始发送)
; 数据在发送缓冲区中,缓冲区指针lcdadr.
;-----------------------------------------------
Send1621Data:
PUSH ACC
PUSH LCDBITCNT
PUSH LCDBYTECNT
PUSH LCDADR
ACALL INTI
MOV LCDBITCNT,#01H ;发送写1621RAM命令
MOV A,#80H ;发送1位数据
ACALL SENDB0
MOV A,#40H ;1621RAM地址设置为00H
ACALL SEND1621BYTE
MOV R1,LCDADR
SENDNEXT1:
MOV A,@R1 ;读取数据
ACALL SEND1621BYTE ;发送数据
INC R1
DJNZ LCDBYTECNT,SENDNEXT1
SETB WRITE
SETB CS
SETB SDATA
POP LCDADR
POP LCDBYTECNT
POP LCDBITCNT
POP ACC
RET
;************************************************
;1621初始化子程序
;即起动1621
;-----------------------------------------------
INTI:
CLR CS
SETB WRITE
NOP
CLR WRITE
NOP
RET

;******************************************************************
;发送字节数据子程序
;名称: Send1621Byte
;描述: 向HT1621B发送一个字节数据,数据在A中
;-----------------------------------------------
Send1621Byte:
PUSH LCDBITCNT
MOV lcdbitcnt,#08h ;发送8位数据位
ACALL SENDB0 ;调用发送数据位子程序
POP LCDBITCNT
RET
;******************************************************************
;发送位数据子程序
;名称: sendb0
;描述: 向HT1621B发送N位数据,数据在A中,N在LCDBITCNT中,从高位开始发送
;-----------------------------------------------
SENDB0:
PUSH ACC
PUSH PSW
PUSH LCDBITCNT
SENDB01:
RLC A
MOV SDATA,C ;先发送高位数据
SETB WRITE ;产生WR信号
NOP
NOP
CLR WRITE
NOP
NOP
DJNZ LCDBITCNT,SENDB01 ;未发送完,继续
POP LCDBITCNT
POP PSW
POP ACC
RET
;========================================================
;表格区
;ZY886C型LCD数字显示表(0-F),供用户转换使用。(以上程序不用此表)
LCDData:
DB 0FCH,60H,0DAH,0F2H,066H,0B6H,0BEH,0E0H,0FEH,0F6H,0EEH,3EH,1AH,7AH,9EH,8EH
;===============================================================
;
;以上程序是HT1621的通用程序,对不同的LCD只是其字模不一样而以。

 

台湾合泰(Holtek)中国区技术支持电话,上海盛扬:021-64855560,深圳盛扬: 0755-83465589,北京盛扬: 010-66410030 成都盛扬:028-66536590



产品留言


相关产品
合泰经典LCD驱动HT1621B HT1621B
液晶,数显LCD驱动HT1621B通用驱动演示程序 HT1621B的通用程序
上海图一实业有限公司
联系电话:021-65173783,65619492  传真电话:021-65366771
联系地址:上海市宝山区逸仙路1238弄逸仙华庭6号301-401室      邮 编:200439   粤ICP备08118721号   网站管理入口
 
主营产品:HT1621  HT1622  HT7130  时钟芯片HT1381  水族箱  烟雾报警器