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

📄 lcd1602.lst

📁 这个是市面常用液晶显示器1602的C51源代码,能够在各种51单片机上可靠运行.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   LCD1602                                                               03/08/2008 10:51:07 PAGE 1   


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

stmt level    source

   1          
   2          /******************************************************************/ 
   3          /*                                                                */                                      
             -                          
   4          /*名称:                LCD1602显示程序                           */                                      
             -                                                                                                                        
             -             
   5          /*功能:                                                          */
   6          /*          1、LCD第一行显示: Happy                              */                         
   7          /*             LCD第二行显示: 51kaifa.com                        */
   8          /*          2、先将两行字符写入DDRAM中,然后从右至左逐字移出显示。*/
   9          /*          3、在指定位置停留2秒后,闪烁2次,清屏。               */
  10          /*          4、反复循环上述显示方式。                             */                                      
             -              
  11          /*难度等级:                  中                                  */                                      
             -                               
  12          /* 作者:                  zengrenliang                           */
  13          /* 版权:           http://www.51kaifa.com                        */
  14          /*编写日期:        2006.05.20                                    */                                      
             -                                                                                                                        
             -                                               
  15          /******************************************************************/
  16           
  17          #include <reg52.h>
  18          #include <string.h>
  19          #include <INTRINS.H>
  20          
  21          #define uchar unsigned char
  22          #define uint unsigned int
  23          
  24          sbit lck = P3^5;//HC574锁存
  25          
  26          
  27          uchar code dis1[] = {"   Happy   "};//第一行显示内容
  28          uchar code dis2[] = {" 51kaifa.com "};//第二行显示内容
  29          
  30          
  31          /*******************************************************************/
  32          /*                                                                                                        
             -                          
  33          /* 延时子程序                                                                                             
             -                     
  34          /*                                                                                                        
             -                          
  35          /*******************************************************************/
  36          
  37          void delay(int ms)
  38          {                           
  39   1         int i;
  40   1         while(ms--)
  41   1         {
  42   2           for(i = 0; i< 250; i++)
  43   2           {
  44   3            _nop_();
  45   3            _nop_();
C51 COMPILER V7.06   LCD1602                                                               03/08/2008 10:51:07 PAGE 2   

  46   3            _nop_();
  47   3            _nop_();
  48   3           }
  49   2         }
  50   1      }
  51          
  52          /*******************************************************************/
  53          /*                                                                 */                                     
             -                        
  54          /*检查LCD忙状态                                                    */                                     
             -                  
  55          /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。      */ 
  56          /*                                                                 */                                     
             -                                                                                            
  57          /*******************************************************************/
  58          
  59          bit lcd_busy()
  60          {                          
  61   1          bit result;
  62   1          lck = 0;
  63   1           P1 = 0xff;//LCD_EN = 1; 注意:P1^4=>LCD_EN 
  64   1          lck = 1;
  65   1           P2 = 0x80;//LCD_RW = P2^7,LCD_RW =1; LCD_RS = P2^6,LCD_RS = 0
  66   1          _nop_();
  67   1          _nop_();
  68   1          _nop_();
  69   1          _nop_();   
  70   1          _nop_();
  71   1          _nop_(); 
  72   1          _nop_();
  73   1          _nop_(); 
  74   1           result = (bit)(P0&0x80); 
  75   1          lck = 0;
  76   1          P1 = 0xef;//LCD_EN = 0;
  77   1          lck = 1;
  78   1          return result; 
  79   1      }
  80          
  81          /*******************************************************************/
  82          /*                                                                 */                                     
             -                         
  83          /*写指令数据到LCD                                                  */                                     
             -                
  84          /*RS=L,RW=L,E=上升沿,D0-D7=指令码。                             */  
  85          /*                                                                 */                                     
             -                                                                                  
  86          /*******************************************************************/
  87          
  88          void lcd_wcmd(uchar cmd)
  89          {                          
  90   1         lcd_busy();
  91   1         lck = 0;
  92   1         P1 = 0xef;//LCD_EN = 0
  93   1         lck = 1;
  94   1         P2 = 0x00;//LCD_RW = P2^7,LCD_RW =0; LCD_RS = P2^6,LCD_RS = 0
  95   1      
  96   1          _nop_();
  97   1          _nop_(); 
  98   1         
  99   1          P0 = cmd;
 100   1          _nop_();
 101   1          _nop_();
C51 COMPILER V7.06   LCD1602                                                               03/08/2008 10:51:07 PAGE 3   

 102   1          _nop_();
 103   1          _nop_();
 104   1          lck = 0;
 105   1          P1 = 0xff;//LCD_EN = 1
 106   1          lck = 1;
 107   1      
 108   1          _nop_();
 109   1          _nop_();
 110   1          _nop_();
 111   1          _nop_();
 112   1      
 113   1          lck = 0;
 114   1          P1 = 0xef;//LCD_EN = 1
 115   1          lck = 1;
 116   1      }
 117          
 118          /*******************************************************************/
 119          /*                                                                 */                                     
             -                       
 120          /*写显示数据到LCD                                                  */                                     
             -                 
 121          /*RS=H,RW=L,E=上升沿,D0-D7=数据。                               */
 122          /*                                                                 */                                     
             -                                                                                           
 123          /*******************************************************************/
 124          
 125          void lcd_wdat(uchar dat) 
 126          {                          
 127   1      
 128   1          lcd_busy();
 129   1          lck = 0;
 130   1          P1 = 0xef;//LCD_EN = 0
 131   1          lck = 1;
 132   1          P2 = 0x40;//LCD_RW = P2^7,LCD_RW =1; LCD_RS = P2^6,LCD_RS = 1
 133   1      
 134   1          P0 = dat;
 135   1          _nop_();
 136   1          _nop_();
 137   1          _nop_();
 138   1          _nop_();

⌨️ 快捷键说明

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