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

📄 driver_lm7221sgl.asm

📁 LM7221SGL液晶的驱动
💻 ASM
📖 第 1 页 / 共 3 页
字号:
; 	*****************************************************************
; 	*LM7221SGL点阵液晶驱动程序[column driver:T7932;row driver:T7933]*
; 	*****************************************************************
 
E_T7932			BIT P2.0; 片使能信号,下降沿写数据锁存;高电平时输出给单片机
RW_T7932 		BIT P2.1; 读写控制信号,H:读;L:写
DI_T7932 		BIT P2.2; H:数据;L:指令
CS3A_T7932 		BIT P2.6; T7932(IC1)片选信号,H:使能
CS3B_T7932 		BIT P2.5; T7932(IC2)片选信号,H:使能
CS3C_T7932 		BIT P2.4; T7932(IC3)片选信号,H:使能
RST_T7932 		BIT P2.3; T7932复位信号,低电平有效
LED_T7932 		BIT P2.7; 背光控制,低电平有效
Busy_T7932		BIT	P0.7; 液晶忙标志
Data_t7932		EQU	P0;	液晶数据IO使用P0口

SelectFlag		BIT		20H.0; 反白标志,高电平有效
IntFlag			BIT		20H.1; 数据类型标志,高电平表示有符号数,低电平表示无符号数

Databuf			EQU		21H; 通用数据缓存
Address			EQU		22H; 液晶绘图起始地址
ByteCount		EQU		23H; 通用读写字节数(液晶,DS1302)计数
EndAdr			EQU		24H; 液晶绘图结束地址
Chip			EQU		25H; 液晶片选
PageN			EQU		26H; 液晶页选
DPLbuf 			EQU		27H; DPTR低位地址缓存
DPHbuf	    	EQU		28H; DPTR高位地址缓存


			ORG		0000H
			SJMP	Main						
Main:		
			MOV		R7,#09;
			MOV		R0,#20H;
ClearMemory:
			MOV		@R0,#00H;
			INC		R0;
			DJNZ	R7,ClearMemory;


			CALL	T7932_Init; 初始化
			CALL	T7932_Clear; 清屏
			CLR		LED_T7932; 开背光

; 液晶驱动使用示例一
;/*************************************************
; 8*16字体字符串 enjoydiy
			SETB	SelectFlag;
			MOV		DPTR,#Table_Str;
			MOV		PageN,#00H;	显示页的地址(0-3)
			MOV		Address,#00; 显示地址0-149(00H-95H)
			CALL	T7932_WriStr8_16;
; 紧接着是6*8字体字符串	enjoydiy
			SETB	SelectFlag;
			MOV		DPTR,#Table_Str
			CALL	T7932_WriStr6_8; 调用显示字符串子程序

; 单个ASCLL码字符 a			
			MOV		A,#61H;	
			CALL	T7932_WriSigalASCLL8_16;
			MOV		A,#61H;
			CALL	T7932_WriSigalASCLL6_8;


			MOV		Address,#00;
			MOV		PageN,#02H;
; 整型数据显示,方法一 255			
			MOV		A,#0FFH;	
			CALL	Hex_Num2ASCLL;
			MOV		A,R7;
			CALL	T7932_WriSigalASCLL6_8;
			MOV		A,R6;
			CALL	T7932_WriSigalASCLL6_8;
			MOV		A,R5;	 
			CALL	T7932_WriSigalASCLL6_8;

; 整型数据显示,方法二  
			MOV		A,#0FFH; 255
			CALL	Display_INT_Number;

			SETB	IntFlag; 声明为有符号数
			MOV		A,#0FFH; -127
			CALL	Display_INT_Number;
;*********************************************/

			AJMP	$;	

; 	************
; 	*读忙子程序*
; 	************
; 功能:
;		液晶读忙
; 入口参数:
; 			无
; 出口参数:
; 			无
; 占用资源:
;			无 
T7932_busy: 
			CLR		DI_T7932;
			SETB	RW_T7932;
			MOV		Data_t7932,#0FFH;
			SETB	E_T7932;
			JB		Busy_T7932,T7932_busy;
			RET
