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

📄 液晶显示.lst

📁 一个实用的万年历程序
💻 LST
字号:
C51 COMPILER V8.08   液晶显示                                                              05/04/2008 12:45:49 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE 液晶显示
OBJECT MODULE PLACED IN 液晶显示.OBJ
COMPILER INVOKED BY: D:\program files\Keil 3.2\C51\BIN\C51.EXE 液晶显示.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <at89x51.h>
   2          #include <intrins.h>
   3          #define LCD_RS   P2_0   //定义引脚
   4          #define LCD_RW   P2_1
   5          #define LCD_E    P2_2
   6          #define LCD_DATA  P0
   7          unsigned char a ;
   8          unsigned char b ;
   9          unsigned char c ;
  10          unsigned char d ;
  11          extern void delayus(unsigned int num);
  12          
  13          extern void delayus(unsigned int num) //us级延时函数
  14          {
  15   1        while( --num ) ;
  16   1      }
  17          
  18          bit LCD_Busy(void)         //LCD忙碌状态检测
  19          {                                                       
  20   1              bit result;
  21   1              LCD_RS = 0;                         
  22   1              LCD_RW = 1;
  23   1              LCD_E  =1;
  24   1              _nop_();
  25   1              _nop_();
  26   1              _nop_();
  27   1              _nop_();
  28   1              result = (bit)(P0 & 0x80);      
  29   1          LCD_E  =0;
  30   1              return result;  
  31   1      }
  32          
  33          extern void LCD_WriteCommand(unsigned char cmd)  //写指令数据到LCD
  34          {                                                          
  35   1              while(LCD_Busy());
  36   1              LCD_RS = 0;
  37   1              LCD_RW = 0;
  38   1          LCD_E  =0;
  39   1              _nop_();
  40   1              _nop_();        
  41   1              LCD_DATA = cmd;
  42   1              _nop_();
  43   1              _nop_();
  44   1              _nop_();
  45   1              _nop_();
  46   1              LCD_E  =1;
  47   1              _nop_();
  48   1              _nop_();
  49   1              _nop_();
  50   1              _nop_();
  51   1              LCD_E =0;               
  52   1      }
  53          
  54           void LCD_WriteDate(unsigned char dat)   //写字符显示数据到LCD
  55          {                                                       
C51 COMPILER V8.08   液晶显示                                                              05/04/2008 12:45:49 PAGE 2   

  56   1              while(LCD_Busy());
  57   1              LCD_RS=1;
  58   1              LCD_RW=0;
  59   1              LCD_E=0;
  60   1              LCD_DATA = dat;
  61   1              _nop_();
  62   1              _nop_();
  63   1              _nop_();
  64   1              _nop_();
  65   1              LCD_E  =1;
  66   1              _nop_();
  67   1              _nop_();
  68   1              _nop_();
  69   1              _nop_();
  70   1              LCD_E =0;       
  71   1      }
  72          
  73          extern void LCD_DisplayOneChar(unsigned char X,unsigned char Y,unsigned char Z)   //显示指定坐标的一个字符
             -子函数          X为列0--15,Y为行0--1  ,Z为数据,输入字母加单引号
  74          {   Y &= 0x1;
  75   1          X &= 0xF; //限制X不能大于15,Y不能大于1 
  76   1          if(Y == 0)
  77   1          {
  78   2                 LCD_WriteCommand(X|0X80);
  79   2              LCD_WriteDate(Z);
  80   2              }                                              //1602地址为第一行00H~0FH,第二行为40H~4FH,
  81   1          if(Y==1)                                                           //而且写入地址命令格式为1xxx xxxx,
  82   1          {
  83   2             LCD_WriteCommand((X|0x40)|0X80);
  84   2               LCD_WriteDate(Z);
  85   2          }                                         //所以这里的0x80|(x-0x40)就是如此得出
  86   1      }
  87          
  88          
  89          extern void LCD_Init(void)      //LCD初始化
  90          {                                                       
  91   1          LCD_WriteCommand(0x38);         //两行显示,5×7字型  
  92   1              delayus(5);
  93   1              LCD_WriteCommand(0x0c);     //显示开,不显示光标,光标不闪
  94   1              delayus(5);
  95   1              LCD_WriteCommand(0x06);     //输入模式,地址增量,显示不移动 
  96   1          delayus(5);
  97   1      //      LCD_WriteCommand(0x01);     //清显示,如果加上此语句,显示地址返回0x00
  98   1      //      Delay(5);
  99   1      }
 100          extern void LCD_DisplayOneString(unsigned char X,unsigned char Y,unsigned char a[])
 101          {   unsigned char  m ;//LCD_Init();              //初始化LCD
 102   1          Y &= 0x1;
 103   1          X &= 0xF; //限制X不能大于15,Y不能大于1 
 104   1          m = 0 ;
 105   1          while(a[m] != '\0')
 106   1          {                          //显示第一行字符
 107   2               LCD_DisplayOneChar(X,Y,a[m]);
 108   2               m++ ;
 109   2                   X++;
 110   2          }
 111   1      }
 112          extern void LCD_DisplayNum(unsigned char X,unsigned char Y,unsigned char num)       //显示一个数字
 113          { 
 114   1               a = num%10;
 115   1               b = num/10%10;
 116   1          LCD_DisplayOneChar((X+1),Y,a+0x30);
C51 COMPILER V8.08   液晶显示                                                              05/04/2008 12:45:49 PAGE 3   

 117   1          LCD_DisplayOneChar(X,Y,b+0x30); 
 118   1               delayus(100);
 119   1       
 120   1      }
 121          extern void LCD_DisplayoneNum(unsigned char X,unsigned char num)
 122          {   
 123   1        LCD_DisplayOneChar(X,0,num+0x30); 
 124   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    274    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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