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

📄 12864ck.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  官方论坛              *
;********************************************************************************/
;********************* 12864引脚定义 *********************
          CS     EQU  P2.0
          SID    EQU  P2.1
          SCLK   EQU  P2.2
          PSB    EQU  P2.3
          RST    EQU  P2.5
;**********************************************************
          LCD_X  EQU  30H     ;GDRAM水平坐标
          LCD_Y  EQU  31H     ;GDRAM垂直坐标
          TEMP   EQU  32H
          COUNT1 EQU  33H
          COUNT2 EQU  34H
          COUNT3 EQU  35H
;**********************************************************
          ORG  0000H
          LJMP MAIN
          ORG  0030H
;**********************************************************
MAIN:
          MOV  SP,#60H
          CALL  LCD_INIT
          CALL  DELAY5MS
          MOV A,#80H
          MOV DPTR,#MENU1
          CALL WR_STRING
          MOV A,#90H
          MOV DPTR,#MENU2
          CALL WR_STRING
          MOV A,#88H
          MOV DPTR,#MENU3
          CALL WR_STRING
          MOV A,#98H
          MOV DPTR,#MENU4
          CALL WR_STRING
          MOV  R3,#200
MAIN1:
          CALL  DELAY5MS
          CALL  DELAY5MS
          DJNZ  R3,MAIN1
          CALL  FLASH            ;闪烁
          CALL  CLEAR_LCD        ;清屏
          MOV  DPTR,#TU_TAB1	 ;显示图形1
          CALL PHO_DISP
          MOV  R3,#200           ;
MAIN2:
          CALL  DELAY5MS
          CALL  DELAY5MS
          DJNZ  R3,MAIN2
          CALL  FLASH            ;闪烁
          CALL  CLEAR_LCD        ;清屏
          MOV  DPTR,#TU_TAB2	 ;显示图形2
	      CALL PHO_DISP
          MOV  R3,#200
MAIN3:
          CALL  DELAY5MS
          CALL  DELAY5MS
          DJNZ  R3,MAIN3
          CALL  FLASH           ;闪烁
          CALL  CLEAR_LCD       ;清屏
          JMP  MAIN
          RET
;**********************************************************
;  LCD 初始化
;**********************************************************
LCD_INIT:
          CALL DELAY5MS      ;延时15ms
          CALL DELAY5MS
          CALL DELAY5MS
          CLR  PSB           ;串口驱动模式
          SETB CS            ;片选 高电平有效
          CLR  SCLK          ;时钟置于低电平
          CLR RST            ;LCD复位
          CALL DELAY5MS
          SETB RST
          MOV  A,#30H        ;基本指令操作
          CALL  WR_OPERAT
          MOV  A,#06H
          CALL  WR_OPERAT
          MOV  A,#0CH         ;开显示,关光标,不闪烁
          CALL  WR_OPERAT
          MOV  A,#01H         ;清屏
          CALL  WR_OPERAT
          RET
;**********************************************************
; 写指令子程序
;**********************************************************
WR_OPERAT:
          MOV  B,A           ;暂存数据
          MOV  A,#0F8H       ;写F8H控制命令
          CALL  WR_BYTE
          CALL  DELAY1MS
          MOV  A,B
          ANL A,#0F0H         ;写控制命令的高4位
          CALL  WR_BYTE
          CALL  DELAY1MS
          MOV A,B
          SWAP A
          ANL A,#0F0H         ;写控制命令的低4位
          CALL  WR_BYTE
          CALL  DELAY1MS
          RET
;**********************************************************
; 写数据子程序
;**********************************************************
WR_DATA:
          MOV  B,A            ;暂存数据
          MOV  A,#0FAH        ;写FAH控制命令
          CALL  WR_BYTE
          CALL  DELAY
          MOV  A,B
          ANL A,#0F0H         ;写数据的高4位
          CALL  WR_BYTE
          CALL  DELAY
          MOV A,B
          SWAP A
          ANL A,#0F0H         ;写数据的低4位
          CALL  WR_BYTE
          CALL  DELAY
          RET
;**********************************************************
; 写一个字节子程序
;**********************************************************
WR_BYTE:
          MOV R5,#8
WR_BYTE1:
          RLC A
          MOV SID,C
          SETB SCLK
          NOP
          NOP
          NOP
          CLR SCLK
          DJNZ R5,WR_BYTE1
          RET
;**********************************************************
; 写字符串子程序
;**********************************************************
WR_STRING:
          CALL  WR_OPERAT
          MOV R4,#16
WR_STRING1:
          CLR A
          MOVC A,@A+DPTR
          CALL WR_DATA
          INC DPTR
          MOV  R3,#08H         ;加入80ms的延时
WAIT:                          ;使你能够看清楚显示的过程
          CALL  DELAY5MS
          CALL  DELAY5MS
          DJNZ  R3,WAIT

          DJNZ R4,WR_STRING1
          RET
;**********************************************************
; 显示图像子程序
;**********************************************************
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  WR_DATA
	  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 WR_OPERAT
          MOV	A,#30H
          LCALL WR_OPERAT
          RET
;**********************************************************
; 写入显示坐标子程序
;**********************************************************
WR_ZB:
          MOV  A,#34H          ;34H - 扩充指令操作
          LCALL  WR_OPERAT
          MOV  A,LCD_Y
	  LCALL  WR_OPERAT
	  MOV  A,LCD_X
	  LCALL  WR_OPERAT
	  MOV  A,#30H          ;30H - 基本指令操作
	  LCALL  WR_OPERAT
	  RET
;**********************************************************
; 闪烁子程序
;**********************************************************
FLASH:
          MOV  A,#08H       ;关闭显示
          LCALL WR_OPERAT
          LCALL  DELAY5

⌨️ 快捷键说明

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