; 	******************
; 	*液晶初始化子程序*
; 	******************
; 功能: 
;		液晶初始化,液晶开,设定起始页PageN0-3循环	
; 入口参数:
;		 	无
; 出口参数:
; 			无
; 占用资源:
;			无 	
T7932_Init: 
			CLR		E_T7932; 液晶复位
			CLR		RST_T7932;
			SETB	RST_T7932;
			CLR		DI_T7932; 判断复位是否成功
			SETB	RW_T7932;
			MOV		Data_t7932,#0FFH;
			SETB	E_T7932;
			JB		Data_t7932.4,$;
			SETB	CS3A_T7932;	显示开(详见T7932的Datasheet)
			SETB	CS3B_T7932;
			CLR	CS3C_T7932;
			CALL	T7932_busy;
			CLR		DI_T7932;
			CLR		RW_T7932;
			SETB	E_T7932;
			MOV		Data_t7932,#39H; 
			CLR		E_T7932;
			CALL	T7932_busy;	设置起始页(详见T7932的Datasheet)
			CLR		DI_T7932;
			CLR		RW_T7932;
			SETB	E_T7932;
			MOV		Data_t7932,#3EH; 
			CLR		E_T7932;						
			RET
; 	****************************
; 	*液晶显示起始地址设定子程序*
; 	****************************
; 功能:
;		设定液晶显示起始地址,根据片选值设定片选	
; 入口参数:
;			Chip. 片选值(Chip = 00 or 01 or 10)
;			PageN. 页地址
;			Address. 显示地址(0-49)
; 出口参数:
;			无
; 占用资源:
;			A,Chip,PageN,Address
T7932_SetAddress:
			MOV		A,Chip;	设置片选
			JNB		ACC.1,Chip_10; 若Chip为10,则IC3=1,IC1=IC2=0
			CLR		CS3A_T7932;
			CLR		CS3B_T7932;
			SETB	CS3C_T7932;
			SJMP	ChipSetEnd;
Chip_10:	
			CLR		CS3C_T7932; 否则IC3=0
Chip_01:	
			JNB		ACC.0,Chip_00; 若Chip为01,则IC2=1,IC3=IC1=0
			CLR		CS3A_T7932;
			SETB	CS3B_T7932;
			SJMP	ChipSetEnd;
Chip_00:
			SETB	CS3A_T7932;	否则IC1=1,IC3=IC2=0
			CLR		CS3B_T7932;
ChipSetEnd:			
			MOV		A,PageN;
			RL		A;
			RL		A;
			SWAP	A;
			ADD		A,Address; 合成页地址和显示起始地址(详见T7932的Datasheet)
			CALL	T7932_busy;
			CLR		DI_T7932;
			CLR		RW_T7932;
			SETB	E_T7932; 写入显示起始地址
			MOV		Data_t7932,A;
			CLR		E_T7932;
			RET
; 	************
; 	*清屏子程序*
; 	************
; 功能:
; 		液晶清屏,先使能片选1再逐页清屏,接着是片2和片3,方法同样
; 入口参数:
; 			无
; 出口参数:
;  			无
; 占用资源:
;			A,R7,R6,R5,Chip,PageN,Address	
T7932_Clear:
			MOV		R7,#32H;
			MOV		R6,#04H;
			MOV		R5,#03;
			MOV		Chip,#00H;
			MOV		PageN,#00H;
ClearNextPage:
			MOV		Address,#00H;
			CALL	T7932_SetAddress;
Next:
			CALL	T7932_busy;
			SETB	DI_T7932;
			CLR		RW_T7932;
			SETB	E_T7932;
			MOV		Data_t7932,#00H;
			CLR		E_T7932;
			DJNZ	R7,Next; 
			MOV		R7,#32H;
			INC		PageN; 清下一页
			DJNZ	R6,ClearNextPage;
			MOV		PageN,#00H;
			MOV		R6,#04H;
			INC		Chip; 清下一片
			DJNZ	R5,ClearNextPage;
			RET
