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

📄 ningh320.asm

📁 北京宁河电子提供的单片机驱动台湾群创的彩色TFT屏
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;立即数
black           equ     0       ;颜色字节0,1位是蓝色4级灰度;2,3,4位是绿色8级灰度
blue            equ     03h
green           equ     1ch     ;5,6,7位是红色8级灰度
blueness        equ     1fh     ;三位表示灰度由低到高分别为000,001,010,011,100,101,110,111
red             equ     0e0h
pink            equ     0e3h
yellow          equ     0fch
white           equ     0ffh
;以上表示8种颜色的最高灰度

addr_wda	equ	0000h	;写数据到LCD
addr_rda	equ	0000h
addr_wcol	equ	0200h;0001h	;写LCD列号
addr_wrow	equ	0100h;0002h	;写LCD行号
addr_wop        equ     0300h           ;写操作码
sp_stack	equ	60h     ;堆栈指针

;标志位
flag_cir	equ	01h	;画圆时用位标志区第二个字节
radw_0          equ	08h
radw_1		equ	09h
radw_2		equ	0ah
radw_3		equ	0bh
radw_4		equ	0ch
radw_5		equ	0dh
radw_6		equ	0eh
radw_7		equ	0fh

;寄存器
bit_byte        equ     22h     ;操作象素点时的标志位

xstal		equ	24h	;x起始坐标低字节
xstah		equ	25h	;x起始坐标高字节
ystal		equ	26h	;y起始坐标低字节
ystah		equ	27h	;y起始坐标高字节
xendl		equ	28h	;x终止坐标低字节
xendh		equ	29h	;x终止坐标高字节
yendl		equ	2ah	;y终止坐标低字节
yendh		equ	2bh	;y终止坐标高字节
d_xl		equ	2ch	;x差值低字节
d_xh		equ	2dh	;x差值高字节
d_yl		equ	2eh	;y差值低字节
d_yh		equ	2fh	;y差值高字节
;errl		equ	30h	;误差值低字节
;errh		equ	31h	;误差值高字节

cirxl		equ	30h
cirxh		equ	31h
ciryl		equ	32h
ciryh		equ	33h
rad		equ	34h
radw		equ	21h
radf		equ	20h
arcx1		equ	35h
arcy1		equ	36h
arcx2		equ	37h
arcy2		equ	38h
errl		equ	39h
errh		equ	3ah
color           equ     3bh
char_byte	equ	3ch	;写汉字时暂存要写入的单字节字模
char_num	equ	3dh	;一个汉字要写入char_byte32次(16*16)
char_num1	equ	3eh
bak_char_num    equ     3fh
num_byte	equ	46h	;一次操作LCD的数据12字节记数器
auxr            equ     8eh
		org	0000h
		sjmp	main
		org	0040h
main:		mov	sp,#sp_stack
                call    initial
loop:           mov     dptr,#addr_wop  ;当前显示页为0页,当前读写页为0页
                mov     a,#0
                movx    @dptr,a
		mov	r5,#6
ww001:        call	delay_100ms	;延时4秒钟
		djnz	r5,ww001
loop2:          mov     dptr,#addr_wop
                mov     a,#0
                movx    @dptr,a
                call	photo1
		call	photo2
		call	photo3
                mov     dptr,#addr_wop  ;当前显示页为0页,当前读写页为0页
                mov     a,#11h
                movx    @dptr,a
		call	photo4
;sjmp loop
                call    photo5

                sjmp    loop
                mov     dptr,#addr_wop  ;当前显示页为0页,当前读写页为0页
                mov     a,#00h
                movx    @dptr,a
		call	photo1
                mov     dptr,#addr_wrow
                movx    @dptr,a
loop1:          call    photo5
                sjmp    loop1


