直流电机测速并显示Word文件下载.docx
- 文档编号:16948726
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:10
- 大小:50.78KB
直流电机测速并显示Word文件下载.docx
《直流电机测速并显示Word文件下载.docx》由会员分享,可在线阅读,更多相关《直流电机测速并显示Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
sbitleft=P0^4;
//左转按键
sbitright=P0^5;
//右转按键
sbitdetect=P3^2;
//检测脉冲
sbitlcdrs=P0^0;
sbitlcden=P0^1;
#defineDaP2
uinttemp;
//保存检测到的电平数据以便比较
uintcount;
//用于计数
uintaa,bb;
//用于计数
uintspeed;
//用来计算转速
uinta=25000;
uintt0=25000,t1=25000;
//初始时占空比为50%
ucharflag=1;
//此标志用于选择不同的装载初值
uchardflag;
//左右转标志
ucharsflag=1;
//用来标志速度档位
#defineright_turnPW1=0;
PW2=1//顺时针转动
#defineleft_turnPW1=1;
PW2=0//逆向转动
#defineend_turnPW1=1;
PW2=1//停转
voidkeyscan();
//键盘扫描
voiddelay(ucharz);
voidtime_init();
//定时器的初始化
voidwrite_(uchar);
//液晶写指令
voidwrite_data(uchardate);
//液晶写数据
voidlcd_init();
//液晶初始化
voiddisplay(uintrate);
//显赫速度
voidint0_init();
//定时器0初始化
//键盘扫描程序
voidjudge_derection();
voidmain()
{
time_init();
lcd_init();
int0_init();
while
(1)
{
}
}
voidtime_init()
TMOD=0x11;
//两个定时器都设定为工作方式1十六位定时计数器
EA=1;
//开启总中断
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
TH1=(65536-a)/256;
TL1=(65536-a)%256;
ET1=1;
TR1=0;
voidint0_init()
EX0=1;
//外部中断源可以申请中断
IT0=1;
//外部中断源下降沿触发
voidtimer0()interrupt1using0
//装载初值
keyscan();
aa++;
if(aa==5)
aa=0;
temp=count*0.5*60*2*2*100/24;
//计算转速,每分转多少圈
count=0;
//重新开始计数脉冲数
display(temp);
//把计算得的结果显示出来
voidtimer1()interrupt3using0
if(flag)
flag=0;
end_turn;
a=t0;
//t0的大小决定着低电平延续时间
TH1=(65536-a)/256;
TL1=(65536-a)%256;
//重装载初值
else
flag=1;
//这个标志起到交替输出高低电平的作用
if(dflag==0)
{
right_turn;
//右转
}
else
left_turn;
//左转
}
a=t1;
//t1的大小决定着高电平延续时间
TH1=(65536-a)/256;
}
/*******外部中断*******************/
void_int0()interrupt0
count++;
//来一个下降沿沿就计一个脉冲数
/*******显示函数***********/
voiddisplay(uintrate)
ucharwan,qian,bai,shi,ge;
wan=rate/10000;
qian=rate/1000%10;
bai=rate/100%10;
shi=rate/10%10;
ge=rate%10;
write_(0x80);
write_data('
0'
+wan);
+qian);
+bai);
.'
);
+shi);
+ge);
/******延时函数********/
voiddelay(uintz)
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
/************写指令************/
voidwrite_(uchar)
lcdrs=0;
Da=;
delay
(1);
lcden=1;
lcden=0;
/************写数据**********/
voidwrite_data(uchardate)
lcdrs=1;
Da=date;
/************液晶初始化**********/
voidlcd_init()
lcden=0;
write_(0x38);
//初始化
write_(0x0c);
//打开光标0x0c不显示光标0x0e光标不闪,0x0f光标闪
write_(0x01);
//清显示
write_(0x80+0x40);
'
G'
e'
a'
r'
/***********键盘扫描程序**********/
voidkeyscan()
if(stop==0)
TR1=0;
//关闭定时器0即可停止转动
//停止供电
write_(0x80+0x40);
write_data('
if(left==0)
TR1=1;
dflag=1;
//转向标志置位则左转
+sflag);
if(right==0)
dflag=0;
//转向标志复位则右转
if(accelerate==0)
delay(10);
//延时消抖
if(accelerate==0)
{
while(accelerate==0);
//等待松手
sflag++;
if(sflag==2)
t0=20000;
t1=30000;
//占空比为百分之60
write_(0x80+0x40);
write_data('
2'
if(sflag==3)
t0=15000;
t1=35000;
//占空比为百分之70
3'
if(sflag==4)
t0=10000;
t1=40000;
//占空比为百分之80
4'
if(sflag==5)
t0=5000;
t1=45000;
//占空比为百分之90
5'
if(sflag>
=6)
sflag=0;
t0=25000;
t1=25000;
1'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 直流电机 测速 显示