转速表单片机课程设计
『壹』 我要用单片机设计一个转速表,现在脉冲方波信号从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