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

📄 pcf8591-lcd1602-4ch-xianshi.lst

📁 89S52单片机做的A/D,D/A的实验的源程序PCF8591 D/A CONVERTER */ /* */ /* LCD1602显示 */ /* 参考电压接至5V电源 */ /* 最小输出电
💻 LST
📖 第 1 页 / 共 3 页
字号:
A51 MACRO ASSEMBLER  PCF8591_LCD1602_4CH_XIANSHI                                          12/20/2006 22:59:54 PAGE     1


MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN PCF8591-LCD1602-4CH-XIANSHI.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE PCF8591-LCD1602-4CH-XIANSHI.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     
                       2     ;*******************************************************************
                       3     ;*                                                                 *
                       4     ;* ME500单片机开发系统演示程序 - PCF8591 四路电压                  *
                       5     ;*                                                                 *
                       6     ;* LCD1602 显示输入通道与电压值                                    *
                       7     ;* 参考电压接至5V电源                                              *
                       8     ;* 最小输出电压:0.00V  最大输出电压:5.00V  分辨率:0.02V         *                       
                                               *
                       9     ;*                                                                 *
                      10     ;*                                                                 *
                      11     ;* 版本: V1.0 (2006/11/20)                                        *
                      12     ;* 作者: gguoqing (Email: gguoqing@willar.com)                    *
                      13     ;* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界) *
                      14     ;* 时间: 2006/04/06                                               *
                      15     ;*                                                                 *
                      16     ;*【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved  *
                      17     ;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!       *
                      18     ;*                                                                 *
                      19     ;*******************************************************************
                      20     
  00B7                21               BEEP  EQU   P3.7       ;蜂鸣器
  0094                22               K1    EQU   P1.4       ;K1键
  0095                23               K2    EQU   P1.5       ;K2键
  0096                24               K3    EQU   P1.6       ;K3键
  0097                25               K4    EQU   P1.7       ;K4键
                      26     
  0090                27               SCL   EQU   P1.0       ;PCF8591时钟线
  0093                28               SDA   EQU   P1.3       ;PCF8591数据线
                      29     
  00A0                30               LCD_RS  EQU  P2.0      ;LCD 数据/命令选择端
  00A1                31               LCD_RW  EQU  P2.1      ;LCD 读/写选择端
  00A2                32               LCD_EN  EQU  P2.2      ;LCD 使能信号
  004F                33               LCD_X   EQU  4FH       ;LCD 地址变量
  0080                34               LCD_DATA  EQU   P0     ;LCD 数据端口
                      35     
  0040                36               AD_DATA   EQU   40H    ;A/D转换值存储单元首地址(用4个单元)
  0045                37               DISSTART  EQU   45H    ;显示单元首地址(用3个单元)
  0049                38               AD_TEMP   EQU   49H    ;AD转换值临时存放单元
                      39     
                      40     ;==========================================================
                      41     
0000                  42                 ORG  0000H
0000 802E             43                 JMP  START
0030                  44                 ORG  0030H
                      45     
                      46     ;==========================================================
0030                  47     START:
0030 758170           48                 MOV  SP,#70H
0033 7400             49                 MOV  A,#00H
0035 F540             50                 MOV  AD_DATA,A           ;A/D转换值存储单元清零
0037 F541             51                 MOV  AD_DATA+1,A
0039 F542             52                 MOV  AD_DATA+2,A
003B F543             53                 MOV  AD_DATA+3,A
003D 7580FF           54                 MOV  P0,#0FFH
0040 75A0FF           55                 MOV  P2,#0FFH
0043 120083           56                 LCALL  SET_LCD1
0046 7D32             57                 MOV  R5,#50
A51 MACRO ASSEMBLER  PCF8591_LCD1602_4CH_XIANSHI                                          12/20/2006 22:59:54 PAGE     2

0048                  58     START1:
0048 12020E           59                 LCALL  DELAY             ;延时10s
004B DDFB             60                 DJNZ  R5,START1
004D 1200BA           61                 LCALL  SET_LCD2
0050                  62     START2:
0050 7A04             63                 MOV  R2,#04H             ;进行四路转换
0052 12023B           64                 LCALL  PCF_AD            ;开始A/D转换
                      65     
0055 854149           66                 MOV  AD_TEMP,AD_DATA+1     ;显示通道0输入电压值
0058 31CA             67                 CALL  TUNBCD
005A 754F02           68                 MOV  LCD_X,#2           ;设置显示位置
005D 12016C           69                 LCALL LCD_CONV1
                      70     
0060 854249           71                 MOV  AD_TEMP,AD_DATA+2   ;显示通道1输入电压值
0063 31CA             72                 CALL  TUNBCD
0065 754F0B           73                 MOV  LCD_X,#11           ;设置显示位置
0068 12016C           74                 LCALL LCD_CONV1
                      75     
006B 854349           76                 MOV  AD_TEMP,AD_DATA+3   ;显示通道2输入电压值
006E 31CA             77                 CALL  TUNBCD
0070 754F02           78                 MOV  LCD_X,#2            ;设置显示位置
0073 120186           79                 LCALL LCD_CONV2
                      80     
0076 854049           81                 MOV  AD_TEMP,AD_DATA   ;显示通道3输入电压值
0079 31CA             82                 CALL  TUNBCD
007B 754F0B           83                 MOV  LCD_X,#11           ;设置显示位置
007E 120186           84                 LCALL LCD_CONV2
                      85     
0081 80CD             86                 JMP  START2
                      87     
                      88     ;==========================================================
                      89     
                      90     ;  LCD 初始化显示子程序
                      91     
                      92     ;==========================================================
                      93     
0083                  94     SET_LCD1:
0083 C2A2             95               CLR  LCD_EN
0085 11F1             96               CALL  INIT_LCD     ;初始化 LCD
0087 3116             97               CALL  DELAY1
0089 900098           98               MOV  DPTR,#INFO1   ;指针指到显示信息1
008C 7401             99               MOV  A,#1          ;显示在第一行
008E 311F            100               CALL  LCD_SHOW
0090 9000A9          101               MOV  DPTR,#INFO2   ;指针指到显示信息2
0093 7402            102               MOV  A,#2          ;显示在第二行
0095 311F            103               CALL  LCD_SHOW
0097 22              104               RET
                     105     
0098 20202020        106     INFO1:  DB  "    PCF-8591    ",0  ;LCD 第一行显示信息
009C 5043462D                
00A0 38353931                
00A4 20202020                
00A8 00                      
                     107     
00A9 41442D44        108     INFO2:  DB  "AD-DA  CONVERTER",0  ;LCD 第二行显示信息
00AD 41202043                
00B1 4F4E5645                
00B5 52544552                
00B9 00                      
                     109     
                     110     
00BA                 111     SET_LCD2:
00BA C2A2            112               CLR  LCD_EN
00BC 11F1            113               CALL  INIT_LCD     ;初始化 LCD
00BE 3116            114               CALL  DELAY1
00C0 9000CF          115               MOV  DPTR,#INFO3   ;指针指到显示信息1
A51 MACRO ASSEMBLER  PCF8591_LCD1602_4CH_XIANSHI                                          12/20/2006 22:59:54 PAGE     3

00C3 7401            116               MOV  A,#1          ;显示在第一行
00C5 311F            117               CALL  LCD_SHOW
00C7 9000E0          118               MOV  DPTR,#INFO4   ;指针指到显示信息2
00CA 7402            119               MOV  A,#2          ;显示在第二行
00CC 311F            120               CALL  LCD_SHOW
00CE 22              121               RET
                     122     
00CF 305F2020        123     INFO3:  DB "0_    V  1_    V",0  ;LCD 第一行显示信息
00D3 20205620                
00D7 20315F20                
00DB 20202056                
00DF 00                      
                     124     
00E0 325F2020        125     INFO4:  DB "2_    V  3_    V",0  ;LCD 第二行显示信息
00E4 20205620                
00E8 20335F20                
00EC 20202056                
00F0 00                      
                     126     
                     127     ;==========================================================
                     128     
                     129     ; LCD 接口初始化
                     130     
                     131     ;==========================================================
00F1                 132     INIT_LCD:
00F1 3116            133               CALL  DELAY1    ;延时15ms,等待LCD供电稳定
00F3 3116            134               CALL  DELAY1
00F5 3116            135               CALL  DELAY1
                     136     
00F7 7438            137               MOV  A,#38H     ;双列显示,字形5*7点阵
00F9 314D            138               CALL  WCOM
00FB 3116            139               CALL  DELAY1
00FD 7438            140               MOV  A,#38H     ;双列显示,字形5*7点阵
00FF 314D            141               CALL  WCOM
0101 3116            142               CALL  DELAY1
0103 7438            143               MOV  A,#38H     ;双列显示,字形5*7点阵
0105 314D            144               CALL  WCOM
0107 3116            145               CALL  DELAY1
0109 740C            146               MOV  A,#0CH     ;开显示,关光标,
010B 314D            147               CALL  WCOM
010D 3116            148               CALL  DELAY1
010F 7401            149               MOV  A,#01H     ;清除 LCD 显示屏
0111 314D            150               CALL  WCOM
0113 3116            151               CALL  DELAY1
0115 22              152               RET
                     153     ;==========================================================
0116                 154     DELAY1:                    ;延时5MS
0116 7E19            155               MOV  R6,#25
0118                 156       DEL:
0118 7F64            157               MOV  R7,#100
011A DFFE            158               DJNZ  R7,$
011C DEFA            159               DJNZ  R6,DEL
011E 22              160               RET
                     161     ;==========================================================
                     162     
                     163     ;在LCD的第一行或第二行显示信息字符
                     164     
                     165     ;==========================================================
011F                 166     LCD_SHOW:
                     167     
011F B4010C          168               CJNE  A,#1,LINE2  ;判断是否为第一行
0122                 169       LINE1:
0122 7480            170               MOV  A,#80H       ;设置 LCD 的第一行地址
0124 314D            171               CALL  WCOM        ;写入命令
0126 3144            172               CALL  CLR_LINE    ;清除该行字符数据
0128 7480            173               MOV  A,#80H       ;设置 LCD 的第一行地址
A51 MACRO ASSEMBLER  PCF8591_LCD1602_4CH_XIANSHI                                          12/20/2006 22:59:54 PAGE     4

012A 314D            174               CALL  WCOM        ;写入命令
012C 800A            175               JMP  FILL
012E                 176       LINE2:
012E 74C0            177               MOV  A,#0C0H      ;设置 LCD 的第二行地址
0130 314D            178               CALL  WCOM        ;写入命令
0132 3144            179               CALL  CLR_LINE    ;清除该行字符数据
0134 74C0            180               MOV  A,#0C0H      ;设置 LCD 的第二行地址
0136 314D            181               CALL  WCOM
0138                 182       FILL:
0138 E4              183               CLR  A            ;填入字符
0139 93              184               MOVC  A,@A+DPTR   ;由消息区取出字符
013A B40001          185               CJNE  A,#0,LC1    ;判断是否为结束码
013D 22              186               RET
013E                 187       LC1:
013E 315A            188               CALL  WDATA       ;写入数据
0140 A3              189               INC  DPTR         ;指针加1
0141 80F5            190               JMP  FILL         ;继续填入字符
0143 22              191               RET
                     192     ;---------------------------------------------------------
0144                 193     CLR_LINE:                  ;清除该行 LCD 的字符
0144 7818            194               MOV  R0,#24
0146                 195        CL1:
0146 7420            196               MOV  A,#' '
0148 315A            197               CALL  WDATA
014A D8FA            198               DJNZ  R0,CL1
014C 22              199               RET
                     200     ;==========================================================
                     201     
                     202     ;写指令使能子程序
                     203     ;RS=L,RW=L,D0-D7=指令码,E=高脉冲
                     204     
                     205     ;==========================================================
014D                 206     WCOM:
014D F580            207               MOV  P0,A
014F C2A0            208               CLR  LCD_RS
0151 C2A1            209               CLR  LCD_RW
0153 D2A2            210               SETB LCD_EN
0155 3167            211               CALL  DELAY0
0157 C2A2            212               CLR  LCD_EN
0159 22              213               RET
                     214     ;==========================================================
                     215     
                     216     ;写数据使能子程序
                     217     ;RS=H,RW=L,D0-D7=数据,E=高脉冲
                     218     
                     219     ;==========================================================
015A                 220     WDATA:
015A F580            221               MOV  P0,A
015C D2A0            222               SETB  LCD_RS
015E C2A1            223               CLR   LCD_RW
0160 D2A2            224               SETB  LCD_EN
0162 3167            225               CALL  DELAY0
0164 C2A2            226               CLR   LCD_EN

⌨️ 快捷键说明

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