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

📄 yjxs.lst

📁 该程序详细介绍了实时时钟芯片DS1302的使用编程代码
💻 LST
字号:
C51 COMPILER V7.20   YJXS                                                                  06/03/2005 17:25:53 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          液晶屏显示模块
   3          ********************************************************/
   4          
   5          #include<config.h>
   6          #define RS1602    P1_0       //数据/命令选择
   7          #define RW1602    P1_1       //读/写选择
   8          #define EL1602    P1_2       //使能信号
   9          
  10          #define DataPort P0          // 数据端口
  11          #define Busy    0x80
  12          
  13          
  14          /*=======================================================
  15          正常读写操作之前必须检测LCD控制器状态:    CS=1 RS1602=0 RW1602=1
  16          DB7:    0  LCD控制器空闲; 1  LCD控制器忙
  17          ========================================================*/
  18          void WaitForEnable( void ) {
  19   1      
  20   1          DataPort = 0xff;
  21   1      
  22   1          RS1602=0; RW1602=1; _nop_();    EL1602=1; _nop_(); _nop_();
  23   1      
  24   1          while( DataPort & Busy );
  25   1          EL1602=0;
  26   1      }
  27          
  28          
  29          /*=======================================================
  30          写控制字符子程序: E=1 RS1602=0 RW1602=0
  31          =======================================================*/
  32          void LcdWriteCommand( Uchar CMD,Uchar AttribC )  {    //送控制字符子程序
  33   1      
  34   1          if (AttribC) WaitForEnable();                     // 检测忙信号?
  35   1          RS1602=0; RW1602=0; _nop_();
  36   1          DataPort=CMD; _nop_();                       
  37   1          EL1602=1;_nop_();_nop_();EL1602=0;                // 操作允许脉冲信号
  38   1      }
  39          
  40          
  41          /*=======================================================
  42          当前位置写字符子程序: E =1 RS1602=1 RW1602=0
  43          =======================================================*/
  44          void LcdWriteData( char dataW )  {
  45   1      
  46   1          WaitForEnable();                             // 检测忙信号
  47   1      
  48   1          RS1602=1; RW1602=0; _nop_();
  49   1      
  50   1          DataPort=dataW; _nop_();
  51   1      
  52   1          EL1602=1; _nop_(); _nop_(); EL1602=0;        // 操作允许脉冲信号
  53   1      
  54   1      }
  55          
C51 COMPILER V7.20   YJXS                                                                  06/03/2005 17:25:53 PAGE 2   

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

 118          
 119          
 120          
 121          


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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -