專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

關(guān)于單片機(jī)編程設(shè)計(jì)和控制步進(jìn)電機(jī)的注意事項(xiàng)

作者:郭子瑜   來(lái)源:51hei   點(diǎn)擊數(shù):  更新時(shí)間:2008年09月11日   【字體:

   關(guān)于單片機(jī)編程設(shè)計(jì)的注意事項(xiàng),我是這樣認(rèn)為的,首先要考慮程序的可執(zhí)行效率,要簡(jiǎn)潔、維護(hù)方便,還要有可擴(kuò)展空間,簡(jiǎn)單明了,子程序的搭配,延時(shí)的應(yīng)用,和中斷的配合,主函數(shù)調(diào)取子程序模塊的效率、循環(huán)某個(gè)子程序的時(shí)間,條件觸發(fā)啟動(dòng)子程序能迅速響應(yīng)主程序的調(diào)配。  通過(guò)以上可以看出,編一個(gè)好的程序,要考慮到單片機(jī)軟件的方方面面,所以編程時(shí),一定不能馬虎,如果馬虎,那么你的程序就會(huì)出錯(cuò),到時(shí)還得糾錯(cuò),費(fèi)時(shí)費(fèi)力。

   如果遇到關(guān)于步進(jìn)電機(jī)的程序,那么一定要考慮到步進(jìn)電機(jī)的正反轉(zhuǎn)進(jìn)制碼,還要考慮到轉(zhuǎn)速,還有當(dāng)前步進(jìn)電機(jī)的狀態(tài)顯示,所以編一個(gè)程序,是一件很辛苦的事,還好有http://www.torrancerestoration.com這個(gè)學(xué)習(xí)單片機(jī)的好網(wǎng)站,可以找到很多例子和朋友。有時(shí)候累了就上論壇那泡一泡,可能會(huì)有點(diǎn)收獲,我這些經(jīng)驗(yàn)也是長(zhǎng)期泡單片機(jī)論壇總結(jié)出來(lái)的。對(duì)于步進(jìn)電機(jī)的這個(gè)程序我認(rèn)為難就難在步進(jìn)電機(jī)和顯示的進(jìn)制碼上,如:

uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};電機(jī)正轉(zhuǎn)
uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};電機(jī)反轉(zhuǎn)

步進(jìn)電機(jī)正轉(zhuǎn)
**********************************/
void  motor_ffw()
{
   uchar i;
   uint  j;
   for (j=0; j<12; j++)         //轉(zhuǎn)1*n圈
    {
     if(k4==0)
        {break;}                //退出此循環(huán)程序
      for (i=0; i<8; i++)       //一個(gè)周期轉(zhuǎn)30度
        {
          P1 = FFW[i];          //取數(shù)據(jù)
          yanshia(15);            //調(diào)節(jié)轉(zhuǎn)速
        }
    }
}
/**********************************
       步進(jìn)電機(jī)反轉(zhuǎn)
**********************************/
void motor_rev()
{
    uchar i;
    uint  j;
  for(j=0;j<12;j++)
{
     if(k4==0)
     {break;}
for(i=0;i<8;i++)
{
   P1=REV[i];
   yanshia(15);
   }
    }
      }


 

關(guān)閉窗口