51单片机红外遥控直流电机转动C语言
时间: 2023-06-23 12:01:45 浏览: 156
下面是一个简单的51单片机红外遥控直流电机转动的C语言代码示例:
```
#include <reg51.h>
sbit IR = P3^2; // 红外遥控接收模块的数据输入引脚
sbit IN1 = P1^0; // H桥驱动模块的IN1引脚,控制直流电机正转
sbit IN2 = P1^1; // H桥驱动模块的IN2引脚,控制直流电机反转
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for(i = 0; i < t; i++)
for(j = 0; j < 125; j++);
}
void main()
{
unsigned char key;
while(1)
{
if(IR == 0) // 判断是否接收到红外遥控信号
{
delay(10); // 延时等待信号稳定
if(IR == 0) // 如果仍然为低电平,表示接收到了信号
{
switch(key) // 根据不同的按键值控制直流电机的正反转
{
case 0x45: // 按键1,控制直流电机正转
IN1 = 1;
IN2 = 0;
break;
case 0x46: // 按键2,控制直流电机停止
IN1 = 0;
IN2 = 0;
break;
case 0x47: // 按键3,控制直流电机反转
IN1 = 0;
IN2 = 1;
break;
default: // 其他按键值,不做处理
break;
}
}
}
}
}
```
这段代码假设红外遥控接收模块的数据输入引脚为P3.2,H桥驱动模块的IN1和IN2引脚分别连接到P1.0和P1.1引脚。根据不同的按键值控制直流电机的正反转。当接收到红外遥控信号时,先延时10ms等待信号稳定,然后判断是否接收到了信号,如果是,则根据按键值控制直流电机的正反转。如果没有接收到信号,则继续等待。
阅读全文