1.设计任务

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

基本要求:利用单片机AT89C51设计直流电机控制系统,能对直流电机进行控制。

创新:能改变显示电机速度;能通过键盘操作改变电机的方向等。

任务区分:B——用米字型数码管显示速度

2. 设计要求

2.1系统方案论证

根据设计任务,分析设计系统的组成,给出实现设计任务的几种方案,分析比较几种设计方案的优略,本着尽量以软件代替硬件,同时力求电路简单,工作可靠的原则,确定总体设计方案。

2.2系统硬件电路设计

根据系统设计方案进行软、硬件的分配,软、硬件设计分别进行。硬件设计包括单片机最小系统和扩展接口及配置,硬件结构在设计时要选择合适的元器件,硬件电路要简洁、工作可靠,需用Proteus绘制整个系统的电路仿真原理图。

主函数

#include<reg52.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
#define THC0 0xf9
#define TLC0 0x0f   //2ms
unsigned char  code Duan[]={0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//¹²Òõ¼«ÊýÂë¹Ü£¬0-9¶ÎÂë±í
unsigned char  Data_Buffer[8]={0,0,0,0,0,0,0,0};            // ÏÔʾ»º³åuchar i=0;
sbit AddSpeed=P1^1;
sbit SubSpeed=P1^2;
sbit TurnForward=P1^3;
sbit TurnBackward=P1^4;
sbit Stop=P1^5;sbit IN1=P3^0;
sbit IN2=P3^1;
sbit PWM_FC=P1^0;
int e ,e1 ,e2 ;
float uk ,uk1 ,duk ;//pidÊä³öÖµ
float Kp=15,Ki=12,Kd=1.6;
int out=0;
uint SpeedSet=380;
uint cnt=0;
uint Inpluse=0,num=0;//Âö³å¼ÆÊý
uint PWMTime=100;//Âö³å¿í¶È
unsigned char  arry[];
void SendString(uint ch);
void PIDControl();
void SystemInit();
void delay(uchar x);
void PWMOUT();
void SetSpeed();
void SegRefre();void delay(uchar x)
{uint i,j;for(i=x;i>0;i--)for(j=50;j>0;j--);
}void PWMOUT()
{if(cnt<PWMTime)        {PWM_FC=1;}else{PWM_FC=0;}if(cnt>1000) cnt=0;
}
void SystemInit()
{TMOD=0X21;     TH0=THC0;TL0=TLC0;TH1=0xC0;TL1=0XC0;ET1=1;ET0=1;TR0=1;TR1=1;EX0=1;     IT0=1;EA=1;e =0;        e1=0;e2=0;IN1 = 1;IN2 = 0;
}
void SetSpeed()
{if(AddSpeed==0){delay(200);            //Ïû¶¶´¦Àíif(AddSpeed==0){SpeedSet+=10;if(SpeedSet>1500){SpeedSet=1500;}}}if(SubSpeed==0){delay(200);if(SubSpeed==0){SpeedSet-=10;if(SpeedSet<0) SpeedSet=0;}}if(TurnForward==0){delay(200);if(TurnForward==0){IN1 = 1;IN2 = 0;while(TurnForward==0);}}if(TurnBackward==0){delay(200);if(TurnBackward==0){IN1 = 0;IN2 = 1;while(TurnBackward==0);}}if(Stop==0){delay(200);if(Stop==0){IN1 = 1;IN2 = 1;while(Stop==0);}}}
void SegRefre()       //ÏÔʾˢÐÂ
{Data_Buffer[0]=SpeedSet/1000;       //·ÖÀëÉ趨ֵ¸÷λData_Buffer[1]=SpeedSet%1000/100;Data_Buffer[2]=SpeedSet%100/10;Data_Buffer[3]=SpeedSet%10;Data_Buffer[4]=num/1000;            Data_Buffer[5]=num%1000/100;Data_Buffer[6]=num%100/10;Data_Buffer[7]=num%10;
}
/**************Ö÷º¯Êý************/
void main()
{SystemInit();while(1){SetSpeed();      //°´¼üÉ趨ËÙ¶ÈSegRefre();       //ÊýÂë¹ÜÏÔʾˢÐÂPWMOUT();       //Êä³öPWM}
}void int0() interrupt 0
{Inpluse++;           //²É¼¯ÍⲿÂö³å
}
void t0() interrupt 1
{static unsigned char Bit=0;static unsigned int time=0;TH0=THC0;TL0=TLC0;Bit++;time++;  //תËÙ²âÁ¿ÖÜÆÚif(Bit>8) Bit=0;        P0=0xff;P2=Duan[Data_Buffer[Bit]];  //ÏÔʾ¶ÎÂëswitch(Bit)                   //ÊýÂë¹Üλѡ{case 0:P0=0X7F;break;case 1:P0=0XBF;break;case 2:P0=0XDF;break;case 3:P0=0XEF;break;case 4:P0=0XF7;break;case 5:P0=0XFB;break;case 6:P0=0XFD;break;case 7:P0=0XFE;break;}if(time>100){time=0;num=Inpluse*5;          Inpluse=0;             PIDControl();           }
}
void timer_1()  interrupt 3
{cnt++;   //cntÔ½´óÕ¼¿Õ±ÈÔ½¸ß2.5Khz
}void PIDControl()        //pidÆ«²î¼ÆËã
{e=SpeedSet-num;        duk=(Kp*(e-e1)+Ki*e+Kd*(e-2*e1+e2))/50;       uk=uk1+duk;        out=(int)uk;   //Êä³öΪռ¿Õ±Èif(out>1000){out=1000;}else if(out<0){out=0;}uk1=uk;               //±äÁ¿ÖµÒÆλe2=e1;e1=e;               PWMTime=out;
}

仿真图Proteus

基于单片机的直流电机控制系统设计相关推荐

  1. 【分享】基于单片机嵌入式的家用智能节水淋浴控制器的设计-基于单片机的电子贺卡控制系统设计-基于单片机的倒计时牌控制系统设计-基于单片机的彩灯控制器系统设计-多模式彩灯-单片机的八路路数字电压表控制设计

    1334基于单片机嵌入式的家用智能节水淋浴控制器的设计-全套毕设课设设计资料 三个ds18b20分别采集进水口热水  冷水 和温水的水温,然后分别显示出来,按下开始按键,系统初始化,自动设置出水温度为 ...

  2. 基于单片机的水壶自动加热系统_基于单片机智能电水壶控制系统设计毕业设计(论文).doc...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp人工智能 基于单片机智能电水壶控制系统设计毕业设计(论文).do ...

  3. 简易交通灯控制系统设计c语言,基于单片机交通灯控制系统设计毕业设计.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava 基于单片机交通灯控制系统设计毕业设计.doc30页 本 ...

  4. 【设计方案分享】基于单片机温度监测监控报警系统设计-基于单片机钞票自动智能识别系统设计-基于单片机乒乓球游戏机控制系统设计-基于单片机温度监测监控报警系统设计-基于单片机矩阵键盘的电子密码锁设计

    820基于单片机温度监测监控报警系统设计-设计资料 温度监测器功能描述: 1.主控芯片用的是51单片机(STC89C51). 2.使用温度传感器DS18b20采集温度. 3.用1602液晶显示显示温度 ...

  5. 基于单片机乒乓球游戏机控制系统设计-基于单片机矩阵键盘的电子密码锁设计-基于单片机温度监测监控报警系统设计-基于单片机钞票自动智能识别系统设计-设计资料【转发分享】

    819基于单片机乒乓球游戏机控制系统设计-设计资料下载 乒乓球游戏机设计任务为: (1)使用乒乓游戏机的甲乙双方各在不同的位置发球或击球. (2)乒乓球的位置和移动方向由灯亮及依次点燃的方向决定,球移 ...

  6. c语言怎么实现电梯控制系统设计,基于单片机的电梯控制系统设计.doc

    PAGE 本科生毕业论文(设计) 题 目: 基于单片机的电梯控制系统设计 姓 名: 学 院: 工学院 专 业: 自动化 班 级: 学 号: 指导教师: 职称: 副教授 2012 目 录 TOC \o ...

  7. 基于单片机家具窗帘控制系统设计、基于单片机路灯教室灯光家具智能控制设计-基于单片机简易电饭煲电饭锅仿真系统设计、基于单片机酒精检测控制系统仿真设计-设计资料

    1426基于单片机酒精检测控制系统仿真设计-全套资料 (1)  学习气体测量传感器的原理和使用,并完成数据采集.调理电路的设计: (2)  学习单片机系统的设计及编程,完成系统整体设计: (3)  通 ...

  8. 用c语言编一个霓虹灯程序,基于单片机的霓虹灯控制系统设计.doc

    基于单片机的霓虹灯控制系统设计 目 录 0. 1 1. 总体方案设计1 2. 硬件电路的设计2 2.1 单片机系统2 2.2 LED概述3 2.3 外部时钟方式电路4 2.4 手动复位电路4 2.5 ...

  9. 基于单片机智能垃圾桶控制系统设计(毕业设计资料)

    摘要: 自动感应垃圾桶由电路芯片控制,由红外线检测装置和机械电子驱动系统组成.感应垃圾桶利用红外线感应原理,只要有物体接近感应区范围内,桶盖便会自动开启,物体或手离开感应区数秒后桶盖会自动关闭,不需要 ...

最新文章

  1. 计算机考研数学试卷类型,数学会是你的计算机考研拦路虎吗?
  2. UVA - 10615 Rooks
  3. 再谈编程范式-程序语言背后的思想
  4. VMware Skyline
  5. java tm 插件_VS Code 中有哪些好用的 Java 插件?
  6. 【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge
  7. centos6 5从命令行进入图形界面
  8. vue 各组件 使用 Demo
  9. EMNLP'20最佳论文揭晓!八块肌肉=能打电话?!
  10. Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 括号序列 dp+栈
  11. 苹果新漏洞 “Shrootless” 可使攻击者在macOS 系统上安装后门
  12. RTP协议RTCP协议
  13. ubuntu 17 php版本,Ubuntu 17.10 PHP版本下载_Ubuntu 17.10 每日构建版本下载 17.10 官方正式版_当载软件站...
  14. CSDN/博客园复制代码空格报错问题解决
  15. 苹果马上又要更新系统,iOS 14.5 Beta中的所有新功能
  16. pytorch第四课
  17. cm-14.1 Android系统启动过程分析(4)-init进程的启动、rc脚本解析、zygote启动、属性服务
  18. Ad Hoc类问题求解案例
  19. java 序列化 内存溢出_Gson序列化问题导致的内存溢出,tip:Background sticky concurrent mark sweep GC freed...
  20. mac 部署nexus私服库

热门文章

  1. 垂直翻转视频并给视频去色怎么操作
  2. java 注释 see_java注释
  3. Excel一键统计数据区域被每种颜色标记的个数
  4. Deepin20.8Idea2022.3中文输入法不跟随光标解决办法
  5. html t表示几个空格,Html的空格显示
  6. Linux 基础篇 -- 虚拟机克隆(可以更加方便的创建虚拟机)、虚拟机的迁移和删除
  7. 星球专访 | 火币七爷:Prime 阶梯限价购买,前期不会暴涨
  8. 搞定! iTunes 不能添加铃声进去
  9. 解决微信小程序输入框聚焦时内容被上推致布局错乱
  10. DenseNet简介