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

📄 51

📁 51单片机大量源码
💻
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.18   BJDJ1602                                                              12/15/2009 19:50:09 PAGE 1   


C51 COMPILER V8.18, COMPILATION OF MODULE BJDJ1602
OBJECT MODULE PLACED IN BJDJ1602.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE BJDJ1602.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2              
   3          #include <reg51.h>       //51芯片管脚定义头文件
   4          #include <intrins.h>  //内部包含延时函数 _nop_();
   5          
   6          #define uchar unsigned char
   7          #define uint  unsigned int
   8          #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
   9          
  10          
  11          uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
  12          uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
  13          
  14          sbit  K1   = P3^2;       //运行与停止
  15          sbit  K2   = P3^3;       //设定圈数
  16          sbit  K3   = P3^4;       //方向转换
  17          sbit  K4   = P3^5;       //速率调整
  18          sbit  BEEP = P3^6;       //蜂鸣器
  19          
  20          sbit  LCD_RS = P2^0;             
  21          sbit  LCD_RW = P2^1;
  22          sbit  LCD_EN = P2^2;
  23          
  24          bit  on_off=0;            //运行与停止标志
  25          bit  direction=1;         //方向标志
  26          bit  rate_dr=1;           //速率标志
  27          bit  snum_dr=1;           //圈数标志
  28          
  29          uchar code  cdis1[ ] = {" STEPPING MOTOR "};
  30          uchar code  cdis2[ ] = {"CONTROL  PROCESS"};
  31          uchar code  cdis3[ ] = {"    STOP        "};
  32          uchar code  cdis4[ ] = {"NUM:    RATE:   "};
  33          uchar code  cdis5[ ] = {"  RUNNING       "};
  34          
  35          uchar   m,v=0,q=0;
  36          
  37          uint   number=0,number1=0; 
  38          uchar   snum=10,snum1=10;       //预设定圈数
  39          uchar   rate=2;               //预设定速率
  40          uchar   data_temp,data_temP1,data_temp2;   
  41          
  42          /********************************************************/
  43          /*                                                  
  44          /* 延时t毫秒 
  45          /* 11.0592MHz时钟,延时约1ms                                     
  46          /*                                                      
  47          /********************************************************/
  48          void delay(uint t)
  49          {                           
  50   1         uchar k;
  51   1         while(t--)
  52   1         {
  53   2           for(k=0; k<125; k++)
  54   2           { }
  55   2         }
C51 COMPILER V8.18   BJDJ1602                                                              12/15/2009 19:50:09 PAGE 2   

  56   1      }
  57          
  58          /********************************************************/
  59          void delayB(uchar x)    //x*0.14MS
  60           {
  61   1         uchar i;
  62   1         while(x--)
  63   1         {
  64   2           for (i=0; i<13; i++)
  65   2           { }
  66   2         }
  67   1       }
  68          
  69          /********************************************************/
  70          void beep()
  71           {
  72   1         uchar j;
  73   1         for (j=0;j<100;j++)
  74   1          { 
  75   2           delayB(4);
  76   2           BEEP=!BEEP;                 //BEEP取反
  77   2          } 
  78   1           BEEP=1;                    //关闭蜂鸣器
  79   1        delay(170);
  80   1       }
  81          
  82          /********************************************************/
  83          /*                                                                
  84          /*检查LCD忙状态                                                   
  85          /*lcd_busy为1时,忙,等待。为0时,闲,可写指令与数据。     
  86          /*                                                               
  87          /********************************************************/ 
  88          
  89          bit lcd_busy()
  90           {                          
  91   1          bit result;
  92   1          LCD_RS = 0;
  93   1          LCD_RW = 1;
  94   1          LCD_EN = 1;
  95   1          delayNOP();
  96   1          result = (bit)(P0&0x80);
  97   1          LCD_EN = 0;
  98   1          return(result); 
  99   1       }
 100          
 101          /********************************************************/
 102          /*                                                                 
 103          /*写指令数据到LCD                                                 
 104          /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                             
 105          /*                                                               
 106          /********************************************************/
 107          
 108          void lcd_wcmd(uchar cmd)
 109          
 110          {                          
 111   1         while(lcd_busy());
 112   1          LCD_RS = 0;
 113   1          LCD_RW = 0;
 114   1          LCD_EN = 0;
 115   1          _nop_();
 116   1          _nop_(); 
 117   1          P0 = cmd;
C51 COMPILER V8.18   BJDJ1602                                                              12/15/2009 19:50:09 PAGE 3   

 118   1          delayNOP();
 119   1          LCD_EN = 1;
 120   1          delayNOP();
 121   1          LCD_EN = 0;  
 122   1      }
 123          
 124          /********************************************************/
 125          /*                                                                
 126          /*写显示数据到LCD                                                  
 127          /*RS=H,RW=L,E=高脉冲,D0-D7=数据。                              
 128          /*                                                               
 129          /********************************************************/
 130          
 131          void lcd_wdat(uchar dat)
 132          {                          
 133   1         while(lcd_busy());
 134   1          LCD_RS = 1;
 135   1          LCD_RW = 0;
 136   1          LCD_EN = 0;
 137   1          P0 = dat;
 138   1          delayNOP();
 139   1          LCD_EN = 1;
 140   1          delayNOP();
 141   1          LCD_EN = 0; 
 142   1      }
 143          
 144          /********************************************************/
 145          /*                                                                
 146          /*  LCD初始化设定                                                
 147          /*                                                                
 148          /********************************************************/
 149          
 150          void lcd_init()
 151          { 
 152   1          delay(30);                   
 153   1          lcd_wcmd(0x38);      //16*2显示,5*7点阵,8位数据
 154   1          delay(5);
 155   1          lcd_wcmd(0x38);         
 156   1          delay(5);
 157   1          lcd_wcmd(0x38);         
 158   1          delay(5);
 159   1      
 160   1          lcd_wcmd(0x0c);      //显示开,关光标
 161   1          delay(5);
 162   1          lcd_wcmd(0x06);      //移动光标
 163   1          delay(5);
 164   1          lcd_wcmd(0x01);      //清除LCD的显示内容
 165   1          delay(5);
 166   1      }
 167          
 168          /********************************************************/
 169          /*                                                                 
 170          /*  设定显示位置                                                  
 171          /*                                                                
 172          /********************************************************/
 173          
 174          void lcd_pos(uchar pos)
 175          {                          
 176   1        lcd_wcmd(pos | 0x80);  //数据指针=80+地址变量
 177   1      }
 178          
 179          /********************************************************/
