?? adc0832-1602lcd.lst
字號:
A51 MACRO ASSEMBLER ADC0832_1602LCD 03/29/2005 16:28:27 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN ADC0832-1602LCD.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE ADC0832-1602LCD.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;********************************************************************************
2 ;* 標題: 偉納電子ME300B單片機開發系統演示程序 - ADC0832數字電壓表1602LCD顯示 *
3 ;* 文件: ADC0832_1602LCD.asm *
4 ;* 日期: 2005-3-20 *
5 ;* 版本: 1.0 *
6 ;* 作者: gguoqing *
7 ;* 郵箱: gguoqing@sxicc.ac.cn *
8 ;* 網站: http://www.willar.com *
9 ;********************************************************************************
10 ;* 描述: *
11 ;* ADC0832數字電壓表1602LCD顯示 *
12 ;* *
13 ;* 調節ADC0832旁邊的電位器,在LCD1602 顯示 ADC0832 轉換值的大小 *
14 ;* *
15 ;* *
16 ;********************************************************************************
17 ;* 【版權】 Copyright(C)偉納電子 www.willar.com All Rights Reserved *
18 ;* 【聲明】 此程序僅用于學習與參考,引用請注明版權和作者信息! *
19 ;********************************************************************************
20
21
0090 22 AD_CLK EQU P1.0 ;ADC0832 時鐘端
0091 23 AD_DAT EQU P1.1 ;ADC0832 數據端
00B4 24 AD_CS EQU P3.4 ;ADC0832 片選信號
25
00A0 26 LCD_RS EQU P2.0 ;LCD 數據/命令選擇端
00A1 27 LCD_RW EQU P2.1 ;LCD 讀/寫選擇端
00A2 28 LCD_EN EQU P2.2 ;LCD 使能信號
0020 29 LCD_X EQU 20H ;LCD 地址變量
30
0000 31 ORG 0000H
0000 8000 32 JMP START
33 ;===================================================
0002 758160 34 START: MOV SP,#60H
0005 7580FF 35 MOV P0,#0FFH
0008 75A0FF 36 MOV P2,#0FFH
000B 1115 37 CALL SET_LCD
38
000D 310C 39 START1: CALL AD_CONV ;AD轉換
000F 313E 40 CALL AD_CHULI ;數據處理
0011 11CE 41 CALL LCD_CONV ;數據顯示
0013 80F8 42 JMP START1
43 ;====================================================
44 ; LCD 初始化設置
45 ;====================================================
0015 46 SET_LCD:
0015 C2A2 47 CLR LCD_EN
0017 114C 48 CALL INIT_LCD ;初始化 LCD
0019 116B 49 CALL DELAY1
001B 90002A 50 MOV DPTR,#INFO1 ;指針指到顯示信息1
001E 7401 51 MOV A,#1 ;顯示在第一行
0020 1174 52 CALL LCD_SHOW
0022 90003B 53 MOV DPTR,#INFO2 ;指針指到顯示信息2
0025 7402 54 MOV A,#2 ;顯示在第二行
0027 1174 55 CALL LCD_SHOW
0029 22 56 RET
57 ;-----------------------------------------------------
002A 44494749 58 INFO1: DB "DIGITALVOLTMETER",0 ;LCD 第一行顯示信息
A51 MACRO ASSEMBLER ADC0832_1602LCD 03/29/2005 16:28:27 PAGE 2
002E 54414C56
0032 4F4C544D
0036 45544552
003A 00
003B 20564F4C 59 INFO2: DB " VOLTAGE: V ",0 ;LCD 第二行顯示信息
003F 54414745
0043 3A202020
0047 20205620
004B 00
60 ;-----------------------------------------------------
61 ;-----------------------------------------------------
62 ; LCD 接口初始化
63 ;-----------------------------------------------------
004C 64 INIT_LCD:
004C 7438 65 MOV A,#38H ;雙列顯示,字形5*7點陣
004E 11A2 66 CALL WCOM
0050 116B 67 CALL DELAY1
0052 7438 68 MOV A,#38H ;雙列顯示,字形5*7點陣
0054 11A2 69 CALL WCOM
0056 116B 70 CALL DELAY1
0058 7438 71 MOV A,#38H ;雙列顯示,字形5*7點陣
005A 11A2 72 CALL WCOM
005C 116B 73 CALL DELAY1
005E 740C 74 MOV A,#0CH ;開顯示,關光標,
0060 11A2 75 CALL WCOM
0062 116B 76 CALL DELAY1
0064 7401 77 MOV A,#01H ;清除 LCD 顯示屏
0066 11A2 78 CALL WCOM
0068 116B 79 CALL DELAY1
006A 22 80 RET
81 ;-------------------------------------------------
006B 82 DELAY1: ;延時5MS
006B 7E19 83 MOV R6,#25
006D 7F64 84 DEL1: MOV R7,#100
006F DFFE 85 DJNZ R7,$
0071 DEFA 86 DJNZ R6,DEL1
0073 22 87 RET
88 ;==================================================
89 ;在LCD的第一行或第二行顯示信息字符
90 ;==================================================
0074 91 LCD_SHOW:
92
0074 B4010C 93 CJNE A,#1,LINE2 ;判斷是否為第一行
0077 7480 94 LINE1: MOV A,#80H ;設置 LCD 的第一行地址
0079 11A2 95 CALL WCOM ;寫入命令
007B 1199 96 CALL CLR_LINE ;清除該行字符數據
007D 7480 97 MOV A,#80H ;設置 LCD 的第一行地址
007F 11A2 98 CALL WCOM ;寫入命令
0081 800A 99 JMP FILL
0083 74C0 100 LINE2: MOV A,#0C0H ;設置 LCD 的第二行地址
0085 11A2 101 CALL WCOM ;寫入命令
0087 1199 102 CALL CLR_LINE ;清除該行字符數據
0089 74C0 103 MOV A,#0C0H ;設置 LCD 的第二行地址
008B 11A2 104 CALL WCOM
008D E4 105 FILL: CLR A ;填入字符
008E 93 106 MOVC A,@A+DPTR ;由消息區取出字符
008F B40001 107 CJNE A,#0,LC1 ;判斷是否為結束碼
0092 22 108 RET
0093 11AF 109 LC1: CALL WDATA ;寫入數據
0095 A3 110 INC DPTR ;指針加1
0096 80F5 111 JMP FILL ;繼續填入字符
0098 22 112 RET
113 ;---------------------------------------------------
0099 114 CLR_LINE: ;清除該行 LCD 的字符
0099 7818 115 MOV R0,#24
009B 7420 116 CL1: MOV A,#' '
A51 MACRO ASSEMBLER ADC0832_1602LCD 03/29/2005 16:28:27 PAGE 3
009D 11AF 117 CALL WDATA
009F D8FA 118 DJNZ R0,CL1
00A1 22 119 RET
120 ;======================================================
121 ; 寫指令使能子程序
122 ;RS=L,RW=L,D0-D7=指令碼,E=高脈沖
123 ;=====================================================
00A2 124 WCOM:
00A2 F580 125 MOV P0,A
00A4 C2A0 126 CLR LCD_RS
00A6 C2A1 127 CLR LCD_RW
00A8 D2A2 128 SETB LCD_EN
00AA 11BC 129 CALL DELAY0
00AC C2A2 130 CLR LCD_EN
00AE 22 131 RET
132 ;=====================================================
133 ;寫數據使能子程序
134 ;RS=H,RW=L,D0-D7=數據,E=高脈沖
135 ;=====================================================
00AF 136 WDATA:
00AF F580 137 MOV P0,A
00B1 D2A0 138 SETB LCD_RS
00B3 C2A1 139 CLR LCD_RW
00B5 D2A2 140 SETB LCD_EN
00B7 11BC 141 CALL DELAY0
00B9 C2A2 142 CLR LCD_EN
00BB 22 143 RET
144
00BC 7FFA 145 DELAY0: MOV R7,#250 ;延時500微秒
00BE DFFE 146 DJNZ R7,$
00C0 22 147 RET
148 ;---------------------------------------------------
149 ;在 LCD 第二行指定位置顯示字符
150 ;(A)=ASCII 數據, (B)=位置變量
151 ;---------------------------------------------------
00C1 152 LCDP2:
00C1 C0E0 153 PUSH ACC ;入棧保護A
00C3 E5F0 154 MOV A,B ;設置顯示地址
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -