计算机控制系统课程设计 直流电机测速调速系统
直流电动机调速计算机控制系统设计

目录1. 绪论 (1)1.1 直流电机的发展 (1)1.2 课题研究的目的及意义 (2)2. 系统方案设计 (2)2.1电机调速控制模块: (2)2.2.1 PWM调速工作方式: (3)2.2.2 PWM调脉宽方式: (3)2.2.3 PWM软件实现方式: (3)2.3 PWM技术 (3)2.4 PWM的参数 (4)2.5直流电机的能量转换和特性曲线 (4)3. 硬件电路板的制作 (6)3.1 确定工作层 (6)3.2 定义PCB形状及尺寸 (6)3.3 加载PCB元件封装库 (6)3.4 元器件的布局 (6)3.5 布线 (7)3.6 制板 (7)总结 (7)参考文献 (7)附件: (8)直流电动机调速计算机控制系统设计摘要当今,自动化控制系统已经在各行各业得到了广泛的应用和发展,而直流驱动控制作为电气传动的主流在现代化生产中起着主要作用。
长期以来,直流电动机因其转速调节比较灵活,方法简单,易于大范围平滑调速,控制性能好等特点,一直在传动领域占有统治地位。
它广泛应用于数控机床、工业机器人等工厂自动化设备中。
随着现代化生产规模的不断扩大,各个行业对直流电机的需求愈益增大,并对其性能提出了更高的要求。
为此,研究并制造高性能、高可靠性的直流电机控制系统有着十分重要的现实意义。
本论文论述了单片机直流电机控制系统设计和实现方法。
而我们组是进行分工来实现的,在主任务下分成各个小任务,我和其他两个伙伴负责PCB制板。
接下来为大家介绍我们的主要工程及具体的PCB制板。
1. 绪论1.1 直流电机的发展直流电机问世已有一百四十多年的历史。
在设计和制造技术上的进步,新材料、新技术的应用,整流电源的普及,促进了一般工业用直流电机的用途不断扩大,品种繁多。
从小至数瓦,大到万余千瓦,正广泛地用于冶金、矿山、煤炭、起重运输、船舶、机床制造、纺织印染等各个部门中,特别是近几年电子计算技术已广泛应用当今,自动化控制系统已经在各行各业得到了广泛的应用和发展,而直流调速控制作为电气传动的主流在现代化生产中起着主要作用,无论是在工农业生产、交通运输、国防、航天航空、医疗卫生、商务与办公设备、还是在日常生活中的家用电器都大量使用着各式各样的电气传动系统,其中许多系统有调速的要求:如车辆、电梯、机床、造纸机械等等。
电机调速-计算机控制课程设计

计算机控制系统课程设计电机速度控制系统一、选定题目:电机速度控制系统二、设计目的和要求:计算机控制技术的课程设计是一个综合运用知识的过程,它不仅需要微型机控制理论、程序设计方面的基础知识,而且还需要具备一定的生产工艺知识。
课程设计包括确定控制任务、系统总体方案设计、硬件系统设计、控制软件的设计等,以便使学生掌握计算机控制系统设计的总体思路和方法。
三、系统总体方案:系统简介:采用由达林顿管组成的H型PWM电路,用A T89C51单片机控制达林顿管使之工作在占空比可调的开关状态,精确调整电动机转速。
设计需要使用的软件资源比较简单,只需要完成编码器采样部分、键盘控制部分以及显示输出功能。
采用AT89C51进行控制比较简单、易控制、可靠性高、抗干扰能力强、精度高且体积大大减小。
输出速度的调节是通过键操作。
A T89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器.具有4K字节可编程闪烁存储器,可擦除的的只读存储器(PEROM), ATMEL的AT89C51是一种高效微控制器. A T89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案. 三级程序存储器锁定、128*8位内部RAM、32可编程I/O线、两个16位定时器/计数器、5个中断源、可编程串行通道、低功耗的闲置和电模式、片内振荡器和时钟电路。
这种电路由于工作在管子的饱和截止模式下,效率非常高;H型电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也极佳,是一种广泛采用的PWM调速技术。
我们采用了定频调宽方式,因为采用这种方式,电动机在运转时比较稳定;并且在采用单片机产生PWM脉冲的软件实现上比较方便。
且对于直流电机,采用软件延时所产生的定时误差在允许范围。
结构框图:五、各个硬件模块设计及原理图5.1、电源电路(1)芯片介绍芯片采用7805,7815就代表它所输出的电压值,能降低电压4-5V用78/79系列三端稳压IC 来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路。
直流电机调速计算机控制技术课程设计