C51 COMPILER V8.18   BJDJ1602                                                              12/15/2009 19:50:09 PAGE 4   

 180          /*                                                       
 181          /* LCD1602初始显示子程序                                             
 182          /*                                                      
 183          /********************************************************/
 184          void  LCD_init_DIS()
 185          {            
 186   1           delay(10);                 //延时
 187   1           lcd_init();                //初始化LCD             
 188   1              
 189   1           lcd_pos(0);                //设置显示位置为第一行的第1个字符
 190   1           m = 0;
 191   1           while(cdis1[m] != '\0')
 192   1            {                         //显示字符
 193   2              lcd_wdat(cdis1[m]);
 194   2              m++;
 195   2            }
 196   1      
 197   1           lcd_pos(0x40);             //设置显示位置为第二行第1个字符
 198   1           m = 0;
 199   1           while(cdis2[m] != '\0')
 200   1            {
 201   2              lcd_wdat(cdis2[m]);      //显示字符
 202   2              m++;
 203   2            }
 204   1      
 205   1            delay(3000);               //延时        
 206   1              
 207   1            lcd_pos(0);                //设置显示位置为第一行的第1个字符
 208   1            m = 0;
 209   1            while(cdis3[m] != '\0')
 210   1              {                        //显示字符
 211   2                lcd_wdat(cdis3[m]);
 212   2                m++;
 213   2              }
 214   1      
 215   1            lcd_pos(0x40);             //设置显示位置为第二行第1个字符
 216   1            m = 0;
 217   1           while(cdis4[m] != '\0')
 218   1              {
 219   2                lcd_wdat(cdis4[m]);    //显示字符
 220   2                m++;
 221   2              }      
 222   1      
 223   1              for(m=0;m<2;m++)
 224   1                { 

⌨️ 快捷键说明

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