在BST-V51 Ver3.3全新升级版的51单片机开发板上实现使用矩阵键盘控制电机运转,使用定时器实现电机的PWM调速,同时在LCD1602上实时显示电机状态(包括电机的开关状态、速率等信息)的简单的示例代码。 要求如下 1、LCD1602显示初始状态为: State:OFF Speed:0 2、 在LCD1602显示初始状态为: State:OFF Speed:0 所示的状态下,使用矩阵键盘控制电机开关,同时实现使用矩阵键盘控制电机按不同速率转动,按1~5数字键则电机按5档速率转动。 3、 使用定时器实现电机的PWM调速,频率为10kHz,同时使用该PWM点亮LED1,使其亮度同步变化。(由于开发板供电限制,占空比不要低于50%,否则电机不转,可分别取60%、70%、80%、90%和99%五个档位进行实验。)
时间: 2024-02-25 21:54:01 浏览: 56
基于51单片机的简易计算器设计,采用了矩阵键盘和LCD1602
5星 · 资源好评率100%
好的,以下是示例代码,仅供参考:
```c
#include "reg52.h"
#include "LCD1602.h"
#define uint unsigned int
#define uchar unsigned char
sbit MOTOR = P2^0; // 电机控制引脚
sbit LED = P1^0; // LED1引脚
uchar speed = 0; // 电机速度,0表示停转,1~5表示不同速度档位
void delay(uint time) // 延时函数
{
uint i, j;
for(i = time; i > 0; i--)
for(j = 110; j > 0; j--);
}
void init_motor() // 初始化电机
{
MOTOR = 0; // 设置电机控制引脚为低电平,关闭电机
}
void init_led() // 初始化LED
{
LED = 0; // 设置LED1引脚为低电平,关闭LED
}
void init_timer() // 初始化定时器
{
TMOD |= 0x02; // 设置定时器1为模式2,8位自动重装载
TH1 = 0xFA; // 设置定时器1计数初值为250
TL1 = 0xFA; // 设置定时器1计数初值为250
ET1 = 1; // 允许定时器1中断
EA = 1; // 允许总中断
TR1 = 1; // 启动定时器1
}
void update_lcd() // 更新LCD显示
{
char str[16];
sprintf(str, "State:%s Speed:%d", (MOTOR ? "ON " : "OFF"), speed);
LCD1602_Write_String(0, 0, str);
}
void pwm_control() interrupt 3 // 定时器1中断
{
static uint count = 0;
if(count >= 10) // 10个定时器1中断为一个PWM周期
{
count = 0;
LED = 1; // 点亮LED1
}
if(count >= speed) // 根据电机速度调整PWM占空比
LED = 0; // 熄灭LED1
count++;
}
void main()
{
init_motor();
init_led();
init_timer();
LCD1602_Init();
LCD1602_Write_String(0, 0, "State:OFF Speed:0");
while(1)
{
uchar key = KeyScan(); // 检测按键
if(key != 0xFF) // 如果有按键按下
{
switch(key)
{
case 0x70: // 1号键,最低速度
speed = 1;
break;
case 0xB0: // 2号键,速度档位2
speed = 2;
break;
case 0xD0: // 3号键,速度档位3
speed = 3;
break;
case 0xE0: // 4号键,速度档位4
speed = 4;
break;
case 0x77: // 5号键,最高速度
speed = 5;
break;
case 0x7E: // *号键,关闭电机
MOTOR = 0;
speed = 0;
break;
case 0x7D: // #号键,打开电机
MOTOR = 1;
break;
default:
break;
}
update_lcd(); // 更新LCD显示
}
}
}
```
注意:以上代码并未经过实际测试,仅供参考,具体实现时需要根据实际情况进行调整。另外,由于该开发板的具体硬件和软件实现可能存在差异,如果您遇到了问题,建议查阅相关的开发板资料或者向厂家寻求帮助。
阅读全文