📄 tlcd.lst
字号:
MPASM 5.06.4 TLCD.ASM 7-27-2007 17:04:54 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001
00002 ;* 本程序包含控制外部液晶面板的4-BIT控制模式子程序。
00003 ;*这些程序是专门为演示板设计的。但它也可作为其他类
00004 ;*型的使用 KS0066U控制器的液晶面板的控制程序。
00005 ;* 占用I/O RB1-RB5,RA5
00006 ;* 使用RAM 2个字节
00007 ;* 程序包括:
00008 ;* - InitLCD 初始化液晶面板函数
00009 ;* - putcLCD 将字符写入 LCD的函数
00010 ;* - SendCmd 将命令写入 LCD的函数
00011 ;* - clrLCD 清 LCD显示函数
00012 ;* 入口参数 WREG
00013 ;* 出口参数 无
00014 ;*LCD显示RAM地址:第一行0x80~8F;第二行0xC0~CF
00015 ;************************************************
00016 #INCLUDE P16F877A.INC ;定义所用单片机的头文件
00001 LIST
00002 ; P16F877A.INC Standard Header File, Version 1.00 Microchip Technology, Inc.
00400 LIST
00017
00000020 00018 COUNT EQU 0X20
00000020 00019 COUNT EQU 0X20;
00000021 00020 COUNT1 EQU 0X21
00000021 00021 COUNT1 EQU 0X21;
00000022 00022 COUNT2 EQU 0X22
00000022 00023 COUNT2 EQU 0X22;
00024
00000023 00025 LCD_TEMP EQU 0X23
00000024 00026 BYTE EQU 0X24
00000024 00027 BYTE EQU 0X24
00000025 00028 LCD_DATA1 EQU 0X25
00000026 00029 BYTESH EQU 0X26
00030
00031
00032 ;* 定义 LCD数据& 控制I/O口 ;可以用任意的6个普通的I/O管脚定义;实际连线依据该部分定义
00033 ;*******************************************************************************
00034 #DEFINE LCD_DB7 PORTB,5 ;占用的I/O口定义
00035 #DEFINE LCD_DB6 PORTB,4 ;该行硬件连接:LCD的DB6与RB4连接,其它类推
00036 #DEFINE LCD_DB5 PORTB,3 ;
00037 #DEFINE LCD_DB4 PORTB,2 ;
00038 #DEFINE LCD_E PORTA,5 ;
00039 #DEFINE LCD_RS PORTB,1 ;
00040 #DEFINE LCD_DB7_DIR TRISB,5 ;对应的方向寄存器定义
00041 #DEFINE LCD_DB6_DIR TRISB,4 ;
00042 #DEFINE LCD_DB5_DIR TRISB,3 ;
00043 #DEFINE LCD_DB4_DIR TRISB,2 ;
00044 #DEFINE LCD_E_DIR TRISA,5 ;
00045 #DEFINE LCD_RS_DIR TRISB,1 ;
00046 ;******************************************************************************
00047 ; LCD 模块命令
00048 #DEFINE DISP_ON 0X00C ; 开显示
00049 #DEFINE DISP_ON_C 0X00E ; 开显示, 开指针
00050 #DEFINE DISP_ON_B 0X00F ; 开显示, 开指针,开闪烁
MPASM 5.06.4 TLCD.ASM 7-27-2007 17:04:54 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00051 #DEFINE DISP_OFF 0X008 ; 关显示
00052 #DEFINE CLR_DISP 0X001 ; 清显示的操作数
00053 #DEFINE ENTRY_INC 0X006 ; 操作数
00054 #DEFINE ENTRY_INC_S 0X007 ; 操作数
00055 #DEFINE ENTRY_DEC 0X004 ; 操作数
00056 #DEFINE ENTRY_DEC_S 0X005 ; 操作数
00057 #DEFINE DD_RAM_ADDR 0X080 ; 初始化第一行显示的操作数
00058 #DEFINE DD_RAM_UL 0X0C0 ; 初始化第二行显示的操作数
00059
00060
Warning[205]: Found directive in column 1. (ORG)
0000 00061 ORG 0X0;
0000 0000 00062 NOP;
0001 0000 00063 NOP;
0002 0000 00064 NOP;
0003 018B 00065 CLRF INTCON
0004 2025 00066 CALL INITLCD
0005 2025 00067 CALL INITLCD
0006 2025 00068 CALL INITLCD
0007 204E 00069 CALL CLRLCD
0008 204E 00070 CALL CLRLCD
0009 204E 00071 CALL CLRLCD
00072
000A 3048 00073 MOVLW 'H';
000B 2040 00074 CALL PUTCLCD;
000C 3041 00075 MOVLW 'A';
000D 2040 00076 CALL PUTCLCD;
000E 3050 00077 MOVLW 'P';
000F 2040 00078 CALL PUTCLCD;
0010 3050 00079 MOVLW 'P';
0011 2040 00080 CALL PUTCLCD;
0012 3059 00081 MOVLW 'Y';
0013 2040 00082 CALL PUTCLCD;
00083
0014 3045 00084 MOVLW 'E';
0015 2040 00085 CALL PUTCLCD;
0016 3056 00086 MOVLW 'V';
0017 2040 00087 CALL PUTCLCD;
0018 3045 00088 MOVLW 'E';
0019 2040 00089 CALL PUTCLCD;
001A 3052 00090 MOVLW 'R';
001B 2040 00091 CALL PUTCLCD;
001C 3059 00092 MOVLW 'Y';
001D 2040 00093 CALL PUTCLCD;
001E 3044 00094 MOVLW 'D';
001F 2040 00095 CALL PUTCLCD;
0020 3041 00096 MOVLW 'A';
0021 2040 00097 CALL PUTCLCD;
0022 3059 00098 MOVLW 'Y';
0023 2040 00099 CALL PUTCLCD;
00100
0024 2824 00101 GOTO $;;
00102
MPASM 5.06.4 TLCD.ASM 7-27-2007 17:04:54 PAGE 3
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00103 ;InitLCD 初始化LCD模块
00104
0025 00105 INITLCD
00106
0025 1683 00107 BSF STATUS,RP0 ;Bank 1
0026 1303 00108 BCF STATUS,RP1 ;初始化相关I/O引脚
0027 30C1 00109 MOVLW B'11000001';
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0028 0586 00110 ANDWF TRISB,F;
00111 ;bcf LCD_DB7_DIR
00112 ;bcf LCD_DB6_DIR
00113 ;bcf LCD_DB5_DIR
00114 ;bcf LCD_DB4_DIR
00115 ;bcf LCD_RS_DIR
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0029 1285 00116 BCF LCD_E_DIR
002A 3007 00117 MOVLW 0X07
002B 009C 00118 MOVWF 0X1C;CMCON=7
00119
002C 1283 00120 BCF STATUS,RP0 ;Bank 0
002D 30C1 00121 MOVLW B'11000001';
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
002E 0586 00122 ANDWF TRISB,F;
00123 ;bcf LCD_DB7
00124 ;bcf LCD_DB6
00125 ;bcf LCD_DB5
00126 ;bcf LCD_DB4
00127 ;bcf LCD_RS
002F 1285 00128 BCF LCD_E
00129
0030 1685 00130 BSF LCD_E ;清数据线
0031 1285 00131 BCF LCD_E
00132
0032 1586 00133 BSF LCD_DB5 ;设置LCD工作方式
0033 1685 00134 BSF LCD_E
0034 1285 00135 BCF LCD_E
0035 2066 00136 CALL LONGDELAY
00137
0036 3028 00138 MOVLW 0X28 ;再次设置工作方式
0037 2047 00139 CALL SENDCMD ;四位数据总线,两行显示,5X7点阵字符
0038 300C 00140 MOVLW DISP_ON ;开显示
0039 2047 00141 CALL SENDCMD
003A 3006 00142 MOVLW ENTRY_INC ;设置指针移动方式
003B 2047 00143 CALL SENDCMD
003C 3080 00144 MOVLW DD_RAM_ADDR ;设置起始地址
003D 2047 00145 CALL SENDCMD
003E 204E 00146 CALL CLRLCD ;清屏
003F 0008 00147 RETURN
00148
00149 ;*putcLCD 将字符数据送入 LCD *
00150 ;* 本程序将字符数据分成了高半字节和低半字节分别输入 *
00151 ;* 先送入的是高半字节 *
00152
MPASM 5.06.4 TLCD.ASM 7-27-2007 17:04:54 PAGE 4
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0040 00153 PUTCLCD
00154
0040 1486 00155 BSF LCD_RS ;设置为送数据模式
0041 00A4 00156 MOVWF BYTE ;存 WREG 到 Byte 寄存器
0042 2051 00157 CALL WRITE ;写入高半字节
0043 0EA4 00158 SWAPF BYTE,F ;送入数据的低字节
0044 2051 00159 CALL WRITE ;接着送低半字节
0045 2062 00160 CALL DELAY
0046 0008 00161 RETURN
00162 ;*******************************************************************
00163 ;* SendCmd - 送命令到 LCD *
00164 ;* 本程序将命令数据分成了高半字节和低半字节分别输入 *
00165 ;* 先送入的是高半字节 *
00166 ;*******************************************************************
0047 00167 SENDCMD
00168
0047 1086 00169 BCF LCD_RS ;设置为送命令模式,与PUTCLCD仅相差此行
0048 00A4 00170 MOVWF BYTE ;存 WREG 到 Byte 寄存器
0049 2051 00171 CALL WRITE ;送入命令的高字节
004A 0EA4 00172 SWAPF BYTE,F ;送入命令的低字节
004B 2051 00173 CALL WRITE
004C 2062 00174 CALL DELAY
004D 0008 00175 RETURN
00176 ;*******************************************************************
00177 ;* clrLCD - 清除 LCD 显示 *
00178 ;*******************************************************************
004E 00179 CLRLCD
004E 3001 00180 MOVLW CLR_DISP ;
004F 2047 00181 CALL SENDCMD
0050 0008 00182 RETURN
00183 ;*******************************************************************
00184 ;*write - 送半个字节数据
00185 ;******************************************************************
0051 00186 WRITE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -