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

📄 led.lst

📁 128*64的C语言驱动(带字符的液晶),希望对初学者有点帮助吧
💻 LST
📖 第 1 页 / 共 3 页
字号:
  35      =1  extern char *gets (char *, int n);
  36      =1  extern int scanf (const char *, ...);
  37      =1  extern int sscanf (char *, const char *, ...);
  38      =1  extern int puts (const char *);
  39      =1  
  40      =1  #pragma RESTORE
  41      =1  
  42      =1  #endif
  43      =1  
   4          #include <intrins.h>
   1      =1  /*--------------------------------------------------------------------------
   2      =1  INTRINS.H
   3      =1  
   4      =1  Intrinsic functions for C51.
   5      =1  Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
   6      =1  All rights reserved.
   7      =1  --------------------------------------------------------------------------*/
   8      =1  
   9      =1  #ifndef __INTRINS_H__
  10      =1  #define __INTRINS_H__
  11      =1  
  12      =1  extern void          _nop_     (void);
  13      =1  extern bit           _testbit_ (bit);
  14      =1  extern unsigned char _cror_    (unsigned char, unsigned char);
  15      =1  extern unsigned int  _iror_    (unsigned int,  unsigned char);
  16      =1  extern unsigned long _lror_    (unsigned long, unsigned char);
  17      =1  extern unsigned char _crol_    (unsigned char, unsigned char);
  18      =1  extern unsigned int  _irol_    (unsigned int,  unsigned char);
  19      =1  extern unsigned long _lrol_    (unsigned long, unsigned char);
  20      =1  extern unsigned char _chkfloat_(float);
  21      =1  
  22      =1  #endif
  23      =1  
   5          
   6          
   7          
   8          sbit rs = P3^5;                                                                 //显示数据
   9          sbit rw = P3^6;                                                                 //读写数据
  10          sbit ep = P3^7;                                                                 //使能端
  11          #define uchar unsigned char
  12          #define uint  unsigned int
  13          
  14          
  15          uchar code welcomedata1[]={"应聘者 :陈耿平"};
  16          uchar code welcomedata2[]={"电话:13822442590"};
C51 COMPILER V7.06   LED                                                                   11/27/2007 10:08:50 PAGE 6   

  17          uchar code welcomedata3[]={"QQ:286830627"};
  18          
  19          //--------------------------------------------------------------------------------------------------
  20          //函数:延时子程序,实现(16*N+24)us的延时
  21          void delay(unsigned int N)
  22          {
  23   1              unsigned int i;
  24   1              for(i=0;i<N;i++);
  25   1      
  26   1      }
  27          
  28          //-------------------------------------------------------------------------------------------------
  29          //函数:LCD处理函数
  30          //-------------------------------------------------------------------------------------------------
  31          uchar lcd_bz()
  32          {                                                       // 测试LCD忙碌状态
  33   1              uchar result;
  34   1              rs = 0;
  35   1              rw = 1;
  36   1              ep = 1;
  37   1              _nop_();
  38   1              _nop_();
  39   1              _nop_();
  40   1              _nop_();
  41   1              result = P0_7;
  42   1              ep = 0;
  43   1              return result;  
  44   1      }
  45          void lcd_wcmd(uchar cmd)
  46          {                                                       // 写入指令数据到LCD
  47   1              while(lcd_bz());
  48   1              rs = 0;
  49   1              rw = 0;
  50   1              ep = 0;
  51   1              _nop_();
  52   1              _nop_();        
  53   1              P0 = cmd;
  54   1              _nop_();
  55   1              _nop_();
  56   1              _nop_();
  57   1              _nop_();
  58   1              ep = 1;
  59   1              _nop_();
  60   1              _nop_();
  61   1              _nop_();
  62   1              _nop_();
  63   1              ep = 0;         
  64   1      }
  65          
  66          void lcd_pos(uchar pos)
  67          {                                                       //设定显示位置
  68   1              lcd_bz();
  69   1              rs = 0;
  70   1              rw = 0;
  71   1              P0 = pos;
  72   1              ep = 1;
  73   1              _nop_();
  74   1              _nop_();
  75   1              ep = 0;
  76   1      }
  77          
  78          void lcd_wdat(uchar dat)        
