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

📄 zhuansukongzhi.lst

📁 自己编的一个直流电机转速控制程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   ZHUANSUKONGZHI                                                        03/04/2009 17:29:09 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE ZHUANSUKONGZHI
OBJECT MODULE PLACED IN zhuansukongzhi.OBJ
COMPILER INVOKED BY: D:\Program Files\C51\BIN\C51.EXE zhuansukongzhi.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include <intrins.h>
   3          #include <string.h>
   4          #define uchar unsigned char
   5          #define uint  unsigned int
   6          #define  LCD P1
   7          void  delayms(void);  /*延迟函数*/
   8          uchar key_scan();
   9           static Count=0;
  10           static cnt=0;
  11           static truev=0;
  12           static v=30;   /*v为电机设定速度,n为pwm占空比 */
  13           static n;
  14           sbit L298_EN=P2^0;
  15           sbit L298_IN1=P2^1;
  16           sbit L298_IN2=P2^2;
  17           sbit LCD_RS=P3^7;         /*定义1602液晶模块接口*/
  18           sbit LCD_RW=P3^6;
  19           sbit LCD_E=P3^5;          /*LCD使能端*/
  20           bit flag;
  21           
  22          
  23          void delay(uint ms)   /*延时1ms*/
  24          {
  25   1        uchar i;
  26   1        while(ms--)
  27   1         for(i=0;i<250;i++)
  28   1         {
  29   2           _nop_();
  30   2               _nop_();
  31   2      
  32   2               }
  33   1      }
  34          
  35          
  36              
  37          void SELECT_LCD(void)   /*选中LCD*/
  38          { 
  39   1         LCD_E=1;
  40   1         _nop_();
  41   1         _nop_();
  42   1         _nop_();
  43   1         }
  44          
  45          
  46          void NOSELECT_LCD(void) /*释放LCD*/
  47          {
  48   1         LCD_E=0;
  49   1         _nop_();
  50   1         _nop_();
  51   1         _nop_();
  52   1      }
  53          
  54          
  55          bit LCD_Busy()  /*检测LCD的忙碌状态,在对LCD操作的时候必须检测忙碌状态,忙时对其操作无效*/
