當前位置:首頁 » 課程大全 » 轉速表單片機課程設計

轉速表單片機課程設計

發布時間: 2021-02-21 08:24:21

『壹』 我要用單片機設計一個轉速表,現在脈沖方波信號從int0輸入,求1s內的脈沖個數,誰能幫我看看我的程序

試試看:
ORG 0000H
LJMP STR
ORG 0003H
LJMP PINT
ORG 0100H
STR:
MOV TMOD, #02H
MOV TL0, #06H
MOV TH0, #06H
SETB TR0
SETB EX0
SETB IT0
SETB EA

MOV SP, #60H
MOV R3, #40
MOV R4, #100
MOV 30H, #0
MOV 31H, #0
;-------------------------------
RET1:
JB TF0, LP1
CALL SHOW
JMP RET1
;-------------------------------
LP1:
CLR TF0
DJNZ R4, RET1
MOV R4, #100
DJNZ R3, RET1
MOV R3, #40

MOV 34H, 30H
MOV 35H, 31H
MOV 30H, #0
MOV 31H, #0
JMP RET1
;-------------------------------
PINT:
PUSH PSW
PUSH ACC
MOV A, 30H
ADD A, #1
DA A
MOV 30H, A
MOV A, 31H
ADDC A, #0
DA A
MOV 31H, A
POP ACC
POP PSW
RETI
;----------------------------------
SHOW:
MOV DPTR, #DSEG1
MOV A, 34H
ANL A, #0FH
MOVC A, @A+DPTR
MOV P0, A
MOV P2, #0EH
CALL DEL1
MOV P2, #0FH

MOV A, 34H
SWAP A
ANL A, #0FH
MOVC A, @A+DPTR
MOV P0, A
MOV P2, #0DH
CALL DEL1
MOV P2, #0FH

MOV A, 35H
ANL A, #0FH
MOVC A, @A+DPTR
MOV P0, A
MOV P2, #0BH
CALL DEL1
MOV P2, #0FH

MOV A, 35H
SWAP A
ANL A, #0FH
MOVC A, @A+DPTR
MOV P0, A
MOV P2, #07H
CALL DEL1
MOV P2, #0FH
RET
DSEG1:
DB 0C0H,0F9H,0A4H,0B0H, 99H
DB 92H, 82H,0F8H, 80H, 90H
;-------------------------------
DEL1:
MOV R7, #2
DEL0:
MOV R6, #0
DJNZ R6, $
DJNZ R7, DEL0
RET
;-------------------------------

『貳』 怎樣用51系列單片機製作轉速表

用定時器0做定時中斷;用定時器1做計數器。假設T0 10ms中斷一次,在這期間,讀取T1計數器的值為counter,那麼轉速計算為round=counter*100;可根據實際需要變通的

『叄』 單片機課程設計,車速測量儀。

我也不會啊,我也是求答案的

『肆』 51單片機轉速表

用霍爾感測器採集轉速,然後用單片機的某一個引腳老接收高低電平信號,可以根據兩個相鄰的相同的電平之間的時間來求出轉動的頻率,再用LED來顯示,其實很簡單。多注意思考,多動手,自己寫程序,相信自己。

『伍』 跪求!單片機直流電機轉速控制帶速度顯示的,課程設計!!有圖有!程序!!急啊!!

#include <showfun.h>
#include <stdio.h>

extern char fnLCMInit(); // LCM 初始化
extern void at(unsigned char x,unsigned char y);/*設定文本x,y值*/
extern void cls(); // 清屏
extern void charout(unsigned char *str); //ASCII(8*8) 顯示函數
extern void fnSetPos(unsigned char urow, unsigned char ucol); // 設置當前地址
extern uchar dprintf(uchar x,uchar y,char *fmt);// ASCII(8*16) 及 漢字(16*16) 顯示函數
extern uchar fnPR12(uchar uCmd); // 寫無參數的指令
extern uchar fnPR13(uchar uData); // 寫數據
extern unsigned int Adc0832(unsigned char channel);
extern void Line( unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, bit Mode);
extern void Pixel(unsigned char PointX,unsigned char PointY, bit Mode);

uchar dsp[10]={0,0,0,0,0,0,0,0,0,0,};
char abc[3]={0,0,0,};
uchar key=0;
uint a=100;
uchar n=5;
uchar count=1;
uint k1=0;

uchar GeyKey();
void delay(uchar i);
void control();

