产品信息搜索 资料下载搜索
  
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
新浪
电子查询网
世界电子元器件
电子元器件交易网

首页 >>> 产品目录 >>> HT1621应用实例 >>> HT48 MCU 对HT1621 LCD 控制器的使用
产品[HT48 MCU 对HT1621 LCD 控制器的使用]资料
如果您对该产品感兴趣的话,可以
产品名称: HT48 MCU 对HT1621 LCD 控制器的使用
产品型号: HT1621
产品展商: 上海图一实业有限公司
简单介绍
HT1621是一款128 个位元的LCD 控制器件,内部RAM 直接对应LCD 的显示单元。相应的HT1621软件使它适用于包括LCD 模块和显示子系统在内的多功能应用。主控制器与T1621 接口只需4 到5根线。内置的省电模式极大的降低了功耗。本文介绍用HT48R30A-1 单片机来控制HT1621,并介绍如何点亮及清除LCD 所有位元。
HT48 MCU 对HT1621 LCD 控制器的使用的详细介绍

HT48 MCU 对HT1621 LCD 控制器的使用
文件编码:HA0018s
介绍:
HT1621 是一款128 个位元的LCD 控制器件,内部RAM 直接对应LCD 的显示单元。相应的软件使它适用于包括LCD 模块和显示子系统在内的多功能应用。主控制器与HT1621 接口只需4 到5根线。内置的省电模式极大的降低了功耗。本文介绍用HT48R30A-1 单片机来控制HT1621,并介绍如何点亮及清除LCD 所有位元。
原理:
对于HT1621,操作之前应该给它发送标志码,表明要求工作在哪种状态。标志码的定义如下表:
操作 状态 标志码
读 数据 110
写 数据 101
读-修改-写数据 101
控制 命令 100
     为了点亮LCD,必须先给出两个控制指令:SYSTEM ENABLE 和LCD ON。SYSTEM ENABLE 指令码是:10000000001X(X 為 Don’t care bit)。LCD ON 指令码是:10000000011X(X 為 Don’t care bit)。操作结束可以用SYSTEM DISABLE 来关闭LCD。
     由于是串行通信,数据应该先出现在DATA INPUT 脚,然后给出一个写允许信号(WR),输入一位数据,接着输入第二位…直到全部写入。
对RAM 区不连续写数据过程是这样的:
1 0 1 A5 A4 A3 A2 A1 A0 D0 D1 D2 D3 结束位下一个过程先发送标志码101,表明下面要进行写操作。然后发送地址码A5~A0,用D0~D3 指定对应的位,就可以对LCD 相应的位元操作了。读的过程除了标志位不同,其余类似。连续读写时,给出起始地址,操作结束地址自动加一。
例程:
本例介绍如何点亮和清除LCD 全部位元。程序流程如下:系统初始化􀃆1621 启动􀃆清除LCD 全部位元􀃆点亮LCD 全部位元􀃆读出某一单元的值进行比较系统初始化
电路图:参照HT1621 的规格说明书
;1621driver.asm
;这个程序是用HT48R30A-1 去控制HT1621
;控制口的结构:
; PB1 -- datum
; PB2 -- WRB
; PB3 -- CSB
; PB4 -- RDB


; OSC : Ext. Crystal
; WDT clock source: Disable WDT
; input type PA: Sshmitt Trigger
; Pull-high PA: Pull-high PA
; Pull-high PB: Pull-high PB
; BZ/BZB : BZ ENABEL/BZB DISABLE
; Fsys: 4M
;注意:在写程序时,时序一定要给正确
include ht48r30a-1.inc
csb equ pb.3
csbc equ pbc.3
wrb equ pb.2
wrbc equ pbc.2
datum equ pb.1
datumc equ pbc.1
rdb equ pb.4
rdbc equ pbc.4
lig equ pc.3
;----------------------------
num_mem equ [7fh]
;----------------------------
;宏定义
;延迟宏, 延迟5 微秒
d_1 macro
jmp $+1
jmp $+1
nop
endm
;-----------
lcddriver .section 'data'
count db ? ;用作记录循环次数
code_datum db ? ;command code or memory datum bits
code_datum1 db ? ;only used in read_modify_write mode
mem_addr db ? ;memorty address for selecting segment
temp_da db ?
t_addr_h db ? ;just a buffer
;----------------------------
lock .SECTION 'CODE'


org 00h
jmp start
org 04h
reti
org 08h
reti
start:
clr pb ;Initial
set csb
clr pbc
set pbc.0
clr pc
clr pcc
clr intc
mov a, 50h
mov num_mem, a
mov a, 20h
mov mp0, a
clr_ram: ;initial ram
clr r0
inc mp0
sdz num_mem
jmp clr_ram
;----------------------------------------
ini_status:
mov a, 87h
mov tmrc, a
show_k:
set lig
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov a, 0e3h ;NORMAL
mov code_datum, a
call send_command
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov a, 01h ;SYS ENABLE
mov code_datum, a
call send_command
LO:


