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

📄 lcd1.asm

📁 lcd显示 128*64 的程序 特经典 是学习单片机液晶显示的基础经典内容
💻 ASM
字号:
;实验目的:熟悉12864LCD的使用
;12864LCD带中文字库
;编程让12864LCD显示公司名称“深圳乾龙盛电子”,公司电话“075528187975”,公司传真“0755-28187976”
;硬件设置:
;关断所有拨码开关。
#include<p16f877a.inc>  
 ;__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC
;芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡
 #define       RS  PORTA,5           ;命令/数据选择
 #DEFINE       RW  PORTA,4           ;读/写选择
 #DEFINE       E   PORTA,3           ;使能信号
 #DEFINE       PSB PORTA,2           ;并口/串口选择(H/L)
 #DEFINE       RST PORTA,0           ;复位信号
 
;-----------------------------------------------
LCD_X          EQU 30H               ;页地址
LCD_Y          EQU 31H               ;Y地址
COUNT          EQU 32H               ;循环计数用
COUNT1         EQU 33H               ;循环计数用
COUNT2         EQU 34H               ;循环计数用

POINT          EQU 35H               ;查表偏移地址 
POINT1         EQU 36H               ;查表偏移地址
POINT2         EQU 37H               ;查表偏移地址
TEMP           EQU 38H               ;临时寄存器
TEMP1          EQU 39H               ;临时寄存器
;-----------------------------------------------
 ORG 0000H                           ;复位地址
 NOP                                 ;ICD需要的空指令
 GOTO   MAIN                         ;跳转到主程序
;**********************主程序************************
MAIN
 BANKSEL   TRISA
 CLRF      TRISA                     ;A口输出
 CLRF      TRISD                     ;D口输出
 BANKSEL   ADCON1
 MOVLW     06H
 MOVWF     ADCON1                    ;A口全为数字口
 CLRF      STATUS

 BCF       RST                       ;复位LCD
 CALL      DELAY                     ;延时一段时间
 BSF       RST                       ;清除复位信号
 NOP
 BSF       PSB                       ;并口通讯

;**************************初始化**********************
 MOVLW     30H                       ;基本指令操作
 CALL      SEND_I
 MOVLW     01H                       ;清除显示
 CALL      SEND_I
 MOVLW     06H                       ;指定在写入或读取时,光标的移动方向
 CALL      SEND_I
 MOVLW     0CH                      ;开显示,关光标,不闪烁
 CALL      SEND_I
;***********************显示汉字************************
HAN_WR2
 CALL     CLEAR_P                    ;清屏
HAN_WR2A                             ;“深圳乾龙盛电子”
 MOVLW    LOW(TAB1A)                  
 MOVWF    POINT
 MOVLW    HIGH(TAB1A)
 MOVWF    POINT1                     ;获取表格的首地址
 MOVLW    0eH                        ;数数据字节个数(7个汉字共14字节)
 MOVWF    COUNT 
 MOVLW    81H                        ;页地址
 CALL     SEND_I
 CALL     QUSHU                      
HAN_WR2B                             ;“WWW。PIC16。COM”
 MOVLW    LOW(TAB1B)
 MOVWF    POINT
 MOVLW    HIGH(TAB1B)
 MOVWF    POINT1
 MOVLW    10H
 MOVWF    COUNT
 MOVLW    90H
 CALL     SEND_I
 CALL     QUSHU
HAN_WR2C                             ;“TEL0755-28187975”
 MOVLW    LOW(TAB1C)
 MOVWF    POINT
 MOVLW    HIGH(TAB1C)
 MOVWF    POINT1
 MOVLW    10H
 MOVWF    COUNT
 MOVLW    88H
 CALL     SEND_I
 CALL     QUSHU
HAN_WR2D                             ;“FAX0755-28187976”
 MOVLW    LOW(TAB1D)
 MOVWF    POINT
 MOVLW    HIGH(TAB1D)
 MOVWF    POINT1
 MOVLW    10H
 MOVWF    COUNT
 MOVLW    98H
 CALL     SEND_I
 CALL     QUSHU
 CALL     DELAY

 CALL     FLASH                      ;调用闪烁程序
 CALL     CLEAR_P                    ;清屏
 GOTO     HAN_WR2                    ;返回重新显示

;************************写准备****************************
WR_ZB
 MOVLW  30H
 CALL   SEND_I
 MOVFW  LCD_Y                        ;Y地址
 CALL   SEND_I
 MOVFW  LCD_X                        ;页地址
 CALL   SEND_I
 RETURN

