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

📄 1602b_lcd.lst

📁 与C51相关模块LCD,24CXX,等的源代码程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   1602B_LCD                                                             03/03/2006 15:27:36 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 1602B_LCD
OBJECT MODULE PLACED IN 1602B_LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1602B_LCD.c BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS

stmt level    source

   1          /**********************************************************
   2          TC1602B LCD DISPLAY WITH 4 BITS MODE
   3          建立时间:2004年12月10号
   4          修改日期:2005年1月12号
   5          LCD第一行显示寄存器地址:0X80-0X8F
   6          LCD第二行显示寄存器地址:0XC0-0XCF
   7          **********************************************************/
   8          #include <At89x51.h>
   9          #include "1602B_LCD.h"
  10          //--------------------------------------------------------
  11          #define LCD_DATA_PORT P3
  12          sbit    LCD_EN=P3^4;
  13          sbit    LCD_RS=P3^5;
  14          //--------------------------------------------------------
  15          typedef unsigned char uchar;
  16          code char Numtable[]="0123456789ABCDEF ";
  17          //--------------------------------------------------------
  18          void delay_nms(char i){for(;i>0;i--);}
  19          //--------------------------------------------------------
  20          void LCD_WR4bits(unsigned char c){
  21   1              //c<<=4;
  22   1              //unsigned char i=0x01,j=0x80,k=0;
  23   1              //for(;i<0x10;i<<=1,j>>=1){
  24   1              //      if(c&i)k|=j;
  25   1              //}
  26   1              LCD_EN=1;
  27   1              //LCD_DATA_PORT&=0x0f;
  28   1              LCD_DATA_PORT&=0xf0;
  29   1              LCD_DATA_PORT|=c;
  30   1              //LCD_DATA_PORT|=k;
  31   1              LCD_EN=0;
  32   1      }
  33          //--------------------------------------------------------
  34          void LCD_init(void){
  35   1      /*      delay_nms(50);
  36   1              LCD_RS=0;                                       //command
  37   1              LCD_WR4bits(0x03);                      //set 8 bits
  38   1              delay_nms(10);
  39   1              LCD_WR4bits(0x03);                      //set 8 bits
  40   1              delay_nms(10);
  41   1              LCD_WR4bits(0x03);                      //set 8 bits
  42   1              delay_nms(10);
  43   1              LCD_WR4bits(0x02);                      //set 4 bits
  44   1              LCD_WR4bits(0x08);
  45   1              delay_nms(2);
  46   1              LCD_WR4bits(0x00);                      //显示开
  47   1              LCD_WR4bits(0x0c);
  48   1              delay_nms(2);
  49   1              LCD_WR4bits(0x00);                      //光标设定
  50   1              LCD_WR4bits(0x06);
  51   1              delay_nms(2);
  52   1              LCD_RS=1;                                       //data
  53   1              delay_nms(10);
  54   1      */
  55   1              delay_nms(250);
C51 COMPILER V7.06   1602B_LCD                                                             03/03/2006 15:27:36 PAGE 2   

  56   1              LCD_RS=0;                                       //command
  57   1              LCD_WR4bits(0x02);                      //set 4 bits
  58   1              delay_nms(50);
  59   1      
  60   1              LCD_WR4bits(0x08);                      //2 Lines,disp off 
  61   1              delay_nms(50);
  62   1              LCD_WR4bits(0x00);                      //显示开
  63   1              LCD_WR4bits(0x0c);                      //cursor off,blink off
  64   1              delay_nms(50);
  65   1              LCD_WR4bits(0x00);                      //clean all
  66   1              LCD_WR4bits(0x01);
  67   1              delay_nms(5);
  68   1              LCD_WR4bits(0x00);                      //inc mode,shift off
  69   1              LCD_WR4bits(0x06);
  70   1      
  71   1              LCD_RS=1;                                       //data
  72   1      }
  73          /*--------------------------------------------------------
  74          LCD_set_xy        : 设置LCD显示的起始位置
  75          
  76          输入参数:x、y    : 显示字符串的位置,X:0-15,Y:0-1
  77          --------------------------------------------------------*/
  78          void LCD_set_xy( uchar x, uchar y ){
  79   1          x=(y==0)?0x80+x:0xc0+x;
  80   1              LCD_RS=0;
  81   1              LCD_WR4bits(x>>4);
  82   1              LCD_WR4bits(x);
  83   1              LCD_RS=1;
  84   1      }
  85          //----------------------------------------------------
  86          void LCD_char(uchar c){
  87   1              LCD_WR4bits(c>>4);
  88   1              LCD_WR4bits(c);
  89   1              delay_nms(2);
  90   1      }
  91          /*----------------------------------------------------
  92          LCD_write_string  : 英文字符串显示函数
  93          
  94          输入参数:*s      :英文字符串指针;
  95                    X、Y    : 显示字符串的位置            
  96          ----------------------------------------------------*/
  97          void LCD_write_string(uchar X,uchar Y,uchar *s){
  98   1              LCD_set_xy( X, Y );
  99   1              while(*s)LCD_char(*s++);
 100   1      }
 101          //----------------------------------------------------
 102          void LCD_digtal(uchar c){
 103   1              LCD_WR4bits(Numtable[c]>>4);
 104   1              LCD_WR4bits(Numtable[c]);
 105   1              delay_nms(2);
 106   1      }
 107          //----------------------------------------------------
 108          void LCD_clear(void){
 109   1              LCD_RS=0;
 110   1              delay_nms(2);
 111   1              LCD_WR4bits(0x00);
 112   1              LCD_WR4bits(0x01);
 113   1              delay_nms(2);
 114   1              LCD_RS=1;
 115   1              delay_nms(10);
 116   1      }
 117          //----------------------------------------------------
