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

📄 12864bk.asm

📁 使用 ASM编写
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;/*******************************************************************************
;*  标题:  xl系列单片机实验仪演示程序   12864带字库演示 图片与文字显示          *
;*     ST7920控制芯片(汉字库),并口模式。                                       *
;*  日期:  2006-1-5                                                             *
;*  版本:  3.0 (试验通过版)可用xl600-xl1000单片机综合试验仪试验               *
;*  邮箱:  sxj1974@163.com                                                      *
;*  网站: http://www.51c51.com    www.8951.com                                 *
;********************************************************************************
;*  描述:                                                                       *
;*      12864标准字库液晶演示 数据p0,控制p2                                     *
;********************************************************************************
;* 【版权】 Copyright(C)深圳市学林电子有限公司 www.51c51.com                    *
;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
;*  【技术支持】请访问http://www.51c51.com/bbs/index.asp  官方论坛              *
;********************************************************************************/
          RS	 BIT	P2.0
          RW	 BIT	P2.1
          E 	 BIT	P2.2
          PSB	 BIT	P2.3
          RST	 BIT	P2.5
          LCD_X	 EQU	30H
          LCD_Y	 EQU	31H
          COUNT	 EQU	32H
          COUNT1 EQU	33H
          COUNT2 EQU	34H
          COUNT3 EQU	35H
       LCD_DATA  EQU	36H
       LCD_DATA1 EQU	37H
       LCD_DATA2 EQU	38H
          STORE	 EQU	39H
;**********************************************************
	    ORG  0000H
	    LJMP  MAIN
	    ORG  0030H
;**********************************************************
MAIN:
	    MOV	SP,#60H
            CLR  RST             ;复位
            LCALL DELAY4
            SETB RST
	    NOP
            SETB PSB             ;通讯方式为8位数据并口
;********************初始化**********************
LGS0:	    MOV	A,#34H		;34H--扩充指令操作
	    LCALL SEND_I
	    MOV	A,#30H		;30H--基本指令操作
	    LCALL SEND_I
	    MOV	A,#01H		;清除显示
	    LCALL SEND_I
            MOV	A,#06H		;指定在资料写入或读取时,光标的移动方向
	    LCALL SEND_I        ;DDRAM 的地址计数器(AC)加1
	    MOV	A,#0CH		;开显示,关光标,不闪烁
	    LCALL SEND_I
;**********************************************************
;显示汉字和字符
;加入80ms的延时,使你能够看清楚显示的过程
;根据汉字显示坐标写入 (隔行写入)
;**********************************************************
HAN_WR1:
            LCALL CLEAR_P
            MOV	DPTR,#TAB1      ;显示汉字和字符
	    MOV	COUNT,#40H      ;地址计数器设为最大值 64。
	    MOV	A,#80H          ;起始地址
	    LCALL SEND_I
            LCALL QUSHU
 	    LCALL DELAY3
            LCALL FLASH
;**********************************************************
;显示汉字和字符
;加入80ms的延时,使你能够看清楚显示的过程
;根据汉字显示坐标分段写入(顺序写入)
;**********************************************************
HAN_WR2:
            LCALL CLEAR_P
HAN_WR2A:
            MOV	DPTR,#TAB1A	;显示汉字和字符
	    MOV	COUNT,#10H      ;地址计数器设为16。
	    MOV	A,#80H          ;第一行起始地址
	    LCALL SEND_I
            LCALL   QUSHU
HAN_WR2B:
            MOV	DPTR,#TAB1B	;显示汉字和字符
	    MOV	COUNT,#10H      ;地址计数器设为16。
	    MOV	A,#90H          ;第二行起始地址
	    LCALL SEND_I
            LCALL QUSHU
HAN_WR2C:
            MOV	DPTR,#TAB1C	;显示汉字和字符
	    MOV	COUNT,#10H      ;地址计数器设为16。
	    MOV	A,#88H          ;第三行起始地址
	    LCALL SEND_I
            LCALL QUSHU
HAN_WR2D:
            MOV	DPTR,#TAB1D	 ;显示汉字和字符
	    MOV	COUNT,#10H       ;地址计数器设为16。
	    MOV	A,#98H           ;第四行起始地址
	    LCALL SEND_I
            LCALL QUSHU
            LCALL DELAY3
            LCALL FLASH
            LCALL CLEAR_P
;**********************************************************
; 显示图片
;**********************************************************
TU_PLAY1:

            MOV  DPTR,#TU_TAB1	 ;显示图形
	    LCALL PHO_DISP
	    LCALL DELAY3

TU_PLAY2:
	    MOV	DPTR,#TU_TAB2    ;显示图形
	    LCALL PHO_DISP
	    LCALL DELAY3          
