文章目录

  • 一、前言
  • 二、模块介绍及原理说明
  • 三、硬件连接
  • 四、程序说明
  • 五、效果演示
  • 六、代码链接

一、前言

直流电机控制系统,通过按键对直流电机进行控制;可以调节直流电机的速度等级,旋转方向,并将其显示在LCD1602液晶显示屏上;简单的直流电机控制可以应用在遥控车上,还可安装在自制小风扇等多种小型电器上,但此设计中直流电机控制不是很准确,在一些精密直流电机控制上使用效果较差。

二、模块介绍及原理说明

单片机最小系统:

单片机最小系统完成系统运行的最基本电路,单片机最小系统可配合其他模块或自行搭建电路完成各种实验功能,单片机最小系统接口设计灵活,电路简洁,可完成基本的驱动任务。单片机最小系统包括晶振电路、复位电路。复位电路我使用按键复位,方便系统的重启。

LCD1602显示屏:

LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成。

字符型液晶显示模块是一种专门用于显示字母、数字和符号等的点阵式LCD。一般的LCD1602字符型液晶显示器能够显示英文字母、阿拉伯数字、日文片假名和一般性符号。

电机驱动:

NPN三极管Q7、Q9控制电机正转,当Q7、Q9导通后,OUT控制Q1、Q3三极管导通与关闭的时间来调节直流电机的速度。同理NPN三极管Q5、Q8控制电机正转,当Q5、Q8导通后,OUT控制Q2、Q4三极管导通与关闭的时间来调节直流电机的速度。

三、硬件连接

仿真连接

P10~P13为按键控制端口。P10控制电机正转;P11控制电机反转;P12加速;P13减速。

P07~P07为显示屏数据传输端口。P07~P07与显示屏D0~D7连接。

P22、P23、P24为显示屏控制端口。P22、P23、P24分别于RS、RW、E相连。

P20、P21电机正反转控制。

P2^5电机PWM控制。

四、程序说明

主程序,用以调用不同的函数。控制速度的加减,电机的正反转,调用LCD1602显示函数。

void main (void)
{
int S=0;
char displaytemp[16];//定义显示区域临时存储数组
PWM_ON=0;
LCD_Init();         //初始化液晶屏
Init_Timer0();    //初始化定时器0
LCD_Write_String(2,1,"V:");       //正转while (1)         //主循环{if(key3==0)//第三个按键,速度等级增加{DelayMs(10);    //消抖if(key3==0){if(PWM_ON<CYCLE)PWM_ON++;S++;if(S>=12)S=12;}while(!key3);} else if(key4==0)//第四个按键,速度等级减小{DelayMs(10);if(key4==0){if(PWM_ON>0)PWM_ON--;S--;if(S<=0)S=0;}while(!key4);}if(key1==0)//第一个按键,正转{DelayMs(10);if(key1==0){m=1;n=0;LCD_Write_String(0,0,"T");      //正转显示T}while(!key1);}  else if(key2==0)//第二个按键,反转{DelayMs(10);if(key2==0){m=0;n=1;LCD_Write_String(0,0,"N");       //反转显示N}while(!key2);}      sprintf(displaytemp,"%3d",S);LCD_Write_String(4,1,displaytemp); //显示速度等级,一共分为十二个等级}
}

定时器函数,用来控制PWM值占空比的输出。

void Timer0_isr(void) interrupt 1
{static unsigned char count;TH0=(65536-2000)/256;       //重新赋值 2msTL0=(65536-2000)%256;if (count==PWM_ON) {DCOUT = 0;               //如果定时等于on的时间,//说明作用时间结束,输出低电平}count++;
if(count == CYCLE)       //反之低电平时间结束后返回高电平{count=0;if(PWM_ON!=0)    //如果开启时间是0 保持原来状态DCOUT = 1;      }
}

LCD1602显示函数

/*------------------------------------------------写入命令函数
------------------------------------------------*/void LCD_Write_Com(unsigned char com) {
// while(LCD_Check_Busy()); //忙则等待DelayMs(5);RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); EN_CLR;}
/*------------------------------------------------写入数据函数
------------------------------------------------*/void LCD_Write_Data(unsigned char Data) { //while(LCD_Check_Busy()); //忙则等待DelayMs(5);RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_();EN_CLR;}
/*------------------------------------------------清屏函数
------------------------------------------------*/
//void LCD_Clear(void)//{//LCD_Write_Com(0x01);//DelayMs(5);//}/*------------------------------------------------写入字符串函数
------------------------------------------------*/void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) {     while (*s) {     LCD_Write_Char(x,y,*s);     s++;  x++;   }}
/*------------------------------------------------写入字符函数
------------------------------------------------*/
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) {     if (y == 0) {     LCD_Write_Com(0x80 + x);     }    else {     LCD_Write_Com(0xC0 + x);     }        LCD_Write_Data( Data);  }
/*------------------------------------------------初始化函数
------------------------------------------------*/void LCD_Init(void) {LCD_Write_Com(0x38);    /*显示模式设置*/ DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38);  LCD_Write_Com(0x08);    /*显示关闭*/ LCD_Write_Com(0x01);    /*显示清屏*/ LCD_Write_Com(0x06);    /*显示光标移动设置*/ DelayMs(5); LCD_Write_Com(0x0C);    /*显示开及光标设置*/}

延时函数,用于按键的消抖,以及程序的延时。