; 	*********************
; 	*自定义字符,字符串表*
; 	*********************
; 功能:
;		在此定义将要显示的字符串
; 入口参数:
; 			DPTR
; 出口参数:
; 			返回字符在ASCLL码表中的值

Table_Str:
DB	"enjoydiy",0;


; ********************************8*6LCD点阵字库************************
; 包括以下ASCII字符:
;  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
; abcdefghijklmnopqrstuvwxyz{|}
; **********************************************************************
Table_ASCLL6_8:
DB 0x00,0x00,0x00,0x00,0x00,0x00	; 
DB 0x00,0xBE,0x00,0x00,0x00,0x00	; !
DB 0x07,0x00,0x07,0x00,0x00,0x00	; "
DB 0x24,0xFE,0x24,0xFE,0x24,0x00	; #
DB 0x4C,0x92,0xFF,0x92,0x64,0x00	; $ 
DB 0x8E,0x6E,0x10,0xEC,0xE2,0x00	; % 
DB 0x60,0x94,0x9A,0x64,0xA0,0x00	; &  
DB 0x04,0x03,0x00,0x00,0x00,0x00	; '
DB 0x00,0x3C,0x42,0x81,0x00,0x00	; (
DB 0x81,0x42,0x3C,0x00,0x00,0x00	; )
DB 0x12,0x0C,0x3F,0x0C,0x12,0x00	; *
DB 0x00,0x08,0x3E,0x08,0x00,0x00	; +
DB 0xA0,0x60,0x00,0x00,0x00,0x00	; ,
DB 0x08,0x08,0x08,0x08,0x00,0x00	; -
DB 0x40,0x40,0x00,0x00,0x00,0x00	; .
DB 0xC0,0x30,0x0C,0x03,0x00,0x00	; /
DB 0x3E,0x41,0x41,0x3E,0x00,0x00	; 0
DB 0x00,0x02,0x7F,0x00,0x00,0x00	; 1
DB 0x62,0x51,0x49,0x46,0x00,0x00	; 2
DB 0x22,0x49,0x49,0x36,0x00,0x00	; 3
DB 0x30,0x2C,0x23,0x7F,0x20,0x00	; 4
DB 0x27,0x45,0x45,0x39,0x00,0x00	; 5
DB 0x3E,0x49,0x49,0x32,0x00,0x00	; 6
DB 0x01,0x71,0x0D,0x03,0x00,0x00	; 7
DB 0x36,0x49,0x49,0x36,0x00,0x00	; 8
DB 0x26,0x49,0x49,0x3E,0x00,0x00	; 9
DB 0x00,0x48,0x48,0x00,0x00,0x00	; :
DB 0x00,0xA2,0x62,0x00,0x00,0x00	; ;
DB 0x08,0x14,0x22,0x41,0x00,0x00	; <
DB 0x14,0x14,0x14,0x14,0x00,0x00	; =
DB 0x41,0x22,0x14,0x08,0x00,0x00	; >
DB 0x02,0x01,0xD9,0x06,0x00,0x00	; ?
DB 0x3E,0x41,0x5D,0x55,0x1E,0x00	; @
DB 0x7C,0x13,0x13,0x7C,0x00,0x00	; A
DB 0x7F,0x49,0x49,0x36,0x00,0x00	; B
DB 0x3E,0x41,0x41,0x22,0x00,0x00	; C
DB 0x7F,0x41,0x41,0x3E,0x00,0x00	; D
DB 0x7F,0x49,0x49,0x41,0x00,0x00	; E
DB 0x7F,0x09,0x09,0x01,0x00,0x00	; F
DB 0x3E,0x41,0x49,0x7A,0x00,0x00	; G
DB 0x7F,0x08,0x08,0x7F,0x00,0x00	; H
DB 0x00,0x7F,0x00,0x00,0x00,0x00	; I
DB 0x20,0x40,0x40,0x3F,0x00,0x00	; J
DB 0x7F,0x08,0x14,0x63,0x00,0x00	; K
DB 0x7F,0x40,0x40,0x40,0x00,0x00	; L
DB 0x7F,0x0C,0x70,0x0C,0x7F,0x00	; M
DB 0x7F,0x0C,0x30,0x7F,0x00,0x00	; N
DB 0x3E,0x41,0x41,0x3E,0x00,0x00	; O
DB 0x7F,0x11,0x11,0x0E,0x00,0x00	; P
DB 0x3E,0x51,0x21,0x5E,0x00,0x00	; Q
DB 0x7F,0x09,0x09,0x76,0x00,0x00	; R
DB 0x26,0x49,0x49,0x32,0x00,0x00	; S
DB 0x01,0x01,0x7F,0x01,0x01,0x00	; T
DB 0x3F,0x40,0x40,0x3F,0x00,0x00	; U
DB 0x07,0x18,0x60,0x18,0x07,0x00	; V
DB 0x0F,0x70,0x0F,0x70,0x0F,0x00	; W
DB 0x63,0x1C,0x1C,0x63,0x00,0x00	; X
DB 0x03,0x04,0x78,0x04,0x03,0x00	; Y
DB 0x61,0x51,0x4D,0x43,0x00,0x00	; Z
DB 0x00,0x00,0xFF,0x81,0x00,0x00	; [
DB 0x03,0x0C,0x70,0x80,0x00,0x00	; \
DB 0x81,0xFF,0x00,0x00,0x00,0x00	; ]
DB 0x02,0x01,0x02,0x00,0x00,0x00	; ^
DB 0x80,0x80,0x80,0x80,0x80,0x00	; _
DB 0x01,0x02,0x00,0x00,0x00,0x00	; `
DB 0x24,0x54,0x54,0x78,0x00,0x00	; a
DB 0x7F,0x44,0x44,0x38,0x00,0x00	; b
DB 0x38,0x44,0x44,0x28,0x00,0x00	; c
DB 0x38,0x44,0x44,0x7F,0x00,0x00	; d
DB 0x38,0x54,0x54,0x58,0x00,0x00	; e
DB 0x04,0x7E,0x05,0x04,0x00,0x00	; f
DB 0x6C,0x92,0xAC,0x62,0x00,0x00	; g
DB 0x7F,0x04,0x04,0x78,0x00,0x00	; h
DB 0x00,0x00,0x7D,0x00,0x00,0x00	; i
DB 0x80,0x80,0x7D,0x00,0x00,0x00	; j
DB 0x7F,0x10,0x18,0x64,0x00,0x00	; k
DB 0x00,0x00,0x7F,0x00,0x00,0x00	; l
DB 0x7C,0x04,0x78,0x04,0x78,0x00	; m
DB 0x7C,0x04,0x04,0x78,0x00,0x00	; n
DB 0x38,0x44,0x44,0x38,0x00,0x00	; o
DB 0xFC,0x24,0x24,0x18,0x00,0x00	; p
DB 0x18,0x24,0x24,0xFC,0x00,0x00	; q
DB 0x7C,0x08,0x04,0x00,0x00,0x00	; r
DB 0x48,0x54,0x54,0x24,0x00,0x00	; s
DB 0x04,0x3F,0x44,0x44,0x00,0x00	; t
DB 0x3C,0x40,0x40,0x7C,0x00,0x00	; u
DB 0x1C,0x60,0x60,0x1C,0x00,0x00	; v
DB 0x1C,0x60,0x1C,0x60,0x1C,0x00	; w
DB 0x64,0x18,0x18,0x64,0x00,0x00	; x
DB 0x0C,0x90,0x60,0x1C,0x00,0x00   	; y
DB 0x64,0x54,0x4C,0x44,0x00,0x00	; z
DB 0x00,0x08,0x76,0x81,0x00,0x00	; {
DB 0x00,0x00,0xFF,0x00,0x00,0x00	; |
DB 0x81,0x76,0x08,0x00,0x00,0x00	; }	

⌨️ 快捷键说明

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