C51 COMPILER V7.06   1602B_LCD                                                             03/03/2006 15:27:36 PAGE 3   

 118          void LCD_home(void){
 119   1              LCD_RS=0;
 120   1              delay_nms(2);
 121   1              LCD_WR4bits(0x00);
 122   1              LCD_WR4bits(0x02);
 123   1              delay_nms(2);
 124   1              LCD_RS=1;
 125   1              delay_nms(10);
 126   1      }
 127          //----------------------------------------------------
C51 COMPILER V7.06   1602B_LCD                                                             03/03/2006 15:27:36 PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _delay_nms (BEGIN)
                                           ; SOURCE LINE # 18
;---- Variable 'i' assigned to Register 'R7' ----
0000         ?C0001:
0000 D3                SETB    C
0001 EF                MOV     A,R7
0002 6480              XRL     A,#080H
0004 9480              SUBB    A,#080H
0006 4003              JC      ?C0004
0008 1F                DEC     R7
0009 80F5              SJMP    ?C0001
000B         ?C0004:
000B 22                RET     
             ; FUNCTION _delay_nms (END)

             ; FUNCTION L?0019 (BEGIN)
0000 120000      R     LCALL   _LCD_WR4bits
0003 7F32              MOV     R7,#032H
0005         L?0020:
0005 120000      R     LCALL   _delay_nms
0008 E4                CLR     A
0009 FF                MOV     R7,A
             ; FUNCTION _LCD_WR4bits (BEGIN)
                                           ; SOURCE LINE # 20
;---- Variable 'c' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 26
000A D2B4              SETB    LCD_EN
                                           ; SOURCE LINE # 28
000C 53B0F0            ANL     P3,#0F0H
                                           ; SOURCE LINE # 29
000F EF                MOV     A,R7
0010 42B0              ORL     P3,A
                                           ; SOURCE LINE # 31
0012 C2B4              CLR     LCD_EN
                                           ; SOURCE LINE # 32
0014 22                RET     
             ; FUNCTION _LCD_WR4bits (END)

             ; FUNCTION LCD_init (BEGIN)
                                           ; SOURCE LINE # 34
                                           ; SOURCE LINE # 55
0000 7FFA              MOV     R7,#0FAH
0002 120000      R     LCALL   _delay_nms
                                           ; SOURCE LINE # 56
0005 C2B5              CLR     LCD_RS
                                           ; SOURCE LINE # 57
0007 7F02              MOV     R7,#02H
0009 120000      R     LCALL   _LCD_WR4bits
                                           ; SOURCE LINE # 58
000C 7F32              MOV     R7,#032H
000E 120000      R     LCALL   _delay_nms
                                           ; SOURCE LINE # 60
0011 7F08              MOV     R7,#08H
                                           ; SOURCE LINE # 61
                                           ; SOURCE LINE # 62
0013 120000      R     LCALL   L?0019
                                           ; SOURCE LINE # 63
0016 7F0C              MOV     R7,#0CH
                                           ; SOURCE LINE # 64
C51 COMPILER V7.06   1602B_LCD                                                             03/03/2006 15:27:36 PAGE 5   

                                           ; SOURCE LINE # 65
0018 120000      R     LCALL   L?0019
                                           ; SOURCE LINE # 66
001B 0F                INC     R7
001C 120000      R     LCALL   _LCD_WR4bits
                                           ; SOURCE LINE # 67
001F 7F05              MOV     R7,#05H

⌨️ 快捷键说明

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