/*------------------------------------------------uS延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编,大致延时长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{   while(--t);
}
/*------------------------------------------------mS延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}
}

五、效果演示

仿真演示

直流电机控制系统设计

六、代码链接

欢迎留言评论分享自己的看法,如有错误欢迎指正。关注公众号:“小小创客者”回复“直流电机控制系统设计“获得源码及仿真。

直流电机控制系统设计相关推荐

  1. 基于单片机的直流电机控制系统设计

    1.设计任务 基于单片机的直流电机控制系统设计 基本要求:利用单片机AT89C51设计直流电机控制系统,能对直流电机进行控制. 创新:能改变显示电机速度:能通过键盘操作改变电机的方向等. 任务区分:B ...

  2. 计算机控制直流电机闭环调速实验,最小拍控制系统及直流电机闭环调速控制系统设计和实现实验报告...

    最小拍控制系统及直流电机闭环调速控制系统设计和实现实验报告 最小拍控制系统及 直流电机闭环调速控制系统设计和实现 实验报告班级: xx 姓名: xx 学号: xx 时间: 第16周周日9-12节 指导 ...

  3. 【微机课设分享】基于8086和LCD12864液晶显示仿真设计-基于8086直流电机调速控制系统设计-基于8086计数器仿真系统设计-基于8086计算器系统仿真设计-基于8086家具房间灯光控制设计

    1184基于8086和LCD12864液晶显示仿真设计-设计全套资料 本设计完整的实现基于8086红外报警仿真设计,protues仿真中, 红外传感用按键模拟(红外原理也是通过高低电平来检测感知的), ...

  4. 基于51单片机霍尔测速直流电机控制设计(含源码+原理图+论文+PCB封装)、基于STM32闭环步进电机控制系统设计(仿真,程序,说明)-转发分享

    设计思路: 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法.本文中采用了三极管组成了PWM信号的驱动系统,并且对PWM信号的原理.产生方法以及如何通过软件编 ...

  5. 洗衣机计算机控制系统设计图,【论文精选】基于STC89C52的智能全自动洗衣机控制系统设计...

    原标题:[论文精选]基于STC89C52的智能全自动洗衣机控制系统设计 张哲,李智,管四海 (西安电子科技大学 机电工程学院,陕西 西安 710071) 摘要:为了降低全自动洗衣机的运行功耗.提高运行 ...

  6. 基于单片机病房呼叫系统数码管显示房号设计-基于单片机工业生产现场的光照强度控制设计-基于单片机多功能智能台灯设计-基于单片机二维码LCD显示设计-基于单片机多功能时钟闹钟万年历控制系统设计【毕设分享】

    1641基于单片机病房呼叫系统数码管显示房号设计 设计思路:此设计实现的功能通过按键模拟房号,当按键按下时会将房号编号发送到数目管上进行显示,并通过声光进行提示.包含的电路有:数码管显示电路.按键电路 ...

  7. 【单片机毕业设计】【mcuclub-109】基于单片机的智能抽油烟机控制系统设计-标准版【实物设计】

    设计简介: 项目编号:mcuclub-109 项目名:基于单片机的智能抽油烟机控制系统设计 单片机:STC89C52 功能: 1.通过MQ-2烟雾传感器检测厨房内烟雾浓度,若烟雾浓度小于设定最小阈值, ...

  8. 【单片机毕业设计】【mcuclub-109】基于单片机的智能抽油烟机控制系统设计-标准版【仿真设计】

    设计简介: 项目编号:mcuclub-109 项目名:基于单片机的智能抽油烟机控制系统设计-标准版 单片机:STC89C52 功能: 1.通过MQ-2烟雾传感器检测厨房内烟雾浓度,若烟雾浓度小于设定最 ...

  9. Arduino毕业设计——基于Arduino+PID+AI的自动驾驶小车控制系统设计与实现(毕业论文+程序源码)——自动驾驶小车控制系统

    基于Arduino+PID+AI的自动驾驶小车控制系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Arduino+PID+AI的自动驾驶小车控制系统设计与实现,文章末尾附有本毕业设计的 ...

最新文章

  1. R语言使用lm构建线性回归模型、并将目标变量对数化实战:可视化模型预测输出与实际值对比图、可视化模型的残差、模型系数(coefficient)、模型总结信息(summary)、残差总结信息
  2. Dreamer 3.0 支持json、xml、文件上传
  3. PostgreSQL递归查询
  4. c#滚动条创建实例,多线程
  5. mysql中limit用法
  6. 【转】新.Net开发必备工具详解之Snippet Compiler。
  7. 我造的假我自己打,Adobe推出“反PS”
  8. GD32f103介绍第二章
  9. 收藏 | 22个短视频学习Adobe Illustrator论文图形编辑和排版
  10. 广和通率先启动基于联发科技 T830 5G平台的5G模组开发,加速全球运营商5G FWA部署
  11. 上海高中开设计算机课,如何提升高中计算机课的趣味性
  12. 赚钱项目:1万粉丝的公众号,年赚15万!
  13. Highest Scoring Word
  14. Redis3.0的主从、集群高可用
  15. 线性代数第一遍思维导图
  16. transform:rotate兼容
  17. Conflux Studio 详解
  18. 一键Pip下载安装使用YOLO系列目标检测算法,YOLOv7都能Pip ! ! !
  19. SVM(五)松弛变量
  20. dx12 龙书附录C学习笔记 -- 解析几何学选讲

热门文章

  1. Java实现登录时cookie记住密码
  2. 小米应用商店支持 64 位架构适配
  3. ip地址转换数字函数 iton_字符串IP地址转换成IP数值函数
  4. java——java介绍
  5. Android智能平板应用,界面适配的另一种轻量级方法
  6. 解决ubuntu下kazam录制视频无法在windows播放问题
  7. ISO14001是什么?
  8. 炫酷登录界面(html+css)
  9. win10纯净版安装(小白教程)
  10. #华为 #usg USG6000双链路透明部署实验(一)