電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 2846|回復(fù): 1
收起左側(cè)

做的測轉(zhuǎn)速的轉(zhuǎn)速上限才11520

[復(fù)制鏈接]

657

主題

1025

帖子

5598

積分

四級會員

Rank: 4

積分
5598
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2022-8-1 14:36:49 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
網(wǎng)上找的程序,自己修改了一下。但是測出的速度最快也就11520轉(zhuǎn),716空心杯轉(zhuǎn)速標(biāo)注34000根本測不出來,不知道是程序問題,還是紅外模塊的問題,求高人
#include  "REG52.H"    //包含單片機(jī)寄存器的頭文件

#include  "intrins.h" //包含_nop_()函數(shù)定義的頭文件

unsigned int v;       //儲存電機(jī)轉(zhuǎn)速

unsigned char count;  //儲存定時器T0中斷次數(shù)

bit flag;                                    //計滿1秒鐘標(biāo)志位

void delay1ms()                                                           //函數(shù)功能:延時1ms

{                                                                                                     //(3j+2)*i=(30×3+2)×10=920

unsigned char i,j;                               //對11.0592MHz的晶振來說大約是1ms

for(i=0;i<10;i++)

for(j=0;j<30;j++)

;

}

void delay(unsigned char n)   //延時n個毫秒

{

unsigned char i;

for(i=0;i;i++)

delay1ms();

}



回復(fù)

使用道具 舉報

600

主題

954

帖子

5061

積分

四級會員

Rank: 4

積分
5061
沙發(fā)
發(fā)表于 2022-8-1 14:37:06 | 只看該作者
void change(unsigned char a)              //數(shù)字對應(yīng)段碼的轉(zhuǎn)換

{              if(a==0) P0=0xc0;

if(a==1) P0=0xf9;

if(a==2) P0=0xa4;

if(a==3) P0=0xb0;

if(a==4) P0=0x99;

if(a==5) P0=0x92;

if(a==6) P0=0x82;

if(a==7) P0=0xf8;

if(a==8) P0=0x80;

if(a==9) P0=0x90;

}

void display_val(unsigned int x) //顯示數(shù)值

{

unsigned char i,j,k,l,q,w;     //i,j,k,l分別儲存轉(zhuǎn)速的千位、百位、十位和個位

w=x/100000;

q=x/10000;

i=x/1000;         //取千位

j=(x%1000)/100;   //取百位

k=(x%100)/10;     //取十位

l=x%10;           //取個位
P1=32;                                          //選3號數(shù)碼管

change(w);

delay1ms();

P1=16;                                          //選4號數(shù)碼管

change(q);

delay1ms();

P1=8;                                          //選3號數(shù)碼管

change(i);

delay1ms();

P1=4;                                          //選4號數(shù)碼管

change(j);

delay1ms();

P1=2;                               //選5號數(shù)碼管

change(k);

delay1ms();

P1=1;                                          //選6號數(shù)碼管

change(l);

delay1ms();

}

void main(void)                                          //主函數(shù)

{

TMOD=0x51;  //定時器T1工作于計數(shù)模式1,定時器T0工作于計時模式1;

TH0=0x10;    //定時器T0的高8位設(shè)置初值,每66.67ms產(chǎn)生一次中斷

TL0=0;       //定時器T0的低8位設(shè)置初值

EA=1;                     //開總中斷

ET0=1;                    //定時器T0中斷允許

TR0=1;                    //啟動定時器T0
回復(fù) 支持 反對

使用道具 舉報

發(fā)表回復(fù)

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

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表