main()
{

fnLCMInit();
fnSetPos(0,0);
dprintf(0,0,"直流電機加-減速及測速系統");
dprintf(0,12,"鍵盤+:步長加速");
dprintf(0,24,"鍵盤-:步長減速");
dprintf(0,36,"鍵盤=:順時針轉");
dprintf(0,48,"鍵盤on/c:逆時針轉");

dprintf(0,72,"方向:");
dprintf(0,84,"轉速:");

P1_1=0;
TMOD=0x15;
TH1=0x3c;
TL1=0xb0;
TH0=0x00;
TL0=0x00;
ET0=1;
ET1=1;
TR0=1;
TR1=1;

while(1)
{ key=GeyKey();
switch(key)
{ case '1': { a=10;
//sprintf(abc,"%3.2f",a/255.0);
dprintf(0,96," 5 r/min");
//dprintf(0,96,abc);
dprintf(60,96,"r/min");
break; }
case '2': { a=25;dprintf(0,96," 25 r/min"); break; }
case '3': { a=40; dprintf(0,96," 40 r/min"); break; }
case '4': { a=55; dprintf(0,96," 60 r/min"); break; }
case '5': { a=70; dprintf(0,96," 80 r/min"); break; }
case '6': { a=90; dprintf(0,96,"100 r/min"); break; }
case '7': { a=110; dprintf(0,96,"120 r/min"); break; }
case '8': { a=130; dprintf(0,96,"135 r/min"); break; }
case '9': { a=150; dprintf(0,96,"150 r/min"); break; }
case '+': { dprintf(0,72,"方向: 順時針");
control();
break;
}
case '-': { P1_0=0;
dprintf(0,72,"方向: 逆時針");
control();
break;
}
case '=': {P1_0=1;dprintf(0,72,"方向: 順時針");break;}
case 'c': {P1_0=0;dprintf(0,72,"方向: 逆時針");break;}
case '/': {dprintf(0,72,"方向: 順時針");
control();}
default: break;
}
}
}

uchar GeyKey()
{
P1_4=0;
P1_5=1;
P1_6=1;
P1_7=1;
P3_0=1;
P3_1=1;
P3_2=1;
P3_3=1;
_nop_();_nop_();
if(!P3_0)return '7';
if(!P3_1)return '8';
if(!P3_2)return '9';
if(!P3_3)return '/';
P1_4=1;
P1_5=0;
P1_6=1;
P1_7=1;
_nop_();_nop_();
if(!P3_0)return '4';
if(!P3_1)return '5';
if(!P3_2)return '6';
if(!P3_3)return '*';

P1_4=1;
P1_5=1;
P1_6=0;
P1_7=1;
_nop_();_nop_();
if(!P3_0)return '1';
if(!P3_1)return '2';
if(!P3_2)return '3';
if(!P3_3)return '-';

P1_4=1;
P1_5=1;
P1_6=1;
P1_7=0;
_nop_();_nop_();
if(!P3_0)return 'c';
if(!P3_1)return '0';
if(!P3_2)return '=';
if(!P3_3)return '+';

return 0;
}

void delay(uchar i)
{ uchar j,k;
for(;i>0;i--)
for(j=15;j>0;j--)
for(k=11;k>0;k--);
}

void time()interrupt 3
{
TR1=0;
count++;
k1+=TL0;
if(count==51)
{
sprintf(dsp,"%3d",k1);
dprintf(0,108,dsp);
dprintf(60,108,"r/min");
count=1;
k1=0;
}
TH1=0x3c;
TL1=0xb0;
TH0=0x00;
TL0=0x00;
TR1=1;

}

void control()
{
EA=1;
while(1)
{ if(a>=150)
a=150;
if(a<=10)
a=10;
P1_1=0;
delay(160-a);
P1_1=1;
delay(a);
key=GeyKey();
if(key=='-') a-=n;
else
if(key=='+') a+=n;
else
if(key=='=')
{ P1_0=1;
dprintf(0,72,"方向: 順時針");
}
else
if(key=='c')
{ P1_0=0;
dprintf(0,72,"方向: 逆時針");
}
else
if(key=='*')
{ P1_1=0;
break;
}
else
if(key!=0)
break;
}
EA=0;
}

『陸』 求~~~單片機數字轉速表設計的程序!高手幫下!!

網上很多的,搜索一下吧
關鍵字 轉速儀 設計 單片機

『柒』 單片機課程設計轉速測量儀設計

這個你使用單片機P3.5腳的T1計數器功能就可以實現了,
不過注意一點,你所採集的信號要通過施密特反相器,否則有可能誤判;

『捌』 單片機課程設計題目: 轉速計的設計(LCD顯示)

轉速設計,我覺得顯示用數碼管就可以解決,用液晶顯示就是浪費!你這個課題最難的應該是轉速的精確度。
1、如果是步進電機
2、直流電機
3、交流電機
分這三種來進行深入的設計!最好把調速也作了,應該可以拿到A

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919