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

📄 tester.a51

📁 how to use character display (2 lines)
💻 A51
字号:
;Zdrojak pro testovani displeju Elatec
;Napsano pro ATMEL 89C2051
;pripojeny krystal 8MHz

RS	equ	p3.5	;pin command / data select
RW	EQU	P3.4	;data read/write
ENB	equ	p3.7	;enable signal

RAD1	EQU 80h		;1 radek displeje
RAD2	EQU 0C0h	;2 radek displeje
RAD3	EQU 90h		;3 radek displeje
RAD4	EQU 0d0h	;4 radek displeje

			org 	0
			jmp	start

	
lcdbusy:					;test LCD na pripravenost
			push acc		;uschova akumulator
lcd_b:			setb rw			;R/W - '1'
			clr rs			;RS - '0'
			setb enb		;E - '1' enable po dobu min 220ns 
			mov acc,p1		;do akumulatoru data z displeje
			clr enb			;E - '0'
			jb acc.7,lcd_b		;test BF jestli 1 skok na nove testovani
			pop acc			;obnov akumulator
			ret
;----------------------------------------------------------------
wait_power:					; ceka 15ms po zapnuti napajeni
			mov r0,#28h		;40x255=10200 * 1.5us = 15.3ms
wait_next:		mov r1,#0		;r1=0
			djnz r1,$
			djnz r0,wait_next	;cyklus cekani 15ms
			ret			
;----------------------------------------------------------------
wait_init:					; ceka 4.2ms po inicializaci
			mov r0,#0bh		;11x255=2805 * 1.5us = 4.2ms
wait_next1:		mov r1,#0		;r1=0
			djnz r1,$
			djnz r0,wait_next1	;cyklus cekani 4.2ms
			ret			

;----------------------------------------------------------------
lcd_drive:					;posle ridici kod na displej
			call lcdbusy		;test BF busy flag
			clr rw			;R/W - '0'
			clr rs			;RS - '0'
			mov p1,a		;ridici znak na port P1
			setb enb		;E - '1' enable po dobu min 220ns 
			clr enb			;E - '0' 
			ret
;-----------------------------------------------------------------
lcd_disp:					;zobrazi znak na displej
			call lcdbusy		;test BF busy flag
			clr rw			;R/W - '0'
			setb rs			;RS - '1'
			mov p1,a		;zobrazovany znak na port P1
			setb enb		;E - '1' enable po dobu min 220ns 
			clr enb			;E - '0' 
			ret
;----------------------------------------------------------------
lcd_string:
			clr a			;nuluje A
			movc a,@a+DPTR		;do A znak na adrese DPTR
			jz exit			;ukonceni kdyz je v A 0h
			acall lcd_disp		;zobraz znak v A
			inc DPTR		;zvetsi ukazatel DPTR o 1
			sjmp lcd_string		;dalsi znak
exit:			ret

;---------------------------------------------------------
start:						;zacatek programu
			call wait_power		;cekani 15ms po zapnuti napajeni
			mov	a,#38h		;8 bits, 2 rows, 5 x 7 dots
			call lcd_drive		;posle ridici znak na displej
			call wait_init		;ceka dalsich 4,2ms

			mov	a,#08h		; display off,cursor off,no blink
			call lcd_drive		
			mov	a,#01h		; clear display
			call lcd_drive
			call wait_init		;cekej na clear
			
			mov	a,#0Ch		; display on, cursor off
			call lcd_drive
			mov	a,#14h		; auto-increment, shift cursor
			call lcd_drive

			mov	a,#RAD1		;pozice 0, 1 radek
			acall lcd_drive
	
			mov	DPTR,#Text1	;do DPTR adresu 1 znaku sringu Text1
			acall lcd_string	;zobrazi cely string na 1 radek
	
			mov	a,#RAD2		;pozice 0, 2 radek
			acall lcd_drive
			mov	dptr,#Text2	;do DPTR adresu 1 znaku sringu Text2
 			acall lcd_string	;zobrazi cely string na 2 radek

			mov	a,#RAD3		;pozice 0, 3 radek
			acall lcd_drive
			mov dptr,#Text3		;do DPTR adresu 1 znaku sringu Text2
 			acall lcd_string	;zobrazi cely string na 3 radek

			mov	a,#RAD4		;pozice 0, 4 radek
			acall lcd_drive
			mov dptr,#Text4		;do DPTR adresu 1 znaku sringu Text2
 			acall lcd_string	;zobrazi cely string na 4 radek
			

			jmp	$

Text1:	db 'Tester Displeje',00h
Text2:	db 'Verze 1.0 ready.',00h
Text3:	db 'Toto je 3 radek.',00h
Text4:	db 'Toto je 4 radek.',00h	
			
			end

⌨️ 快捷键说明

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