C51 COMPILER V8.02   ZHUANSUKONGZHI                                                        03/04/2009 17:29:09 PAGE 2   

  56          {                                                       
  57   1              bit result;
  58   1              LCD_RS = 1;             /*设置LCD为忙碌状态的检测*/ 
  59   1              LCD_RW = 1;
  60   1              SELECT_LCD();   /*选中LCD*/
  61   1              _nop_();                /*待稳定*/
  62   1              _nop_();
  63   1              _nop_();
  64   1              _nop_();
  65   1              result = (bit)(LCD & 0x80);     /*读LCD的DB7的值 1为忙 0为空闲,可写入指令和数据*/
  66   1              NOSELECT_LCD();
  67   1              return result;  /*返回result,1为忙 0为空闲*/
  68   1      }
  69          
  70          
  71          LCD_WriteCommand(uchar com)       /*写指令数据到LCD*/
  72          {                                                          
  73   1              while(LCD_Busy());      /*当LCD不忙时,写指令数据*/
  74   1              NOSELECT_LCD();
  75   1              LCD_RS = 0;                     /*设置LCD为写指令数据*/
  76   1              LCD_RW = 0;
  77   1              
  78   1              _nop_();
  79   1              _nop_();        
  80   1              LCD = com;                      /*把指令数据送到P1口*/
  81   1              _nop_();
  82   1              _nop_();
  83   1              _nop_();
  84   1              _nop_();
  85   1              SELECT_LCD();           /*选中LCD*/
  86   1              _nop_();
  87   1              _nop_();
  88   1              _nop_();
  89   1              _nop_();
  90   1              NOSELECT_LCD();         /*释放LCD*/
  91   1      }
  92          
  93          
  94          LCD_DisplayPosit(uchar pos)         /*设定字符在LCD上显示的位置*/
  95          {                                                       
  96   1              LCD_WriteCommand(pos|0x80);
  97   1              delay(1);
  98   1      }
  99          
 100          
 101          LCD_WriteData(uchar dat)        /*写字符显示数据到LCD*/
 102          {                                                       
 103   1              while(LCD_Busy());      /*当LCD不忙时,写显示数据*/
 104   1              LCD_RS = 1;                 /*设置LCD为写显示数据*/
 105   1              LCD_RW = 0;
 106   1              NOSELECT_LCD();
 107   1              LCD = dat;                  /*把显示数据送到P1口*/
 108   1              _nop_();
 109   1              _nop_();
 110   1              _nop_();
 111   1              _nop_();
 112   1              SELECT_LCD();           /*选中LCD*/
 113   1              _nop_();
 114   1              _nop_();
 115   1              _nop_();
 116   1              _nop_();
 117   1              NOSELECT_LCD();         /*释放LCD*/
C51 COMPILER V8.02   ZHUANSUKONGZHI                                                        03/04/2009 17:29:09 PAGE 3   

 118   1      }
 119          
 120          
 121          LCD_Init()          /*LCD初始化*/
 122          {                                                       
 123   1              LCD_WriteCommand(0x38);    /*16*2显示,5*7点阵,8位数据*/
 124   1              delay(1);
 125   1              LCD_WriteCommand(0x0c);    /*显示开,关光标*/
 126   1              delay(1);
 127   1              LCD_WriteCommand(0x06);    /*移动光标*/
 128   1              delay(1);
 129   1              LCD_WriteCommand(0x01);    /*清除LCD的显示内容*/
 130   1              delay(1);
 131   1      }
 132          
 133          
 134          /*显示单个字符*/
 135          void show(uchar n,uchar a) /*n表示显示位置,a为要显示的字符*/
 136          {
 137   1        LCD_DisplayPosit(n);
 138   1        LCD_WriteData(a);
 139   1      }
 140           uchar key_scan()
 141           {       uchar Counter=0; 
 142   1               uchar Counte=0;
 143   1               uchar key=20;
 144   1               while(key==20)
 145   1               {
 146   2              P0=0xf0;
 147   2              Counte=P0; 
 148   2              if(Counte==0xe0)
 149   2                      {delay(2);
 150   3                       if(Counte==0xe0) Counter=1;
 151   3                       }
 152   2              if(Counte==0xd0)
 153   2                       {delay(2);
 154   3                       if(Counte==0xd0) Counter=2;
 155   3                       }
 156   2              if(Counte==0xb0)
 157   2                       {delay(2);
 158   3                       if(Counte==0xb0) Counter=3;
 159   3                       }
 160   2              if(Counte==0x70)
 161   2                       {delay(2);
 162   3                       if(Counte==0x70) Counter=4;
 163   3                       }
 164   2              P0=0x0f;
 165   2              Counte=P0;
 166   2                  if(Counte==0x0e)
 167   2                      {delay(2);
 168   3                       if(Counte==0x0e)   Counte=1;
 169   3                       }
 170   2              if(Counte==0x0d)
 171   2                      {delay(2);
 172   3                       if(Counte==0x0d)   Counte=2;
 173   3                       }
 174   2              if(Counte==0x0b) 
 175   2                      {delay(2);
 176   3                       if(Counte==0x0b)   Counte=3;
 177   3                       }
 178   2              if(Counte==0x07) 
 179   2                      {delay(2);
C51 COMPILER V8.02   ZHUANSUKONGZHI                                                        03/04/2009 17:29:09 PAGE 4   

 180   3                       if(Counte==0x07)   Counte=4;
 181   3                       } 
 182   2              if(Counter==1&&Counte==1)  key=0;
 183   2                  if(Counter==2&&Counte==1)  key=1;
 184   2                  if(Counter==3&&Counte==1)  key=2;
 185   2                      if(Counter==4&&Counte==1)  key=3;
 186   2                  if(Counter==1&&Counte==2)  key=4;
 187   2              if(Counter==2&&Counte==2)  key=5;
 188   2              if(Counter==3&&Counte==2)  key=6;
 189   2              if(Counter==4&&Counte==2)  key=7;
 190   2              if(Counter==1&&Counte==3)  key=8;
 191   2              if(Counter==2&&Counte==3)  key=9;
 192   2                      if(Counter==3&&Counte==3)  key=10;
 193   2                  if(Counter==4&&Counte==3)  key=11;
 194   2                  if(Counter==1&&Counte==4)  key=12;
 195   2                      if(Counter==2&&Counte==4)  key=13;
 196   2                  if(Counter==3&&Counte==4)  key=14;
 197   2                  if(Counter==4&&Counte==4)  key=15;
 198   2                      }
 199   1                  P0=0x0f;
 200   1              Counte=P0;
 201   1                  while(Counte!=0x0f)
 202   1                      {  P0=0x0f;
 203   2                 Counte=P0;
 204   2                         }

⌨️ 快捷键说明

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