基于单片机串口控制直流电机调速

news2024/11/24 7:15:15

一、系统方案
(2)本设计采用STC89C5单片机作为主控器,串口控制直流电机调速,串口助手发送1-8,改变电机速度,数码管显示对应速度。
在这里插入图片描述
二、硬件设计
原理图如下:
在这里插入图片描述

三、单片机软件设计
1、首先是系统初始化

TMOD=0x21;//定时器0工作方式1

EA=1;//开总中断
TH0=(65536-100)/256;//赋初值定时
TL0=(65536-100)%256;//0.01ms

ET0=1;//开定时器0中断
TR0=0;//启动定时器0 

TH1=0xfd; 
TL1=0xfd; 
TR1=1;  

ET1=0;
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;

2、数码管显示程序
void display(void)
{
P0=0x00;
COM1 = 0;
P0 = cc_table[dangwei2/1000];
delay(2);
COM1 = 1;
P0=0x00;
COM2 = 0;
P0 = cc_table[dangwei2%1000/100];
delay(2);
COM2 = 1;
P0=0x00;
COM3 = 0;
P0 = cc_table[dangwei2%1000%100/10];
delay(2);
COM3 = 1;

P0=0x00;
COM4 = 0;
P0= cc_table[dangwei2%10];		
delay(2);
COM4 = 1; 

}
3、串口程序

void Usart() interrupt 4
{
receiveData=SBUF;//出去接收到的数据
RI = 0;//清除接收中断标志位
ES=0;
SBUF=receiveData;//将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
ES=1;
}

4、核心算法程序
/主函数/
void main(void)
{

TMOD=0x21;//定时器0工作方式1

EA=1;//开总中断
TH0=(65536-100)/256;//赋初值定时
TL0=(65536-100)%256;//0.01ms

ET0=1;//开定时器0中断
TR0=0;//启动定时器0 

TH1=0xfd; 
TL1=0xfd; 
TR1=1;  

ET1=0;
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;

while(1)
{

display();
if(receiveData==‘1’)
{
dangwei2 = 10;

		   PWM2=1;
		   TR0=1;
		   pwm1(10); //控制PWM输出,进而控制电机的速度
			}
		 if(receiveData=='2')
			{
			    dangwei2 = 20;

		    PWM2=1;
		   TR0=1;
		  pwm1(100); //控制PWM输出,进而控制电机的速度
			}
			 if(receiveData=='3')
			{
			    dangwei2 = 30;

		    PWM2=1;
		   TR0=1;
		  pwm1(30); //控制PWM输出,进而控制电机的速度
			}
				 if(receiveData=='4')
			{
			    dangwei2 = 40;

		    PWM2=1;
		   TR0=1;
		  pwm1(40); //控制PWM输出,进而控制电机的速度
			}
				 if(receiveData=='5')
			{
			    dangwei2 = 50;

		    PWM2=1;
		   TR0=1;
		  pwm1(50); //控制PWM输出,进而控制电机的速度
			}
				 if(receiveData=='6')
			{
			    dangwei2 = 60;

		    PWM2=1;
		   TR0=1;
		  pwm1(60); //控制PWM输出,进而控制电机的速度
			}
				 if(receiveData=='7')
			{
			    dangwei2 = 70;

		    PWM2=1;
		   TR0=1;
		  pwm1(70); //控制PWM输出,进而控制电机的速度
			}
				 if(receiveData=='8')
			{
			    dangwei2 = 80;

		    PWM2=1;
		   TR0=1;
		  pwm1(80); //控制PWM输出,进而控制电机的速度
			}
			if(receiveData=='0')
			{
			    dangwei2 = 0;

		    PWM2=0;
		   TR0=0;
		  pwm1(0); //控制PWM输出,进而控制电机的速度
			}
	
	
}

}
四、proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/904749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux学习之ssh和scp

ls /etc/ssh可以看到这个目录下有一些文件,而/etc/ssh/ssh_config是客户端配置文件,/etc/ssh/sshd_config是服务端配置文件。 cat -n /etc/ssh/sshd_config | grep "Port "可以看一下sshd监听端口的配置信息,发现这个配置端口是22…

代码随想录算法训练营之JAVA|第三十三天|738. 单调递增的数字

今天是第33天刷leetcode,立个flag,打卡60天,如果做不到,完成一件评论区点赞最高的挑战。 算法挑战链接 738. 单调递增的数字https://leetcode.cn/problems/monotone-increasing-digits/ 第一想法 题目理解:找到一个…

2023国赛数学建模B题思路模型代码 高教社杯

本次比赛我们将会全程更新思路模型及代码,大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社…

C++进阶 类型转换

本文简介:介绍C中类型转换的方式 类型转换 C语言中的类型转换为什么C需要四种类型转换C强制类型转换static_castreinterpret_castconst_castdynamic_cast RTTI(了解)总结 C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型…

数据同步后数据总条数对不上的问题解决

文章目录 [toc] 1.问题2.解决办法2.1)设置合理的线程池参数2.2)设置url连接参数2.3) 优化msql的系统参数2.4)使用CountDownLatch减法计数器和数据插入的公共方法新开一个事务2.5)sql批量注入器执行成功后,当前线程slee…

