基于51单片机的L298N直流电机调速系统Proteus仿真程序
基于51单片机的L298N直流电机调速系统Proteus仿真程序
本此设计选择STC89C52单片机作为主控芯片,选取带有光电编码器的直流电机作为被控对象,利用单片机的T0定时器产生PWM信号并送到直流电机。在Proteus仿真环境下搭建了L298N直流电机驱动电路、矩阵键盘扫描电路以及LCD12864显示电路。实现了直流电机的启动、加速、正转、反转、制动等功能。同时,采用PID控制算法可实现电机速度在特定的场合实现自动切换。具体见附件。
#include<reg51.h>
#include<intrins.h>
#include<math.h>#include "lcd.h"
#include "Key.h"
#include "Motor.h"
#include "LCD12864.h"
#include "KeyBoard.h"
#include "LCD12864.h"
#include "LcdShow.h"
#include "PID.h"extern uchar State_Flag;
extern uchar Fwd_Flag;
extern uchar Rev_Flag;unsigned int KeyValue;unsigned int idata pwm_t;//周期
unsigned int idata Impluse,Time_Count,ImpluseR;
uchar idata Stop_Flag,Run_Flag,Curve_Flag;uint idata Set_Speed; // 设定转速
unsigned char idata Sz_Flag,Sr_Flag; // 记录A相触发后 ,B相高低电平的标志
float idata L_Speed,R_Speed,ReaSpeed;uint idata PWM_Out,R_Duty,L_Duty,Turn_now;
sbit LSB_L = P1^0; // LSB_L
sbit LSB_R = P1^1; // LSB_Rvoid TimerInit(void) //@11.0592MHz
{TMOD=0x01; //定时器模式TL0 = 0x18; //初值 1ms TH0 = 0xFC; //初值IT0 = 1; //设置下降沿触发 还是低电平触发 0低电平IT1 = 1; //设置下降沿触发 还是低电平触发 0低电平EA = 1;EX0 = 1;EX1 = 1;ET0 = 1;TR0 = 1; }void main()
{LED = 0; Stop_Flag = 0;Lcd_Initial();TimerInit();Set_Speed = 0;Lcd_Clear();while(1){KeyValue = Get_Keyvalue(); // 矩阵键盘扫描if(KeyValue == 14) // 输入速度{Set_Speed = SpeedInput(); KeyValue = 16;}Key_Process();if(Run_Flag){Set_Speed = 80;Run_Flag = 0;}if(State_Flag && ~Stop_Flag) {PWM_Out = PID_Calculate(Set_Speed,abs(ReaSpeed));R_Duty = PWM_Out + Turn_now;L_Duty = PWM_Out - Turn_now;}elsePWM_Out = 0; // 停止 Lcd_Show();}
}//定时器0中断
void timer0() interrupt 1
{static int i;TL0 = 0x18; //初值TH0 = 0xFC; //初值pwm_t++;Time_Count++;;if(pwm_t == 500) //500ms{pwm_t = 0;if(Stop_Flag){i++;L_Duty = 0;R_Duty = 0;if(i<31){LED = ~LED;if(i == 30) {Stop_Flag = 0;i = 0;Set_Speed = 30;}}}} if( pwm_t<L_Duty)MotorL_Control(); elseMotorL_Stop();if( pwm_t<R_Duty)MotorR_Control(); elseMotorR_Stop();/*---------M法 测速------------*/if(Time_Count == 100 ) // 100ms{Control();Time_Count = 0;Impluse = 0;ImpluseR = 0;}
}void int0() interrupt 0
{Impluse++;if(LSB_L == 1)Sz_Flag = 1; // 正反转标志位 A相下降沿,B相高电平else Sz_Flag = 0;LSB_L = 1;
}void int1() interrupt 2 // 外部中断1 用于测 右轮的速度
{ImpluseR++;if(LSB_R == 1)Sr_Flag = 1; // 正反转标志位 A相下降沿,B相高电平else Sr_Flag = 0;LSB_R = 1;
}
程序
Proteus仿真
基于51单片机的L298N直流电机调速系统Proteus仿真程序相关推荐
- matlab数字量转电气量,基于MATLAB的数字PID直流电机调速系统.doc
电力拖动课程设计 作 者 段发鑫 系 (院) 信息工程学院 专 业 电气工程及其自动化 年 级 2010级 学 号 K031041513 指导教师 耿东山 日 期 2013.5.5 基于MATLAB的 ...
- matlab直流电机pid调速仿真,基于MATLAB的数字PID直流电机调速系统的实现
Computer Knowledge and Technology 电脑知识与技术计算机工程应用技术 本栏目责任编辑:梁书 第6卷第22期(2010年8月)基于MATLAB 的数字PID 直流电机调速 ...
- 【043】基于51单片机的篮球比赛积分计时系统Proteus仿真
一.压缩包资料内容 (1).基于51单片机的篮球比赛积分计时系统proteus仿真设计一份: (2).基于51单片机的篮球比赛积分计时系统proteus仿真设计keli源代码一份: (3).基于51单 ...
- 【038】基于51单片机的土壤湿度自动浇花系统Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的土壤湿度自动浇花系统proteus仿真设计一份: (2).基于51单片机的土壤湿度自动浇花系统proteus仿真设计keli源代码一份: (3).基于51单 ...
- 基于MATLAB的数字PID直流电机调速系统
摘要 电机的主要作用是产生驱动转矩,通常是作为电器或各种机械的动力源.直流电动机具有良好的启.制动性能,在轧钢机及流水线.电梯.汽车等领域得到了广泛应用.本文首先根据直流电机工作原理建立直流电机的数学 ...
- 基于51单片机随机数自动摇号抽奖系统Proteus仿真
资料编号:165 下面是功能展示视频: 165-基于51单片机随机数自动摇号抽奖系统Proteus仿真(源码+仿真+全套资料) 功能讲解: 采用51单片机作为控制CPU,LCD1602显示相关数值 ...
- 变频调速系统c语言编程,基于8098单片机的SPWM变频调速系统
数字控制的交流调速系统所选用的微处理器.功率器件及产生PWM波的方法是影响交流调速系统性能好坏的直接因素.在介绍了正弦脉宽调制(SPWM)技术的基础上,设计了一种以8098单片机作为控制器,以智能功率 ...
- 104、基于51单片机智能风扇pwm调速红外遥控无线遥控风扇温控风扇系统设计
毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.Protues仿真 六.流程图 七.程序源码 八.资料包括 摘要 随着气温的逐渐上升, ...
- 51单片机 小车 L298N pwm调速 串口控制 按键控制
难点:1.串口定时器T1,和T0定时器优先级 2.pwm频率与占空比的设置 按键控制 按键1--前进 按键2--后退 按键3--加速 按键4--减速 (板子上只有四个按键) 串口控制 '1'--前进 ...
最新文章
- cas+shiro+spring 单点登录
- HashMap为什么是线程不安全的?
- java 遍历对象_java中some(),every()循环遍历,Object.getOwnPropertyNames()遍历对象的属性...
- Spring注解开发-初始化/销毁方法注解
- 第三次学JAVA再学不好就吃翔(part78)--List类
- 实体类的动态生成(三)
- php代码里怎么写html代码_菜鸟青铜变白银!Python 项目代码写完了,然后怎么打包和发布?...
- 学妹问,学网站开发还是打 ACM?
- 第46课 精益求精 《小学生C++趣味编程》
- [收藏学习]Linux的实时监测命令
- EnterpriseLibrary 介绍
- c#调用c++ dll的一个例子
- sql分别对两列数据求和以不同的条件_利用数组与字典,实现双条件数据汇总的方法...
- 基于51单片机的金沙滩12864的计算器
- MathJax 支持的 Latex 符号总结(各种箭头符号)
- Leetcode有效数独的Python解法
- win7服务器未能登录怎么解决,win7系统出现User Profile Service服务未能登录的解决方法...
- 设计师的配色理论:你真懂颜色了吗?
- OpenSSL库下载地址
- 阿卡迪亚大学计算机专业好考吗,阿卡迪亚大学很烂吗