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

📄 1602lcm.lst

📁 用741lc164驱动的1602液晶显示程序
💻 LST
字号:
C51 COMPILER V7.50   1602LCM                                                               12/23/2004 17:50:01 PAGE 1   


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

line level    source

   1          /*============================================================
   2          1602LCD 串口驱动程序  2004/12/23
   3          声明:
   4               1、部分函数取自磁动力工作室 明皓
   5                   2、欢迎大家测试和改进
   6                   3、转贴请注明出处
   7          
   8          接线图:
   9          
  10          S51    LS164        1602LCD
  11          
  12          P2.3 --第1脚
  13          P2.4 --- 8 
  14          P2.5 ----------------- E 
  15          P2.6 ----------------- RS 
  16                                 RW 接地
  17                   3 ----------- D0
  18                           4 ----------- D1
  19                           5 ----------- D2
  20                           6 ----------- D3
  21                           10 ---------- D4
  22                           11 ---------- D5
  23                           12 ---------- D6
  24                           13 ---------- D7
  25                           2  接Vcc
  26                           7  GND
  27                           14 Vcc
  28          
  29          [注:AT89S51使用12M晶振]
  30          =============================================================*/
  31          #include <regx51.h>
  32          
  33          #define rs P2_6 //定义引脚
  34          #define e P2_5
  35          #define clk P2_4
  36          #define d P2_3
  37          
  38          
  39          //5ms延时
  40          void Delay5Ms(void)
  41          {
  42   1       unsigned int TempCyc = 5552;
  43   1       while(TempCyc--);
  44   1      }
  45          
  46          //400ms延时
  47          void Delay400Ms(void)
  48          {
  49   1       unsigned char TempCycA = 5;
  50   1       unsigned int TempCycB;
  51   1       while(TempCycA--)
  52   1       {
  53   2        TempCycB=7269;
  54   2        while(TempCycB--);
  55   2       };
C51 COMPILER V7.50   1602LCM                                                               12/23/2004 17:50:01 PAGE 2   

  56   1      }
  57          
  58          void writelcd(bit command,unsigned char ddata)
  59          {
  60   1       unsigned char i;
  61   1       if(command==0) rs = 0; else rs=1;  //0 指令,1 数据 
  62   1       for(i=0;i<8;i++)
  63   1         {
  64   2         d=ddata&0x80; //取出最高位
  65   2         clk=1;
  66   2         clk=0;
  67   2         ddata<<=1; //左移
  68   2         } 
  69   1       e=1; 
  70   1       e=0;
  71   1      }
  72          
  73          void LCMInit(void) //LCM初始化
  74          { 
  75   1       writelcd(0,0x38); //三次显示模式设置
  76   1       Delay5Ms(); 
  77   1       writelcd(0,0x38);
  78   1       Delay5Ms(); 
  79   1       writelcd(0,0x38);
  80   1       Delay5Ms(); 
  81   1       writelcd(0,0x38); //显示模式设置,开始要求每次检测忙信号
  82   1       Delay5Ms();
  83   1       writelcd(0,0x0c); // 显示开及光标设置
  84   1       Delay5Ms();
  85   1       writelcd(0,0x01); //显示清屏
  86   1       Delay5Ms();
  87   1       writelcd(0,0x06); // 显示光标移动设置
  88   1       Delay5Ms(); 
  89   1      }
  90          
  91          //按指定位置显示一个字符
  92          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
  93          {
  94   1       Y &= 0x1; X &= 0xF; //限制X不能大于15,Y不能大于1
  95   1       if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
  96   1       X |= 0x80; //算出指令码
  97   1       writelcd(0,X);
  98   1       writelcd(1,DData);
  99   1      
 100   1      }
 101          
 102          void main(void)
 103          {
 104   1       unsigned char j,k;
 105   1       Delay400Ms(); //启动等待,等LCM讲入工作状态
 106   1       LCMInit();   //LCM初始化
 107   1       while(1)
 108   1       {
 109   2        for(k=0;k<40;k++)
 110   2         {
 111   3          for(j=0;j<16;j++) DisplayOneChar(j,0,0x30+j+k);    
 112   3          Delay400Ms();Delay400Ms();Delay400Ms();
 113   3         }
 114   2       }
 115   1      }


C51 COMPILER V7.50   1602LCM                                                               12/23/2004 17:50:01 PAGE 3   

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