蛊卦-拨乱反正

目录 前言 卦辞 爻辞 总结 前言 题外话,今天占卜时,看错了,以为占到了蛊卦(后续会对自己的占卦经历进行补充,不断完善这个易经学习的专栏),那顺便就学习一下蛊卦,蛊惑人心&#…

线程和进程同步互斥你真的掌握了吗?(同步互斥机制保姆级讲解与应用)

目录 同步互斥的概念 互斥锁 初始化互斥锁 销毁互斥锁 申请上锁 解锁 案例1:没有互斥锁 多任务的运行情况 案例2:有互斥锁 多任务的运行情况 死锁 读写锁 初始化读写锁 销毁读写锁 申请读锁 申请写锁 释放读写锁 案例:两个任务…

回归预测 | MATLAB实现GA-RBF遗传算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现GA-RBF遗传算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现GA-RBF遗传算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图)效果…

从0到1:通用后台管理系统 echarts图使用及其参数

这一章主要讲在系统概览模块中,所使用的echarts图及其参数 echarts是一个基于 JavaScript 的开源可视化图表库, 官网直通车 是在各种后台管理系统的开发中都常见的一种库,也是前端开发管理系统所必学的一种库 那么在项目中主要是使用了饼…

【前端】React快速入门+Redux状态管理

本文旨在记录react的基础内容,帮助有需要的同学快速上手,需要进一步了解描述更加稳妥和全面的信息,请查阅官方文档 官方文档点击这里进行跳转 React快速入门 先导 react框架 vue,react,angular这几种主流前端框架使用频率较高…本质还是js库。 React…

1.Jetson Orin Nano Developer Kit系统刷机

本教程有3种方法刷机,根据需要自己选择适合自己的方案。 一:使用>32G的SD卡安装开发套件; 二:在Ubuntu18.04下通过SDK Manager软件在线安装系统. 三:在Ubuntu18.04下通过脚本方式安装系统. 注意:Ubuntu的账号不能为一些常见的包名如:p…

【学习日记】【FreeRTOS】FreeRTOS 移植到 STM32F103C8

前言 本文基于野火 FreeRTOS 教程,内容是关于 FreeRTOS 官方代码的移植的注意事项,并将野火例程中 STM32F103RC 代码移植到 STM32F103C8。 一、FreeRTOS V9.0.0 源码的获取 两个下载链接: 官 网 代码托管 二、源码文件夹内容简介 Source…

Docker(一)-安装、架构、业务开发常用命令、Dockerile、镜像卷、镜像仓库

基于业务开发使用Docker Docker是一个开源的容器引擎,它有助于更快地交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码…

为什么需要单元测试?

为什么需要单元测试? 从产品角度而言,常规的功能测试、系统测试都是站在产品局部或全局功能进行测试,能够很好地与用户的需要相结合,但是缺乏了对产品研发细节(特别是代码细节的理解)。 从测试人员角度而言…

Springboot 实践(10)spring cloud 与consul配置运用之服务的注册与发现

前文讲解,完成了springboot、spring security、Oauth2.0的继承,实现了对系统资源的安全授权、允许获得授权的用户访问,也就是实现了单一系统的全部技术开发内容。 Springboot是微服务框架,单一系统只能完成指定系统的功能&#xf…

【简单认识Docker网络管理】

文章目录 一、Docker 网络实现原理二、Docker 的网络模式1.四种网络模式2.各网络模式详解(1)Host模式(2)Container模式(3)None模式(4)Bridge模式 3.指定容器网络模式4.自定义网络模式…

web文件上传

文件上传指的是&#xff0c;将本地的图片、视频、音频上传到服务器&#xff0c;提供给其他用户浏览和下载的过程 前端需求 想要进行文件上传对于web前端来说有三个重要要素 1.<input type"file" name"image"> 提供这样的file文件上传格式 2. metho…

【Unity】自带的录屏插件Recorder

目录 Recorder简介Recorder导入Recorder使用 Recorder简介 Recorder是Unity官方的录屏插件&#xff0c;可以直接录制Game窗口&#xff0c;还可以录制不同相机的视图。不仅可以直接生成视频、帧动画图、还可以制作gif和animation。 Recorder导入 菜单栏Windows→Package Mana…

VINS-Mono中的边缘化与滑窗 (4)——VINS边缘化为何是局部变量边缘化?

文章目录 0.前言1.系统构建1.1.仿真模型1.2.第一次滑窗优化1.3.第二次全局优化 2.边缘化时不同的舒尔补方式2.1.边缘化时舒尔补的意义2.2.不同的边缘化方式 3.边缘化时不同的舒尔补方式实验验证3.1.全局schur的操作方式3.2.VIO或VINS中局部边缘化的方式3.3.两种方式和全局优化方…

【Linux】文件的描述符和重定向

文件的描述符和重定向 C语言的文件读写操作代码 open系统打开文件方法系统读写文件操作文件描述符文件重定向怎么理解文件缓冲区 C语言的文件读写操作 文件写入 fputs int fputs(const char *s, FILE *stream); s&#xff1a;要写入的字符串 stream&#xff1a;要写入对应的目标…