计算机控制技术课程设计专业:自动化班级:姓名:学号:指导教师:XX交通大学自动化与电气工程学院2016 年07 月15 日直流电机调速系统设计1设计目的本课程设计是在修完《计算机控制技术A》课程之后,为加强对学生系统设计和应用能力的培养而开设的综合设计训练环节。
本课程设计结合《计算机控制技术A》课程的基础理论,重点强调实际应用技能训练,包括计算机控制系统算法软件和硬件设计。
其课程设计任务是使学生通过应用计算机控制技术的基本理论,基本知识与基本技能,掌握计算控制技术中各主要环节的设计、调试方法,初步掌握并具备应用计算机进行设备技术改造和产品开发的能力,培养学生的创新意识,提高学生的动手能力、分析问题和解决问题的能力。
2 设计方法设计一个直流电机系统,合理选择PID控制规律,掌握被控对象参数检测方法、H桥驱动的功能、旋转编码器的功能、单片机PWM控制波形输出方法,进一步加强对课堂理论知识的理解与综合应用能力,进而提高解决实际工程问题的能力。
直流电机调速系统是以电机转速作为变量,单片机根据采集电机转速的测量值与设定值的偏差去控制PWM波形的脉宽,从而改变直流电机两端的电压,达到控制转速的目的。
直流电机调速系统由单片机、直流电机、光电式旋转编码器、H桥驱动、LCD显示屏等及相关电路组成。
3 设计方案及原理3.1系统功能介绍整个控制系统由控制器、执行器、被控对象和测量变送组成,在本次控制系统中控制器为单片机,采用算法为PID增量算法控制规律,执行器为H桥驱动电路,测量变送器为光电式旋转编码器,被控对象为直流电机。
然后通过单片机对数据进行处理,控制转速的大小和正反转。
3.2系统组成总体结构计算机控制系统由控制计算机系统和生产过程两大部分组成。
控制计算机是指按生产过程控制的特点和要求而设计的计算机系统,它可以根据系统的规模和要求选择或设计不同种类的计算机。
计算机控制系统基本结构如图1所示。
图1 计算机控制系统基本结构直流电机调速系统结构框图如图2所示。
计算机控制系统课程设计直流电机测速调速系统

