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

📄 main.asm

📁 通过实例实践LCD 驱动显示(以128DI0 为例)
💻 ASM
字号:

	;*****************************************************
	;文件说明
    ;创 建 人:杨宏伟
	;修 改 人:杨宏伟
	;创建日期:2004-01-01
	;最后更新:2004-10-28
	;描  述:FOR 128DI0,EM65565A,8位并行,模拟8080时序
	;*****************************************************

	;接口定义
	;*****************************************************
	CS1   BIT   P3.5			  ;片选控制端定义(低电平有效)
	RES   BIT   P3.4			  ;复位控制端定义(低电平有效)
	RS    BIT   P3.3			  ;指令、数据选择控制端定义
	WR1   BIT   P3.1			  ;写信号控制端定义
	RD1   BIT   P3.0			  ;读信号控制端定义
	MI    BIT   P3.7			  ;8080或6800选择

    ;*****************************************************

	
	ORG 0000H
	LJMP start		              ;程序跳转,转到标号为start

	ORG 0100h
	start:NOP
	CLR   CS1			          ;片选有效(置低)
	CLR   MI					  ;选择8080时序
	CLR   RES			          ;复位LCD,RES置低
	LCALL DELAY
	LCALL DELAY
	SETB  RES                     ;复位LCD完成
	LCALL DELAY


	;设置(置高)数据表头标志位(在位寻址区)
	;****************************************************
	SETB  20h                     ;全显
	SETB  21h                     ;隔行
	SETB  22h                     ;清屏
	LJMP  MAIN


	;LCD模块初始化(开始)
	;****************************************************
	ORG 0200H
	main: NOP
	MOV A,#0a0h		               ;ADC select    
	LCALL SENT_COM				  
	MOV A,#0a6h					   ;Sets the LCD display normal/reverse
	LCALL SENT_COM
	MOV A,#0a2H					   ;Sets the LCD drive voltage bias ratio  1/9
	LCALL SENT_COM
	LCALL DELAY
	MOV A,#2fh					   ;Power control set
	LCALL SENT_COM
	MOV A,#24H					   ;V0 Voltage Regulator Internal Resistor Ratio Set 
	LCALL SENT_COM
	MOV A,#81H					   ;Electronic volume mode set
	LCALL SENT_COM
	MOV A,#29h
	LCALL SENT_COM
	MOV A,#0AFH                    ;Display ON
	LCALL SENT_COM
	;******************************LCD初始化完成

	
	;设置起始行,设置起始列和页地址
	;******************************************************
	again: 	mov r4,#0b0h          ;设页地址寄存器为R4,起始页地址B0H,第一页
	mov r5,#09H                   ;#09h;页数寄存器为R5,9页
	mov r6,#40h                   ;行地址寄存器为R6,起始行地址40H,第一行


	set_page_col:
	mov r3,#80h                   ;设置列数寄存器为R3,列数为128
	MOV A,r4                      ;送页地址
	LCALL SENT_COM
	MOV A,#10H                    ;送列地址,双字节指令
	LCALL SENT_COM
	MOV A,#00H;
	LCALL SENT_COM


	;判断表头标志,决定程序跳转方向
	;*****************************************************
	JB 20h,tab0                   ;全显
	JB 21h,tab1	                  ;隔行
	JB 22h,tab2                   ;清屏 
	

	LCALL ldelay
	AJMP  start                   ;返回,重复
	;*****************************************************

	tab0:	AJMP table0
	tab1:	AJMP table1
	tab2:	AJMP table2

	;*****************************************************	
	table0:	mov dptr,#tab0_data  ;取表头地址
	dis0:CLR A
	movc a,@a+dptr
	LCALL SENT_DAT
	inc dptr
	DJNZ R3,DIS0                 ;列数减一,共128列
	inc r4                       ;页地址加1,下一页
	djnz r5,set_page_col         ;共显示9页
	clr 20h                      ;清除表标志
	lcall ldelay
	ajmp again
	;*****************************第一屏显示完成,全显

	
	table1:	mov dptr,#tab1_data  ;取表头地址
	dis1:CLR A
	movc a,@a+dptr
	LCALL SENT_DAT
	inc dptr
	DJNZ R3,DIS1                 ;列数减一,共128列
	inc r4                       ;页地址加1,下一页
	djnz r5,set_page_col         ;共显示9页
	clr 21h                      ;清除表标志
	lcall ldelay
	ajmp again 
	;****************************第二屏显示完成,隔行显示
	
	table2:	mov dptr,#tab2_data  ;取表头地址
	dis2:CLR A
	movc a,@a+dptr
	LCALL SENT_DAT
	inc dptr
	DJNZ R3,DIS2                 ;列数减一,共128列
	inc r4                       ;页地址加1,下一页
	djnz r5,set_page_col         ;共显示9页
	clr 22h                      ;清除表标志
	
	lcall ldelay
	ajmp again  
	;*****************************第三屏显示完成,清屏

		
	
	;子程序:
	;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	DELAY:NOP					  ;延时
	MOV R1,#0FFH
	DL1:MOV R2,#06FH
	DL2:DJNZ R2,DL2
	DJNZ R1,DL1
	RET
	;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	ldelay:						  ;长延时
	mov 30h,#010h            
	dela40:lcall delay
	djnz 30h,dela40
	ret
	;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	SENT_COM:NOP				  ;写命令
	CLR RS
	CLR WR1
	clr CS1
	setb RD1
	nop
	MOV P1,A
	NOP
	SETB WR1
	setb CS1
	NOP
	NOP
	NOP
	RET
	;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	SENT_DAT:NOP				   ;写数据
	SETB RS
	setb RD1
	CLR WR1
	CLR CS1
	NOP
	MOV P1,A
	NOP
	SETB WR1
	setb CS1
	NOP
	NOP
	NOP
	RET
	

	;数据表
	;************************************************
	tab0_data:
	
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
	
	tab1_data:
	
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	DB 055H,055H,055H,055H,055H,055H,055H,055H
	
	tab2_data:
	
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H
	DB 000H,000H,000H,000H,000H,000H,000H,000H

	END
	
	

⌨️ 快捷键说明

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