mov a, 029h ;4com;1/3bias
mov code_datum, a
call send_command
mov a, 3 ;LCD On
mov code_datum, a
call send_command
call clr_lcm ;cls lcd
jmp $+1
jmp $+1
call show_lcm ;light all dots
clr code_datum ;reading then writing in the same address
mov a, 4
mov mem_addr, a
call read
mov a, 07h
xor a, code_datum
snz z
jmp error
mov a, 2
mov code_datum, a
call send_command
jmp $+1
jmp start ;do it repeat
error:
jmp $
;******************************************
;Purpose : send command
;Parameter:
; code_datum : byte
;Return : none
;Modified : acc, status
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
send_command proc
clr CSB
clr datumC
set datum
clr WRB ;COMMAND ID '100'
d_1
set WRB ;1


nop
clr datum ;00
clr WRB
d_1
set WRB
nop
CLR WRB
d_1
set WRB
mov A, 8 ; send code
mov count, A
LOOP1:
clr datum
sz code_datum.7
set datum
rl code_datum
clr WRB
d_1
set WRB
sdz count
jmp loop1
clr WRB
d_1
set WRB
nop
set CSB ;close csb signal,not selecting the chip
ret
send_command endp
;-------------------------------
;Purpose : write datum to 1621
;Parameter:
; code_datum : byte
; mem_addr : byte
;Return : none
;Modified : acc, status
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
write:
clr CSB
clr datumc
set datum

clr WRB ;WRITE mode ID '101'
d_1
set WRB
clr datum
clr WRB
d_1
set WRB
set datum
clr WRB
d_1
set WRB
mov a, 6
mov count, a
writeloop1:
clr datum
sz mem_addr.5 ;sending memory address for selecting segment
set datum
clr WRB
d_1
set WRB
rl mem_addr
sdz count
jmp writeloop1
mov a, 4
mov count, a
writeloop2:
clr datum
sz code_datum.0 ;sending memory content for deciding comments's state
set datum
clr WRB
d_1
set WRB
rr code_datum
sdz count
jmp writeloop2
set CSB
ret
;-------------------------------------
;Purpose : read datum from 1621

;Parameter:
; mem_addr : byte
;Return :
; code_datum : byte
;Modified : acc, status
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
read proc
clr CSB
clr datumc
set datum
clr WRB ;READ mode ID '110'
d_1
set WRB
clr WRB
d_1
set WRB
clr datum
clr WRB
d_1
set WRB
mov a, 6
mov count, a
readloop1:
clr datum
sz mem_addr.5 ;sending memory address for selecting segment
set datum
clr WRB
d_1
set WRB
rl mem_addr
sdz count
jmp readloop1
set datumc
mov a, 4
mov count, a
readloop2:
clr RDB
d_1

set RDB
rr code_datum
clr code_datum.3
sz datum ;sending memory content for deciding comments's state
set code_datum.3
sdz count
jmp readloop2
mov a, 0fh
andm a, code_datum
set CSB
ret
read endp
;------------------------------------------
;Purpose : read datum from 1621, then write a datum in the same register
;Parameter:
;mem_addr : byte
;Return : none
;Modified : acc, status
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rm_write proc
clr CSB
clr datumc
set datum ;READ-MODIFY-WRITE mode ID ‘101’
clr WRB
d_1
set WRB
clr datum
clr WRB
d_1
set WRB
set datum
clr WRB
d_1
set WRB
mov a, 6
mov count, a
rmwloop1:

clr datum
sz mem_addr.5 ;sending memory address for selecting segment
set datum
clr WRB
d_1
set WRB
rl mem_addr
sdz count
jmp rmwloop1
set datumc
mov a, 4
mov count, a
rmwloop2:
clr RDB
d_1
set RDB
rr code_datum1
clr code_datum1.3
sz datum ;read memory content out
set code_datum1.3
sdz count
jmp rmwloop2
mov a, 0fh
andm a, code_datum1
clr datumc
mov a, 4
mov count, a
mov a, temp_da
andm a, code_datum
rmwloop3:
clr datum
sz code_datum.0 ;sending memory content for deciding comments's state
set datum
clr WRB
d_1
set WRB
rr code_datum
sdz count
jmp rmwloop3
set CSB

ret
rm_write endp
;------------------------------
show_lcm:
mov a, 00h
mov t_addr_h, a
mov a, 31h
mov num_mem, a
clr_n1:
mov a, t_addr_h
mov mem_addr, a
mov a, 07h
mov code_datum, a
call write
inc t_addr_h
sdz num_mem
jmp clr_n1
ret
;------------------------------
clr_lcm:
mov a, 00h
mov t_addr_h, a
mov a, 31h
mov num_mem, a
clr_n:
mov a, t_addr_h
mov mem_addr, a
mov a, 0h
mov code_datum, a
call write
inc t_addr_h
sdz num_mem
jmp clr_n
ret

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



产品留言


相关产品
HT48 MCU 对HT1621 LCD 控制器的使用 HT1621
上海图一实业有限公司
联系电话:021-65173783,65619492  传真电话:021-65366771
联系地址:上海市宝山区逸仙路1238弄逸仙华庭6号301-401室      邮 编:200439   粤ICP备08118721号   网站管理入口
 
主营产品:HT1621  HT1622  HT7130  时钟芯片HT1381  水族箱  烟雾报警器