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

📄 lcd_zb.lst

📁 这个程序可以在LCD显示器上显示字符串
💻 LST
字号:
C51 COMPILER V7.07   LCD_ZB                                                                08/22/2008 17:59:38 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE LCD_ZB
OBJECT MODULE PLACED IN lcd_zb.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd_zb.c DEBUG OBJECTEXTEND

stmt level    source

   1          /*==============================================================*/
   2          /*※※※※※※※※※※※※※系统主文※※※※※※※※※※※※※※*/
   3          /*==============================================================*/
   4          #include <at89x51.h>    
   5          /////////////////////////////////
   6          #define LCM_RS P2_2
   7          #define LCM_RW P2_1                      //定义LCD引脚
   8          #define LCM_E  P2_0
   9          #define LCM_Data P0
  10          #define Busy 0x80                        //用检测LCM状态
  11          #define uchar unsigned char
  12          #define uint unsigned int
  13          //////////////////////////////////////////////////
  14          void delayms(uint i)
  15          { uint j;
  16   1         for(;i--;i>0)
  17   1           for(j=0;j<125;j++)
  18   1                  {;}
  19   1      
  20   1      }
  21          
  22          //////////////////////////////////////////////////
  23          void Delay5Ms(void)              //5ms延时
  24          {
  25   1      unsigned int TempCyc = 3552;
  26   1      while(TempCyc--);
  27   1      }
  28          
  29          ////////////////////////////////////////////////////////////////////////
  30          void Delay400Ms(void)           //400ms延时
  31          {
  32   1      unsigned char TempCycA = 5;
  33   1      unsigned int TempCycB;
  34   1      while(TempCycA--)
  35   1      {
  36   2      TempCycB=5269;
  37   2      while(TempCycB--);
  38   2      };
  39   1      }
  40          //////////////////////////////////////////////////
  41          
  42          unsigned char ReadStatusLCM(void)            //读状态
  43          {
  44   1      LCM_Data = 0xFF; 
  45   1      LCM_RS = 0;
  46   1      LCM_RW = 1;
  47   1      LCM_E = 0;
  48   1      LCM_E = 0;
  49   1      LCM_E = 1;
  50   1      while (LCM_Data & Busy); //检测忙信号
  51   1      return(LCM_Data);
  52   1      }
  53          //////////////////////////////////////////////////
  54          
  55          void WriteDataLCM(unsigned char WDLCM)  //写数据
C51 COMPILER V7.07   LCD_ZB                                                                08/22/2008 17:59:38 PAGE 2   

  56          {
  57   1      ReadStatusLCM(); 
  58   1      LCM_Data = WDLCM;
  59   1      LCM_RS = 1;
  60   1      LCM_RW = 0;
  61   1      LCM_E = 0;     
  62   1      LCM_E = 0;     
  63   1      LCM_E = 1;
  64   1      }
  65          //////////////////////////////////////////////////
  66          void WriteCommandLCM(unsigned char WCLCM,BuysC)   //写指令
  67          {
  68   1      if (BuysC) ReadStatusLCM();                     
  69   1      LCM_Data = WCLCM;
  70   1      LCM_RS =0;
  71   1      LCM_RW =0;                                                                       
  72   1      LCM_E = 0;
  73   1      LCM_E = 0;
  74   1      LCM_E = 1; 
  75   1      }
  76          //////////////////////////////////////////////////]
  77          /*unsigned char ReadDataLCM(void)                       //读数据
  78          {
  79          LCM_RS = 1; 
  80          LCM_RW = 1;
  81          LCM_E = 0;
  82          LCM_E = 0;
  83          LCM_E = 1;
  84          return(LCM_Data);
  85          }*/
  86          //////////////////////////////////////////////////
  87          void LCMInit(void)                     //LCM初始化
  88          {
  89   1      LCM_Data = 0;
  90   1      WriteCommandLCM(0x38,0);
  91   1      Delay5Ms(); 
  92   1      WriteCommandLCM(0x38,0);
  93   1      Delay5Ms(); 
  94   1      WriteCommandLCM(0x38,0);
  95   1      Delay5Ms(); 
  96   1      WriteCommandLCM(0x38,1); 
  97   1      WriteCommandLCM(0x08,1); 
  98   1      WriteCommandLCM(0x01,1); 
  99   1      WriteCommandLCM(0x06,1); 
 100   1      WriteCommandLCM(0x0c,1); 
 101   1      }
 102          //////////////////////////////////////////////////
 103          /*void Locatexy(char x,char y)               //确定光标位置
 104          { char temp;
 105            temp=x&0xf;
 106            y&=0x1;
 107            if(y)
 108              temp|=0x40;
 109            temp|=0x80;
 110            WriteCommandLCM(temp,0);
 111          }*/
 112          //////////////////////////////////////////////////
 113          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
 114          {
 115   1      Y &= 0x1;
 116   1      X &= 0xF;              
 117   1      if (Y) X |= 0x40;      
C51 COMPILER V7.07   LCD_ZB                                                                08/22/2008 17:59:38 PAGE 3   

 118   1      X |= 0x80;             
 119   1      WriteCommandLCM(X, 0); 
 120   1      WriteDataLCM(DData);
 121   1      }
 122          //////////////////////////////////////////////////
 123          void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)  //按指定位置显示一串字

⌨️ 快捷键说明

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