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

📄 yibupstc9.asm

📁 LED显示屏驱动程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;*************************************
;*********异步屏控制卡驱动程序V1.0****
;*********     南京东大智能       ****
;*************************************
;调试过程:1、能显示固定汉字及图片。
;          2、设置任意内码,调用字库显示汉字
;          3、加入通信程序,显示汉字
;          4、测试调整
;             修改了接受数据是控制数据长度070111
	clk	equ	p1.0
	stb	equ	p1.1
	datr1	equ	p1.2
	datr2	equ	p1.3
	l0	equ	p1.4
	l1	equ	p1.5
	l2	equ	p1.6
	;noe	equ	p1.3
	;hoe	equ	p0.0
	;noe2    equ	p0.1
        ;hoe2	equ	p0.2
	oe1	equ	p1.7
	oe2	equ	p3.2
;*************************************
	p4	equ	0e8h
	led1	equ	p4.0
	led2	equ	p4.1
	led3	equ	p4.2
	led4	equ	p4.3
;*************************************
	dat2	equ	p3.3
	clk2	equ	p3.4
	set2	equ	p3.5
;*************************************
	org	0000h
	ljmp	main
	org	23h	                                    ;串行中断入口地址
	jmp	com_int	                                    ;串行中断服务程序
        	
main:	nop
	nop
	cpl	led2	                                    ;喂狗
	;mov	p1, #00h
	mov	20h, #00h	                            ;标志积存器
	;//00h:串口接收到数据包标志,通知主程序处理数据
	;//01h:清屏标志
	mov	21h, #00h	                            ;从字库来的数据进行反转用积存器
	mov	28h, #00h	                            ;合并aciic暂存 
	mov	29h, #00h	                            ;合并aciic暂存 
	mov	2ah, #0cdh	                            ;串口数据接收指针
	mov	2bh, #00h	                            ;串口数据接收缓冲
	mov	2ch, #00h
	mov	2fh, #0fh	                            ;595控制线输出。
	;*****************
	mov	30h, #00h
	mov	31h, #01h
	mov	32h, #02h
	mov	33h, #03h
	mov	34h, #04h
	mov	35h, #05h
	mov	36h, #06h
	mov	37h, #07h
	mov	38h, #08h
	mov	39h, #09h
	mov	3ah, #0ah
	mov	3bh, #0bh
	mov	3ch, #0ch
	mov	3dh, #0dh
	mov	3eh, #0eh
	mov	3fh, #0fh
	;40h---5bh   :接收数据缓冲扩大改为0cdh--0f2h
	mov	40h, #00h	                            ;空闲计数低位
	mov	41h, #00h	                            ;空闲计数高位
	;5ch:   暂存1  
	;5dh:   暂存2
	;5eh:接收校验和
	;5fh:发送校验和
	mov	sp, #60h
	lcall	comm	                                    ;初始化串口
	lcall	intdata	                                    ;初始化接收数据缓冲
;**************************************************
	cpl	led2
	lcall	zhuanyi	                                    ;根据串口读到的内码,从汉字库中读出字模数据,
                                     ;并依次存储在ram中 .
	lcall	nbsjcl	                                    ;上屏内部数据处理,把字库转换成直接显示的数据,
                                     ;加快扫描的速度。
	cpl	led2
	lcall	nbsjclx	                                    ;下屏内部数据处理,把字库转换成直接显示的数据,
                                     ;加快扫描的速度。
	lcall	com_send	                            ;串口发送数据
;************************************
main1:	nop
	cpl	led1
	cpl	led2
	;lcall   zhuanyi              ;根据串口读到的内码,从汉字库中读出字模数据,
                                     ;并依次存储在ram中 .
        ;lcall   nbsjcl               ;上屏内部数据处理,把字库转换成直接显示的数据,
                                     ;加快扫描的速度。
        ;lcall   nbsjclx              ;下屏内部数据处理,把字库转换成直接显示的数据,
                                     ;加快扫描的速度。
	;lcall	dqzimo	             ;读取字模程序
	lcall	com_cl	                                    ;串口数据处理
	                             ;串口数据处理数据包合法后要存储,否则不存储。
	;lcall	jsdizhi	             ;计算字摸地址(16)
	lcall	kongxian	                            ;计数程序,在串口中断时清零,计数到一定值后
	                             ;清串口数据处理标志和指针(070111)
	jb	01h, qingp	                            ;若清屏标志有效则不执行显示程序
	lcall	xianshis	                            ;调用显示上排
	lcall	xianshix	                            ;调用显示下排