photo5:         mov     dptr,#addr_wop  ;当前显示页为0页,当前读写页为0页
                mov     a,#0
                movx    @dptr,a
                mov     color,#black
                call    clr_lcd
                mov     xstah,#0
                mov     xstal,#48
                mov     ystah,#0
                mov     ystal,#127
                mov     dptr,#picture1
                call    disp_picture

                mov     xstah,#0
                mov     xstal,#176
                mov     ystah,#0
                mov     ystal,#127
                mov     dptr,#picture2
                call    disp_picture

                mov     xstah,#1
                mov     xstal,#30h
                mov     ystah,#0
                mov     ystal,#127
                mov     dptr,#picture1
                call    disp_picture

                mov     xstah,#0
                mov     xstal,#48
                mov     ystah,#0
                mov     ystal,#239
                mov     dptr,#picture2
                call    disp_picture

                mov     xstah,#0
                mov     xstal,#176
                mov     ystah,#0
                mov     ystal,#239
                mov     dptr,#picture1
                call    disp_picture

                mov     xstah,#1
                mov     xstal,#30h
                mov     ystah,#0
                mov     ystal,#239
                mov     dptr,#picture2
                call    disp_picture

		mov	r5,#200
photo51:        call	delay_100ms	;延时4秒钟
		djnz	r5,photo51
		mov	r5,#200
photo52:        call	delay_100ms	;延时4秒钟
		djnz	r5,photo52

		ret

disp_picture:   clr     a
                movc    a,@a+dptr
                mov     r7,a
                inc     dptr
                clr     a
                movc    a,@a+dptr
                mov     r6,a
                inc     dptr
disp_p0:        push    dph
                push    dpl
                mov     a,ystal
                mov     dptr,#addr_wrow
                movx    @dptr,a
                mov     a,xstah
                mov     dptr,#addr_wcol
                movx    @dptr,a
                mov     a,xstal
                movx    @dptr,a
                pop     dpl
                pop     dph
                mov     r0,#80h
                mov     r5,#128
disp_p1:        clr     a
                movc    a,@a+dptr
                mov     @r0,a
                inc     dptr
                inc     r0
                djnz    r5,disp_p1

                push    dph
                push    dpl
                mov     dptr,#addr_wda
                mov     r5,#128
                mov     r0,#80h
disp_p2:        mov     a,@r0
                movx    @dptr,a
                inc     r0
                djnz    r5,disp_p2
                pop     dpl
                pop     dph
                dec     ystal
                djnz    r7,disp_p0
                ret

clr_ram:        mov     r0,#08h
                mov     r7,#40
clr_ram1:       mov     @r0,#0
                inc     r0
                djnz    r7,clr_ram1
                ret

clr_lcd:        mov     r6,#0
clr_lcd1:       mov     dptr,#addr_wrow
                mov     a,r6
                movx    @dptr,a
                mov     dptr,#addr_wcol
                mov     a,#0h
                movx    @dptr,a
                movx    @dptr,a
                mov     r7,#60
                mov     a,color
                mov     dptr,#addr_wda
clr_lcd2:       movx    @dptr,a
                movx    @dptr,a
                movx    @dptr,a
                movx    @dptr,a
                movx    @dptr,a
                movx    @dptr,a
                movx    @dptr,a
                movx    @dptr,a
                djnz    r7,clr_lcd2
                inc     r6
                mov     a,r6
                cjne    a,#234,clr_lcd1
                ret

initial:        mov	p0,#0ffh
		mov	p1,#0ffh
		mov	p2,#0ffh
		mov	p3,#0ffh
                call    clr_ram
		mov	r5,#10
initial1:	call	delay_100ms
		djnz	r5,initial1
                mov     auxr,#03h
                mov     dptr,#addr_wop
                mov     a,#0
                movx    @dptr,a
init01:         mov     color,#blue
init0:          call    clr_lcd
                ret

delayy:         push    07h
                push    06h
                mov	r3,#4
delayy1:        call    delay_100ms
		djnz	r3,delayy1
                pop     06h
                pop     07h
                ret

line:           clr     c
                mov     a,#233
                subb    a,ystal
                mov     ystal,a
                clr     c
                mov     a,#233
                subb    a,yendl
                mov     yendl,a
