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

📄 led.lst

📁 用于控制LED广告灯箱的源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   LED                                                                   02/11/2007 20:19:36 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN LED.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE LED.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          #include "EEprom.h"
   4          sbit SET = P1^0;
   5          sbit ADD = P1^1;
   6          sbit DEC = P1^2;
   7          
   8          //sbit UpEnable = P0^0;
   9          //sbit UpBrake = P0^1;
  10          //sbit DownEnable = P0^4;
  11          //sbit DownBrake = P0^5;
  12          
  13          sbit text = P3^4;
  14          
  15          sbit UpS = P1^6;
  16          sbit DownS = P1^7;
  17          
  18          sbit chooseHigh = P3^7;
  19          sbit chooseLow = P3^6;
  20          
  21          sbit ControlSendReceive = P3^5; //主从控制位
  22          /*
  23          #define CHOOSE P3               //数码管位控制寄存器
  24          #define chooseLeft 0x00  //左边数码管选择位数据
  25          #define chooseMiddle 0x40  //中间数码管选择位数据
  26          #define chooseRight 0x80   //右边数码管选择位数据
  27          */
  28          
  29          #define DATA P2                         //数码管数据位
  30          
  31          #define MOTOR P0                        //无刷直流电机控制寄存器
  32          
  33          #define UP 0x01                         //上电机驱动数据
  34          #define DOWN 0x10                       //下电机驱动数据
  35          #define STOP 0x22                       //停止驱动数据
  36          
  37          #define MoveUPdata 0x55
  38          #define StopData 0x0f
  39          #define MoveDOWNdata 0xf0
  40          #define Receive() {while (RI == 0); RI = 0;}
  41          #define Send() {while (TI == 0); TI = 0;}
  42                  
  43          unsigned char SendData = 0x0f;
  44          unsigned char ReceiveData;
  45          
  46          unsigned int photoLong = 0;     //计算整个画面距离变量
  47          unsigned char left;             //左边数码管数据寄存器
  48          unsigned char middle;   //中间数码管数据寄存器
  49          unsigned char right;            //右面数码管数据寄存器
  50          
  51          unsigned char sendflag; //发送次数标志
  52          
  53          unsigned char setSec;
  54          unsigned char setPage;
  55          
