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

📄 led.lst

📁 用keil开发的.单片机税控器程序.单片机用的是AT公司的.upsd3245
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.50   LED                                                                   08/30/2005 17:12:03 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN LED.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE LED.c LARGE OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND CODE

line level    source

   1          /*
   2          注:CH452工作电压为5V,为保证电平兼容,本程序测试也是在5V工作环境中完成
   3          */
   4          /*
   5                                                                                                                                          调用方法
   6                                                                                                                                          
   7                                                                                                                                          
   8                  第一步调用CH452_Init();
   9                  第二步调用显示如:[CH452_Disp(1,0,2,2);//第一个芯片,第二个数码管,显示2不显示小数点
  10                                                          CH452_Disp(1,1,3,4);//第一个芯片,第三个数码管,显示4要显示小数点
  11                                                          CH452_Disp(2,0,1,1);//第二个芯片,第一个数码管,示示1,不显示小数点
  12                                                     ]
  13                  第三步可调用左移、右移、复位等
  14                                                                                                  [
  15                                                                                                  CH452_LL(1);//左移一个数码位
  16                                                                                                  CH452_LR(2);//右移一个数码位
  17                                                                                                  CH452_Rest();//选中芯片复位
  18                                                                                                  CH452_Init();//初始化:复位2个芯片两个芯片并开显示
  19                                                                                                  还可单独复位一个芯片
  20                                                                                                  1、CH452CS=1;//选择芯片
  21                                                                                                  2、CH452_Rest();复位芯片
  22                                                                                                  注:复位过后必需要开显示
  23                                                                                                  3、CH452_Write(CH452_SYSON1);                                                                                   
  24                                                                                                  ]
  25          
  26          */
  27          //------------------头文件--------------------------
  28          #include "Main.h"
  29          
  30          sbit  I2C_SDA=P3^6;//I2C定义
  31          sbit  I2C_SCK=P3^7;
  32          //---------------------------------------------
  33          
  34          /* CH452的常用命令码 */
  35          #define CH452_NOP               0x0000                                  // 空操作
  36          #define CH452_RESET     0x0201                                  // 复位
  37          #define CH452_LEVEL             0x0100                                  // 加载光柱值
  38          #define CH452_CLR_BIT   0x0180                                  // 段位清0
  39          #define CH452_SET_BIT   0x01C0                                  // 段位置1
  40          #define CH452_SLEEP             0x0202                                  // 进入睡眠状态
  41          #define CH452_LEFTMOV   0x0300                      //设置移动方式-作移
  42          #define CH452_LEFTCYC   0x0301                      //设置移动方式-左循
  43          #define CH452_RIGHTMOV  0x0302                      //设置移动方式-右移
  44          #define CH452_RIGHTCYC  0x0303                      //设置移动方式-右循 
  45          #define CH452_SELF_BCD  0x0380                                  //自定义BCD码
  46          #define CH452_SYSOFF    0x0400                                  //关显示、键盘
  47          #define CH452_SYSON1    0x0401                                  //开显示
  48          #define CH452_SYSOFF1   0x0400                                  //关显示
  49          #define CH452_SYSON2    0x0403                                  //开显示、键盘
  50          #define CH452_SYSON2W   0x0423                                  //开显示、键盘, 真正2线接口
  51          #define CH452_DSP       0x0500                                  //设置默认显示方式
  52          #define CH452_BCD       0x0580                                  //设置BCD译码方式
  53          #define CH452_TWINKLE   0x0600                      //设置闪烁控制
  54          #define CH452_GET_KEY   0x0700                                  // 获取按键
  55          #define CH452_DIG0      0x0800                                  //数码管位0显示
