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

📄 02_adc0832.lst

📁 用AT89S52和DAC0832模数转换器实现了数字电压表的功能
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  02_ADC0832                                                           02/14/2009 11:03:48 PAGE     1


MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN 02_ADC0832.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE 02_ADC0832.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;********************************************Copyright (c)*********************************
                             **
                       2     ;                                                                                          
                                                                                                                          *
                       3     ;**-----------------------------------------文件信息---------------------------------------
                             -*
                       4     ;**标        题: 数字电压表:DAC0832数模转换,LCD1602显示                                  
                                                          *
                       5     ;**文   件   名: 02_ADC0832.asm                                                            
                              *                                                                       *
                       6     ;**最后修改日期: 2009年02月08日                                                            
                              *
                       7     ;**版        本: v1.0                                                                      
                                                                                          *
                       8     ;**邮        箱: sdjiezh@163.com                                                           
                                                                                          *
                       9     ;**网        站: http://www.sde.edu.cn                                                     
                                                  *
                      10     ;**-----------------------------------------功能描述---------------------------------------
                             -*
                      11     ;*          ADC0832数字电压表1602LCD显示 设置CH0输入,D0,DI短接P1.7, P0为数据口           
                                  *                      *
                      12     ;*                                                                                         
                              *
                      13     ;*          调节电位器(中间接CH0两端接+5伏和地,在LCD1602 显示 ADC0832 转换值             
                              *          
                      14     ;                                                                                          
                                                                                                                          *
                      15     ;**----------------------------------------------------------------------------------------
                             -*
  0096                16               AD_CLK  EQU  P1.6      ;ADC0832 时钟端
  0095                17               AD_CS   EQU  P1.5      ;ADC0832 片选信号
  0097                18               AD_DAT  EQU  P1.7      ;ADC0832 数据输出端
  00A5                19               LCD_RS  EQU  P2.5      ;LCD 数据/命令选择端
  00A6                20               LCD_RW  EQU  P2.6      ;LCD 读/写选择端
  00A7                21               LCD_EN  EQU  P2.7      ;LCD 使能信号
  0020                22               LCD_X   EQU  20H       ;LCD 地址变量
                      23     
0000                  24                 ORG  0000H
0000 8000             25                 JMP  START
                      26     ;===================================================
0002 758160           27     START:      MOV  SP,#60H
0005 7580FF           28                 MOV  P0,#0FFH
0008 75A0FF           29                 MOV  P2,#0FFH
000B 1115             30                 CALL  SET_LCD
                      31     
000D 310C             32     START1:     CALL  AD_CONV        ;AD转换
000F 313E             33                 CALL  AD_CHULI       ;数据处理
0011 11CE             34                 CALL  LCD_CONV       ;数据显示
0013 80F8             35                 JMP   START1
                      36     ;====================================================
                      37     ;  LCD 初始化设置
                      38     ;====================================================
0015                  39     SET_LCD:
0015 C2A7             40               CLR  LCD_EN
0017 114C             41               CALL  INIT_LCD     ;初始化 LCD
0019 116B             42               CALL  DELAY1
001B 90002A           43               MOV  DPTR,#INFO1   ;指针指到显示信息1
A51 MACRO ASSEMBLER  02_ADC0832                                                           02/14/2009 11:03:48 PAGE     2

001E 7401             44               MOV  A,#1          ;显示在第一行
0020 1174             45               CALL  LCD_SHOW
0022 90003B           46               MOV  DPTR,#INFO2   ;指针指到显示信息2
0025 7402             47               MOV  A,#2          ;显示在第二行
0027 1174             48               CALL  LCD_SHOW
0029 22               49               RET
                      50     ;-----------------------------------------------------
002A 44494749         51     INFO1:  DB  "DIGITALVOLTMETER",0  ;LCD 第一行显示信息
002E 54414C56                
0032 4F4C544D                
0036 45544552                
003A 00                      
003B 20564F4C         52     INFO2:  DB  " VOLTAGE:     V ",0  ;LCD 第二行显示信息
003F 54414745                
0043 3A202020                
0047 20205620                
004B 00                      
                      53     ;-----------------------------------------------------
                      54     ;-----------------------------------------------------
                      55     ; LCD 接口初始化
                      56     ;-----------------------------------------------------
004C                  57     INIT_LCD:
004C 7438             58               MOV  A,#38H     ;双列显示,字形5*7点阵
004E 11A2             59               CALL  WCOM
0050 116B             60               CALL  DELAY1
0052 7438             61               MOV  A,#38H     ;双列显示,字形5*7点阵
0054 11A2             62               CALL  WCOM
0056 116B             63               CALL  DELAY1
0058 7438             64               MOV  A,#38H     ;双列显示,字形5*7点阵
005A 11A2             65               CALL  WCOM
005C 116B             66               CALL  DELAY1
005E 740C             67               MOV  A,#0CH     ;开显示,关光标,
0060 11A2             68               CALL  WCOM
0062 116B             69               CALL  DELAY1
0064 7401             70               MOV  A,#01H     ;清除 LCD 显示屏
0066 11A2             71               CALL  WCOM
0068 116B             72               CALL  DELAY1
006A 22               73               RET
                      74     ;-------------------------------------------------
006B                  75     DELAY1:                    ;延时5MS
006B 7E19             76               MOV  R6,#25
006D 7F64             77       DEL1:   MOV  R7,#100
006F DFFE             78               DJNZ  R7,$
0071 DEFA             79               DJNZ  R6,DEL1
0073 22               80               RET
                      81     ;==================================================
                      82     ;在LCD的第一行或第二行显示信息字符
                      83     ;==================================================
0074                  84     LCD_SHOW:
                      85     
0074 B4010C           86               CJNE  A,#1,LINE2  ;判断是否为第一行
0077 7480             87       LINE1:  MOV  A,#80H       ;设置 LCD 的第一行地址
0079 11A2             88               CALL  WCOM        ;写入命令
007B 1199             89               CALL  CLR_LINE    ;清除该行字符数据
007D 7480             90               MOV  A,#80H       ;设置 LCD 的第一行地址
007F 11A2             91               CALL  WCOM        ;写入命令
0081 800A             92               JMP  FILL
0083 74C0             93       LINE2:  MOV  A,#0C0H      ;设置 LCD 的第二行地址
0085 11A2             94               CALL  WCOM        ;写入命令
0087 1199             95               CALL  CLR_LINE    ;清除该行字符数据
0089 74C0             96               MOV  A,#0C0H      ;设置 LCD 的第二行地址
008B 11A2             97               CALL  WCOM
008D E4               98       FILL:   CLR  A            ;填入字符
008E 93               99               MOVC  A,@A+DPTR   ;由消息区取出字符
008F B40001          100               CJNE  A,#0,LC1    ;判断是否为结束码
0092 22              101               RET
A51 MACRO ASSEMBLER  02_ADC0832                                                           02/14/2009 11:03:48 PAGE     3

0093 11AF            102       LC1:    CALL  WDATA       ;写入数据
0095 A3              103               INC  DPTR         ;指针加1
0096 80F5            104               JMP  FILL         ;继续填入字符
0098 22              105               RET
                     106     ;---------------------------------------------------
0099                 107     CLR_LINE:                  ;清除该行 LCD 的字符
0099 7818            108               MOV  R0,#24
009B 7420            109        CL1:   MOV  A,#' '
009D 11AF            110               CALL  WDATA
009F D8FA            111               DJNZ  R0,CL1
00A1 22              112               RET
                     113     ;======================================================
                     114     ; 写指令使能子程序
                     115     ;RS=L,RW=L,D0-D7=指令码,E=高脉冲
                     116     ;=====================================================
00A2                 117     WCOM:
00A2 F580            118               MOV  P0,A
00A4 C2A5            119               CLR  LCD_RS
00A6 C2A6            120               CLR  LCD_RW
00A8 D2A7            121               SETB LCD_EN
00AA 11BC            122               CALL  DELAY0
00AC C2A7            123               CLR  LCD_EN
00AE 22              124               RET
                     125     ;=====================================================
                     126     ;写数据使能子程序
                     127     ;RS=H,RW=L,D0-D7=数据,E=高脉冲
                     128     ;=====================================================
00AF                 129     WDATA:
00AF F580            130               MOV  P0,A
00B1 D2A5            131               SETB  LCD_RS
00B3 C2A6            132               CLR   LCD_RW
00B5 D2A7            133               SETB  LCD_EN
00B7 11BC            134               CALL  DELAY0
00B9 C2A7            135               CLR   LCD_EN
00BB 22              136               RET
                     137     
00BC 7FFA            138     DELAY0:   MOV  R7,#250     ;延时500微秒
00BE DFFE            139               DJNZ  R7,$
00C0 22              140               RET
                     141     ;---------------------------------------------------
                     142     ;在 LCD 第二行指定位置显示字符
                     143     ;(A)=ASCII 数据, (B)=位置变量

⌨️ 快捷键说明

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