【毕业设计】2-基于单片机控制的直流电机调速系统设计(原理图+仿真+答辩论文+答辩PPT)
文章目录
【毕业设计】2-基于单片机控制的直流电机调速系统设计(原理图+仿真+答辩论文+答辩PPT)资料下载链接任务书设计说明书摘要设计框架架构设计说明书及设计文件源码展示资料下载链接
资料链接
包含此题目毕业设计全套资料:
原理图工程
仿真工程
源代码工程
答辩论文,配套设计参考设计说明书,字数:18077
答辩PPT
任务书
主要研究内容:
1.单片机;2.直流电机,液晶显示器LCD。
设计思路:
查阅相关文献资料学习单片机、直流电机,液晶显示器LCD,编程实现单片机控制的直流电机调速系统设计功能,LCD显示速度,模式等。
方法和要求:
1.查阅相关文献资料学习单片机、直流电机,液晶显示器LCD;
2.学习Keil软件,用汇编语言或者C语言编程实现单片机控制的直流电机调速系统设计功能;
3.学习Proteus软件,进行仿真或实物实现单片机控制的直流电机调速系统设计功能。
4.撰写毕业论文。
设计说明书
摘要
基于单片机控制直流电机调速系统设计的研究意义在于可以通过按键对直流电机进行有效的控制。通过单片机定时器实现PWM。通过按键来调节PWM占空比实现对直流电机调速。在工业的使用环境中,在许多复杂噪音多的环境中可以对直流电机无干扰的进行控制。所以对单片机控制直流电机调速系统研究意义深远。
基于单片机的直流电机调速系统,主要由直流电机及驱动模块;按键模块;LCD1602显示模块;单片机最小系统这几部分组成。通过按键来控制直流电机的转速。在本次设计中,一共分为10个挡位。通过按键来控制PWM占空比以实现对直流电机的调速。LCD1602则显示当前速度挡位信息。本论文从一开始构思系统实现的功能,然后设计硬件电路对元器件选型,设计电路、对单片机编写程序,程序需要不停的调试,在调试过程中寻找最佳的控制点,最后利用PROTEUS软件仿真实现直流电机调速的功能,通过软件自带的模拟示波器显示占空比波形。
在最后也对整个系统做了详细的测试记录,在不同的工作环境中的工作情况,通过观察模拟示波器的占空比方波观察是否已达到此系统的设计要求。最后根据参数来对系统进行改进。最后达到自己想要的设计成果。
设计框架架构
前 言 1
第一章 绪论 2
第一节 研究背景 2
第二节 研究意义 2
第三节 研究现状 3
第四节 本文的主要研究内容 4
第二章 基于单片机的直流调速系统方案 5
第一节 元器件的选择 5
一、单片机的选择 5
二、显示器选择 5
三、电机调速方式选择 6
第二节 系统结构总框图 6
第三节 本章小结 7
第三章 系统硬件电路设计 8
第一节 LCD1602显示电路设计 8
第二节 单片机最小系统模块电路 9
一、89C52单片机介绍 9
二、复位电路设计 9
四、晶振电路设计 10
三、单片机最小系统设计 11
第三节 按键电路设计 11
第四节 直流电机驱动电路设计 12
第五节 电源电路设计 13
第六节 直流电机调速系统总电路设计 13
第七节 本章小结 14
第四章 基于单片机的直流调速系统的软件设计 15
第一节 Keil软件介绍 15
第二节 基于单片机的直流调速系统软件总设计 15
第三节 PWM软件设计 16
第四节 LCD1602显示模块软件设计 18
第五节 按键模块软件设计 19
第六节 本章小结 21
第五章 基于单片机的直流调速系统的测试结果分析 22
第一节 Proteus软件介绍 22
第二节 仿真与验证 23
一、仿真总电路设计 23
二、仿真结果 24
三、系统仿真测试及总结 27
第三节 本章小结 28
总 结 30
致 谢 31
参考文献 32
附 录 34
一、英文原文 34
二、英文翻译 36
三、源代码 38
设计说明书及设计文件
字数:18077
源码展示
#include<reg51.h>#include<intrins.h> //包含头文件#define LCD1602 P0#define uchar unsigned char#define uint unsigned int //宏定义sbit dj=P1^0;//电机控制端接口sbit SN=P1^1;//使能继电器动作//按键接口/sbit key1=P3^5;//设置温度sbit key2=P3^6;//温度加sbit key3=P3^7;//温度减//sbit RS = P2^7;sbit EN = P2^6;signed int period = 0;//PEM perioduchar dang;//档位显示uchar Mode=0;uchar SMODE=0;//调节占空比uchar time=0;//定时器加数uchar d1,d2,d3;//显示数据暂存变量uchar code tab1[]={" Speed Control"};uchar code tab2[]={"SPEED:"};void delay(uint ms)//延时函数,大约延时{uchar x;for(ms;ms>0;ms--)for(x=50;x>0;x--);}///********液晶写入指令函数与写入数据函数,以后可调用**************/void write_1602com(uchar com)//****液晶写入指令函数****{RS=0;//数据/指令选择置为指令//rw=0; //读写选择置为写LCD1602=com;//送入数据//delay(10);EN=1;//拉高使能端,为制造有效的下降沿做准备delay(10);EN=0;//en由高变低,产生下降沿,液晶执行命令}void write_1602dat(uchar dat)//***液晶写入数据函数****{RS=1;//数据/指令选择置为数据//rw=0; //读写选择置为写LCD1602=dat;//送入数据//delay(10);EN=1; //en置高电平,为制造下降沿做准备delay(10);EN=0; //en由高变低,产生下降沿,液晶执行命令}void lcd_init()//***液晶初始化函数****{uchar a,b;write_1602com(0x38);//设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据write_1602com(0x0c);//开显示不显示光标write_1602com(0x06);//整屏不移动,光标自动右移write_1602com(0x01);//清显示write_1602com(0x80);//时间显示固定符号写入位置,从第1个位置后开始显示for(a=0;a<15;a++){write_1602dat(tab1[a]);//写显示时间固定符号,两个冒号delay(3);}write_1602com(0x80+0x40);//时间显示固定符号写入位置,从第1个位置后开始显示for(b=0;b<6;b++){write_1602dat(tab2[b]);//写显示时间固定符号,两个冒号delay(3);}}void display(){if(period == 100){write_1602com(0x80+0x40+10);write_1602dat((period /100)+0x30);write_1602com(0x80+0x40+11);write_1602dat(0x30);}else{write_1602com(0x80+0x40+10);write_1602dat((period /10)+0x30);} }void KEY(){//加if(key1==0){delay(10);if(key1==0){period +=10;if(period >90)period = 100;}while(key1==0);}//减少if(key2==0){delay(10);if(key2==0){period =period - 10;if(period <=0)period=0;}while(key2==0);}}void init(){TMOD=0x01;//???0????1TH0=0xff;//(65536-10)/256;//?????TL0=0xf7;//(65536-10)%256;//0.01msEA=1;//????ET0=1;//????0??TR0=1;//?????0}void main() //主函数{uchar dj;dj=0; //电机TR0=0;delay(500);lcd_init();init();while(1) //进入while循环{KEY();//按键扫描函数display(); //调用显示函数//zi_dong();}}void T0_time() interrupt 1{ TR0=0;TH0=0xff;//(65536-10)/256;//TL0=0xf7;//(65536-10)%256;//0.01msTR0=1;time++;if(time>=100) //1khztime=0;if(time < period) //dj=1;else dj=0;}