qingp:	nop
	ljmp	main1
;**************************************************
kongxian:	nop
	inc	40h
	mov	a, 40h
	cjne	a, #1fh, exitkx
	mov	40h, #00h
	clr	00h	                                    ;串口接收到数据包标志,通知主程序处理数据
	mov	2ah, #0cdh	                            ;串口数据接收指针

	inc	41h
	mov	a, 41h
	cjne	a, #0f0h, exitkx
	mov	41h, #00h
	nop
	setb	01h	                                    ;设置清屏标志
         
exitkx:	nop
	ret
;**************************************************
;初始化接收缓冲区
intdata:	nop
	mov	r0, #0cdh
	mov	@r0, #0cch	                            ;启示字
	inc	r0
	mov	@r0, #26h	                            ;除头尾外字节数
	inc	r0
	mov	@r0, #01h	                            ;显示屏地址
	inc	r0
        ;C4 CF BE A9 B6 AB B4 F3 D6 C7 C4 DC
        ;D6 C7 C4 DC BB AF CD A3 B3 B5 B3 A1 CF B5 CD B3 
	mov	@r0, #0d6h	                            ;汉字1
	inc	r0
	mov	@r0, #0c7h	                            ;汉字1
	inc	r0
	mov	@r0, #0c4h	                            ;汉字2
	inc	r0
	mov	@r0, #0dch	                            ;汉字2
	inc	r0
	mov	@r0, #0bbh	                            ;汉字3
	inc	r0
	mov	@r0, #0afh	                            ;汉字3
	inc	r0
	mov	@r0, #0cdh	                            ;汉字4
	inc	r0
	mov	@r0, #0a3h	                            ;汉字4
	inc	r0
	mov	@r0, #0b3h	                            ;汉字5
	inc	r0
	mov	@r0, #0b5h	                            ;汉字5
	inc	r0
	mov	@r0, #0b3h	                            ;汉字6
	inc	r0
	mov	@r0, #0a1h	                            ;汉字6
	inc	r0
	mov	@r0, #0cfh	                            ;汉字7
	inc	r0
	mov	@r0, #0b5h	                            ;汉字7
	inc	r0
	mov	@r0, #0cdh	                            ;汉字8
	inc	r0
	mov	@r0, #0b3h	                            ;汉字8
	inc	r0
        ;D6 C7 C4 DC BB AF CD A3 B3 B5 B3 A1 CF B5 CD B3
        ;BF D5 32 33 CE BB A4 A2 A4 A1 BF D5 32 36 CE BB
        ;00 00 C4 CF BE A9 B6 AB B4 F3 D6 C7 C4 DC 00 00 
	mov	@r0, #00h	                            ;汉字9
	inc	r0
	mov	@r0, #00h	                            ;汉字9
	inc	r0
	mov	@r0, #0c4h	                            ;汉字10
	inc	r0
	mov	@r0, #0cfh	                            ;汉字10
	inc	r0
	mov	@r0, #0beh	                            ;汉字11
	inc	r0
	mov	@r0, #0a9h	                            ;汉字11
	inc	r0
	mov	@r0, #0b6h	                            ;汉字12
	inc	r0
	mov	@r0, #0abh	                            ;汉字12
	inc	r0
	mov	@r0, #0b4h	                            ;汉字13
	inc	r0
	mov	@r0, #0f3h	                            ;汉字13
	inc	r0
	mov	@r0, #0d6h	                            ;汉字14
	inc	r0
	mov	@r0, #0c7h	                            ;汉字14
	inc	r0
	mov	@r0, #0c4h	                            ;汉字15
	inc	r0
	mov	@r0, #0dch	                            ;汉字15
	inc	r0
	mov	@r0, #00h	                            ;汉字16
	inc	r0
	mov	@r0, #00h	                            ;汉字16
	inc	r0
        ;
	mov	@r0, #2ah	                            ;备用字
	inc	r0
	mov	@r0, #65h	                            ;除头尾外字节和
	inc	r0
	mov	@r0, #55h	                            ;结束字

	ret
