完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
步进电机的正反转控制直接给方向引脚给高低电平即可。
光电开关被遮挡时,引号引脚输出高低电平 #include #define uint unsigned int ***it motor = P1^0;//位定义电机脉冲信号端口 ***it block = P1^1; //位定义接收光电开关遮挡信号的端口 ***it dir = P1^2;//位定义步进电机方向控制端口 ***it WE = P2^7; ***it DU = P2^6; ***it beep = P2^3; uint pp; void InitTimer0(void) { TMOD=0x01; //模式设置,00000001,采用的是定时器0,工作与模式1(M1=0,M0=1)。 TR0=1; //打开定时器 TH0=0Xff; //定时器设置,每隔100微秒发起一次中断。 TL0=0X48; // 0Xa4 ET0=1; //开定时器0中断 EA=1; //开总中断 } void time0() interrupt 1 //每隔100微秒发起一次中断 { TH0=0Xff; TL0=0Xdb; // TH0 = 0x0FF; TL0=0Xa4; pp++; } void motor_degree(uint i) // i取值0-255 { while(i--) { if(pp<=2) //占空比0.2 motor = 1; else motor = 0; if(pp==10) pp=0; } } void main() { InitTimer0(); //定时器0初始化 while(1) { WE = 1; //打开位选锁存器 P0 = 0xfe; //选中第一位数码管1111 1110 WE = 0; // 锁存位选数据 while(block == 0) //光电开关被遮挡,反转90度 { DU = 1; P0 = 0x06; //数码管显示1 DU = 0; dir = 0; beep = 0; motor_degree(50);// } while(block == 1) //光电开关无遮挡 { DU = 1; P0 = 0x3f; //数码管显示0 DU = 0; dir = 1; beep = 1; motor_degree(50);// 无遮挡,正转90度 } } } |
|
|
|
只有小组成员才能发言,加入小组>>
2386 浏览 0 评论
8910 浏览 4 评论
36487 浏览 19 评论
4981 浏览 0 评论
24307 浏览 34 评论
1375浏览 2评论
1627浏览 1评论
2017浏览 1评论
1441浏览 0评论
386浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 04:53 , Processed in 1.255687 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号