;**********************************************************
; 显示点阵
;**********************************************************
LATPLAY1:
            MOV	A,#01H         ;清屏
            LCALL SEND_I
	    MOV	LCD_DATA1,#0CCH	 ;显示点阵
	    MOV	LCD_DATA2,#0CCH
	    LCALL LAT_DISP
	    LCALL DELAY3
            LCALL CLEAR_P
;**********************************************************
;调字库半角字符显示
;**********************************************************
KU_PLAY1:
            LCALL  CLEAR_P
            MOV  COUNT,#40H
            MOV  A,#80H
            LCALL SEND_I
            MOV  R1,#10H
LATPLAY11:
            MOV  A,R1
            LCALL  SEND_D
            INC  R1
            DJNZ  COUNT,LATPLAY11
            LCALL  DELAY3
            LCALL  CLEAR_P
;**********************************************************
;调字库汉字显示
;从 B9F3 “贵”字处开始显示
;**********************************************************
KU_PLAY2:
            LCALL  CLEAR_P
            MOV  COUNT,#40H
            MOV  A,#80H
            LCALL SEND_I
            MOV  R1,#0F3H
KU_PLAY21:
            MOV  A,#0B9H
            LCALL  SEND_D        ;写入第一字节数据(高位)
            MOV  A,R1
            LCALL  SEND_D        ;写入第二字节数据(低位)
            INC  R1
            DJNZ  COUNT,KU_PLAY21
            LCALL  DELAY3
            LCALL  CLEAR_P
            LJMP  TU_PLAY1
;**********************************************************
;全屏显示图形子程序
;**********************************************************
PHO_DISP:
    	    MOV  COUNT3,#02H
	    MOV  LCD_X,#80H
PHO_DISP1:
    	    MOV  LCD_Y,#80H
	    MOV  COUNT2,#20H
PHO_DISP2:
    	    MOV  COUNT1,#10H
	    LCALL WR_ZB
PHO_DISP3:
            CLR	A
	    MOVC A,@A+DPTR
	    LCALL SEND_D
	    INC	DPTR
	    DJNZ COUNT1,PHO_DISP3
	    INC	LCD_Y
	    DJNZ COUNT2,PHO_DISP2
	    MOV	LCD_X,#88H
	    DJNZ COUNT3,PHO_DISP1

	    MOV	A,#36H
	    LCALL SEND_I
	    MOV	A,#30H
	    LCALL SEND_I
            RET
;**********************************************************
; GDRAM写0子程序
;**********************************************************
CLRRAM:
     	    MOV	LCD_DATA1,#00H
	    MOV	LCD_DATA2,#00H
	    LCALL LAT_DISP
	    RET
;**********************************************************
;显示点阵子程序
;**********************************************************
LAT_DISP:
    	    MOV	COUNT3,#02H
	    MOV	LCD_X,#80H
LAT_DISP1:
    	    MOV	LCD_Y,#80H
	    CLR	F0
	    MOV	COUNT2,#20H
LAT_DISP2:
    	    MOV	COUNT1,#10H
	    LCALL WR_ZB
LAT_DISP3:
    	    JB	F0,LAT_DISP32
	    MOV	LCD_DATA,LCD_DATA1
	    AJMP LAT_DISP31
LAT_DISP32:
    	    MOV	LCD_DATA,LCD_DATA2
LAT_DISP31:
    	    MOV	A,LCD_DATA
	    LCALL SEND_D
	    DJNZ COUNT1,LAT_DISP31
	    INC	LCD_Y
	    CPL	F0
	    DJNZ COUNT2,LAT_DISP2
	    MOV	LCD_X,#88H
	    DJNZ COUNT3,LAT_DISP1

	    MOV	A,#36H
	    LCALL SEND_I
	    MOV	A,#30H
	    LCALL SEND_I
	    RET
;**********************************************************
; 写入显示坐标子程序
;**********************************************************
WR_ZB:
    	    MOV	A,#34H
	    LCALL SEND_I
	    MOV	A,LCD_Y
	    LCALL SEND_I
	    MOV	A,LCD_X
	    LCALL SEND_I
	    MOV	A,#30H
	    LCALL SEND_I
	    RET
;**********************************************************
; 闪烁子程序
;**********************************************************
FLASH:
            MOV  A,#08H       ;关闭显示
            LCALL SEND_I
            LCALL  DELAY5
            MOV  A,#0CH	  ;开显示,关光标,不闪烁
	    LCALL SEND_I
            LCALL  DELAY5
            MOV  A,#08H       ;关闭显示
            LCALL SEND_I
            LCALL  DELAY5
            MOV  A,#0CH	  ;开显示,关光标,不闪烁
	    LCALL SEND_I
            LCALL  DELAY5
            MOV  A,#08H       ;关闭显示
            LCALL SEND_I

⌨️ 快捷键说明

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