⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ht1621.asm

📁 ht-1261液晶显示驱动使用方法
💻 ASM
字号:
;===============================================
;TH1621
;时间:06.11.18
;编程:锦扬科技 黄春华
;=================================================


steppin equ 	p1.5   ;步进设置,用于控制显示进程

_cs 	equ 	p1.3
_rd 	equ 	p1.2
_wr 	equ 	p1.1
data_pin equ 	p1.0   ;定义MCU与HT1621的连接口

dispd 	equ 	40h    ;放置显示的数据,com0-com3
dispa 	equ 	41h    ;放置显示的地址,seg0-seg31
comname equ 	42h    ;放置命令ID码
comcode equ 	43h    ;放置命令操作数(command code)
;------------------------------------
	org 00h
 	jmp start
	
;-----------------------
	org 30h
start:
	setb 	_cs
	setb 	_rd
	setb 	_wr
	setb 	data_pin ;将各个脚定义为高电平
	call 	initial ;调用初始化程式,设置好TH1621使用的参数,否则可能没法正常显示

;----------------------------------
test:	; 一个测试的例子
test1: 	;这是一个全显示的子程式
	mov 	dispa,#00h	; 将显示的地址设定为0,即选择SEG0这条线
	mov 	dispd,#0ffh	; 将显的数据全部设定为1,事实上只占用了其中的4个,即com0-com3
				;全为1
test11:
	call 	writedisp 	;调用显示程式
	inc 	dispa 		;将地址加1,如果原来为seg0,则现在为seg1被选择
	mov 	a,dispa
	cjne 	a,#32,test11 	;是否所有的seg都被选择完

	call 	delay
	call 	delay
;	call 	step
	
test100: ;这是一个全不显示的子程式,与上在的比较,仅给DISPD中的值不同
	mov 	dispa,#00h
	mov 	dispd,#00h
test1001:
	call 	writedisp
	inc 	dispa
	mov 	a,dispa
	cjne 	a,#32,test1001

	call 	delay
	call 	delay
;	call 	step
	
test2: ;这是一个显示一部分的子程式
	mov 	r3,#22 	;将要显示22个图案,实际上只有11个(点亮,不点亮各1)
	mov 	dptr,#address
test21:
	mov 	a,#00h
	movc 	a,@a+dptr
	mov 	dispa,a
	inc 	dptr
	mov 	a,#00h
	movc 	a,@a+dptr
	mov 	dispd,a
	inc 	dptr
	call 	writedisp
	call 	delay
	call 	delay
	djnz 	r3,test21

address:
db 00h,02h;点亮 seg0与com1对应的图案,前面为地址,后面为数据,下同
db 00h,00h;不点亮

db 00h,01h;点亮 seg0与com0对应的图案
db 00h,00h

db 01h,01h
db 01h,00h

db 01h,02h
db 01h,00h

db 02h,02h
db 02h,00h

db 02h,01h
db 02h,00h

db 03h,01h
db 03h,00h

db 03h,02h
db 03h,00h

db 04h,02h
db 04h,00h

db 04h,01h
db 04h,00h

db 05h,01h
db 05h,00h


jmp $
;--------------------------------
writedisp:
	mov 	comname,#00000101b;write data command
	clr 	_cs ;从时序图中可看出,要/CS为低电平才可对HT1621进行操作
	call 	writen
	call 	writea
	call 	writed
	setb 	_cs
	ret
;---------------------------------
delay:
	mov 	r7,#200
delay1:
	mov 	r6,#248
	djnz 	r6,$
	djnz 	r7,delay1
	ret
;--------------------------------------
step: 
	jb 	steppin,$
	call 	delay
	jb 	steppin,step
;jnb steppin,$
	ret

;------------------------------------------------
initial:
	clr 	_cs
	mov 	comname,#00000100b ;command
	call 	writen
	mov 	r4,#9
	mov 	dptr,#initaltab
initial1:
	mov 	a,#00h
	movc 	a,@a+dptr
	mov 	comcode,a
	call 	writec
	inc 	dptr
	djnz 	r4,initial1
	setb 	_cs
	ret
	
initaltab:
db 	0e3h	;NORMAL
db	01h	;;SYS ENABLE
db	02h	;4com;1/3bias
db	03h	;;LCD On
db	04h	;Disable time base output
db	05h	;Disable WDT time-out flag output
db	08h	;Turn off tone outputs
db	18h	;System clock source, on-chip RC oscillator
db	29h	;1/3bias 4commons
db	80h 	;Disable IRQ output

;------写入地址---------------------------
writea:;请参考时序图来看此程式
	mov 	r5,#6;
	mov 	a,dispa
	rl 	a
	rl 	a
writea0:
	clr 	_wr
	rlc 	a
	mov 	data_pin,c
	setb 	_wr
	djnz 	r5,writea0
	ret

;---------------------------写入数据--------------------------
writed:		;请参考时序图来看此程式
	mov 	r5,#4

	mov 	a,dispd
writed0:
	clr 	_wr
	rrc 	a
	mov 	data_pin,c
	setb 	_wr
	djnz 	r5,writed0
	ret
	
;----------写入命令ID-----------------
writen:		;请参考时序图来看此程式
	mov 	r5,#3
	mov 	a,comname
	rlc 	a
	rlc 	a
	rlc 	a
	rlc 	a
	rlc 	a
writen0:
	clr 	_wr
	rlc 	a
	mov 	data_pin,c
	setb 	_wr
	djnz 	r5,writen0
	ret
;---------写入命令代码-------------------------
writec:		;请参考时序图来看此程式,注意HT1621的格式是要9个操作数,最后的一个是没有用的
	mov 	r5,#9
	mov 	a,comcode
writec0:
	clr 	_wr
	rlc 	a
	mov 	data_pin,c
	setb 	_wr
	djnz 	r5,writec0
	ret
;-----------------------------------------------------------
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -