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

📄 lcd1602.lst

📁 按键和lcd1602的C51程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   LCD1602                                                               04/18/2009 11:51:07 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN lcd1602.OBJ
COMPILER INVOKED BY: D:\Program Files\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[] = {"A:   B:"};//第一行显示内容
  28          //uchar code dis2[] = {"C:   D:   Q:"};//第二行显示内容
  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                                                               04/18/2009 11: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 = 0x28;//0x91;//LCD_RS = 0; LCD_RW = 1; LCD_EN = 1;
  64   1         lck = 1; //锁存数据到HC574
  65   1          _nop_();
  66   1          _nop_();
  67   1          _nop_();
  68   1          _nop_();   
  69   1           result = (bit)(P0&0x80); 
  70   1          lck = 0;
  71   1          P1 = 0x00;// LCD_EN = 0;
  72   1          lck = 1;
  73   1          return result; 
  74   1      }
  75          
  76          /*******************************************************************/
  77          /*                                                                 */                                     
             -                         
  78          /*写指令数据到LCD                                                  */                                     
             -                
  79          /*RS=L,RW=L,E=上升沿,D0-D7=指令码。                             */  
  80          /*                                                                 */                                     
             -                                                                                  
  81          /*******************************************************************/
  82          
  83          void lcd_wcmd(uchar cmd)
  84          {                          
  85   1         while(lcd_busy());
  86   1      
  87   1         lck = 0;
  88   1         P1 = 0x00;//  LCD_RS = 0; LCD_RW = 0; LCD_EN = 0;
  89   1         lck = 1; 
  90   1      
  91   1          _nop_();
  92   1          _nop_(); 
  93   1         
  94   1          P0 = cmd;
  95   1          _nop_();
  96   1          _nop_();
  97   1          _nop_();
  98   1          _nop_();
  99   1      
 100   1         lck = 0;
 101   1         P1 = 0x20;  // LCD_EN = 1;
C51 COMPILER V7.06   LCD1602                                                               04/18/2009 11:51:07 PAGE 3   

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

⌨️ 快捷键说明

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