;*************************闪烁程序*************************
FLASH
 MOVLW  8H                           ;关显示
 CALL   SEND_I
 CALL   DELAY1
 MOVLW  0CH                          ;开显示
 CALL   SEND_I
 CALL   DELAY1
 CALL   DELAY1
 MOVLW  08H                          ;关显示
 CALL   SEND_I
 CALL   DELAY1
 MOVLW  0CH                          ;开显示
 CALL   SEND_I
 CALL   DELAY1
 CALL   DELAY1
 MOVLW  08H                          ;关显示
 CALL   SEND_I
 CALL   DELAY1
 MOVLW  0CH                          ;开显示
 CALL   SEND_I
 CALL   DELAY1
 CALL   DELAY1
 RETURN
;***********************清屏*******************************
CLEAR_P
 MOVLW  1H                           ;清除显示
 CALL   SEND_I
 RETURN
;***********************取数显示程序***********************
QUSHU
 CLRF   TEMP                         ;偏移地址清0
QUSHU1
 MOVFW  TEMP
 ADDWF  POINT,0                      ;求偏移地址
 MOVWF  POINT2 
 CALL   TAB1                         ;查表
 CALL   SEND_D                       ;送LCD显示
 INCF   TEMP,1                       ;偏移地址加1,查找下一个数据
 CALL   DELAY
 DECFSZ COUNT,1
 GOTO   QUSHU1
 RETURN
;************************送数据到LCD***********************
;写数据子程序
;RS=1,RW=0,E=高脉冲,D0-D7=数据
;**********************************************************
SEND_D
 MOVWF  TEMP1                        ;暂存数据
 CALL   CHK_BUSY                     ;判断总线是否忙
 BSF    RS
 BCF    RW
 MOVFW  TEMP1
 MOVWF  PORTD                        ;送出数据
 BSF    E
 NOP
 NOP
 BCF    E
 RETURN
;************************送命令到LCD***********************
;写指令子程序
;RS=0,RW=0,E=高脉冲,D0-D7=指令码
;**********************************************************
SEND_I
 MOVWF  TEMP1                       ;暂存命令
 CALL   CHK_BUSY                    ;判断总线是否忙 
 BCF    RS
 BCF    RW
 MOVFW  TEMP1
 MOVWF  PORTD                       ;送命令
 BSF    E
 NOP
 NOP
 BCF    E
 RETURN
;************************判断总线是否忙********************
;测忙碌子程序
;RS=0,RW=1,E=H,D0-D7=状态字
;**********************************************************
CHK_BUSY
 BANKSEL  TRISD
 MOVLW    0FFH
 MOVWF    TRISD                     ;D口设置为输入
 CLRF     STATUS
 MOVLW    0FFH
 MOVWF    PORTD
 BCF      RS
 BSF      RW
CHECK_BUSY_1
 NOP
 NOP
 NOP
 BSF      E
 NOP
 NOP
 NOP
 BTFSS    PORTD,7                  ;D7为高表示总线忙,为低表示总线空闲
 GOTO     $+6     
 NOP
 NOP
 NOP
 BCF      E 
 GOTO     CHECK_BUSY_1
 BCF      E
 BANKSEL  TRISD
 CLRF    TRISD                     ;恢复D口为输出
 CLRF     STATUS
 RETURN
;***************************延时程序***************************
DELAY
 MOVLW   0afH
 MOVWF   20H
 MOVLW   0ffh
 MOVWF   21H
 DECFSZ  21H,1
 GOTO    $-1
 DECFSZ  20H,1
 GOTO    $-5
 RETURN
;***************************延时程序1**************************
;显示闪烁用
DELAY1
 MOVLW   05H
 MOVWF   22H
 CALL    DELAY
 DECFSZ  22H,1
 GOTO    $-2
 RETURN
;***************************数据表格**************************
TAB1
 MOVFW   POINT1       
 MOVWF   PCLATH                   
 MOVFW   POINT2
 MOVWF   PCL                
TAB1A
 dt  0C9,0EE         ;深
 dt  0DB,0DA         ;圳
 dt  0C7,0AC         ;乾
 dt  0C1,0FA         ;龙
 dt  0CA,0A2         ;盛
 dt  0B5,0E7         ;电
 dt  0D7,0D3         ;子
 
TAB1B                ;WWW.PIC16.COM
 dt ' ', ' ', 'W', 'W', 'W', '.', 'P', 'I', 'C', '1','6', '.', 'C', 'O', 'M', ' ' 
TAB1C                ;TEL0755-28187975
 dt 'T', 'E', 'L' ,'0' ,'7', '5' ,'5','-', '2', '8','1', '8' ,'7','9' ,'7','5'
TAB1D                ;FAX0755-28187976
 dt 'F', 'A', 'X', '0', '7', '5', '5', '-','2', '8','1', '8', '7', '9', '7', '6'

;***************************源程序结束************************
 end

⌨️ 快捷键说明

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