XI`AN TECHNOLOGICAL UNIVERSITY课程名称直流电机测速调速实验专业:电气工程及其自动化班级:姓名:学号:指导教师:秦刚成绩:2016年7月11日计算机控制系统课程设计——直流电机测速调速系统一、选定题目:电机速度控制系统二、设计目的和要求:计算机控制技术的课程设计是一个综合运用知识的过程,它不仅需要微型机控制理论、程序设计方面的基础知识,而且还需要具备一定的生产工艺知识。
课程设计包括确定控制任务、系统总体方案设计、硬件系统设计、控制软件的设计等,以便使学生掌握计算机控制系统设计的总体思路和方法。
三、功能需求:1、基本功能:(1)该系统使用实验箱的直流电机、1602 液晶、 DA、键盘等模块完成设计;(2)直流电机通过DA模块使用PWM方式进行驱动及调速;(3)能够通过 1602 液晶显示当前转速及 PWM占空比;(4)通过按键控制电机的启动和停止。
2、扩展功能:(1)能够通过按键手动输入目标转速(转/秒),启动电机后控制电机稳定在目标转速;(2)使用 1602 液晶实时显示目标转速、当前转速及启停状态(on/off )。
四、实验思路:本直流电机调速系统以单片机系统为依托,根据 PWM调速的基本原理,控制电动机的转速为依据,实现对直流电动机的调速,并通过单片机控制速度的变化。
本设计的直流电机调速系统主要是由硬件和软件两大部分组成。
硬件部分是前提,是整个系统执行的基础,它主要为软件提供程序运行的平台。
而软件部分,是对硬件端口所体现的信号,加以采集、分析、处理,最终实现控制器所要实现的各项功能,达到控制器自动对电机速度的有效控制。
用51 来产生 PWM波就必须要用软件编程的方法来模拟。
方法大概可以分为软件延时和定时器产生两种方法。
本次课程设计我们采用定时器产生PWM方波。
定时器产生PWM:这种方法利用了定时器溢出中断,在中断服务程序改变电平的高低,在程序较复杂、多操作时仍能输出较准确的pwm波形。
计算机控制课程设计:直流电机调速系统

计算机控制课程设计直流电机调速系统一.实验要求(1)使用PID算法实现直流电机的调速控制。
(2)利用光电开关测量直流电机转速,通过控制加在直流电机两端的电压调节其转速,使之达到所设置的转速。
(3)通过键盘设置期望转速,要求有两组转速显示值,一组为期望转速;一组为电机的实时转速。
二.系统需求分析(1)电机控制需要驱动电路,常用的电机驱动电路是H桥驱动,bts7960是常用的半桥驱动芯片,利用PWM波控制半桥驱动电路可实现对电机的速度调节。
两片bts7960可以组成一个全桥驱动电路,可以控制电机的转向。
实验不要求控制转向,所以可用一片bts7960。
(2)电机控制需要PWM波,可以利用单片机的定时器模拟PWM,用一个普通IO 接口进行输出。
(3)光电开关测速输出为脉冲信号,通过检查输出脉冲的频率来计算电机转速,检查信号的频率可以利用单片机的计数器模块。
检查脉冲频率需要没个固定时间读取计数器的值。
利用一个定时器可以固定一定时间进行中断,在中断子程序中读取计数器的值。
(4)显示可用OLED液晶屏,选用的液晶屏有SPI通用接口,可以用普通IO可模拟SPI时序。
(5)根据以上要求,需要两个定时器,一个计数器。
共需要三个定时器/计数器模块,和一些普通IO接口,可选用STC89C52单片机,其内部共有三个定时器/计数器模块。
定时器0工作在方式三,分为两个八位定时器TL0做计数器,TL1做模拟PWM,定时器2做定时中断,定时器1作为串口波特率发生器,串口用于调试过程中观察数据。
三.硬件设计1.主电路图:本系统采用STC89C52单片机主要功能特性:硬件接口说明:串口接口:T - P3.0 R - P3.1测速接口:P3.4模拟PWM电机控制接口:P1.0OLED显示屏接口:D0 – P2.3 D1 – P2.2 RST – P2.1 DC – P2.0 2.电机驱动电路该电机驱动电路是是由两片bts7960组成,BTS7960是NovalithIC家族三个独立的芯片的一部分:一是p型通道的高电位场效应晶体管,二是一个n型通道的低电位场效应晶体管,结合一个驱动晶片,形成一个完全整合的高电流半桥。
直流电机调速系统课程设计报告

直流电机调速系统设计报告题目:H桥&串口输出2016年3月一、设计任务设计并制作一套直流电机调速系统,主要包括两部分:主电路部分和以单片机为核心的控制电路部分。
要求设计、制作控制电路和主电路,实现如下功能:(1)通过码盘和光耦得到一系列脉冲,利用M法、T法或M/T法对这些脉冲在单片机中进行处理得到电机的转速,在液晶或数码管上进行显示;(2)DC/DC电路能够正常工作,通过旋钮或键盘设定转速,并能够通过电力电子电路输出合适的电压,使电机的转速达到设定转速。
(3)实验室提供24V直流电源为DC/DC电路供电,其余部分电源请利用220V市电自行设计。
数码管显示单元DC直流电源DC码盘和光耦驱动与保护电路单片机系统旋钮输入图1 系统总体框图二、硬件电路设计与制作2.1 显示部分电路设计使用计数器采集到电机转速后,需要用数码管进行显示。
我们组选择串口驱动数码管显示电路,74HC595芯片是一种串入并出的芯片,是8位串行输入/输出或者并行输出移位寄存器,具有高阻、关、断状态。
首先使用三极管构成驱动电路,驱动数码管。
采用单片机的P0.0-P0.2作为74HC595时钟信号与输入口,使数码管显示相应转速,具体实现电路如图1。
图1 显示电路原理图2.2 驱动部分电路设计驱动部分作为电机与单片机控制器的结合部分,是本次设计的主电路,需要完成DC/DC变化的功能。
单片机产生PWM波送给驱动芯片IR2110,2110通过驱动电路控制MOSFET开关改变加在直流电机上的电压,从而达到改变转速的目的。
单片机产生的PWM1和PWM2波形要相反,控制斩波电路的半桥互补通断。
电路设计图如图2所示。
图2 驱动电路原理图2.3 电源部分设计电源设计部分共分两个部分,一部分是IR2110的供电电压和所有芯片的供电电压,另一部分是USB口供电电部分,使用电脑供电,两部分电路通过拨码开关进行切换。
市电供电电源采用220V交流电变成15V交流电,经整流桥变成直流电,再经7815、7805稳压得到15V和5V直流电,分别给驱动和单片机系统供电。
电机调速控制器计算机控制课程设计

微机控制课程设计题目:直流电机调速控制器班级:姓名:学号:指导老师:日期:目录目录┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈1中文文摘┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈2英文文摘┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈2 1.方案比较┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈3 1.1总体方案┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈3 1.2显示部分的比较与选择┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈3 1.3电机的比较和选择┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈3 1.4测速方案的比较和选择┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈3 1.5键盘方案的比较和选择┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈4 1.6复位电路的比较和选择┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈4 2.系统设计及分析计算┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈4 2.1整体设计┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈4 2.2系统电源设计┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈5 2.3显示电路的设计┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈6 2.4键盘设计┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈8 2.5正反转控制电路(H桥)┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈9 2.6霍尔测速电路设计┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈9 2.7复位电路设计┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈10 3.程序设计流程图┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈11 4.调试过程┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈11 4.1测试方法与测试仪器┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈11 4.1.1测试方法┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈11 4.1.2测试仪器┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈12 4.2测试数据及结果分析┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈125.设计总结┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈13 5.1设计内容完成情况┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈13 5.2硬件部分┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈13 5.3软件部分┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈13【参考文献】┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈14附件一(系统设计总电路图)┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈15附件二系统程序┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈16关键词:单片机调速直流电动机PWM摘要与交流电动机相比,直流电动机结构复杂,成本高,运行维护困难。
计算机控制课程设计 直流电机速度控制

计算机控制课程设计直流电机速度控制成绩题目直流电机速度控制课程名称计算机控制系统设计院部名称机电工程学院专业班级学生姓名学号课程设计地点课程设计学时指导教师金陵科技学院教务处制-目录摘要..............................................................II 1.绪论.............................................................1 2.设计方案 (2)2.1 直流电机调速原理 (2)2.2 PWM基本原理 (3)2.3 设计思路 (4)3.硬件电路的设计 (5)3.1 AT89C51模块 (5)3.2 直流电机模块 (7)3.3 显示设计模块 (8)3.4 驱动模块L298 (9)3.5 按键模块 (10)3.6 整体硬件电路图 (10)4.系统软件的设计 (11)4.1 系统流程图: (11)4.2 源代码: ................................................... 11 5.结果测试......................................................... 16 结论............................................................. 19 参考文献........................................................... 20 附录一: (21)I直流电机速度控制摘要近年来~随着计算机技术、电力电子技术和控制技术的发展~交流调速系统发展快~在许多场合正逐渐取代直流调速系统。
但是就目前来看~直流调速系统仍然是自动调速系统的主要形式。
对直流电机的速度调节~我们可以采用多种办法~本文在给出直流电机调整和PWM实现方法的基础上~提供一种用单片机软件实现PWM 调速的方法~脉宽调制控制方法在直流调速中获得了广泛的应用~对基于51系列单片机实现直流电机调速系统进行研究和设计~能够在不同的按钮作用下分别实现直流电机的停止、加速、减速、正转、反转控制,能够实现基于51系列单片机的直流电机PWM的调速设计。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XI`ANTECHNOLOGICALUNIVERSITY程序设系统总体方法。
1(1)该系统使用实验箱的直流电机、1602液晶、DA、键盘等模块完成设计;(2)直流电机通过DA模块使用PWM方式进行驱动及调速;(3)能够通过1602液晶显示当前转速及PWM占空比;(4)通过按键控制电机的启动和停止。
2、扩展功能:(1)能够通过按键手动输入目标转速(转/秒),启动电机后控制电机稳定在目标转速;(2)使用1602液晶实时显示目标转速、当前转速及启停状态(on/off)。
四、实验思路:本直流电机调速系统以单片机系统为依托,根据PWM调速的基本原理,控制电动机的转速为依据,实现对直流电动机的调速,并通过单片机控制速度的变化。
本设计的直流电机调速系统主要是由硬件和软件两大部分组成。
硬件部分是前提,是整个系统执行的基础,它主要为软件提供程序运行的平台。
而软件部分,是对硬件端口所体现的信号,加以采集、分析、处理,最终实现控制器所要实现的各项功能,达到控制器自动对电机速度的有效控制。
用51来产生PWM波就必须要用软件编程的方法来模拟。
方法大概可以分为软件延时和定时器DA121602C字符型液晶:CS:片选信号,低电平有效;RS:选择读写的是指令或数据,L:指令,H:为数据。
RW:读写控制端,L:写操作,H:读操作。
12864J图形点阵液晶:CS:片选信号,低电平有效;CS1/2:左右半屏使能选择,H:左半屏,L:右半屏;RS:选择读写的是指令或数据,L:指令,H:为数据。
RW:读写控制端,L:写操作,H:读操作。
12864M图形点阵液晶:JP6的16脚是空脚,JP6的15脚是PSB:PSB接高电平,CPU与液晶使用并行接口连接,连接方法与12864J完全相同;PSB接低电平,CPU与液晶使用串行接口连接,此时,RS、RW、E与CPU的I/O管脚相连(STARES59PA才有该功能)。
(1602C字符型液晶)(12864J图形点阵液晶)2)DAC0832数模转换CS:片选,低有效;OUT:转换电压输出;OUT1:经功放电路的电压输出;主要特性:与MCS-51?兼容·;4K字节可编程FLASH存储器;寿命:1000写/擦循环;?数据保留时间:10年全静态工作:0Hz-24MHz??;?三级程序存储器锁定;128×8位内部RAM??;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;?低功耗的闲置和掉电模式;?片内振荡器和时钟电路;直流电机转速测量/控制5)使用光电开关测速CTRL:控制电压(DAC0832经功放电路提供)输入;REV:光电开关脉冲输出(用于转速测量);3、计算机控制技术的课程设计相比硬件的课程设计,简直难了不止一个档次,作为主要的编程人员,当我实际要去控制一个物体的时候,我才知道自己以前学的知识有多么的不牢固,不过真真正正的去做一个实物控制程序的时候,才能真切的体会到以前书本上学的知识是如何运用到实际的,我基本上可以说是为了应付考试勉勉强强学了一些,这次实际做到项目设计后,才理解其真正的含义。
第页还有本次项目,我们采用了LCD显示屏作为显示单元,比LED数码管复杂,LCD液晶显示屏这也是以前没有运用到过的,所以总体来说,这次课程设计带给我的不仅仅是旧知识的复习,还有新的探索。
本课程设计得以完成,首先要感谢秦刚老师,因为课程设计在他的悉心指导下才能顺利完成。
他渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范、朴实无华、平易近人的人格魅力对我的影响非常深远。
本设计从选题到完成,每一部步是在老师的指导下完成的,倾注了老师大量的心血。
在课程设sbitset=P1^4; //set按键sbitleft=P1^2; //左移光标sbitright=P1^3; //右移光标sbitLCD_RS=P3^0; //1602的RSsbitLCD_RW=P3^1; //1602的RWsbitsys_data=P3^4; //继电器控制脚,用于切换DA功率输出方向(电机or加热电阻)xdataunsignedchardac0832_addr_at_0xd000;//DA的地址xdataunsignedcharLCD_DATA_at_0x8000;//LCD1602的地址/*******************以下为系统的状态量设置**************/bitrps_triger=0; //转速(温度)刷新显示控制,1为需要刷新显示,0为不需要刷新显示bitscale_triger=0; //占空比刷新显示控制bitpower_triger=0; //电源指示刷新显示控制式4位),0~25%1秒)数)速,反之则缓慢调整)unsignedchartime_scale=0; //占空比总周期计数变量,一个周期200次,可以精确到0.5%unsignedinttime_check[4]={1000,3000,6000,10000};//转速调整时间系数表格unsignedcharcheck=0; //检测周期等级,分为0~4共5个等级,0为极小时间系数,4为稳定不变void_nop_(void);/*******************延时函数*****************/ voiddelay(inta){while(a--);}/*******************外部中断初始化*****************/ voidinit_int0(){}{}{LCD_RS=0;LCD_RW=0;LCD_DATA=com;delay(80);}voidLCD_write_data(unsignedchardat){LCD_RS=1;LCD_RW=0;LCD_DATA=dat;delay(80);}/*************LCD1602在电机调速系统下的初始化函数*************/{LCD_write_data('.');LCD_write_com(0xcf);LCD_write_data('%');LCD_write_com(0x8b);LCD_write_data(rps1/1000+0x30);LCD_write_data(rps1%1000/100+0x30);LCD_write_data(rps1%100/10+0x30);LCD_write_data(rps1%10+0x30);}/***************光标闪烁开***************/ voidflash_on(void){LCD_write_com(0x0f);}{}{rps_triger=0;}/************显示当前占空比**************/ voiddisplay_scale(void){flash_off();LCD_write_com(0xcb);LCD_write_data(scale/2/10+0x30);LCD_write_data(scale/2%10+0x30);LCD_write_com(0xce);LCD_write_data(scale%2*5+0x30);scale_triger=0;}/************显示auto模式的状态**************/{{}{LCD_write_data('');}auto_triger_triger=0;}/************显示power的状态(on或off)*************/ voiddisplay_power(void){flash_off();LCD_write_com(0xc0);if(power_data==0){LCD_write_data('o');LCD_write_data('f');LCD_write_data('f');}{}}{{scale--;if(scale<=1)scale=1;}elseif(rps1>rps_data){scale++;if(scale>=199)scale=199;}scale_triger=1;}/************显示电机调速系统下set模式函数**************/ voiddisplay_set(void){{}}{if(power==1)return;else{delay(20);//按键去抖if(power==0){while(power!=1);power_data=~power_data;power_triger=1;set_triger=0;auto_triger_triger=1;}elsereturn;}}{{}}/************set设置模式键**************/ voidfn_set(){if(set==1)return;else{delay(20);//按键去抖if(set==0){while(set!=1);set_triger=~set_triger;auto_triger=0;}}{{switch(set_data){case0:if(rps1/1000>=1)rps1=rps1-1000;break;case1:if(rps1%1000/100>=1)rps1=rps1-100;break;case2:if(rps1%100/10>=1)rps1=rps1-10;break;case3:if(rps1%10>=1)rps1=rps1-1;break;}}else{if(scale<=1)scale=1;elsescale--;scale_triger=1;}}}{{{case0:if(rps1/1000<9)rps1=rps1+1000;break;case1:if(rps1%1000/100<9)rps1=rps1+100;break;case2:if(rps1%100/10<9)rps1=rps1+10;break;case3:if(rps1%10<9)rps1=rps1+1;break;}}else{if(scale>=199)scale=199;elsescale++;scale_triger=1;}}}}{{}elsereturn;}elsereturn;}}/************光标右移键(set模式下有效)**************/voidfn_right(){if(right==1)return;else{delay(20);//按键去抖if(right==0)}}{}/****************定时器0中断服务函数*****************/ voidtimer0(void)interrupt1{unsignedintt;TH0=0xff; //重新装载计时常数TL0=0x1a;if(time_scale>=200)time_scale=0; //占空比计数控制if(time>=4000) //如果计满1秒,计秒变量归零,并将rps的转数数据送到转速(温度)数据变量中保存{time=0;time_scale=0;if(sys_data==1)rps_data=rps*60/4;//在电机调速模式下:每转有4个脉冲,所以除以4 rps=0; //rps归零{}{}{if(time_scale<=scale)dac0832_addr=0xff;//PWM信号输出elsedac0832_addr=0x00; //PWM信号输出}elsedac0832_addr=0x00; //PWM信号输出if(time2>=200) //数据差值检测,0.5秒1次{time2=0;t=abs(rps_data-rps1);//电机调速系统下的参数调整等级划分if(t>1200)check=0;else{if(t>500)check=1;else空比}if(auto_triger==1)check_rps();}elsetime3++;}}/****************主函数*****************/voidmain(){key0=1; //读引脚之前要写1key1=1;power=1;set=1;T0_init(); //T0初始化init_int0(); //外部中断int0初始化{状态显示if(sys_data==1)display_set(); //不同的系统(电机调速、温度控制)不同的set状态显示}}}。