77范文网 - 专业文章范例文档资料分享平台

基于单片机的运动控制系统(8)

来源:网络收集 时间:2019-01-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

附录

电路实物图:

系统完整程序代码:

(1)单片机处理程序 #include #include

#define uchar unsigned char #define uint unsigned int #define Kp 0.05 #define Ki 0.25 #define Kd 0.1 sbit rs=P3^6; sbit len=P3^7; sbit P1_7=P1^7; sbit P1_6=P1^6;

uchar code note1[]=\

uchar code note2[]=%uchar code note3[]=%uchar code note4[]=%uchar code note5[]=%uchar code note6[]=%uchar count,flag,flag1,flag2; uchar num1,num2,i;

uchar temp0,temp1,temp2,temp3;

uint speed,key_speed,dis_speed,sum_speed; uint speed0,speed1,speed2; uint T0L_L,T0L_H,T0H_L,T0H_H; int D,e1,e2,e3,duk,uk; uchar value;

void delay_ms(uint ms) {

uint j;

for(j=0;j

void delay(uint m) {

uint x,y;

for(x=m;x>0;x--)

for(y=110;y>0;y--); }

void write_com(uchar com) {

rs=0; P0=com; delay(5); len=1; delay(5); len=0; }

void write_data(uchar dat) {

rs=1; P0=dat; delay(5); len=1; delay(5); len=0; }

void init() {

len=0;

write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); }

void send(uchar mes) {

SBUF=mes;

while(TI==0); TI=0; }

uchar checkkey() //检测是否按键按下 {

P2 = 0x0f;

if(P2 != 0x0f) {

delay_ms(100); //按键消抖 if(P2 != 0x0f) return (0xff); else return (0); } }

uchar keyscan() {

uchar i,j, temp, Buffer[4] = {0xef, 0xdf, 0xbf, 0x7f}; for(j=0; j<4; j++) {

P2 = Buffer[j];

/*以下三个_nop_();作用为让 P1 口的状态稳定*/ _nop_(); _nop_(); _nop_();

temp = 0x08; for(i=0; i<4; i++) {

if(!(P2 & temp)) {

value=i+j*4;

while(checkkey()!=0); //等待按键释放 return value;

}

temp >>= 1; } } }

void set_speed() //设定转速及方向 然后启动 {

while(1) {

if(checkkey()==0) continue; else {

num1=keyscan();

if(num1==11) //按下删除按键 {

temp0=0; temp1=0; temp2=0; temp3=0;

write_com(0x80+0x0A); for(i=0;i<=3;i++)

{write_data(0x20);} write_com(0x80+0x0A); }

else if(num1==10) {break;} //按下设定键,确定转速 else

{write_data(0x30+num1); temp3=temp2; temp2=temp1; temp1=temp0; temp0=num1; } } }

key_speed=temp3*1000+temp2*100+temp1*10+temp0; //D1=((float)(key_speed+4635)/8900)*1000; write_com(0x80+0x40); while(1) {

if(checkkey()==0) continue; else {

num2=keyscan();

if(num2==11) //按下删除键 {

write_com(0x80+0x40); for(i=0;i<=4;i++)

{write_data(0x20);} write_com(0x80+0x40); }

if(num2==12) //等待设定方向 {flag1=0;

for(i=0;i<=4;i++) {

write_data(note2[i]); //正转 }

send(0); //向上位机发送转速方向 }

if(num2==13) {flag1=1;

for(i=0;i<=4;i++) {

write_data(note3[i]); } send(1); }

if(num2==14) break; //按下启动键表示确定方向 } } }

main()

{ uchar i,j; init(); IE=0x82; SM1=1; SM0=0; C_T2=1; TMOD=0x21; //T1工作于方式2(串口),T0工作于方式1

IP=0x1A; //串口,T0,T1为高优先级中断,外部中断X1为低优先级中断 TL1=0xFD;

TH1=0xFD; //波特率为9600 TL2=0x00; TH2=0x00; TR1=1;

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机的运动控制系统(8)在线全文阅读。

基于单片机的运动控制系统(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/417489.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: