您当前的位置:五五电子网电子知识电子制作自动控制-单片机[课程设计]数控步进直流稳压电源(c程序) 正文
[课程设计]数控步进直流稳压电源(c程序)

[课程设计]数控步进直流稳压电源(c程序)

点击数:7165 次   录入时间:03-04 11:45:41   整理:http://www.55dianzi.com   自动控制-单片机
                 for(COUNTW=0;COUNTW<4;COUNTW++) { 
                 data=s[COUNTW]; 
                 if(COUNTW==1) data=table0[data];//第二位需要显示小数点 
                 else data=table[data]; 
                 SPILED(data); //发送显示段码 
 } 
            for(COUNTW=0;COUNTW<4;COUNTW++){ 
            data=0xFF; 
            SPILED(data); //连续发送4个DARK,使显示看起来好看一些 
 } 
          RA5=1; //最后给一个锁存信号,代表显示任务完成 
 } 
//I2C总线输出数据子程序 
void i2cout() 

         i2cint(); //因为SPI输出和I2C输出不能同时工作,则需要 
//不断在两种方式见切换 
          SEN=1; //产生I2C启动信号 
          for(i=0x02;--i;) continue; //给予一定的延时,保证启动 
  do { 
       RSEN=1; //产生I2C启动信号 
       }while(SSPIF==0); //如果没能启动,则反复启动,直到启动为止 
         SSPIF=0; //SSPIF标志清0 
         SSPBUF=0X58; //I2C总线发送地址字节 
    do { 
      ; 
         }while(SSPIF==0); //等待地址发送完毕 
          SSPIF=0; //SSPIF标志清0 
          SSPBUF=0X01; //I2C总线发送命令字节 
       do { 
            ; 
         }while(SSPIF==0); //等待命令发送完毕 
           SSPIF=0; //SSPIF标志清0 
            SSPBUF=TXDATA; //I2C总线发送数据字节 
      do { 
         ; 
            }while(SSPIF==0); //等待数据发送完毕 
            SSPIF=0; //SSPIF标志清0 
             PEN=1; //产生停止条件 
      do { 
           ; 
         }while(SSPIF==0); //等待停止条件产生 
         SSPIF=0; //SSPIF标志清0  
  } 
//步进加子程序 
void BJADD() 

            R1++; 
           TXDATA=TXDATA+2; 
           if(R1>9) { 
             R1=0; 
             R2++; 
            if(R2>9) { 
               R2=0; 
                  R3++; 
 } 

           if((R3==1)&&(R2==2)&&(R1==1)){ 
          R3=0; 
           R2=0; 
              R1=0; //若R3,R2,R1超过120,则又从0计起 
           TXDATA=0; 
 } 
           sfz(); //把需要显示的数字装入显示缓冲数组 

//步进减子程序 
void BJSUB() 

                 R1--; 
                   TXDATA=TXDATA-2; 
                  if(R1==0XFF) { 
                 R1=9; 
                    R2--; 
                   if(R2==0XFF) { 
                  R2=9; 
                R3--; 
                   if(R3==0XFF) { 
                  R3=1; 
                   R2=2; 
                R1=0;//若R3,R2,R1小于0,则又从120计起 
                     TXDATA=0XF0; 
              } 
         } 
    } 
   sfz(); //把需要显示的数字装入显示缓冲数组 

//主程序 
main() 
  { 
             initial(); //系统各寄存器初始化 
             display(); //调用一次显示子程序 
             while(1) { 
               i2cout(); //调用I2C子程序,启动D/A转换  
               KEYSCAN(); //键盘扫描 
               keyserve() ; //若确实有键按下,则调用键服务程序  
             if(BJF==0X01) BJADD();//若步进加标志为1,则调用步进加子程序 
             else BJSUB(); //若步进加标志为0,则调用步进减子程序 
             display(); //调用一次显示子程序 
   }



上一页  [1] [2] 


本文关键字:稳压电源  数控  c程序  课程  自动控制-单片机电子制作 - 自动控制-单片机