已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录摘 要1关键词1第一章 绪论21.1设计目标21.2设计内容21.3其他要求21.4团队分工3第二章 总体方案设计32.1直流电机调速原理32.2 PWM脉宽调制原理42.3直流电机调速方案52.4 PID算法概述62.5硬件设计72.5.1 MCU硬件结构72.5.2 MCU最小系统72.5.3 键盘设计82.5.4电机驱动L298N92.5.5 LCD显示模块102.5.6硬件电路图(整体)112.6软件设计11第三章 个人设计工作133.1 主函数133.2 PWM波形发生函数143.3 PID控制函数143.4 LCD显示函数16设计总结17参考文献18附录19摘 要转速是直流电机运行中的一个重要物理量,如何准确、快速测量出电机转速,并且实现对电机的调速在实际工作中具有非常大的使用价值。直流电机具有非常好的调速性能,目前,在一些对调速性能要求比较严格的场合中,主要使用的还是直流调速系统。本文阐述了利用硬件和软件相结合的方法来进行对电机的测速和调速,硬件方面以AT89C51型号的单片机为核心,与驱动电路、测速电路、键盘和LCD显示模块构成硬件系统。其中LED采用动态显示方式,键盘采用查询方式实现。软件上通过用C语言编程,通过PID算法产生PWM信号的输出,通过中断计时调节占空比,可以实现调节输出电压的目的,而且输出电压可以无级连续调节,再结合电机驱动 芯片,即可实现直流电机的调整、变极等基本功能。利用单片机作为控制核心设计直流电机的调速系统,解决以往复杂的模拟电路设计问题,增加对直流电机速度的可控性,提高调速系统的精度,且成本低廉,具有很好的使用价值。关键词: PWM脉冲波; PID控制; 占空比; 调速; 第一章 绪论1.1设计目标设计一套基于单片机的直流电机控制器,控制直流电机的正转、反转、加速以及减速等。1.2设计内容1、根据设计要求,分析并论证设计方案。2、确定各主要模块及主要器件,设计详细的电路图,并进行仿真,验证设计方案的可行性。3、实物制作并进行调试。4、根据调试结果完善设计。5、撰写实验报告。1.3其他要求1、根据要求,在第3周进行方案设计(第三周周五上午10点检查方案设计情况),方案中应包括原理说明、电路设计、分析计算等内容。第6周进行具体实物设计和调试并完成设计报告。2、可根据情况,在方案中针对计算分析、电路实现等为重点做具体设计。3、设计报告中应对设计路线和方法进行详细的说明,说明所设计的方案、具体环节的工作原理、实现过程,并附上详细的图形、图形的编号等。4、按时完成设计报告。设计报告应清晰、层次分明,说理充分、内容详实,不得少于3000字。报告格式请严格按照重庆邮电大学自动化学院课程设计统一格式撰写。设计报告应每人一份,不雷同,否则不记成绩。5、设计完成后,将综合设计报告交指导教师,并由指导教师提问答辩,设计成绩根据设计情况、考勤、报告内容和答辩情况决定,分为A、B、C、D等。1.4团队分工本设计由5位同学组成,每位同学负责的主要任务如表1.1 所示。表1.1团队分工序号姓名学号任务系数主要负责任务 120132123950.21硬件模块的设计 220132124680.22硬件模块的设计 32013212492 0.23程序设计 42013212793 0.16仿真调试 52013212798 0.18总体方案设计第2章 总体方案设计2.1直流电机调速原理根据直流电动机的转速公式,可见,其调速方式有电枢串电阻调速、电枢电源电压调速和弱磁调速三种,其中直流电机转速n的表达式为: n=U-IaRa+R/Ce 其中:U代表电枢电压;代表电枢电流;Ra+R表示电枢电路总电阻;表示每极磁通电枢串电阻调速:他励、并励直流电动机拖动负载运行时,保持电源电压及励磁电流为额定值,在电枢回路串入不同的电阻值,电动机运行在不同的转速,电动机的机械特性斜率随电枢回路串入电阻R变化,调速范围只能在基速(运行于固有机械特性上的转速)与零转速之间调节。这种调速方法的特点是设备简单、调节方便;缺点为调速范围限于在基速与零速之间调节,调速效率较低,电枢回路串入电阻后使得电动机机械特性变软,负载变化引起电动机产生较大的转速变化,转速稳定性差。电枢电源电压调速:直流电动机电枢回路不串接电阻,单独由一个可调节的直流电源供电,最高电压不超过额定电压;励磁绕组由另一电源供电,一般保持励磁磁通为额定值。这种调速方式的特点为改变电枢电源电压,电动机机械特性硬度不变,电动机低速稳定性好;若电枢电源电压能够连续调节,则能够实现无级调节电动机转速,且平滑性好,而被广泛采用。不足是调压设备的投资费用较高。弱磁调速:保持直流电动机电枢电源电压不变、电枢回路不串接电阻,电动机拖动负载转矩小于额定转矩时,减小直流电动机励磁磁通,电动机转速升高,其调速范围为基速与允许最高转速之间,调速范围有限。这种调速方式的特点为设备简单、调节方便,运行效率高,适合恒功率负载。不足之处是励磁过弱时,机械特性变软,转速稳定性差;拖动恒转矩负载,可能出现电枢电流过载现象。实际运行中,往往采用电枢电源电压调速及弱磁调速相结合的方法,保证调速范围宽、电动机无级调速,损耗较小、运行效率较高,能满足生产机械调速要求。在本设计中采用电枢电源电压调速。2.2 PWM脉宽调制原理利用电力电子器件的完全可控性,采用脉宽调制技术,直接将恒定的直流电压调制成可变大小和极性的直流电压作为电动机的电枢端电压,实现系统的平滑调速,这种调速系统就称为直流脉宽调速系统。脉宽调制(Pulse Width Modulation),是利用电力电子开关器件的导通与关断,将直流电压变成连续的直流脉冲序列,并通过控制脉冲的宽度或周期达到变压的目的。所采用的电力电子器件都为全控型器件,如电力晶体管(GTR)、功率MOSFET、IGBT等。对直流电动机进行PWM调速控制的原理图和输入/输出电压波形如图2.1所示。 图2.1 PWM调速控制原理和电压波形图在图2.1(a)中,当开关管MOSFET的栅极输入高电平时,开关管导通,直流电动机电枢绕组两端有电压Us。t1时间后,栅极输入变为低电平,开关管截止,电动机电枢两端电压为0。t2时间后,栅极输入重新变为高电平,开关管的动作重复前面的过程。这样,对应着输入的电平高低,直流电动机电枢绕组两端的电压波形如图2.1(b)所示。电动机的电枢绕组两端的平均电压U0为 U0 =t1Us+t20Vt1+t2=t1TUs=Us 式中 占空比,=t1T。 占空比表示在一个周期T里,开关管导通的时间与周期的比值。的变化范围为01。由上式可知,当电源电压Us不变的情况下,电枢的端电压的平均值U0取决于占空比的大小,改变值就可以改变端电压的平均值,从而达到调速的目的,这就是PWM调速原理。2.3直流电机调速方案直流电机调速控制系统以单片机为控制核心,通过矩阵键盘设置电机转速给定值并进行加速、减速、正反转及启停等操作。直流电机同轴的转盘和霍尔测速模块可将速度信号转换为脉冲信号,并送给单片机,单片机通过对脉冲计数计算得到实际转速。通过比较设定转速值和实际转速值,根据误差利用PID调节器进行实时控制。单片机输出相应占空比的PWM波直接送到电机驱动模块输入端控制直流电机转速。液晶显示模块可显示给定转速值和电机的实际转速值。综上,单片机主要完成参数设置、转速测量、参数显示和控制输出等功能。直流电机调速控制系统总体设计框图如图2.2所示。图2.2 系统方案框图本次设计的总体方案是利用硬件和软件相结合的方法来进行对电机的测速和调速,硬件方面以单片机为核心,与驱动电路,测速电路,键盘和LED显示模块构成最小系统。其中LED采用动态显示方式,键盘采用查询方式实现。软件上通过用C语言编程产生PWM脉冲信号的输出,键盘、LED显示器的数据传输。通过以上的设计,就实现了通过键盘输入速度给定值,实现按给定值跟踪,在LED显示器显示,最后再由单片机输出PWM脉冲信号。通过测速电路把转速反馈给CPU并且通过CPU把转速显示在LED显示器上,与想要得到的转速比较,从而达到想要设定的转速。2.4 PID算法概述在工业控制过程中,目前采用最多的控制方式仍然是PID方式。PID有几个重要的功能:提供反馈控制,通过积分作用可以消除稳态误差,通过微分作用预测将来。发达国家对于PID控制算法利用率都很高,这一方面是由于PID控制器具有简单而固定的形式,在很宽的操作条件范围内,都能保持较好的鲁棒性;另一方面是因为PID控制器允许工程技术人员以一种简单而直接的方式来调节系统。但是工业生产过程中,被控对象随着负荷变化或者受干扰因素影响,对象特性参数或者结构发生变化,PID参数不变将影响校正效果;然而PID参数复杂而繁琐的整定过程一直困扰着工程技术人员,其参数的整定一般需要经验丰富的工程技术人员来完成,既耗时又耗力,加之实际系统千差万别,又有滞后、非线性等因素,使PID参数的整定有一定的难度,致使许多PID控制器没能整定的很好,这样的系统自然无法工作在令人满意的状态,为此人们提出了自整定PID控制器,在线辨识对象特征参数,实时改变控制策略,使控制品质保持最佳。2.5硬件设计2.5.1 MCU硬件结构所谓单片机,通俗的来讲,就是把中央处理器CPU(Central Processing Unit),存储器(memory),定时器,I/O(Input/Output)接口电路等一些计算机的主要功能部件集成在一块集成电路芯片上的微型计算机。单片机又称为“微控制器MCU”。中文“单片机”的称呼是由英文名称“Single Chip Microcomputer”直接翻译而来的。直流电机调速控制系统以89C51为控制主芯片,89C51是一款低功耗、高性能的CMOS 8位微控制器,具有4K可编程Flash存储器,使用Atmel公司高密度非易失性存储器技术制造。在单芯片上,拥有灵巧的8位CPU和在线可编程Flash,具有双工串行通道,可实现在线编程功能,内部集成了看门狗定时器、双数据指针、全新的加密运算,使程序的保密性增强,兼容性强,软硬件调试方便。因此,使用该MCU作为主控芯片可以方便的设计电路。2.5.2 MCU最小系统单片机的最小系统是指单片机能正常工作所必须的外围电路,主要由单片机、晶振电路和复位电路构成。本设计的单片机最小系统电路如图2.3所示。图2.3 AT89C51最小系统复位电路产生复位信号,复位信号送入RST后还要送至片内的施密特触发器,由片内复位电路对触发器输出采样信号,然后由内部复位电路产生复位操作所要的信号。一般的复位电路可分为上电自动复位和按键复位,我们选用的是按键与上电复位。RST引脚是复位信号的输入端,只要高电平的复位信号持续两个机器周期以上的有效时间,就可以使单片机上电复位。复位信号是通过电容充电实现的,上电瞬间,RST端电位与VCC相同,随充电电流的减少,RST的电位逐渐下降,直到复位信号无效,完成上电自动复位。电路中电容C2和C3的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性,典型值通常选择为30pF左右。晶振的范围通常在1.212MHz之间,频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快,此次设计采用的晶体振荡频率为12MHz。2.5.3 键盘设计在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线连接到键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。图2.4 4*4键键盘接线图2.5.4电机驱动L298NL298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高,最高工作电压可达46V。L298N的输出电流大,瞬间峰值电流可达3A,持续工作电流为2A,额定功率为25W。L298N内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机、步进电动机、继电器线圈等感性负载。L298N采用标准逻辑电平信号控制,具有两个使能控制端,L298N可以外接检测电阻,将变化量反馈给控制电路。使用L298N芯片驱动电机,可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。L298N对直流电机控制的逻辑真值表如表2.1所示。表2.1 L298N对直流电机控制的逻辑真值表输入输出EN=HC=H;D=L正转C=L;D=H反转C=D制动EN=LC=;D=没有输出,电机不工作注:其中EN表示ENA或ENB;C、D分别为IN1、IN2或IN3、IN4;L为低电平,H为高电平,为不管是低电平还是高电平。图2.5 L298N驱动芯片接线图2.5.5 LCD显示模块液晶显示模块选用1602 型LCD显示模块LM016L来显示直流电机的设定转速及其实际转速。1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点,可以显示2行16个字符,有8位数据总线D0-D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。其外部引脚如2.5所示。图2.6 LM016L仿真图VSS:电源地。 VDD:电源正极。VEE:液晶显示偏压信号。 RS:数据/命令选择端。寄存器选择,高电平选择数据寄存器,低电平选择指令寄存器。 R/W:读写选择端。高电平进行读操作,低电平进行写操作。E:使能信号。D0-D7:数据输入/输出口。从RS和R/W的不同状态对LM016L进行不同的操作,具体见表2.2。表2.2 LM016L控制字表RSR/W操作说明00写入指令码D0D701读取输出的D0D7状态字10写入数据D0D711从D0D7读取数据2.5.6硬件电路图(整体)图2.7 全局电路仿真图2.6软件设计系统软件共分六大部分,分别为主函数、PWM波形发生函数、PID控制器函数、LCD显示函数、矩阵键盘扫描函数。根据直流电机调速控制系统需要,完成参数显示、转速设置、PID控制等功能。图2.8 主程序框图 图2.9 中断/测速程序框图图2.10 输出PWM波程序框图第3章 个人设计工作根据小组实际分工,本人主要负责程序设计。该部分工作对整个课程设计是十分重要的,一方面结合硬件电路,一方面涉及核心算法进行有效控制,所以对这部分工作做出以下详细阐述。3.1 主函数主函数是程序执行的入口处,首先进行定时器及外部中断参数设置和初始化工作,然后设置显示函数及键盘扫描函数的死循环,进行实时显示并不断扫描矩阵键盘,设置直流电机转速值及控制电机正反转、启停等都通过读取矩阵键盘的键值实现。控制器函数依靠“定时中断”(T0)结合软件延时实现以1秒为周期循环,当计数溢出即发生中断响应,计算控制量;PWM波形发生函数依靠“定时中断”(T1)实现周期为100us的循环,通过控制电机驱动模块输入电平调节电机转速。主函数流程图如图3.1所示。图3.1 主函数流程图3.2 PWM波形发生函数 PWM波形发生函数的功能是通过单片机产生不同占空比的PWM波,通过直流电机驱动模块实时控制直流电机的转速。PWM波形发生函数流程图如图3.2所示。图3.2 PWM波形发生函数流程图PWM波形发生函数产生PWM一周期波形如下图。由此可知,此函数决定电机驱动芯片输出占空比可调的周期为200*100us=20ms的PWM波形。图3.3 PWM波形示意图3.3 PID控制函数PID控制器函数的主要功能是根据霍尔传感器模块测得的电机实际转速和电机的设置转速,在单片机中进行运算后得到一个控制量,对直流电机的转速进行实时控制,以达到直流电机实际转速与设置转速的转速差最小。PID控制器函数流程图如图3.4所示。图3.4 PID控制器函数流程图转速的测量:关于转速计算: 1/num_medium 为一个脉冲的时间: 4/(num_medium)为4个脉冲时间,也就是电机旋转周期,那么其倒数15*num_medium就是转速。循环采样的实现:初始化函数调用后,计数器开启,当计数值达到最大65536时,T0溢出,硬件自动使中断触发位置位,中断允许条件下,CPU响应中断,进入中断服务函数,函数中首先进行定时器初值重置,保证了再次进入该函数,实现循环,同时进行一次采样和执行PID算法,但是软件延时又决定采样周期为1s。每秒进行一次转速计算即num_display = 15*num_medium;同时将num_medium数值清零,说明num_medium数值为1s内脉冲个数。 调节器的算法:误差较大时,执行PID算法;误差较小时,执行控制量增减1的算法。其中误差较小时采用的增减1算法是在实际硬件调试中总结出来的一种控制算法,虽然简单但是实用,而且效果较好。也可以所有情况均采取PID算法,不加区别。3.4 LCD显示函数LCD显示函数主要功能是对LCD进行初始化、写命令、写数据等相应操作。根据单片机运算后的结果实时显示直流电机的设置转速及实际转速。LCD显示函数流程图如图3.5所示。图3.5 LCD显示函数流程图程序开始执行后,先对液晶显示屏的显示字型进行设置,使用8位数据,显示两行,使用5*7的字型,当显示完一个字符,光标自动右移。液晶显示屏第一行显示直流电机的设置转速,第二行显示直流电机的实际转速。通过矩阵键盘对直流电机的转速进行相应的设定的同时,显示函数得到设定值后通过运算得到设定值的千位、百位、十位、个位并显示。当通过外部中断测得直流电机实际转速后,直流电机实际转速也被显示出来。设计总结 本课程设计论文所述的直流电机调速系统是的51单片机为核心的,而通过单片机来实现电机调整又有多种途径,相对于其他用硬件或者硬件与软件相结合的方法实现对电机进行调整,采用PWM软件方法来实现的调速过程具有更大的灵活性和更低的成本,它能够充分发挥单片机的效能,对于简易速度控制系统的实现提供了一种有效的途径。电气工程综合课程设计结束了,但我从中学到的知识却终将伴着我以后的学习和生活。特别是老师给予我们的指导和关怀。这次的题目是直流电机调速控制系统设计,把我们以前学的知识,如单片机、微机控制原理、电力电子技术、C语言等很好的融会贯通在一起。一开始主要是查找资料,老师总体上讲了该课题所涉及的知识、书籍,随后我们就到图书馆和网上去搜索。每组每个人都有不同的重点,应该说发挥了团队的最大效率。真的感受到了学一项新的东西不仅需要能力,还要有耐心。通过这次综合课程设计,我深深懂得了要不断把所学知识学以致用,也发现了自己的知识薄弱,还需通过自身不断努力,不断提高自己的分析问题、解决问题的能力,同时也提高了我的专业技能,拓展了我的专业知识面,使我更加体会到要想完成一件事必须认真、踏实、勤于思考、和谨慎稳重。25参考文献1 王晓明.电动机的单片机控制(第3版)M.北京:北京航空航天大学出版 社2011.3:137-149.2 孙立志. PWM与数字化电动机控制技术应用M.北京:中国电力出版社, 2008.3 罗金成. 智能全数字直流调速系统理论研究与设计D.武汉:武汉理工大学,2006.4 徐升. 全数字直流脉宽调速系统及其模糊控制算法D.武汉:华中科技大学,2006.5 杨琳琳. 数字直流调速系统的设计与实现D.合肥:合肥工业大学,2007.6 郭天祥等.51单片机C语言教程. 电子工业出版社,2008.7 林金阳基于MC51单片机的直流电机PWM调速系统长春工程学院学报(自然科学版)2009年第10卷第3期.8 胡文金单片机系统实训教程重庆:重庆大学出版社,2005.附录主程序:#include /包含单片机寄存器的头文件#include /包含_nop_()函数定义的头文件#include timer.hunsigned int KeyVal; /声明键盘值的全局变量,只在程序开始时候初始化一次sbit SDO=P23;sbit SDI=P24; sbit CS=P25;sbit CLK=P26;sbit EOC=P27;sfr KeyPort=0x90; /定义P1口/unsigned char code digit10=0123456789; /定义字符数组显示数字/*以下是对液晶模块的操作程序*/sbit RS=P20; /寄存器选择位,将RS位定义为P2.0引脚sbit RW=P21; /读写选择位,将RW位定义为P2.1引脚sbit E=P22; /使能信号位,将E位定义为P2.2引脚sbit BF=P07; /忙碌标志位,将BF位定义为P0.7引脚extern unsigned int speed0,speed; /外部全局变量extern int spwm ;/*函数功能:延时若干毫秒入口参数:n*/ void delaynms(unsigned char n) unsigned char i,j,k; for(i=0;in;i+) for(j=0;j2;j+) for(k=0;k165;k+) ; /*/* void delay(unsigned char n)unsigned char i;for(i=0;in;i+)_nop_(); */*函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙*/bit BusyTest(void) bit result; RS=0; /根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1; /E=1,才允许读写 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 result=BF; /将忙碌标志电平赋给result E=0; /将E恢复低电平 return result; /*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate为内容 ,choose为0时候进行指令操作,choose为1进行数据操作*/void WriteInstruction (unsigned char dictate ,bit choose) while(BusyTest()=1); /如果忙就等待 RS=choose; /RS为0进行指令操作,RS为1进行数据操作。 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置0 _nop_(); _nop_(); /空操作两个机器周期,给硬件反应时间 P0=dictate; /将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:对LCD1602的显示模式进行初始化设置*/void LcdInitiate(void) delaynms(15); /延时15ms,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0x38 , 0); /显示模式设置:162显示,57点阵,8位数据接口 delaynms(5); /延时5ms,给硬件一点反应时间 WriteInstruction(0x38 , 0); delaynms(5); /延时5ms,给硬件一点反应时间 WriteInstruction(0x38 , 0); /连续三次,确保初始化成功 delaynms(5); /延时5ms,给硬件一点反应时间 WriteInstruction(0x0c , 0); /显示模式设置:显示开,无光标,光标不闪烁 delaynms(5); /延时5ms,给硬件一点反应时间 WriteInstruction(0x06 , 0); /显示模式设置:光标右移,字符不移 delaynms(5); /延时5ms,给硬件一点反应时间 WriteInstruction(0x01 , 0); /清屏幕指令,将以前的显示内容清除 delaynms(5); /延时5ms,给硬件一点反应时间 /*以下是显示的说明*/*函数功能:显示字符串的函数*/ void display_string(unsigned char Str,unsigned char addr) unsigned char i=0; WriteInstruction(addr|0x80 , 0); /决定地址;lcd1602第一行第一个字符地址为0x00;若要显示在第二行,则用0x80与第二行第一个字符地址0x40相或 while(Stri!=0) /只要没有写到结束标志,就继续写 WriteInstruction(Stri , 1); /将数表中的字符送入lcd的寄存器 i+; /指向下一个字符 /*函数功能:显示一位数的函数入口参数:x,addr*/ void display1(unsigned char x,unsigned char addr) WriteInstruction(addr|0x80 , 0); WriteInstruction(digitx , 1); /*显示两位数的函数*/ void display2(unsigned char x,unsigned char addr) WriteInstruction(addr|0x80 , 0); WriteInstruction(digitx/10 , 1); WriteInstruction(digitx%10 , 1); /*函数功能:显示四位数的函数入口参数:x,addr*/void display4(unsigned int x,unsigned char addr)unsigned char i,j,k,l;i=x/1000;j=(x/100)%10;k=(x%100)/10;l=x%10;WriteInstruction(addr|0x80 , 0);WriteInstruction(digiti , 1); WriteInstruction(digitj , 1);WriteInstruction(digitk , 1); WriteInstruction(digitl , 1);/*函数功能:AD转换模块Tlc2543的读取转换值的函数入口参数:port(通道号)*/unsigned int read2543(unsigned char port) /通道号即tlc2543的引脚AINx,0-10有效,(本工程不需使用该函数)unsigned int ad,i;ad=0;CLK=0;CS=0;port=port4;for(i=0;i12;i+) if(SDO) ad|=0x01; SDI=(bit)(port&0x80); CLK=1; _nop_();_nop_();_nop_(); CLK=0; _nop_();_nop_();_nop_(); port=1; ad1;return(ad);/*键盘扫描程序*/unsigned char key() /注意:输入值与键盘不对应,以注释为准 KeyPort=0xf0; if(KeyPort&0xf0)!=0xf0) delaynms(5); if(KeyPort&0xf0)!=0xf0) KeyPort=0xfe; switch(KeyPort) case 0xee:KeyVal=0;break; /+ case 0xde:KeyVal=1;break; /- case 0xbe:KeyVal=2;break; /x case 0x7e:KeyVal=3;break; /chu KeyPort=0xfd; switch(KeyPort) case 0xed:KeyVal=4;break; /= case 0xdd:KeyVal=5;break; /3 case 0xbd:KeyVal=6;break; /6 case 0x7d:KeyVal=7;break; /9 KeyPort=0xfb; switch(KeyPort) case 0xeb:KeyVal=8;break; /0 case 0xdb:KeyVal=9;break; /2 case 0xbb:KeyVal=10;break; /5 case 0x7b:KeyVal=11;break; /8 KeyPort=0xf7; switch(KeyPort) case 0xe7:KeyVal=12;break; case 0xd7:KeyVal=13;break; case 0xb7:KeyVal=14;break; case 0x77:KeyVal=15;break; return KeyVal; /*函数功能:主函数*/ main(void) init(); LcdInitiate(); /将液晶初始化 delaynms(5); /延时5ms给硬件一点反应时间 display_string(PV=,0x00); /显示温度说明,后面的数为显示位置 display_string(r,0x08); /第9位 display_string(Kp=,0x0b); /显示输入的Kp值 display_string(SV=,0x40); /显示原始值提示 while(1) display4(2*speed,0x04); /为何要乘2?因为,设定proteus电机的转一圈输出10个脉冲,而一分钟为60秒。设定60会造成电机转速不稳,原因暂不明 display2(Key(),0x0e); /显示键盘输入的值,经验证输入9,6,3那一排时效果较好 display4(150,0x44); /输出原始值display2(spwm,0x4f); /显示经PID算法修正后的spwm,但显示乱码,尚不清楚原因 delaynms(250); /延时250ms PID算法模块:#include PID.h#include #include float maxvalue=100,minvalue=0;/输出范围控制float setpoint=150,e,e1=0,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘面试答题策略
- 复合材料与工程就业前景分析
- 合同履行保证书模板
- 基于5G物联网的楼宇设备深度集成管理模式研究
- 2026年高端民宿运营公司固定资产管理制度
- 甲亢术后护理专题:从手术到康复
- 护理师资培训与专业发展
- 2024年玛沁县紧密型医共体招聘考试真题
- 高风险药品安全使用管理培训
- 2025年四川省水利厅下属事业单位考试真题
- 润滑技术课件
- ZLP630高处作业吊篮使用说明书
- 医院运营助理培训
- 新生儿小肠坏死性结肠炎
- 医院十五五发展规划汇编
- 健康养生讲座课件
- T/CIE 166-2023企业级固态硬盘测试规范第2部分:性能测试
- 2025年广西公需科目答案02
- 净菜项目可行性研究报告
- 中国老年高血压管理指南(2023版)解读
- 道德与法治初一上全册知识点(含思维导图)
评论
0/150
提交评论