C51 COMPILER V7.50   LED                                                                   08/30/2005 17:12:03 PAGE 2   

  56          #define CH452_DIG1      0x0900                      //数码管位1显示 
  57          #define CH452_DIG2      0x0a00                      //数码管位2显示
  58          #define CH452_DIG3      0x0b00                      //数码管位3显示
  59          #define CH452_DIG4      0x0c00                      //数码管位4显示
  60          #define CH452_DIG5      0x0d00                                  //数码管位5显示 
  61          #define CH452_DIG6      0x0e00                                  //数码管位6显示 
  62          #define CH452_DIG7      0x0f00                      //数码管位7显示
  63          
  64          unsigned char CH452CS=1; //芯片选择,默认为第一个芯片
  65          //-------------------------------------------------
  66          /*//I2C接口函数
  67          void I2cStart(void)
  68          {
  69                  I2C_SCK=0;
  70                  I2C_SDA=1; 
  71                  I2C_SCK=1;
  72                  _nop_();
  73                  _nop_();
  74                  _nop_();
  75          
  76                  I2C_SDA=0;
  77                  _nop_();
  78                  _nop_();
  79                  _nop_();
  80                  _nop_();
  81          
  82                  I2C_SCK=0;
  83                  I2C_SDA=1; 
  84          }
  85          
  86          void I2cStop(void)
  87          {
  88                  I2C_SCK=0;
  89                  I2C_SDA=0;
  90                  I2C_SCK=1;
  91                  _nop_();
  92                  _nop_();
  93                  _nop_();
  94          
  95                  I2C_SDA=1;
  96                  _nop_();
  97                  _nop_();
  98                  _nop_();
  99          
 100                  I2C_SCK=0;
 101          }
 102          */
 103          //-------------------------CH452操作开始--------------------------
 104          void CH452_I2c_WrByte(unsigned char c)  //写一个字节数据
 105          {
 106   1              unsigned char i;
 107   1              for(i=0;i!=8;i++)  
 108   1              {
 109   2                      if(c&0x80) {I2C_SDA=1;}
 110   2                      else {I2C_SDA=0;}
 111   2                      I2C_SCK=1;
 112   2                      c<<=1;
 113   2                      _nop_();
 114   2                      _nop_();
 115   2                      _nop_();
 116   2                      _nop_();
 117   2                      I2C_SCK=0;
C51 COMPILER V7.50   LED                                                                   08/30/2005 17:12:03 PAGE 3   

 118   2                      
 119   2                      _nop_();
 120   2                      _nop_();
 121   2                      _nop_();
 122   2                      _nop_();
 123   2              }
 124   1              _nop_();
 125   1              _nop_();
 126   1              I2C_SDA=1;
 127   1              I2C_SCK=1;  
 128   1              _nop_();
 129   1              _nop_();
 130   1              _nop_();
 131   1              _nop_();
 132   1              I2C_SCK=0;
 133   1              _nop_();
 134   1              _nop_();
 135   1              
 136   1      }
 137          //-------------------写命令------------------------
 138          void CH452_Write(unsigned short command)        
 139          {
 140   1      
 141   1              I2cStart();
 142   1              if(CH452CS==1)
 143   1              {
 144   2                      CH452_I2c_WrByte(((unsigned char)(command>>7)&0x3E)|0x60);  
 145   2              }
 146   1              else if(CH452CS==2)
 147   1              {
 148   2                      CH452_I2c_WrByte(((unsigned char)(command>>7)&0x3E)|0x40);
 149   2              }
 150   1              CH452_I2c_WrByte((unsigned char)command);              
 151   1              I2cStop();                  
 152   1      }
 153          
 154          //-----------------------CH452复位--------------------------
 155          void CH452_Rest()
 156          {
 157   1              I2cStart();
 158   1              if(CH452CS==1)
 159   1              {
 160   2                      CH452_I2c_WrByte(((unsigned char)(CH452_RESET>>7)&0x3E)|0x60);
 161   2              }
 162   1              else if(CH452CS==2)
 163   1              {
 164   2                      CH452_I2c_WrByte(((unsigned char)(CH452_RESET>>7)&0x3E)|0x40);
 165   2              }       
 166   1              CH452_I2c_WrByte((unsigned char)CH452_RESET); 
 167   1              I2cStop(); 
 168   1      
 169   1      
 170   1      }
 171          //-------------------------CH452左移-------------------------
 172          /*
 173          void CH452_LL(uchar i)
 174          {
 175          
 176                  uchar j;
 177                  for(j=0;j<i;j++)
 178                  {
 179                          I2cStart();     
C51 COMPILER V7.50   LED                                                                   08/30/2005 17:12:03 PAGE 4   

 180                          if(CH452CS==1)
 181                          {
 182                                  CH452_I2c_WrByte(((unsigned char)(CH452_LEFTMOV>>7)&0x3E)|0x60);
 183          
 184                          }
 185                          else if(CH452CS==2)
 186                          {
 187                                  CH452_I2c_WrByte(((unsigned char)(CH452_LEFTMOV>>7)&0x3E)|0x40);
 188          
 189                          }
 190                          CH452_I2c_WrByte((unsigned char)CH452_LEFTMOV); 
 191                          I2cStop(); 
 192          
 193                   }
 194                  
 195          
 196          
 197          }
 198          //------------------------CH452右移-------------------------
 199          void CH452_LR(uchar i)
 200          {
 201          
 202                  uchar j;
 203                  for(j=0;j<i;j++)
 204                  {
 205                          I2cStart();     
 206                          if(CH452CS==1)
 207                          {
 208                                  CH452_I2c_WrByte(((unsigned char)(CH452_RIGHTMOV>>7)&0x3E)|0x60);
 209                          }
 210                          else if(CH452CS==2)
 211                          {
 212                                  CH452_I2c_WrByte(((unsigned char)(CH452_RIGHTMOV>>7)&0x3E)|0x40);
 213                          }
 214                          CH452_I2c_WrByte((unsigned char)CH452_RIGHTMOV); 
 215                          I2cStop();
 216                  
 217                  }
 218          
 219          
 220          }
 221          void CH452_RR(uchar i)
 222          {
 223          
 224                  uchar j;
 225                  for(j=0;j<i;j++)
 226                  {
 227                          I2cStart();     
 228                          if(CH452CS==1)
 229                          {
 230                                  CH452_I2c_WrByte(((unsigned char)(CH452_RIGHTCYC>>7)&0x3E)|0x60);
 231                          }
 232                          else if(CH452CS==2)
 233                          {
 234                                  CH452_I2c_WrByte(((unsigned char)(CH452_RIGHTCYC>>7)&0x3E)|0x40);
 235                          }
 236                          CH452_I2c_WrByte((unsigned char)CH452_RIGHTCYC); 
 237                          I2cStop();
 238                  
 239                  }
 240          
 241          
C51 COMPILER V7.50   LED                                                                   08/30/2005 17:12:03 PAGE 5   

 242          }
 243          */
 244          //--------------------------CH452初始化------------------------
 245          void CH452_Init(void)
 246          {
 247   1      
 248   1              CH452CS=1;
 249   1              CH452_Rest();
 250   1              CH452_Write(CH452_SYSON1);
 251   1              CH452CS=2;
 252   1              CH452_Rest();
 253   1              CH452_Write(CH452_SYSON1);
 254   1      }
 255          //-------------------------CH452显示----------------------
 256          //chip CH452的芯片选择:如果只有一片则chip为1,如果有两片则可为1,2
 257          //dot  数码管显示的小数点,如果为1则显示,如果为0则不显示
 258          //bi   数码管选择(可为1-8)
 259          //dat  显示的数值(可为1-16)显示为1-9,a-f
 260          void CH452_Disp(uchar chip,uchar dot,uchar bi,uchar dat)
 261          {
 262   1              
 263   1              uint temp=0;
 264   1              if(chip==1)
 265   1              {
 266   2                      CH452CS=1;
 267   2              }
 268   1              else if(chip==2)
 269   1              {
 270   2                      CH452CS=2;
 271   2              }
 272   1              if(dot==1)
 273   1              {
 274   2                      temp |=0x0080;
 275   2              }
 276   1              

⌨️ 快捷键说明

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