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

📄 dc_current_souce.lst

📁 利用单片机控制电流大小
💻 LST
📖 第 1 页 / 共 2 页
字号:
 164   5                               cc=cc-10*m;
 165   5                               dispbuff[7]=cc;
 166   5                               display(7);
 167   5                               }
 168   4                         else if((control/100))
 169   4                   {  
 170   5                                 cc=control;
 171   5                     dispbuff[5]=cc/100;
 172   5                                 display(5);
 173   5                                 m=dispbuff[5];
 174   5                                 cc=cc-100*m;
 175   5                                 dispbuff[6]=cc/10;
 176   5                                 display(6);
 177   5                                 m=dispbuff[6];
 178   5                                 cc=cc-10*m;
C51 COMPILER V7.07   DC_CURRENT_SOUCE                                                      09/10/2005 19:28:46 PAGE 4   

 179   5                                 dispbuff[7]=cc;
 180   5                                 display(7);
 181   5                   }
 182   4                 else if((control/10))
 183   4                           {
 184   5                                 cc=control;
 185   5                                 dispbuff[6]=cc/10;
 186   5                                 display(6);
 187   5                                 m=dispbuff[6];
 188   5                                 cc=cc-10*m;
 189   5                                 dispbuff[7]=cc;
 190   5                                 display(7);                   
 191   5                               }
 192   4                         else  
 193   4                          { 
 194   5                                 dispbuff[7]=control;
 195   5                     display(7);
 196   5                               }
 197   4                        }   
 198   3              else  if(control==2000)
 199   3                       {
 200   4                         dispbuff[7]=0;
 201   4                         display(7);
 202   4                         dispbuff[6]=0;
 203   4                         display(6);
 204   4                         dispbuff[5]=0;
 205   4                         display(5);
 206   4                         dispbuff[4]=2;
 207   4                         display(4);              
 208   4                    }
 209   3               }
 210   2         dacconvent();
 211   2               for(time=0;time<200;time++)
 212   2                  delay(200);
 213   2         }
 214   1        
 215   1      }
 216           
 217           char ReadKB()             //读键盘
 218          {  char kb=0,j;
 219   1         CS=1;
 220   1         CLK=0;
 221   1         delay (50);
 222   1         sent(0x15);//发送读键盘指令
 223   1         delay(10);
 224   1         DIO=1;      //要读dio的值,必须先对其置一。
 225   1         CLK=1;
 226   1         delay(50);
 227   1         for(j=0;j<8;j++)
 228   1        {CLK=0;
 229   2         kb=kb*2+(char)DIO;//读1位数据
 230   2         delay(10);
 231   2         CLK=1;
 232   2         delay(10);
 233   2         } 
 234   1         CS=1;
 235   1         return(kb);
 236   1         }
 237             
 238          void sent(unsigned char sent_buf)            //发送数据
 239          {
 240   1         char j;
C51 COMPILER V7.07   DC_CURRENT_SOUCE                                                      09/10/2005 19:28:46 PAGE 5   

 241   1         CLK=0;                            /*置SPI时钟线为低*/
 242   1         CS=0;                              /*置SPI片选线为低*/
 243   1         delay (50);                          /*延时50us*/
 244   1        for(j=0;j<8;j++)                      /*发送8位数据*/
 245   1          {
 246   2            sent_buf=sent_buf<<1;     /*从数据最高位开始,将要发发送的数据位移入进位位CY*/
 247   2            DIO=CY;                          /*数据位送数据线*/
 248   2            CLK=1;                           /* 置SPI时钟线为高*/
 249   2            delay (10);                         /*延时10us*/
 250   2            CLK=0;                          /* 置SPI时钟线为低,发送完1位数据*/
 251   2            delay (10);/*延时10us*/
 252   2          }
 253   1         DIO=0;//为何dio清零??
 254   1      }
 255          
 256          void delay(unsigned char time)          //延时
 257          {
 258   1        unsigned char j;
 259   1        for(j=0;j<time;j++);
 260   1      }
 261          
 262          
 263          void display(unsigned char k)reentrant        //显示
 264          {
 265   1           CS=1;
 266   1               sent(0xc8+k);
 267   1               sent(dispbuff[k]);
 268   1               CS=1;
 269   1         
 270   1      }
 271          
 272          void transkey1(void)   //将所设定的数值转化为控制字(10进制转16进制)
 273          {   unsigned char y;
 274   1          control=0;
 275   1          for(y=0;y<i;y++)
 276   1          {
 277   2               control=control*10;
 278   2               control=control+keybuf[y]; 
 279   2           }
 280   1              if(control>2000)
 281   1                control=2000;
 282   1      }
 283          
 284          void dis_control(unsigned char keycontrol)reentrant   //控制显示函数(可再入)
 285          {   
 286   1               sent(keycontrol);
 287   1               CS=1;
 288   1      }
 289          
 290          
 291          void dacconvent(void)reentrant   //da转换采用ldac/=0的接法,先发送低八位数据,再发送高八位数据
 292          {  
 293   1         unsigned int voltage;     //电流变量
 294   1         unsigned char nh4,nl8;
 295   1         voltage=control*2;     
 296   1         nh4=voltage/256;
 297   1         nl8=voltage%256;
 298   1         max530_ad=0x0000; ;  //cs0地址片选(高四位)
 299   1         *max530_ad=nl8;
 300   1         max530_ad=0x0003; //cs0地址片选(低八位)
 301   1         *max530_ad=nh4; 
 302   1      }
C51 COMPILER V7.07   DC_CURRENT_SOUCE                                                      09/10/2005 19:28:46 PAGE 6   

 303          
 304          void xiuzheng(void)    //对电流的误差进行分段修正,让电流更加准确
 305          {
 306   1      
 307   1      }
 308          
 309          
 310          
 311          
 312          
 313          
 314          
 315          
 316          
 317          
 318          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1422    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     26      10
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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