找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 27061|回复: 1
打印 上一主题 下一主题
收起左侧

[原创]基于52的步进电机控制的运载车

[复制链接]
跳转到指定楼层
楼主
ID:48331 发表于 2013-2-28 12:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include unsigned char e; unsigned int a,b,c,d; sbit a0=P1^0;//左脉冲 sbit a1=P1^1;//右脉冲 sbit a2=P1^2;//左正反转 sbit a3=P1^3;//右正反转 sbit b0=P2^4;//炉后启动信号 sbit b1=P3^2;//给小马达IC信号 sbit b2=P2^7;//声音播放控制 sbit b3=P2^6;//炉前往炉后障碍信号3 sbit b4=P2^6;//炉前往炉后障碍信号1 sbit b5=P2^6;//炉前往炉后障碍信号2 sbit b8=P2^5;//炉后往炉前障碍信号3 sbit b6=P2^5;//炉后往炉前障碍信号1 sbit b7=P2^5;//炉后往炉前障碍信号2 sbit c0=P2^2;//炉后到达信号,追加干簧管 sbit c1=P2^3;//炉前到达信号,追加干簧管 sbit c2=P3^4;//复位信号 ,未追加感应器 sbit c3=P3^3;//给小马达IC灯闪烁信号 sbit c4=P3^0; void delay(int x) { int c,d; for(c=x;c>0;c--) for(d=1000;d>0;d--); } void inter_init() { EA=1;//开总中断 ET0=1;//开定时器0 TMOD=0X01;//使用方式1 TH0=(65535-200)/256;//定时器赋初值 TH1=(65535-200)%256;//定时器赋初值 TR0=0; } void chushihua() { b0=1; P0=0x00; P1=0x00; P2=0x80; c2=0; c3=1; b1=1; a=100; e=0; b=100; } main() { inter_init(); chushihua(); while(1) { if(e==0&&c2==0) { delay(2); if(c2==0)//炉前往炉后 { a2=1; a3=1; c3=1; delay(2); TR0=1; if(c0==1) { delay(5); if(c0==1) { c0=1; TR0=0; c3=0; b2=0; b1=1; delay(100); b2=1; b1=0; a=0; e++; } } } } if(b0==1&&b3==0&&a==0) //炉后启动信号,c0为地标,b0炉后启动信号 { //b4,b5,b3为障碍信号, b2为声音控制 b0=1; a=1; a2=0; a3=0; delay(30); a++; } if(a==2) { c3=1; c0=0; b2=0; delay(20); b2=1; b0=0; delay(20); TR0=1; a=3; } if(c1==1&&a==3) { c1=1; TR0=0; a=4; } if(c1==1&&a==4) { TR0=0; c3=0; b2=0; delay(30); b2=1; b=0; a=9; } if(a==3) { if(b3==1||b4==1||b5==1) { delay(5); if(b3==1||b4==1||b5==1) { b2=0; delay(15); c3=0; TR0=0; b2=1; a=8; } } } if(a==8&&b3==0) { delay(3); if(a==8&&b3==0) { a=2; } } if(b6==0&&b==0) //炉前自动启动信号,C1为坐标 { //b2 为声音控制 a2=1; a3=1; delay(200); b=2; } if(b==2) { c3=1; c1=0; b2=0; delay(20); b2=1; delay(20); TR0=1; b=3; } if(c0==1&&b==3) { c0=1; TR0=0; b=4; javascript:; } if(b==4&&c0==1) { c3=0; TR0=0; b2=0; delay(20); b2=1; b1=1; delay(60); b=5; } if(b==5&&c3==0) { b1=1; delay(200); b1=0; delay(600); a=0; b=6; } if(b==3) { if(b6==1||b7==1||b8==1) { delay(5); if(b6==1||b7==1||b8==1) { b2=0; c3=0; delay(15); TR0=0; b2=1; b=10; } } } if(b==10&&b6==0) { delay(3); b=2; } } } void time()interrupt 1 using 1 { TH0=(65535-200)/256; TL0=(65535-200)%256; a1=~a1; a0=~a0; } 目前已经生产了10台了,公司老板大大奖赏了
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:50090 发表于 2013-5-7 11:55 | 只看该作者
应该上电路原理图啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表