完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
求一个步进电机的红外遥控控制系统
硬件:stc89c51+28BYJ48步进电机+红外遥控+LCD1602液晶显示 要求:使用红外遥控实现步进电机的点动、连续运动、反转、停止。 共使用六个按钮,实现四种功能 点动无要求 连续运动的时候可以调节速度,可以设置3—5个挡位,并在1602显示器上面显示出来处于哪个挡位 反转采用一个按钮进行控制 下面的程序已经实现了遥控启动停止加速减速反转,没有加显示屏显示,并且加减速程序不太舒服,希望大佬可以改一下,求求大佬帮帮忙 #include void delay0(); void delay();//可能是漏了函数原型. 如果在main{ ...} 以后定义了函数,main以前要加函数原型声明. unsigned char bdata ab[4]; ***it P3_2=P3^2; char h=0; bit f0=0; int i=0; main() { char code zz[8]={0x07,0x03,0x0B,0x09,0x0D,0x0c,0x0E,0x06}; char code fz[8]={0x06,0x0E,0x0C,0x0D,0x09,0x0B,0x03,0x07}; char djh[5]={0x15,0x63,0x78,0xB1,0xEC}; char djl[5]={0xA0,0xC0,0xD0,0xE0,0x78}; P0=0xff; EA=1; EX0=1; //必须先初始化才能赋值; IT0=1; do { if(ab[2]==0x0c) //单步 //开始ab[2]未赋值的时候?? { P0=0xf9; P2=f0==0?zz[i]:fz[i]; //中断通过改变ab[2]的值来控制步进电机//f0决定正转反转 i++; if(i>7)i=0; ab[2]=0; } else if(ab[2]==0x18) //连续 { P0=0xa4; for(;;) { P2=f0==0?zz[i]:fz[i]; TH0=djh[h]; TL0=djl[h]; delay(); i++; if(i>7)i=0; if(ab[2]==0x0c ){ab[2]=0;break;} // 停止键和单步键能退出连续运行 else if(ab[2]==0x5a ){break;} } } } while(1); } void delay0(unsigned char x) //x*0.14MS { unsigned char i; while(x--) { for (i = 0; i<7; i++) {} } } //简单的红外遥控解码程序(HT6221) void hongwai() interrupt 0 //入口点和出口点 { unsigned char j,k,N=0; EX0 = 0; delay0(15); if (P3_2==1) { EX0 =1; return; } //确认IR信号出现 while (!P3_2) //等IR变为高电平,跳过9ms的前导低电平信号。 {delay0(1);} for (j=0;j<4;j++) //收集四组数据 { for (k=0;k<8;k++) //每组数据有8位 { while (P3_2) //等 IR 变为低电平,跳过4.5ms的前导高电平信号。 {delay0(1);} while (!P3_2) //等 IR 变为高电平 {delay0(1);} while (P3_2) //计算IR高电平时长 { delay0(1); N++; if (N>=30) { EX0=1; return;} //0.14ms计数过长自动离开。 } //高电平计数完毕 ab[j]=ab[j] >> 1; //数据最高位补"0" if (N>=8) {ab[j] = ab[j] | 0x80;} //数据最高位补"1" N=0; }//end for k }//end for j if (ab[2]!=~ab[3]) { EX0=1; return; } if(ab[2]==0x0c) //数据显示及用于步进电机控制 {P0=0xf9; } else if(ab[2]==0x18) {P0=0xa4; } else if(ab[2]==0x5e) { P0=0xb0; f0=~f0; } else if(ab[2]==0x08) { P0=0x99; h++; if(h>4)h=4; } else if(ab[2]==0x1c) { P0=0x92; h--; if(h<0)h=0; } else if(ab[2]==0x5a) { P0=0x82;} EX0=1; ////开外部中断0 } void delay() { TMOD=0x01; TR0=1; while(!TF0); TF0=0; TR0=0; }
|
|
相关推荐 |
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】简介、环境搭建、工程测试
177 浏览 0 评论
312 浏览 0 评论
imx6ull裸机编程,使用宏定义无法驱动,使用指针就可以驱动
691 浏览 1 评论
《DNK210使用指南 -CanMV版 V1.0》第三十二章 音频FFT实验
384 浏览 0 评论
飞凌嵌入式ElfBoard EL 1板卡-i2c与从设备通讯编程示例之i2c-tools工具使用
1284 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11620 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-6 04:58 , Processed in 0.611071 second(s), Total 51, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号