1、第1页共40页计算机控制系统课程设计报告2015年7月3日题目名称基于STC12C5A08S2的积分分离PID控制实验装置设计姓名12044315120443141204431612044316专业自动化专业班级学号12044315120443141204431612044316同组人12044315120443141204431612044316指导教师老师第2页共40页计算机控制系统课程设计任务书20142015学年第2学期第19周注1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院存档。自带一份备查。2、课
2、程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。20142015学年第一学期第20周20周题目基于STC12C5A08S2的积分分离PID控制实验装置设计内容及要求设计积分分离PID控制实验装置,其中单片机是STC12C5A08S2,分析电路原理,焊接加工装置的完整电路板,利用ADC0809芯片进行A/D转换,要求给定量和反馈量均为双极性输入,电压范围12V12V,利用DAC0832芯片进行D/A转换,要求双极性输出模拟电压,电压范围110V10914V,左边5个数码管显示给定电压XXXX,右边5个数码管显示反馈电压YYYY,单位为V。并且把给定量和反馈量数据送PC机显示。要求
3、单片机工作在1T模式,与12T模式工作的STC89C52比较运算速度。附加内容,利用单片机内部嵌入的AD和PWM加滤波代替外部的A/D和D/A完成控制。进度安排1、方案论证05天2、分析、设计、调试、运行4天3、检查、整理、写设计报告、小结05天学生姓名12044314,12044315,12044316,12044316指导时间2015年6月29日至2015年7月3日指导地点F401任务下达2015年6月26日任务完成2015年7月3日考核方式1评阅2答辩3实际操作4其它指导教师老师系(部)主任王长坤老师第3页共40页任务分工第四组成员任务分工12044314软件子函数编写;12044315
4、软件总体整合与编写,软件调试,PCB电路设计与制作;12044316硬件电路原理图制作并参与PCB设计;12044316PCB焊接与原理图制作。第4页共40页摘要本次微型计算机课程设计所选题目是基于STC12C5A08S2的积分分离PID控制实验装置设计,其中单片机是STC12C5A08S2,结合电路原理,设计PCB电路,焊接加工装置的完整电路板,利用ADC0809芯片进行A/D转换,要求给定量和反馈量均为双极性输入,电压范围12V12V,利用DAC0832芯片进行D/A转换,要求双极性输出模拟电压,电压范围110V10914V,左边5个数码管显示给定电压XXXX,右边5个数码管显示反馈电压Y
5、YYY,单位为V。并且把给定量和反馈量数据送PC机显示。要求单片机工作在1T模式,与12T模式工作的STC89C52比较运算速度。关键字单片机,微型计算机控制系统,积分分离第5页共40页目录1任务书22任务分工33硬件设计(包括涉及到的硬件电路原理图或框图)6124软件设计(包括主、子函数模块及其程序)13205硬件制作(包括PCB制作与电路焊接)20246软件调试24387设计总结398参考文献40第6页共40页基于STC12C5A08S2的积分分离PID控制实验装置设计一、硬件设计基于STC12C5A08S2的积分分离PID控制实验装置课题电路硬件主要由12C5A08S2下载电路、12C5
6、A08S2主板电路组成。一、12C5A08S2下载电路组成12C5A08S2电路用于下载程序,由USB接口,CH340G芯片等组成1、电路原理图如下2、PCB设计图如下第7页共40页3、下载电路PCB三维图如下4、下载电路模拟三维图如下5、下载电路简易清单如下第8页共40页二、12C5A08S2主板电路组成主板电路由12C5A08S2最小系统电路、数码管显示电路、电源电路、运放电路组成;1、12C5A08S2最小系统电路包括晶振电路、复位电路,是整个电路的控制核心。最小系统电路如下2、数码管电路由两个8段4位数码管组成,显示电路的电压,左边数码管显示给定电压XXXX,右边数码管显示反馈电压YY
7、YY。数码管电路如下第9页共40页3、电源电路由ICL7662转12V电路,7805、8905正负5V电路、滤波电路和LED指示电路组成,给电路提供电源。电源电路如下4、运放电路由TL082运放与TL084组成,通过比较来处理电路里面的电压。运放电路如下第10页共40页5、主板整体电路如下第11页共40页6、主板电路PCB设计如下7、主板电路PCB三维图如下第12页共40页8、主板电路模拟三维图如下9、主板电路元器件简易清单如下第13页共40页二、软件设计STC12C5A08S2积分分离PID控制软件是在基本PID程序上做进一步处理,加上积分分离进而使PID调节效果更加明显。其中涉及模数转换和
8、数模转换可以通过外部AD与DA实现,也可以通过STC12C5A08S2内部AD与DA实现。软件主要包括主函数,位置控制线性标度变换初始化、T0T1初始化、数字PID控制计算、DA输出函数、位置控制的显示数据更新、反馈量显示、中断服务子函数组成。代码模块内容如下1、位置控制线性标度变换初始化模块VOIDSCALECONVERSION_VALUE_INITVOIDE_KTAM_RE_KT_TA0_RP_KTNM_RP_P_KTN0_RA1_RE_KTE_KT_T/P_KTP_P_KTB1_RE_KT_TE_KTE_KT_TP_P_KT/P_KTP_P_KTE_KTAM_ME_KT_TA0_MP_K
9、TNM_MP_P_KTN0_M第14页共40页A1_ME_KTE_KT_T/P_KTP_P_KTB1_ME_KT_TE_KTE_KT_TP_P_KT/P_KTP_P_KT2、T0T1初始化模块VOIDT0T1_INITVOIDTMOD0X21SCON0X40PCON0X80TH00XFBTL00X80TH10XFDTL10XFDEA1ES0ET01TR01TR113、数字PID控制计算模块VOIDPIDVOID第15页共40页P_P_KTKPE_KTP_I_KTP_I_KT_TP_I_KTKIE_KT/积分分离时去掉该行,换成【IFE_KT50ELSEIFE_KT255DA255ELSEIFD
10、A_KT50ELSEIFE_KTINCLUDEDEFINEUCHARUNSIGNEDCHAR/无符号字符型变量新表示方法定义DEFINEUINTUNSIGNEDINT/无符号整型变量新表示方法定义DEFINEAD0XBYTE0XFCFF/给定量AD通道0的端口地址DEFINEAD1XBYTE0XFDFF/反馈量AD通道1的端口地址第28页共40页DEFINEDAXBYTE0XDFFF/DA转换数据输入端口地址DEFINEA0_R1066/30板,给定下限伏,1066V2132V0368VDEFINEAM_R1087/30板,给定上限伏,1087V2174V4674VDEFINEN0_R0X12
11、/30板,给定下限对应AD值,2560368/501884接近180X12,基本无误差DEFINENM_R0XEE/30板,给定上限对应AD值,2564674/502393接近2380XEE,有点误差DEFINEA0_M1069/30板,反馈下限伏,1069V2138V0362VDEFINEAM_M1100/30板,反馈上限伏,1100V220V47VDEFINEN0_M0X15/30板,反馈下限对应AD值,2560362/50185接近210X15,误差偏大DEFINENM_M0XED/30板,反馈上限对应AD值,25647/502406接近2370XED,误差偏大DEFINET001/采样
12、周期常数定义秒DEFINEDISPLAYDATAXBYTE0X7FFF/数码管段码锁存器端口地址DEFINEDISPLAYBITXBYTE0XBFFF/数码管位码锁存器端口地址DEFINESCANCYCXBYTE0XEFFF/扫描周期锁存器端口地址SBITALARM_LP34/光测试指示的输出位定第29页共40页义,逻辑1光测试指示灯亮SBITLSIGNP16/左边给定的符号位SBITRSIGNP17/右边反馈的符号位SBITEOCP32/AD转换结束的检测位定义转换结束高电平UCHARR_KT,M_KT/给定数据源和滤波后的整数部分变量定义INTAX/显示用中间变量定义BITNEW_CYCL
13、E_FLAG0/有新采样数据的位定义1是有新数据CHARDISPBUF10/显示缓冲区字符型数组定义INTDA_KT/控制量的整数部分定义FLOATE_KT,E_KT_T/当前电压误差、上次电压误差浮点数定义伏FLOATP_P_KT,P_I_KT,P_D_KT,P_I_KT_T,P_KT/当前各分量、上次积分分量及总控制量定义FLOATKP,KI,KD/PID校正系数定义FLOATAX_R,A1_R,B1_R/标度变换后给定量及其斜率和截距定义FLOATAX_M,A1_M,B1_M/标度变换后反馈量及其斜率和截距定义UCHARM0,DISP_GENGXIN0/扫描显示位计数、显示更新计数字符变
14、量定义FLOATCODEKPTABLE8100,200,500,100,100,200,500,100第30页共40页FLOATCODEKITABLE800167,00334,00835,0167,00625,0133,0357,0769FLOATCODEKDTABLE8833,167,417,837,900,200,550,120UCHARCODEDISPTAB100X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F/共阴09数字段码表UCHARCODEDISPBIT100XFE,0XFD,0XFB,0XF7,0XFF,0XEF,0XDF,0XB
15、F,0X7F,0XFF/共阴位码表/位置控制线性标度变换初始化/VOIDSCALECONVERSION_VALUE_INITVOID/暂时用E_KTE_KT_TP_KTP_P_KTE_KTAM_RE_KT_TA0_RP_KTNM_RP_P_KTN0_RA1_RE_KTE_KT_T/P_KTP_P_KT/教材中的式718A1AMA0/NMN0B1_RE_KT_TE_KTE_KT_TP_P_KT/P_KTP_P_KT/教材中的式718B1A0AMA0N0/NMN0E_KTAM_ME_KT_TA0_MP_KTNM_MP_P_KTN0_MA1_ME_KTE_KT_T/P_KTP_P_KT/教材中的式7
16、18A1AMA0/NMN0B1_ME_KT_TE_KTE_KT_TP_P_KT/P_KTP_P_KT/教材中的式718B1A0AMA0N0/NMN0/T0T1初始化/第31页共40页VOIDT0T1_INITVOID/T0、T1初始化程序110592MHZTMOD0X21/T0方式1定时、T1方式2定时8位自动重装SCON0X40/8位UART波特率可变21T1溢出率/32PCON0X80/第8位SMOD1,TH00XFB/T0频率11059200/12/655360XFB80800HZTL00X80/T0方式1定时周期1/800000125S125MSTH10XFD/T1溢出率1105920
17、0/12/256253307200HZTL10XFD/波特率2307200/3219200BPSEA1/允许中断ES0/禁止串行发送结束中断ET01/允许T0中断TR01/启动T0定时TR11/启动T1定时/数字PID控制计算/VOIDPIDVOID/采用与教材中的式815相同的PID算法P_P_KTKPE_KT/控制量的比例部分计第32页共40页算P_I_KTP_I_KT_T/P_I_KTKIE_KT/控制量的积分部分计算IFE_KT50ELSEIFE_KT255DA255/控制量正饱和时理论上DA输出约10914VELSEIFDA_KT0X11,113V0XF0,0V0X7F,0X7F0X
18、11/1110/V,/假设误差10V,则误差AD级数字量100;DA输出10V,控制量由VX9112N256/256计算得244364,控制量DA_KT244364128116364,如果不做任何控制,则误差数字量应该放大116364倍E_KT116364/116364/100116364,DA数字为单位,VX9112N256/256PID/PID校正控制时要,无PID校正控制时去掉/DA_KTINTE_KT/无PID控制时要加上,PID校正控制时去掉DAC/将控制量输出E_KT_TE_KT,P_I_KT_TP_I_KT/迭代移位,为下一次控制作准备TI0/清除发送结束状态标志ES1/允许串行
19、发送结束中断SBUFR_KT/发送给定的AD值DISP_GENGXIN1/1,2,3,40,1,2,3,40第36页共40页IFDISP_GENGXIN2DISP_G/是2,给定部分显示缓冲区中段码信息的更新ELSEIFDISP_GENGXIN4DISP_F/是4,反馈部分显示缓冲区中段码信息的更新DISP_GENGXIN0/清0NEW_CYCLE_FLAG0/新采样周期标志清0WHILE1/T0中断服务程序/VOIDT0VOIDINTERRUPT1USING1/125MS中断1次,每次均要进行显示处理TH00XFB/T0时间常数高字节重装TL00X80/T0时间常数低字节重装IFM8/10M
20、S到了吗因为125MS810MSAD00X00/R_KTSCANCYC/输入拨码的值,ON位逻辑0,OFF为逻辑1IFNEW_CYCLE_FLAG1ALARM_L1NEW_CYCLE_FLAG1/置有新采样数据标志M0/M清0第37页共40页WHILEEOC0/转换结束否需217881389微秒R_KTAD0/在此暂时用M_KT充当中间变量,读取AD结果AD10X00/启动AD0809的1通道反馈量ADAX_RA1_RFLOATR_KTB1_R/给定量线性标度变换1066V1087V对30板WHILEEOC0/转换结束否需217881389微秒M_KTAD1/读取反馈量AD结果RSIGN1LS
21、IGN1DISPLAYBIT0XFF/关闭显示DISPLAYDATADISPBUFM/查段码表送数显的段端口DISPLAYBITDISPBITM/查位码表送数显的位端口IFM4RSIGN0ELSERSIGN1IFM9LSIGN0M/修改下一次的显示位/TXD中断服务程序/VOIDTXDVOIDINTERRUPT4USING2/每10MS需要发送2个第38页共40页字节,其中第2字节靠串行发送中断完成TI0/清除发送结束状态标志ES0/发送到最后1个字节,禁止发送结束中断SBUFM_KT/发送报文第2字节,即反馈量的AD值四、调试中遇到的问题在调试过程中,会遇到硬件问题,也会遇到代码问题;当遇到
22、问题时,可以用排除法及检测法来一步步处理BUG,最终解决问题。在硬件方面,有的时候会有电路虚焊或漏焊问题,也有的时候有元器件损坏问题,我们通过万用表一步一步排查最终解决相应硬件问题。在代码方面,我们前几个程序也出了比较大的问题,后面通过假设验证,模拟数据等方式把程序问题找了出来并不断改善优化方法,最终确定了最后程序。代码有的时候也出低级问题,这方面也需要静下心来仔细查找,不能大意。我们在处理BUG的过程中,运用了一些好的排除方法,比如用一个LED灯检验程序是否进入中断,用模拟数据检验电路输入输出有没有问题等,好的办法往往能达到事半功倍的效果,做东西的效率也因此迅速提。第39页共40页五、设计总
23、结本次课程设计题目难度中等,在制作的过程中,也遇到了比较多问题,有大的错误,也有低级错误,课程设计可以很好地培养一个人发现问题、解决问题的能力,我们在处理BUG的过程中,运用了一些好的排除方法,比如用一个LED灯检验程序是否进入中断,用模拟数据检验电路输入输出有没有问题等,好的办法往往能达到事半功倍的效果,做东西的效率也因此迅速提。此外,课设也需要我们能静得下心来,好好好去分析实验现象,做出最正确的判断。同时,课设也是一个自我检测的过程,在设计过程中也发现自己哪些地方有所忽视。总的来说,课设值得重视,值得好好去完成课程设计是一个很好的理论结合实践的过程,在这个过程中,不仅可以把51单片机理论知
24、识重新温习一遍,还可以学习一些之前没有接触过的STC12C5A08S2的理论知识。更重要的是,我们可以在实践中进一步加深对单片机知识的理解,同时在发现问题、解决问题的过程中进一步提升自己的处理问题的能力。课程设计是一个很好的学以致用的环节,我们平时学的很多东西没有投入实际运用,可能是因为没有区找机会,也可能是因为自己不敢去尝试,而在这类课程设计情况下,我们都会自觉地去面对那些问题,不断想办法去解决眼前的问题,有思考才有成长,比起考试,课设也不失为一种很好的学习水平检测方式。这是一周的时间,不过在我看来,会花时间去好好做得人的收获肯定不止一个礼拜,现在也算结束了,但这不是理论结合实践的结束,而是一个新的领域的开始。此次课程设计题目不是特别难,但也有点难度,虽然因为有其它事情延迟了几天交,不过我们还是从中得到了自己的假设能够验证成功的喜悦,此外,最重要的,还是我们自己知道我们掌握了更多知识点,学到了更多第40页共40页六、参考文献1新概念51单片机C语言教程(郭天祥版)2AD转换原理之ADC0809芯片2STC12C5A08S2中文教程