line01:          mov	errl,#0		;起始坐标双字节(xsta,ysta),终止坐标双字节(xend,yend)
		mov	errh,#0
		mov	a,yendl
		clr	c
		subb	a,ystal
		mov	d_yl,a
		mov	a,yendh
		subb	a,ystah
		mov	d_yh,a
		jnc	line1
line0:		mov	a,yendl
		xch	a,ystal
		mov	yendl,a
		mov	a,yendh
		xch	a,ystah
		mov	yendh,a
		mov	a,xendl
		xch	a,xstal
		mov	xendl,a
		mov	a,xendh
		xch	a,xstah
		mov	xendh,a
		sjmp	line01
line1:		call	dotw
		mov	a,xendl
		clr	c
		subb	a,xstal
		mov	d_xl,a
		mov	a,xendh
		subb	a,xstah
		mov	d_xh,a
		jc	line3
		mov	a,d_yh
		cjne	a,d_xh,line2
		mov	a,d_yl
		cjne	a,d_xl,line2
		sjmp	rate1
line2:		jnc	line21
		sjmp	rate1
line21:		jmp	rate2
line3:		mov	a,xstal
		clr	c
		subb	a,xendl
		mov	d_xl,a
		mov	a,xstah
		subb	a,xendh
		mov	d_xh,a
		cjne	a,d_yh,line4
		mov	a,d_xl
		cjne	a,d_yl,line4
line4:		jc	line5
		jmp	rate3
line5:		jmp	rate4
;**********************************k=0-1即d_y<=d_x时
rate1:		mov	a,ystah
		cjne	a,yendh,rate10
		mov	a,ystal
		cjne	a,yendl,rate10
		sjmp	rate11
rate10:		mov	a,errh
		jb	acc.7,rate12
		mov	a,ystal
		add	a,#1
		mov	ystal,a
		mov	a,ystah
		addc	a,#0
		mov	ystah,a
rate11:		mov	a,xstal
		add	a,#1
		mov	xstal,a
		mov	a,xstah
		addc	a,#0
		mov	xstah,a
		mov	a,errl
		add	a,d_yl
		mov	errl,a
		mov	a,errh
		addc	a,d_yh
		mov	errh,a
		clr	c
		mov	a,errl
		subb	a,d_xl
		mov	errl,a
		mov	a,errh
		subb	a,d_xh
		mov	errh,a
		sjmp	rate13
rate12:		mov	a,xstal
		add	a,#1
		mov	xstal,a
		mov	a,xstah
		addc	a,#0
		mov	xstah,a
		mov	a,errl
		add	a,d_yl
		mov	errl,a
		mov	a,errh
		addc	a,d_yh
		mov	errh,a
rate13:		call	dotw
		mov	a,xstal
		cjne	a,xendl,rate10
		mov	a,xstah
		cjne	a,xendh,rate10
		ret
;*************************************k>1即d_y>d_x时
rate2:		mov	a,errh
		jb	acc.7,rate21
		mov	a,ystal
		add	a,#1
		mov	ystal,a
		mov	a,ystah
		addc	a,#0
		mov	ystah,a
		clr	c
		mov	a,errl
		subb	a,d_xl
		mov	errl,a
		mov	a,errh
		subb	a,d_xh
		mov	errh,a
		sjmp	rate22
rate21:		mov	a,ystal
		add	a,#1
		mov	ystal,a
		mov	a,ystah
		addc	a,#0
		mov	ystah,a
		mov	a,xstal
		add	a,#1
		mov	xstal,a
		mov	a,xstah
		addc	a,#0
		mov	xstah,a
		mov	a,errl
		add	a,d_yl
		mov	errl,a
		mov	a,errh
		addc	a,d_yh
		mov	errh,a
		clr	c
		mov	a,errl
		subb	a,d_xl
		mov	errl,a
		mov	a,errh
		subb	a,d_xh
		mov	errh,a
rate22:		call	dotw
		mov	a,ystal
		cjne	a,yendl,rate2

⌨️ 快捷键说明

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