C51 COMPILER V7.06   LED                                                                   02/11/2007 20:19:36 PAGE 2   

  56          unsigned char code ledCode[19] = 
  57          {
  58                  0x3f, 0x06, 0x5B, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 
  59                  0x77, 0x7c, 0x58, 0x5e, 0x79, 0x71, 0x40, 0x73, 0x76
  60          };//0,1,2,3,4,5,6,7,8,9 共阴数码管
  61          
  62          unsigned char code moveCode[4] = 
  63          {
  64                  0x00, 0x08, 0x40, 0x01 
  65          };
  66          
  67          unsigned char code EEprom[4] =
  68          {
  69                  0x02, 0x04
  70          };
  71          
  72          //定义
  73          unsigned int flag = 0;
  74          unsigned int flag1 = 0;  //定义增量
  75          unsigned char temp = 0;
  76          unsigned int count1;
  77          unsigned char control = 1;
  78          
  79          unsigned char page = 1;
  80          
  81          
  82          void DelayMs(unsigned int count1)
  83          {
  84   1              while (count1--)
  85   1              {
  86   2                      unsigned char count2 = 0;
  87   2                      for (; count2<62; count2++);
  88   2              }
  89   1      }
  90          
  91          void DisplaySegment(unsigned char temp)
  92          {
  93   1              DATA = moveCode[temp&0x03];
  94   1      
  95   1              chooseHigh = 0;
  96   1              chooseLow = 0;
  97   1              DelayMs(1);
  98   1      
  99   1              chooseHigh = 0;
 100   1              chooseLow = 1;
 101   1              DelayMs(1);
 102   1      
 103   1              chooseHigh = 1;
 104   1              chooseLow = 0;
 105   1              DelayMs(1);
 106   1      }
 107          
 108          
 109          void DisplayStop(unsigned char one, unsigned char two, unsigned char three)
 110          {
 111   1              unsigned char temp;
 112   1              chooseHigh = 0;
 113   1              chooseLow = 0;
 114   1              DATA = ledCode[one];
 115   1              for(temp=0; temp<200; temp++);
 116   1      
 117   1              chooseHigh = 0;
C51 COMPILER V7.06   LED                                                                   02/11/2007 20:19:36 PAGE 3   

 118   1              chooseLow = 1;
 119   1              DATA = ledCode[two];
 120   1              for(temp=0; temp<200; temp++);
 121   1      
 122   1              chooseHigh = 1;
 123   1              chooseLow = 0;
 124   1              DATA = ledCode[three];
 125   1              for(temp=0; temp<200; temp++);
 126   1      }
 127          
 128          //功能:从机时间设定
 129          //函数:SetReceiveSecondUP()
 130          //调用变量:unsigned char page   
 131          //返回值:无
 132          //修改日期:2007-1-14
 133          //作者:狼魅
 134          void SetReceiveSecondUP(unsigned char page)
 135          {
 136   1              unsigned char count1;
 137   1              unsigned char second = 0;
 138   1              while (1)
 139   1              {
 140   2                      for (count1=0; count1<255; count1++)
 141   2                      {
 142   3                              DisplayStop(page, second/10, second%10);
 143   3                              if (ReceiveData == MoveUPdata)
 144   3                              {
 145   4                                      break;
 146   4                              }
 147   3                      }
 148   2                      if (ReceiveData == MoveUPdata)
 149   2                      {
 150   3                              break;
 151   3                      }
 152   2                      second++;
 153   2              }
 154   1      }
 155          
 156          //功能:从机时间设定
 157          //函数:SetReceiveSecondDOWN()
 158          //调用变量:unsigned char page
 159          //返回值:无
 160          //修改日期:2007-1-14
 161          //作者:狼魅
 162          void SetReceiveSecondDOWN(unsigned char page)
 163          {
 164   1              unsigned char count1;
 165   1              unsigned char second = 0;
 166   1              while (1)
 167   1              {
 168   2                      for (count1=0; count1<255; count1++)
 169   2                      {
 170   3                              DisplayStop(page, second/10, second%10);
 171   3                              if (ReceiveData == MoveDOWNdata)
 172   3                              {
 173   4                                      break;
 174   4                              }
 175   3                      }
 176   2                      if (ReceiveData == MoveDOWNdata)
 177   2                      {
 178   3                              break;
 179   3                      }
C51 COMPILER V7.06   LED                                                                   02/11/2007 20:19:36 PAGE 4   

 180   2                      second++;
 181   2              }
 182   1      }
 183          
 184          //功能:主机时间设定
 185          //函数:SetSendSecond()
 186          //调用变量:unsigned char page
 187          //返回值:无
 188          //修改日期:2007-1-14
 189          //作者:狼魅
 190          void SetSendSecond(unsigned char page)
 191          {       
 192   1              unsigned char count1;
 193   1              unsigned char second = 0;
 194   1              
 195   1              while (second <= setSec)
 196   1              {       
 197   2                      for (count1=0; count1<255; count1++)
 198   2                      {
 199   3                              DisplayStop(page, second/10, second%10);        
 200   3                      }
 201   2                      second++;       
 202   2              }
 203   1      }
 204          
 205          /*****************************
 206          
 207          设置手动模式
 208          
 209          *****************************/
 210          void ManPower(void)
 211          {
 212   1              unsigned int count1 = 0;
 213   1              unsigned char temp1 = 0;
 214   1              unsigned char flag1 = 0;
 215   1              while (1)
 216   1              {
 217   2                      if ((ADD==0) || (DEC==0))
 218   2                      {
 219   3                              if ((ADD==1) && (DEC==0))
 220   3                              {
 221   4                                      MOTOR = UP;
 222   4                              
 223   4                                      DisplaySegment(temp1);
 224   4                                              
 225   4                                      if (flag1 == 60)
 226   4                                      {
 227   5                                              temp1++;
 228   5                                              flag1 = 0;
 229   5                                      }
 230   4                              } 
 231   3              
 232   3                              if ((ADD==0) && (DEC==1))
 233   3                              {
 234   4                                      MOTOR = DOWN;
 235   4                              
 236   4                                      DisplaySegment(temp1);
 237   4                                              
 238   4                                      if (flag1 == 60)
 239   4                                      {
 240   5                                              temp1--;
 241   5                                              flag1 = 0;
C51 COMPILER V7.06   LED                                                                   02/11/2007 20:19:36 PAGE 5   

 242   5                                      }       
 243   4                              }
 244   3                      }
 245   2                      else
 246   2                      {

⌨️ 快捷键说明

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