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

📄 yj.asm

📁 利用F005单片机实现的液晶显示程序
💻 ASM
字号:

	$INCLUDE(C8051F000.INC)

	CS          BIT      P0.4
	STD         BIT      P0.5                 ;串行数据线
	SCLK        BIT      P2.5                 ;串行时钟线

	START       EQU      30H                  ;起始字节
	COM         EQU      31H                  ;命令/数据
  	GDATA       EQU      32H                  ;命令/数据字节高位
	LDATA       EQU      33H                  ;命令/数据字节低位


	ORG 0000H
	LJMP MAIN
	
	ORG 0100H
MAIN:	;	F005初始化程序
	MOV	WDTCN,#0DEH
	MOV	WDTCN,#0ADH;关看门狗

	MOV 	XBR0,#00H
  	MOV 	XBR1,#00H 
	MOV 	XBR2,#40H ;交叉开关允许
	
	MOV	OSCXCN,#66H;外部晶振6M
	ACALL	DL1MS
CC:	MOV	A,OSCXCN
	JNB	ACC.7,CC
	MOV	OSCICN,#08H


	MOV 	PRT1IF,#00H
	MOV 	PRT1CF,#0FFH;P1口设为推挽方式
	MOV 	PRT0CF,#0FFH;P0口设为推挽方式
	MOV 	PRT2CF,#0FFH;P2口设为推挽方式
	MOV 	PRT3CF,#0FFH;P3口设为推挽方式

MAIN1:
            MOV        SP,#60H
            SETB       CS                  ;可以直接接电源VDD
            CALL       LCDRESET            ;模块系统初始化		
            CALL       HZKDIS              ;显示汉字子程序
	         CALL       DL40MS              ;延时
            JMP        MAIN1
LCDRESET:
            LCALL      DL1MS               ;延时等待内部复位
            MOV        START,#0F8H         ;写入命令(11111000)

				MOV        COM,#30H            ;使用8位控制界面
		 		LCALL      LCDWRITE
				
				MOV        COM,#30H            ;使用基本指令集
				LCALL      LCDWRITE

				MOV        COM,#0CH
				LCALL      LCDWRITE            ;整体显示ON

				MOV        COM,#01H            ;清屏
				LCALL      LCDWRITE
				LCALL      DL1MS

				MOV        COM,#06H            ;显示右移
				LCALL      LCDWRITE
				LCALL      DL1MS

				RET
LCDWRITE:                          			;模块写入子程序
				MOV        A,COM               ;送待发数据命令A
				ANL        A,#0F0H             ;屏蔽低4位
				MOV        GDATA,A             ;将高4位送GDATA单元

				MOV        A,COM               ;取低4位
				SWAP       A                   ;高低4位互换
				ANL        A,#0F0H
				MOV        LDATA,A             ;将低4位送LDATA单元

				MOV        A,START             ;取起始字节
				LCALL      SENDBIT             ;发送
				LCALL      DL1MS               ;延时1ms

				MOV        A,GDATA
				LCALL      SENDBIT
				LCALL      DL1MS

				MOV        A,LDATA
				LCALL      SENDBIT
				LCALL      DL1MS
				RET
HZKDIS:                            			;显示汉字子程序
          
            MOV        START,#0F8H         ;写入命令(11111000)
				MOV        COM,#80H            ;设定第一行显示位置
				LCALL      LCDWRITE

				MOV        DPTR,#TAB1           ;指向文字型代码表1
DIS_1:      MOV        R6,#16               ;每行八个汉字
DIS_2:      MOV        START,#0FAH         ;写数据(11111010)
            CLR        A
            MOVC       A,@A+DPTR
            MOV        COM,A
            CALL       LCDWRITE            ;写入显示模块

            INC        DPTR                ;取汉字代码高位
            
           	CALL       DL40MS
            DJNZ       R6,DIS_2            ;未显示完则继续

            MOV        START,#0F8H         ; 写入命令(11111000)
            MOV        COM,#90H            ;第二行地址
            CALL       LCDWRITE

				MOV        DPTR,#TAB2           ;指向文字型代码表2
DIS_3:      MOV        R6,#16               ;每行八个汉字
DIS_4:      MOV        START,#0FAH         ;写数据(11111010)
            CLR        A
            MOVC       A,@A+DPTR
            MOV        COM,A
            CALL       LCDWRITE            ;写入显示模块

            INC        DPTR                ;取汉字代码高位
           
            CALL       DL40MS
            DJNZ       R6,DIS_4           ;未显示完则继续
           
            RET                        ;写完两行则结束

SENDBIT:                           ;串行字节数据发送子程序
				MOV         R7,#08H            ;发送8位
SEND_1:		RLC        	A
            MOV         STD,C              ;数据送数据线
				CLR         SCLK               ;产生同步时钟
				SETB        SCLK
				DJNZ        R7,SEND_1          ;未发送完8位继续
				RET
DL1MS:    ;延时子程序0.1MS  
               
            MOV         R2,#01H
WA_PA:      MOV         R0,#0FFH
WA_PB:      MOV         R1,#0FFH
            DJNZ        R1,$
            DJNZ        R0,WA_PB
            DJNZ        R2,WA_PA
           
            RET
            
DL40MS:   ;延时子程序40MS
                        
            MOV         R2,#0AH
DL_PA:      MOV         R0,#0FFH
DL_PB:      MOV         R1,#0FFH
            DJNZ        R1,$
            DJNZ        R0,DL_PB
            DJNZ        R2,DL_PA
          
            RET
          
TAB1:			DB         "莫愁前路无知己,"  
                 
TAB2: 		DB         "天下谁人不识你。"
           
				END

⌨️ 快捷键说明

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