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

📄 lcd_show.lst

📁 用中断方式编写的刷瓶显示程序
💻 LST
字号:
C51 COMPILER V7.50   LCD_SHOW                                                              08/24/2007 13:03:52 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LCD_SHOW
OBJECT MODULE PLACED IN lcd_show.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE lcd_show.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /******************************************/
   2          #include <reg51.h>
   3          #include <string.h>
   4          sbit lcm_rs = P1^2;            //寄存器选择
   5          sbit lcm_rw = P1^3;        //读/写控制
   6          sbit lcm_e  = P1^4;            //读/写使能
   7          sbit lcm_blk = P2^4;        //背光led   1.off 0.on
   8          #define lcm_data P0
   9          //函数声明
  10          void delay5ms(void);
  11          void delay400ms(void);
  12          void lcm_write_command(unsigned char wc_lcm,busy_c);
  13          
  14          
  15          /***********************************
  16          //函数名称:    void lcm_ini(void)
  17          //传递参数:    无
  18          //返 回 值:    无
  19          //函数功能:    LCM初始化
  20          //函数说明:
  21          ***********************************/
  22          void lcm_ini(void)
  23          {
  24   1          lcm_data = 0;
  25   1          lcm_write_command(0x38,0);        //16*2显示,5*7点阵,8位数据接口,不检测忙
  26   1          delay5ms();
  27   1          lcm_write_command(0x38,0);
  28   1          delay5ms();
  29   1          lcm_write_command(0x38,0);        //三次显示模式, 不检测忙
  30   1          delay5ms();
  31   1          lcm_write_command(0x38,1);        //16*2显示,5*7点阵,8位数据接口,需要检测忙
  32   1          lcm_write_command(0x80,1);        //关闭显示
  33   1          lcm_write_command(0x01,1);        //clear显示    
  34   1          lcm_write_command(0x06,1);        //指针和光标+1,不滚屏
  35   1          lcm_write_command(0x0c,1);        //开显示,不显示光标
  36   1      }
  37          
  38          /***********************************
  39          //函数名称:    unsigned char lcm_read_status(void)
  40          //传递参数:    无
  41          //返 回 值:    unsigned char
  42          //函数功能:    读lcm状态,等待lcm空闲
  43          //函数说明:    DB7=1,忙
  44          ***********************************/
  45          unsigned char lcm_read_status(void)
  46          {
  47   1          lcm_data=0xff;
  48   1          lcm_rs=0;
  49   1          lcm_rw=1;
  50   1          lcm_e=0;
  51   1          lcm_e=0;
  52   1          lcm_e=1;
  53   1          while(lcm_data & 0x80);
  54   1          return lcm_data;
  55   1      }
