找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6663|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

[求助]哪位高人能給個(gè)匯編程序啊,要求用8952單片機(jī)通過數(shù)脈沖計(jì)數(shù)法來測量旋轉(zhuǎn)角度并在LED上顯示的?先謝過,做個(gè)朋友啊

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:19183 發(fā)表于 2009-11-16 12:30 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
求助]哪位高人能給個(gè)匯編程序啊,要求用8952單片機(jī)通過數(shù)脈沖計(jì)數(shù)法來測量旋轉(zhuǎn)角度并在LED上顯示的?先謝過,做個(gè)朋友啊
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:16763 發(fā)表于 2009-11-22 00:24 | 只看該作者
用編碼器,一周發(fā)多少個(gè)脈沖,換算成角度。
回復(fù)

使用道具 舉報(bào)

板凳
ID:16763 發(fā)表于 2009-12-13 23:48 | 只看該作者

給你個(gè)測轉(zhuǎn)速的參考下

#include<at89x51.h>
#define uchar unsigned char
#define uint unsigned int
sbit key=P3^0;
sbit f=P1^1;
uint cur_r;
uint cur_ms,cur_sec;//當(dāng)前毫秒,秒
uint couter; //脈沖數(shù)量
uchar code design[10]={0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60};
//*******************************************************************
//***************initial*********************************************
void initial(void)
{   couter=cur_r=0;
    TMOD=0x01;
    TH0=0xb1;
 TL0=0xe0;
 EA=1;
 EX0=0;
 IT0=1;
}
//延時(shí)***************************************************************
//delay()************************************************************
void delay(uint i)
{   uint j;
    for(;i>0;i--)
 for(j=0;j<120;j++)
 {;}
}
//外部中斷***********************************************************
//caculate外部脈沖數(shù)量***********************************************
void intrp0(void) interrupt 0
{   couter++;
}
//定時(shí)器1中斷********************************************************
//20ms中斷***********************************************************
//編碼器采用100PULSE/R的*********************************************
void intrp1(void) interrupt 1
{   TH0=0xb1;
 TL0=0xe0;
    if(cur_ms<50){cur_ms++;}
 else
 {   cur_ms=0;
     cur_sec++;
  if(cur_sec>=2)
     {   EX0=0;                //計(jì)算時(shí)禁止外部中斷,停止計(jì)數(shù)
         ET0=0;
      TR0=0;
      cur_r=couter*3/10;   //當(dāng)前轉(zhuǎn)速
         cur_ms=0;
         cur_sec=0;
   couter=0;
         EX0=1;                //重新開啟脈沖計(jì)數(shù)
      ET0=1;
      TR0=1; 
   f=~f;
   cur_sec=0;
  }
  }
}
//顯示接口***********************************************************
//P0為數(shù)碼管顯示接口,P1為數(shù)碼管控制接口*****************************
void display(uint x)
{   uint g_wei,s_wei,b_wei;//個(gè)位,十位,百位
    if(x>=999){x=999;}//限制為999R/MIN
 b_wei=x/100;
 s_wei=(x-b_wei*100)/10;
 g_wei=(x-b_wei*100-s_wei*10)%10;
 //百位顯示
 P0=design[b_wei];
 P2=0xfe;
 delay(5);
 //十位顯示
 P0=design[s_wei];
 P2=0xfd;
 delay(5);
 //個(gè)位顯示
 P0=design[g_wei];
 P2=0xfb;
 delay(5);
}
//*******************************************************************
//main***************************************************************
void main()
{   initial();
    while(1)
 {   display(cur_r);
  if(key){EX0=0;ET0=0;TR0=0;} //按下停止按鈕
  else {EX0=1;ET0=1,TR0=1;}
  }
}

回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表