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

📄 yj.lst

📁 SAA3010红外摇控51单片机接收程序,对想学单片机红外的人有帮助!
💻 LST
字号:
C51 COMPILER V7.20   YJ                                                                    04/11/2007 06:09:09 PAGE 1   


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

line level    source

   1          /*======YB-51-A单片机通用实验板液晶屏显示演示程序===========================*/
   2          /*======程序来源:远博科技  0371-6949037  13949105551  13603453895=======================*/
   3          /*===================================================================
   4          
   5          [注]:AT89C51的晶振频率为11.0592MHz
   6          ====================================================================*/
   7          
   8          /*            ACM1602A (16x2)接线图
   9          =====================================================================
  10          连接线图:   ACM-------51     ACM-------51     ACM--------51
  11                      DB0-----P0.0     DB4-----P0.4     RS-------P1_0
  12                      DB1-----P0.1     DB5-----P0.5     RW-------P1_1
  13                      DB2-----P0.2     DB6-----P0.6     E--------P1_2
  14                      DB3-----P0.3     DB7-----P0.7     BLA------P1_3
  15                      
  16                      VLCD接1K电阻到GND
  17          
  18          ====================================================================*/
  19          /*阅读本程序之前,请参考光盘上带的LCD1602的工作原理(长沙太阳人科技公司提供)*/
  20          
  21          #include <REGX51.H>
  22          
  23          #include <Delay.h>
  24          #include <stdio.h>
  25          #include <Intrins.h>
  26          #define uchar unsigned char
  27          #define uint  unsigned int 
  28          // 1602连线
  29          #define RS    P1_0       //数据/命令选择
  30          #define RW    P1_1       //读/写选择
  31          #define Elcm  P1_2       //使能信号
  32          #define BLA   P1_3       //液晶显示屏背光
  33          
  34          #define DataPort P0      // 数据端口
  35          #define Busy    0x80
  36          void WaitForEnable( void );
  37          void LcdWriteData( char dataW );
  38          void LcdWriteCommand( uchar CMD,uchar AttribC ) ;
  39          void LcdReset( void ) ;
  40          void DispOneChar(uchar x,uchar y,uchar Wdata)  ;
  41          void ePutstr(uchar x,uchar y, uchar code *ptr) ;
  42          //code char examp[]="Wellcom to Ybkj  0371-6949037"; 
  43          
  44          
  45           //void main(void)      {
  46            //  DelayMs(2000);                      //延时使液晶屏复位
  47             // BLA=0;                               //打开液晶显示屏背光
  48             // LcdReset();                          //液晶屏初始化
  49             // ePutstr(0,0,examp);                 // 液晶屏显示一个预定字符串
  50             // while(1);                           //无限循环。
  51          //                          }
  52          //
  53          
  54          /*=======================================================
  55          液晶屏上显示字符串
C51 COMPILER V7.20   YJ                                                                    04/11/2007 06:09:09 PAGE 2   

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

 118   1          // 送控制字子程序
 119   1          Elcm=1;_nop_();_nop_();Elcm=0;            // 操作允许脉冲信号
 120   1      }
 121          
 122          /*=======================================================
 123          当前位置写字符子程序: E =1 RS=1 RW=0
 124          =======================================================*/
 125          void LcdWriteData( char dataW )  {
 126   1      
 127   1          WaitForEnable();
 128   1              // 检测忙信号
 129   1      
 130   1          RS=1; RW=0; _nop_();
 131   1      
 132   1          DataPort=dataW; _nop_();
 133   1      
 134   1          Elcm=1; _nop_(); _nop_(); Elcm=0;        // 操作允许脉冲信号
 135   1      
 136   1      }
 137          
 138          /*=======================================================
 139          正常读写操作之前必须检测LCD控制器状态:    CS=1 RS=0 RW=1
 140          DB7:    0  LCD控制器空闲; 1  LCD控制器忙
 141          ========================================================*/
 142          void WaitForEnable( void ) {
 143   1      
 144   1          DataPort = 0xff;
 145   1      
 146   1          RS=0; RW=1; _nop_();    Elcm=1; _nop_(); _nop_();
 147   1      
 148   1          while( DataPort & Busy );
 149   1          Elcm=0;
 150   1      }


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