;**************************************************
;根据串口读到的内码,从汉字库中读出字模数据,
;并依次存储在ram中 .
zhuanyi:	nop
        ;处理第1个字
	mov	r0, #0d0h	                            ;指向接收数据首
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #00h	                            ;第几个字标志
	mov	5dh, #20h	                            ;第几个字标志	
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram  2000h-201fh
        ;处理第2个字
	mov	r0, #0d2h
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #20h	                            ;第几个字标志
	mov	5dh, #20h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram  2000h-201fh
        ;处理第3个字
	mov	r0, #0d4h
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #40h	                            ;第几个字标志
	mov	5dh, #20h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram 
	;处理第4个字
	mov	r0, #0d6h
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #60h	                            ;第几个字标志
	mov	5dh, #20h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram 
	;处理第5个字
	mov	r0, #0d8h
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #80h	                            ;第几个字标志
	mov	5dh, #20h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram 
	;处理第6个字
	mov	r0, #0dah
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #0a0h	                            ;第几个字标志
	mov	5dh, #20h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram 
	;处理第7个字
	mov	r0, #0dch
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #0c0h	                            ;第几个字标志
	mov	5dh, #20h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram 
	;处理第8个字
	mov	r0, #0deh
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #0e0h	                            ;第几个字标志
	mov	5dh, #20h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram 
	;(第二排)
	;处理第9个字
	mov	r0, #0e0h
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #00h	                            ;第几个字标志
	mov	5dh, #21h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram 
	;处理第10个字
	mov	r0, #0e2h
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #20h	                            ;第几个字标志
	mov	5dh, #21h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram 
        ;处理第11个字
	mov	r0, #0e4h
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #40h	                            ;第几个字标志
	mov	5dh, #21h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram 
	;处理第12个字
	mov	r0, #0e6h
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #60h	                            ;第几个字标志
	mov	5dh, #21h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram 
	;处理第13个字
	mov	r0, #0e8h
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #80h	                            ;第几个字标志
	mov	5dh, #21h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram 
	;处理第14个字
	mov	r0, #0eah
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #0a0h	                            ;第几个字标志
	mov	5dh, #21h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram 
	;处理第15个字
	mov	r0, #0ech
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #0c0h	                            ;第几个字标志
	mov	5dh, #21h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram 
	;处理第16个字
	mov	r0, #0eeh
	mov	a, @r0
	mov	r2, a
	inc	r0
	mov	a, @r0
	mov	r3, a
	mov	5ch, #0e0h	                            ;第几个字标志
	mov	5dh, #21h	                            ;第几个字标志
	lcall	dqzimo	                                    ;读取字模到内存程序
	lcall	cunram	                                    ;存储到ram 
	nop
	ret
;**************************************************
;读取字模程序
dqzimo:	nop
        ;78h--  79h-- 7ah--  7bh--  7ch-- 7dh--7eh--7fh--
	clr	78h	                                    ;RS485  0--JIESHOU
	setb	79h	                                    ;ROM-CE'
	setb	7ah	                                    ;RAM-CE2'
	setb	7bh	                                    ;RAM-CE1'
	CLR	7ch	                                    ;A19
	CLR	7dh	                                    ;A18
	CLR	7eh	                                    ;A17
	CLR	7fh	                                    ;A16
        ;mov   2fh,#0fh                 ;位选控制字
	mov	a, 2fh
	;lcall	send_kz

        ;*********************************************
        ;判断r2,r3的值,若是00h则输出全为00h
        ;判断r2,r3的值,若是小于a0h则分别输出r2,r3的字库
	mov	a, r2
	clr	cy
	cjne	a, #0a0h, bd1	                            ;判断与#0a0h大小
bd1:	jnc	clhanzi	                                    ;若r2大于0a0h,则转入汉字处理
	cjne	a, #00h, smz1	                            ;判断r2是否=0
	mov	a, r3
	cjne	a, #00h, smz1	                            ;判断r3是否=0

⌨️ 快捷键说明

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