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

📄 adc0832-1602lcd.lst

📁 数字电压表 AD芯片: 采用8位串行A/D转换器ADC0832。 ● 8位分辨率
💻 LST
📖 第 1 页 / 共 2 页
字号:
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 + -