轉速表單片機課程設計
『壹』 我要用單片機設計一個轉速表,現在脈沖方波信號從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