51单片机串口控制3-L298N直流电机方向速度 Proteus仿真代码

[复制链接]
查看3 | 回复0 | 2021-7-21 00:38:46 | 显示全部楼层 |阅读模式
此次实验将通过窗口输入来控制直流电机的正反转并将输入的数值在数码管上显示出来。本次实验的另一个目的便是了解L298芯片的工作原理和通过PWM控制电机转动的工作机理。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
3.gif

部分源码:完整源码见附件
  1. #include <reg51.h>
  2. #define u8 unsigned char
  3. #include "uart.h"
  4. sbit M1=P3^6;
  5. sbit M2=P3^7;
  6. bit fang=0;//0顺 1逆
  7. bit sudu=0;//0慢 1快
  8. //串口接收,0顺 1逆 2慢 3快
  9. u8 i=0;
  10. void delay(long k){while(k--);}
  11. void main (void)
  12. {
  13.         u8 key=0;//按键状态
  14.         UART1_init();
  15.         UART1_Sends("Phuck u everyday");
  16.         UART1_Send(0x0d);UART1_Send(0x0a);//回车、换行
  17.         while(1)
  18.         {               
  19.                 if(key!=P1)//如果按下了按键
  20.                 {
  21.                         key=P1;//获取最新的按键状态
  22.                         SBUF=key;//发送
  23.                 }
  24.                 if(fang==0)
  25.                 {
  26.                         if(sudu==0) {M1=0;M2=1;delay(1000);
  27.                                                                          M1=0;M2=0;delay(500);}
  28.                         if(sudu==1) {M1=0;M2=1;delay(10000);}//补充顺时针代码,含速度
  29.                 }
  30.                 else
  31.                 {
  32.                         if(sudu==0) {M1=1;M2=0;delay(1000);
  33.                                                                          M1=0;M2=0;delay(500);}
  34.                         if(sudu==1) {M1=1;M2=0;delay(10000);}//补充逆时针代码,含速度
  35.                 }
  36.         }
  37. }

  38. void UART_INT(void) interrupt 4
  39. {
  40.         if(RI)//串口输入引起的中断
  41.         {
  42.                 P2=SBUF;//获取用户命令SBUF,并显示ASCII
  43.                 i=SBUF & 0x0F;
  44.                 switch(i)
复制代码
串口控制3-直流电机方向速度.rar (79.52 KB, 售价: 2 工控币)
回复

使用道具 举报

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

本版积分规则