yjxs.lst

来自「郑州远博公司生产的单片机B型实验板电路原理图及配套源程序代码」· LST 代码 · 共 151 行

LST
151
字号
C51 COMPILER V7.20   YJXS                                                                  06/06/2005 22:55:35 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE YJXS
OBJECT MODULE PLACED IN yjxs.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE yjxs.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************
   2          YB-51-B液晶屏显示模块(需要参看LCD1602液晶屏的资料,配套光盘上有)
   3          来源: 郑州远博科技   王兴民
   4          0371-66949037  0371-67256036 13949105551
   5          ***************************************************************************/
   6          
   7          #include<config.h>
   8          #define RS1602    P1_0       //数据/命令选择
   9          #define RW1602    P1_1       //读/写选择
  10          #define EL1602    P1_2       //使能信号
  11          
  12          #define DataPort P0          // 数据端口
  13          #define Busy    0x80
  14          
  15          
  16          /*=======================================================
  17          正常读写操作之前必须检测LCD控制器状态:    CS=1 RS1602=0 RW1602=1
  18          DB7:    0  LCD控制器空闲; 1  LCD控制器忙
  19          ========================================================*/
  20          void WaitForEnable( void ) {
  21   1      
  22   1          DataPort = 0xff;
  23   1      
  24   1          RS1602=0; RW1602=1; _nop_();    EL1602=1; _nop_(); _nop_();
  25   1      
  26   1          while( DataPort & Busy );
  27   1          EL1602=0;
  28   1      }
  29          
  30          
  31          /*=======================================================
  32          写控制字符子程序: E=1 RS1602=0 RW1602=0
  33          =======================================================*/
  34          void LcdWriteCommand( Uchar CMD,Uchar AttribC )  {    //送控制字符子程序
  35   1      
  36   1          if (AttribC) WaitForEnable();                     // 检测忙信号?
  37   1          RS1602=0; RW1602=0; _nop_();
  38   1          DataPort=CMD; _nop_();                       
  39   1          EL1602=1;_nop_();_nop_();EL1602=0;                // 操作允许脉冲信号
  40   1      }
  41          
  42          
  43          /*=======================================================
  44          当前位置写字符子程序: E =1 RS1602=1 RW1602=0
  45          =======================================================*/
  46          void LcdWriteData( char dataW )  {
  47   1      
  48   1          WaitForEnable();                             // 检测忙信号
  49   1      
  50   1          RS1602=1; RW1602=0; _nop_();
  51   1      
  52   1          DataPort=dataW; _nop_();
  53   1      
  54   1          EL1602=1; _nop_(); _nop_(); EL1602=0;        // 操作允许脉冲信号
  55   1      
C51 COMPILER V7.20   YJXS                                                                  06/06/2005 22:55:35 PAGE 2   

  56   1      }
  57          
  58          
  59          /*=======================================================
  60          初始化程序, 必须按照产品资料介绍的初始化过程进行
  61          =======================================================*/
  62          void Lcdreset( void )  {
  63   1      
  64   1             LcdWriteCommand( 0x38, 0);            // 显示模式设置(不检测忙信号)
  65   1              Delayms(10);
  66   1          LcdWriteCommand( 0x38, 0);            // 共三次
  67   1              Delayms(10);
  68   1          LcdWriteCommand( 0x38, 0);
  69   1              Delayms(10);
  70   1      
  71   1          LcdWriteCommand( 0x38, 1);            // 显示模式设置(以后均检测忙信号)
  72   1          LcdWriteCommand( 0x08, 1);            // 显示关闭
  73   1          LcdWriteCommand( 0x01, 1);            // 显示清屏
  74   1          LcdWriteCommand( 0x06, 1);            // 显示光标移动设置
  75   1          LcdWriteCommand( 0x0c, 1);            // 显示开及光标设置
  76   1      }
  77          
  78          
  79          /*=======================================================
  80          显示光标定位(X表示行 ,Y表示列)
  81          =======================================================*/
  82          void Disp_XY( char posx,char posy) {
  83   1      
  84   1      Uchar temp;
  85   1      
  86   1          temp = posy & 0x0f;
  87   1          posx &= 0x1;   
  88   1          if ( posy>15 )   temp |= 0x40;
  89   1              if (posx==1)   temp |=0x40;
  90   1          temp |= 0x80;
  91   1          LcdWriteCommand(temp,0);
  92   1      }
  93          
  94          /*=======================================================
  95          按指定位置显示数出一个字符
  96          =======================================================*/
  97          void Disponechar(Uchar x,Uchar y,Uchar Wdata)  {
  98   1      
  99   1          Disp_XY( x, y );                // 定位显示地址
 100   1          LcdWriteData( Wdata );            // 写字符
 101   1      }
 102          
 103          /*=======================================================
 104          液晶屏上显示字符串
 105          =======================================================*/
 106          void Eputstr(Uchar x,Uchar y, Uchar code *ptr) {
 107   1      Uchar i,l=0;
 108   1          while (*ptr++ >0){l++;};        //统计字符的个数(字符串数组的最后一位是‘\0')
 109   1              ptr=ptr-(l+1);                   //使指针重新指向首个字符
 110   1          for (i=0;i<l;i++)     { Disponechar(x,y++,*ptr++);
 111   2                                  if ( y == 31 )  { y = 0; x ^= 0; }
 112   2                                 }
 113   1                                                      }
 114          
 115          
 116          
 117          
C51 COMPILER V7.20   YJXS                                                                  06/06/2005 22:55:35 PAGE 3   

 118          
 119          
 120          
 121          
 122          
 123          


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


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

⌨️ 快捷键说明

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