typora-root-url: ./
【毕业设计】17-基于单片机的矿井提升机_步进电机控制装置设计(原理图+仿真+源代码+实物图+答辩论文+答辩PPT)
文章目录
- typora-root-url: ./
- 【毕业设计】17-基于单片机的矿井提升机_步进电机控制装置设计(原理图+仿真+源代码+实物图+答辩论文+答辩PPT)
- 设计说明书
- 摘要
- 设计框架架构
- 设计说明书及设计文件
- 源码展示
设计说明书
摘要
本设计对系统的设计背景以及使用环境分析,确定系统的功能以及硬件设计框架。以AT89C51单片机作为系统的控制核心,主要包括主控模块、电机控制驱动模块、电源模块、按键模块组成、数码管显示模块。当系统开始工作时,通过按键来对系统实现加速、减速、正转、反转的控制。加速、减速需要主控模块启动内部的定时器调节运行占空比,控制电机的工作状态。当定时时间完成后,控制系统发出切换命令实现电机控制。在系统运行时,通过数码管显示系统的正反转、速度信息,方便操作人员熟知系统的工作方式。
资料链接
原理图工程文件
实物图
仿真模型工程文件
仿真截图
搭建视频
答辩论文低重复率文档,22233字
英文文献及翻译
答辩PPT
visio流程图
设计框架架构
前 言… 1
第一章 绪论… 2
第一节 矿井机研究背景… 2
第二节 国外矿井机发展… 3
第三节 国内矿机提升机的发展情况… 4
第四节 本文的主要研究内容… 4
第五节 本章小节… 5
第二章 矿井提升机装置方案设计… 6
第一节 系统设计功能分析… 6
第二节 主要元器件选型… 7
一、主控芯片选择… 7
二、电机选择… 7
三、显示器选择… 8
第三节 矿井提升机装置设计分析… 8
第四节 本章小结… 9
第三章 系统硬件设计… 10
第一节 单片机最小系统电路设计… 10
一、单片机介绍… 10
二、单片机复位电路… 11
三、晶振电路… 11
四、单片机最小系统电路原理图… 12
第二节 电源电路设计… 12
第三节 独立按键电路设计… 13
第四节 步进电机控制电路设计… 13
第五节 数码管显示电路设计… 15
第六节 系统总电路图… 15
第七节 本章小结… 16
第四章 系统软件设计… 17
第一节 Keil软件介绍… 17
第二节 系统软件总设计… 17
第三节 独立按键软件设计… 18
第四节 步进电机控制软件设计… 19
第五节 数码管显示软件设计… 20
第六节 本章小结… 21
第五章 矿井提升机装置系统仿真… 22
第一节 Proteus软件介绍… 22
第二节 系统仿真… 22
一、仿真电路连接… 22
二、功能仿真… 23
三、系统综合测试… 28
第三节 本章小结… 29
总 结… 30
致 谢… 31
参考文献… 32
附 录… 34
一、英文原文… 34
二、英文翻译… 37
三、源代码… 40
设计说明书及设计文件
源码展示
//数码管位 高位-----低位
//四个按键控制步进电机:正转,反转,加1,减1
//上电时电机启动,数码管上显示速度最小档1,加减档位均能通过数码管显示出来,电机采用单双八拍方式
//电机转速一共10档,通过按键调节转速
//电机正转时最高位数码管显示0,反转时显示1
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define led P0//数码管段选
#define haha P2
sbit s1 = P1^0;sbit s2 = P1^1;sbit s3 = P3^0;sbit s4 = P3^1;//按键定义,s1正转,s2反转,s3加1,s4减1
sbit wei3 = P2^3;sbit wei2 = P2^2;sbit wei1 = P2^1;sbit wei0 = P2^0;//数码管位选定义
sbit a = P2^7;sbit b = P2^6;sbit c = P2^5;sbit d = P2^4;//脉冲信号输入端定义
uchar code tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳数码管驱动信号0---9,不显示
uchar code time_counter[10][2]={{0xda,0x1c},{0xde,0xe4},{0xe1,0xec},{0xe5,0xd4},{0xe9,0xbc}, //9.7 ----1ms
{0xed,0xa4},{0xf1,0x8c},{0xf5,0x74},{0xf9,0x5c},{0xfc,0x18}};
uchar code qudong[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90};
uchar num1 = 0;//控制取励磁信号变量
uchar num2 = 8;
int jishu;
//时间计算
#define Imax 14000 //此处为晶振为11.0592时的取值,
#define Imin 8000 //如用其它频率的晶振时,
#define Inum1 1450 //要改变相应的取值。
#define Inum2 700
#define Inum3 3000
//解码变量
unsigned char Im[4]={0x00,0x00,0x00,0x00};
//全局变量
uchar f;
unsigned long m,Tc;
unsigned char IrOK;
char k=0;//加减档位控制,1为最小档
bit flag1 = 0,start=0,mode=0;//初始正转,正反转标志
uchar buf[4]={0,10,0,0};//数码管显示缓存,正转,不显示,不显示,显示0档位,高----低
//================================定时器0/1初始化函数================================
void T0_T1_init()
{
TMOD = 0x11;//定时器0/1均工作于方式1,16位计时方式
TH0 =0;
TL0 =0;//定时器0
TH1 = time_counter[k-1][0];
TL1 = time_counter[k-1][1];//定时器1,定时10ms用于步进电机转速控制
TR0 = 0;
TR1 = 1;
ET0 = 1;
IT1=1;//下降沿有效
EX1=1;//外部中断1开
ET1= 1;//开定时器中断
EA = 1;//开总中断
}
//================================ms级延时函数=======================================
void delay1m(uint x)
{
uint i,j;
for(i=0;i<x;i++) //连数x次,约 x ms
for(j=0;j<120;j++); //数120 次,约1 ms
}
void display()
{
wei3=1;wei2=1;wei1=1;wei0=0;led = tab[buf[3]];delay1m(1);led=0xff;
wei3=1;wei2=1;wei1=0;wei0=1;led = tab[buf[2]];delay1m(1);led=0xff;
wei3=1;wei2=0;wei1=1;wei0=1;led = tab[buf[1]];delay1m(1);led=0xff;
wei3=0;wei2=1;wei1=1;wei0=1;led = tab[buf[0]];delay1m(1);led=0xff;
}
//================================主函数=============================================
void main()
{
T0_T1_init();
buf[1] = 10;//不显示