C51 COMPILER V7.06   LED                                                                   11/27/2007 10:08:50 PAGE 7   

  79          {                                                       //写入字符显示数据到LCD
  80   1              while(lcd_bz());
  81   1              rs = 1;
  82   1              rw = 0;
  83   1              ep = 0;
  84   1              P0 = dat;
  85   1              _nop_();
  86   1              _nop_();
  87   1              _nop_();
  88   1              _nop_();
  89   1              ep = 1;
  90   1              _nop_();
  91   1              _nop_();
  92   1              _nop_();
  93   1              _nop_();
  94   1              ep = 0; 
  95   1      }
  96          
  97          
  98          void lcd_init()
  99          {                                                       //LCD初始化设定
 100   1              lcd_wcmd(0x38);                 //
 101   1              delay(1);
 102   1              lcd_wcmd(0x0c);                 //
 103   1              delay(1);
 104   1              lcd_wcmd(0x06);                 //
 105   1              delay(1);
 106   1              lcd_wcmd(0x01);                 //清除LCD的显示内容
 107   1              delay(1);
 108   1      }
 109          
 110          
 111          void main()
 112          {
 113   1              uchar i;
 114   1              lcd_init();                             // 初始化LCD                    
 115   1              delay(100);
 116   1              lcd_pos(0x90);                          // 设置显示位置为第一行的第5个字符
 117   1              i = 0;
 118   1              while(welcomedata1[i] != '\0')
 119   1              {                                               // 显示字?
 120   2                      lcd_wdat(welcomedata1[i]);
 121   2                      i++;
 122   2                      delay(200);
 123   2              }
 124   1              delay(1000);
 125   1      
 126   1      
 127   1              lcd_pos(0x88);                          // 设置显示位置为第一行的第5个字符
 128   1              i = 0;
 129   1              while(welcomedata2[i] != '\0')
 130   1              {                                               // 显示字?
 131   2                      lcd_wdat(welcomedata2[i]);
 132   2                      i++;
 133   2                      delay(200);
 134   2              }
 135   1              delay(1000);
 136   1      
 137   1      
 138   1              lcd_pos(0x98);                          // 设置显示位置为第一行的第5个字符
 139   1              i = 0;
 140   1              while(welcomedata3[i] != '\0')
C51 COMPILER V7.06   LED                                                                   11/27/2007 10:08:50 PAGE 8   

 141   1              {                                               // 显示字?
 142   2                      lcd_wdat(welcomedata3[i]);
 143   2                      i++;
 144   2                      delay(200);
 145   2              }
 146   1              delay(1000);
 147   1      
 148   1      
 149   1      
 150   1        while(1);
 151   1      
 152   1      }
 153          
 154          //-------------------------------------------------------------------------------------------------
 155          
C51 COMPILER V7.06   LED                                                                   11/27/2007 10:08:50 PAGE 9   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION L?0024 (BEGIN)
0000         L?0025:
0000 120000      R     LCALL   _lcd_wdat
0003 0B                INC     R3
0004 7FC8              MOV     R7,#0C8H
0006 7E00              MOV     R6,#00H
             ; FUNCTION _delay (BEGIN)
                                           ; SOURCE LINE # 21
;---- Variable 'N' assigned to Register 'R6/R7' ----
                                           ; SOURCE LINE # 22
                                           ; SOURCE LINE # 24
;---- Variable 'i' assigned to Register 'R4/R5' ----
0008 E4                CLR     A
0009 FD                MOV     R5,A
000A FC                MOV     R4,A
000B         ?C0001:
000B C3                CLR     C
000C ED                MOV     A,R5
000D 9F                SUBB    A,R7
000E EC                MOV     A,R4
000F 9E                SUBB    A,R6
0010 5007              JNC     ?C0004
0012 0D                INC     R5
0013 BD0001            CJNE    R5,#00H,?C0023
0016 0C                INC     R4
0017         ?C0023:
0017 80F2              SJMP    ?C0001
                                           ; SOURCE LINE # 26
0019         ?C0004:
0019 22                RET     
             ; FUNCTION _delay (END)

             ; FUNCTION lcd_bz (BEGIN)
                                           ; SOURCE LINE # 31
                                           ; SOURCE LINE # 32
                                           ; SOURCE LINE # 34
0000 C2B5              CLR     rs
                                           ; SOURCE LINE # 35
0002 D2B6              SETB    rw
                                           ; SOURCE LINE # 36
0004 D2B7              SETB    ep
                                           ; SOURCE LINE # 37
0006 00                NOP     
                                           ; SOURCE LINE # 38
0007 00                NOP     
                                           ; SOURCE LINE # 39
0008 00                NOP     
                                           ; SOURCE LINE # 40
0009 00                NOP     
                                           ; SOURCE LINE # 41
000A A287              MOV     C,P0_7
000C E4                CLR     A
000D 33                RLC     A
000E FF                MOV     R7,A
;---- Variable 'result' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 42
000F C2B7              CLR     ep
                                           ; SOURCE LINE # 43
                                           ; SOURCE LINE # 44
C51 COMPILER V7.06   LED                                                                   11/27/2007 10:08:50 PAGE 10  

0011         ?C0005:
0011 22                RET     
             ; FUNCTION lcd_bz (END)

             ; FUNCTION _lcd_wcmd (BEGIN)
                                           ; SOURCE LINE # 45
;---- Variable 'cmd' assigned to Register 'R6' ----
0000 AE07              MOV     R6,AR7
                                           ; SOURCE LINE # 46
0002         ?C0006:
                                           ; SOURCE LINE # 47
0002 120000      R     LCALL   lcd_bz
0005 EF                MOV     A,R7
0006 70FA              JNZ     ?C0006
0008         ?C0007:
                                           ; SOURCE LINE # 48
0008 C2B5              CLR     rs
                                           ; SOURCE LINE # 49
000A C2B6              CLR     rw

⌨️ 快捷键说明

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