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

📄 lcd.lst

📁 本程序可以实现温度测量
💻 LST
字号:
C51 COMPILER V7.50   LCD                                                                   03/30/2009 21:11:18 PAGE 1   


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

line level    source

   1          #include <reg51.h>
   2          
   3          sbit LCD_RS=P0^5;
   4          sbit LCD_RW=P0^6;
   5          sbit LCD_E=P0^7;
   6          #define LCD_Data  P2
   7          #define Busy 0x80
   8          
   9          void delay_ms(unsigned char n)      
  10          {
  11   1          unsigned int i=0,j=0;
  12   1          for (i=n;i>0;i--)
  13   1           for (j=498;j>0;j--);  
  14   1      }
  15          
  16          
  17          /****************************************************************************
  18          * 名称:ChkBusy()
  19          * 功能:检查总线是否忙
  20          ****************************************************************************/
  21          void ChkBusy()
  22          {
  23   1              LCD_Data = 0xFF;
  24   1              while(1)
  25   1              {
  26   2                      LCD_RS=0;
  27   2                      LCD_RW=1;
  28   2                      LCD_E=1;
  29   2                      if(!(LCD_Data & Busy))break;
  30   2                      LCD_E=0;
  31   2              }
  32   1      }
  33          
  34          /****************************************************************************
  35          * 名称:WriteCommandLCD()
  36          * 功能:写命令函数
  37          ****************************************************************************/
  38          void WriteCommandLCD(unsigned char dat)
  39          {
  40   1              ChkBusy();
  41   1              LCD_RS=0;               //全部清零
  42   1              LCD_RW=0;
  43   1              LCD_E=1;
  44   1              LCD_Data=dat;           //再送数
  45   1              LCD_E=0;
  46   1      }
  47          /****************************************************************************
  48          * 名称:WriteDataLCD()
  49          * 功能:写数据函数
  50          ****************************************************************************/
  51          void WriteDataLCD(unsigned char dat)    
  52          {
  53   1              ChkBusy();
  54   1              LCD_RS=1;
  55   1              LCD_RW=0;
C51 COMPILER V7.50   LCD                                                                   03/30/2009 21:11:18 PAGE 2   

  56   1              LCD_E=1;
  57   1              LCD_Data=dat;           //再送数
  58   1              LCD_E=0;
  59   1      }
  60          /****************************************************************************
  61          * 名称:lcd_init()
  62          * 功能:lcd初始化函数
  63          ****************************************************************************/
  64          void lcd_init(void)
  65          {
  66   1              WriteCommandLCD(0x38);                  
  67   1              WriteCommandLCD(0x0c);                  //开显示
  68   1              WriteCommandLCD(0x80);
  69   1              WriteCommandLCD(0x01);
  70   1              delay_ms(100);
  71   1      }
  72          
  73          
  74          
  75          
  76          
  77          /****************************************************************************
  78          * //按指定位置显示一个字符
  79          ****************************************************************************/
  80          
  81          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
  82          {
  83   1        Y &= 0x1;
  84   1        X &= 0xF;                 //限制X不能大于15,Y不能大于1
  85   1        if (Y) X |= 0x40;         //当要显示第二行时地址码+0x40;
  86   1        X |= 0x80;                //算出指令码
  87   1        WriteCommandLCD(X);       //发送地址码
  88   1        WriteDataLCD(DData);
  89   1      }
  90          
  91          /****************************************************************************
  92          * 名称:DisText()
  93          * 功能:显示文本函数
  94          ****************************************************************************/
  95          void DisText(unsigned char X, unsigned char Y,unsigned char *p)
  96          {
  97   1        Y &= 0x1;
  98   1        X &= 0xF;                 //限制X不能大于15,Y不能大于1
  99   1        if (Y) X |= 0x40;         //当要显示第二行时地址码+0x40;
 100   1        X |= 0x80;                //算出指令码
 101   1        WriteCommandLCD(X);       //发送地址码
 102   1         while(*p)  
 103   1              {
 104   2                      LCD_Data = *p;
 105   2                      WriteDataLCD(*p);   
 106   2                      p++;
 107   2              }       
 108   1      }
 109          
 110          
 111          void main(viod)
 112          {
 113   1                lcd_init();
 114   1                
 115   1                
 116   1            DisplayOneChar( 0,1,0x31) ;
 117   1                DisplayOneChar( 1,1,0x32)     ;
C51 COMPILER V7.50   LCD                                                                   03/30/2009 21:11:18 PAGE 3   

 118   1                DisplayOneChar( 2,1,0x33)     ;
 119   1                DisText( 0,0,"zhangxiaoxu")   ;
 120   1                
 121   1                while(1) ;
 122   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    220    ----
   CONSTANT SIZE    =     12    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       2
   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 + -