直流电机+PWM+测速显示1

上传人:飞*** 文档编号:7499015 上传时间:2017-09-21 格式:DOC 页数:6 大小:62KB
返回 下载 相关 举报
直流电机+PWM+测速显示1_第1页
第1页 / 共6页
直流电机+PWM+测速显示1_第2页
第2页 / 共6页
直流电机+PWM+测速显示1_第3页
第3页 / 共6页
直流电机+PWM+测速显示1_第4页
第4页 / 共6页
直流电机+PWM+测速显示1_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《直流电机+PWM+测速显示1》由会员分享,可在线阅读,更多相关《直流电机+PWM+测速显示1(6页珍藏版)》请在金锄头文库上搜索。

1、#include #include 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,

2、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

3、char PointX,unsigned char PointY, bit Mode);uchar dsp10=0,0,0,0,0,0,0,0,0,0,;char abc3=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() P1_1=0;fnLCMInit(); / 液晶初始化fnSetPos(0,0); / 液晶 设置当前地址dprintf(0,0,直流电机加-减速及测速系统);dprintf(0,1

4、2,键盘+:步长加速);dprintf(0,24,键盘-:步长减速);dprintf(0,36,键盘=:顺时针转);dprintf(0,48,键盘 on/c:逆时针转 );dprintf(0,72,方向:);dprintf(0,84,转速:); TMOD=0x15; /T1 为 16 位计时器,T0 为 16 位计数器 2 的 16 次方TH1=0x3c;TL1=0xb0; /没怎么用 可删TH0=0x00;TL0=0x00;ET0=1;ET1=1;TR0=1;TR1=1;while(1) P1_1=0;key=GeyKey();switch(key) case 1: a=10;/sprint

5、f(abc,%3.2f,a/255.0);dprintf(0,96, 5 r/min); /dprintf(0,96,abc); dprintf(60,96,r/min);control();break; case 2: a=25;dprintf(0,96, 25 r/min); control(); break; case 3: a=40; dprintf(0,96, 40 r/min); control(); break; case 4: a=55; dprintf(0,96, 60 r/min); control(); break; case 5: a=70; dprintf(0,96,

6、 80 r/min); control(); break; case 6: a=90; dprintf(0,96,100 r/min); control(); break; case 7: a=110; dprintf(0,96,120 r/min); control(); break; case 8: a=130; dprintf(0,96,135 r/min); control(); break; case 9: a=150; dprintf(0,96,150 r/min); control(); break; case +: P1_0=1;dprintf(0,72,方向: 顺时针 );c

7、ontrol();break;case -: P1_0=0;dprintf(0,72,方向: 逆时针 );control();break;case =: P1_0=1;dprintf(0,72,方向: 顺时针);control();break;case c: P1_0=0;dprintf(0,72,方向: 逆时针);control();break;case /: dprintf(0,72,方向: 顺时针);break;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

8、_();_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;i

9、f(!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(;i0;i-)for(j=15;j0;j-)for(k=11;k0;k-);void time()interrupt 3 /计时器 T1-用于测速 TR1=0;count+; /每定时中断一次,就加一k1+=TL0;if(count=51) spr

10、intf(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; /每次调整步长为 n=5else 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;elseif(key!=0)break; /此处跳出循环回到主程序EA=0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号