完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我编的一个程序
#include //51芯片管脚定义头文件 #include //内部包含延时函数 _nop_(); #define uchar unsigned char #define uint unsigned int uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; uchar code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; unsigned char code Tab[7]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82}; //数码管显示0~6的段码表 uint n; uint m; uint c=1; uint b=1; ***it K1 = P3^2; //一楼 ***it K2 = P3^3; //二楼 ***it K3 = P3^4; //三楼 ***it K4 = P3^5; //一楼 ***it K5 = P1^4; //二楼 ***it K6 = P1^5; //三楼 ***it p1_0 = P1^0; ***it p1_1 = P1^1; ***it p1_2 = P1^2; ***it p1_3 = P1^3; ***it p2_0 = P2^0; ***it p2_1 = P2^1; ***it p2_2 = P2^2; ***it p2_3 = P2^3; /********************************************************/ /* /* 延时t毫秒 /* 11.0592MHz时钟,延时<1ms /* /********************************************************/ void delay(uint t) { uint k; while(t--) { for(k=0; k<80; k++) { } } } /**********************************************************/ /********************************************************/ /* /*步进电机正转 /* /********************************************************/ void motor_ffw(n) { uchar i; uchar k; uchar r; uint j; for(k=0;k { for (r=0;r<64;r++) { for (j=0; j<8; j++) //转1*n圈 {p1_0=1 ; p1_1=0 ; p1_2=0 ; p1_3=0; delay(1); p1_0=1 ; p1_1=1 ; p1_2=0 ; p1_3=0; delay(1); p1_0=0 ; p1_1=1 ; p1_2=0 ; p1_3=0; delay(1); p1_0=0 ; p1_1=1 ; p1_2=1 ; p1_3=0; delay(1); p1_0=0 ; p1_1=0 ; p1_2=1 ; p1_3=0; delay(1); p1_0=0 ; p1_1=0 ; p1_2=1 ; p1_3=1; delay(1); p1_0=0 ; p1_1=0 ; p1_2=0 ; p1_3=1; delay(1); p1_0=1 ; p1_1=0 ; p1_2=0 ; p1_3=1; delay(1); //调节转速 } } } } void motor_ffw2(n) { uchar i; uchar k; uchar r; uint j; for(k=0;k { for (r=0;r<64;r++) { for (j=0; j<8; j++) //转1*n圈 { p2_0=1 ; p2_1=0 ; p2_2=0 ; p2_3=0; delay(1); p2_0=1 ; p2_1=1 ; p2_2=0 ; p2_3=0; delay(1); p2_0=0 ; p2_1=1 ; p2_2=0 ; p2_3=0; delay(1); p2_0=0 ; p2_1=1 ; p2_2=1 ; p2_3=0; delay(1); p2_0=0 ; p2_1=0 ; p2_2=1 ; p2_3=0; delay(1); p2_0=0 ; p2_1=0 ; p2_2=1 ; p2_3=1; delay(1); p2_0=0 ; p2_1=0 ; p2_2=0 ; p2_3=1; delay(1); p2_0=1 ; p2_1=0 ; p2_2=0 ; p2_3=1; delay(1); //调节转速 } } } } /********************************************************/ /* /*步进电机反转 /* /********************************************************/ void motor_rev(n) { uchar i; uchar k; uchar r; uint j; for(k=0;k { for (r=0;r<64;r++) { for (j=0; j<8; j++) //转1*n圈 { p1_0=1 ; p1_1=0 ; p1_2=0 ; p1_3=1; delay(1); p1_0=0 ; p1_1=0 ; p1_2=0 ; p1_3=1; delay(1); p1_0=0 ; p1_1=0 ; p1_2=1 ; p1_3=1; delay(1); p1_0=0 ; p1_1=0 ; p1_2=1 ; p1_3=0; delay(1); p1_0=0 ; p1_1=1 ; p1_2=1 ; p1_3=0; delay(1); p1_0=0 ; p1_1=1 ; p1_2=0 ; p1_3=0; delay(1); p1_0=1 ; p1_1=1 ; p1_2=0 ; p1_3=0; delay(1); p1_0=1 ; p1_1=0 ; p1_2=0 ; p1_3=0; delay(1); //调节转速 } } } } void motor_rev2(n) { uchar i; uchar k; uchar r; uint j; for(k=0;k { for (r=0;r<64;r++) { for (j=0; j<8; j++) //转1*n圈 { p2_0=1 ; p2_1=0 ; p2_2=0 ; p2_3=1; delay(1); p2_0=0 ; p2_1=0 ; p2_2=0 ; p2_3=1; delay(1); p2_0=0 ; p2_1=0 ; p2_2=1 ; p2_3=1; delay(1); p2_0=0 ; p2_1=0 ; p2_2=1 ; p2_3=0; delay(1); p2_0=0 ; p2_1=1 ; p2_2=1 ; p2_3=0; delay(1); p2_0=0 ; p2_1=1 ; p2_2=0 ; p2_3=0; delay(1); p2_0=1 ; p2_1=1 ; p2_2=0 ; p2_3=0; delay(1); p2_0=1 ; p2_1=0 ; p2_2=0 ; p2_3=0; delay(1); //调节转速 } } } } /********************************************************/ /* /*检测程序 /* /********************************************************/ void check() { if(n>c) {motor_ffw(n-c); p1_0=0 ; p1_1=0 ; p1_2=0 ; p1_3=0;} else if(n {motor_rev(c-n); p1_0=0 ; p1_1=0 ; p1_2=0 ; p1_3=0;} else if(n==c) {p1_0=0 ; p1_1=0 ; p1_2=0 ; p1_3=0;} c=n; } void check2() { if(m>b) {motor_ffw2(m-b); p2_0=0 ; p2_1=0 ; p2_2=0 ; p2_3=0;} else if(m {motor_rev2(b-m); p2_0=0 ; p2_1=0 ; p2_2=0 ; p2_3=0;} else if(m==b) {p2_0=0 ; p2_1=0 ; p2_2=0 ; p2_3=0;} b=m; } /******************************************************** * * 主程序 * *********************************************************/ main() { while(1) { if(K1==0) {n=1; check();} if(K2==0) {n=2; check();} if(K3==0) {n=3; check();} if(K4==0) {m=1; check2();} if(K5==0) {m=2; check2();} else if(K6==0) {m=3; check2();} } } 电梯程序 只能等一部电梯运行之后才能 控制另一部电梯 有高手指导说 要用定时器 和中断 但是我补知道怎么改 请高手帮忙改下 |
|
相关推荐
1个回答
|
|
|
只能说这么多:定时器+中断+状态机。
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 09:18 , Processed in 0.602936 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
896