C51 COMPILER V7.50   LCD_SHOW                                                              08/24/2007 13:03:52 PAGE 2   

  56          
  57          /***********************************
  58          //函数名称:    void lcm_write_data(unsigned char wd_lcm)
  59          //传递参数:    unsigned char  wd_lcm
  60          //返 回 值:    无
  61          //函数功能:    lcm写数据
  62          //函数说明:    
  63          ***********************************/
  64          void lcm_write_data(unsigned char wd_lcm)
  65          {
  66   1          lcm_read_status();            //判断lcm忙标志
  67   1          lcm_data = wd_lcm;
  68   1          lcm_rs = 1;
  69   1          lcm_rw = 0;
  70   1          lcm_e = 0;
  71   1          lcm_e = 0;
  72   1          lcm_e = 1;
  73   1      }
  74          
  75          /***********************************
  76          //函数名称:    void lcm_write_command(unsigned char wc_lcm, busy_c)
  77          //传递参数:    unsigned char wc_lcm, busy_c
  78          //返 回 值:    无
  79          //函数功能:    lcm写命令
  80          //函数说明:    busy_c=0是,不用检测忙信号
  81          ***********************************/
  82          void lcm_write_command(unsigned char wc_lcm, busy_c)
  83          {
  84   1          if (busy_c)
  85   1              lcm_read_status();
  86   1          lcm_data = wc_lcm;
  87   1          lcm_rs=0;
  88   1          lcm_rw = 0;
  89   1          lcm_e = 0;
  90   1          lcm_e = 0;
  91   1          lcm_e = 1;
  92   1      }
  93          
  94          /***********************************
  95          //函数名称:    void disp_one_char(unsigned char x, unsigned char y,unsigned char disp_data)
  96          //传递参数:    unsigned char x, unsigned char y,unsigned char disp_data
  97          //返 回 值:    无
  98          //函数功能:    指定位置显示一个字符
  99          //函数说明:    
 100          ***********************************/
 101          void disp_one_char(unsigned char x,unsigned char y,unsigned disp_data)
 102          {
 103   1          y = y&0x01;
 104   1          x = x&0x0f;                  //限制2行,没行15个字
 105   1          if (y)
 106   1              x =x + 0x40;          //算RAM地址
 107   1          x = x + 0x80;
 108   1          lcm_write_command(x,0);
 109   1          lcm_write_data(disp_data);
 110   1      
 111   1              }
 112          
 113          /***********************************
 114          //函数名称:    void disp_one_char(unsigned char x, unsigned char y,unsigned char *disp_data)
 115          //传递参数:    unsigned char x, unsigned char y,unsigned char *disp_data
 116          //返 回 值:    无
 117          //函数功能:    指定位置显示一串字符
C51 COMPILER V7.50   LCD_SHOW                                                              08/24/2007 13:03:52 PAGE 3   

 118          //函数说明:    
 119          ***********************************/    
 120          void disp_list_char(unsigned char x,unsigned char y,unsigned char *disp_data)    
 121          {
 122   1          unsigned char char_length,j;
 123   1              lcm_write_command(0x01,1);        //clear显示 
 124   1          char_length = strlen(disp_data);
 125   1          y = y&0x1;
 126   1          x = x&0x0f;
 127   1          for (j=0;j<char_length;j++)
 128   1          {
 129   2              disp_one_char( x,y,disp_data[j]);        //显示一个字符
 130   2              x++;
 131   2          }
 132   1      }
 133          
 134          /***********************************
 135          //函数名称:    void delay5ms(void)
 136          //传递参数:    无
 137          //返 回 值:    无
 138          //函数功能:    延时5MS
 139          //函数说明:
 140          ***********************************/
 141          void delay5ms(void)
 142          {
 143   1          unsigned int TempCyc = 5552;
 144   1          while(TempCyc--);
 145   1      }
 146          /***********************************
 147          //函数名称:    void delay400ms(void)
 148          //传递参数:    无
 149          //返 回 值:    无
 150          //函数功能:    L延时400MS
 151          //函数说明:    LCM开机延时
 152          ***********************************/
 153          void delay400ms(void)
 154          {
 155   1          unsigned char TempCycA = 5;
 156   1          unsigned int TempCycB;
 157   1          while(TempCycA--)
 158   1          {
 159   2              TempCycB=7269;
 160   2              while(TempCycB--);
 161   2          };
 162   1      }
 163          
 164          /*****d******************************
 165          //函数名称:    void main(void)
 166          //传递参数:    无
 167          //返 回 值:    无
 168          //函数功能:    主函数
 169          //函数说明:    
 170          ************************************/
 171          void lcd_disp(void)
 172          {//     unsigned char i;
 173   1              
 174   1          delay400ms();
 175   1          lcm_ini();//        for(i=0;i<9;i++)
 176   1                      //{disp_list_char(0,0,&tab[i]);
 177   1                                       delay400ms();
 178   1                                       delay400ms();
 179   1                                       delay400ms();
C51 COMPILER V7.50   LCD_SHOW                                                              08/24/2007 13:03:52 PAGE 4   

 180   1                                       delay400ms();
 181   1                      disp_list_char(0,0,"BY QIANSHAOFENG");
 182   1                     // while(1);
 183   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    311    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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