下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 基于STM32的舵机控制系统毕业设计论文

基于STM32的舵机控制系统毕业设计论文.doc

基于STM32的舵机控制系统毕业设计论文

tang中维
2017-10-06 0人阅读 举报 0 0 暂无简介

简介:本文档为《基于STM32的舵机控制系统毕业设计论文doc》,可适用于综合领域

基于STM的舵机控制系统毕业设计论文沈阳航空航天大学北方科技学院毕业设计,论文,基于STM的舵机控制系统I沈阳航空航天大学北方科技学院毕业设计,论文,摘要随着越来越多的高科技产品逐渐融入了日常生活中舵机的控制系统发生了巨大的变化。单片机、C语言等前沿学科的技术的日趋成熟与实用化使得舵机的控制系统有了新的的研究方向与意义。本文描述了一个由STM微处理器、舵机、LCD显示器、键盘等模块构成的提供基于STM的PWM信号舵机的控制系统。该系统采用STM微处理器为核心在MDK的环境下进行编程根据键盘的输入使STM产生周期性PWM信号用此信号对舵机的速度及转角进行控制并且通过LCD显示出数据。结果表明该系统具有结构简单、工作可靠、精度高等特点关键词:STM微处理器舵机系统LCD显示PWM信号II沈阳航空航天大学北方科技学院毕业设计,论文,AbstractAswellasthehightechproductsgraduallyintegratedintothedailylife,servocontrolsystemhasundergonetremendouschangesSCMandClanguageofthefrontierdisciplinessuchmaturetechnologyandpracticalMakesteeringcontrolsystemisanewresearchdirectionandmeaningThispaperdescribesaSTMmicroprocessors,steering,LCDdisplayandkeyboard,etcBasedontheSTMservocontrolsystemofPWMsignalThissystemusesSTMmicroprocessorasthecore,MDKintheenvironment,accordingtothekeyboardinputprogramming,STMproduceperiodicPWMsignal,withthissignaltothevelocityandAngleofsteeringgearcontrol,andthroughtheLCDdisplaydataThefeaturesofthesimplehardware,stableoperationandhighpreci角度进行放大加快舵机响应速度LCD显示器LCD显示器是本课设的主要器件当键盘的输入量经过STM微处理器进行数据的处理由模拟量转换成数据量传给LCD进行显示数据。LCD模块的连接有两种方法:直接控制和间接控制。直接控制实际指的是LCD模块的总线接口直接与MCU端口连接然后MCU通过程序控制端口来模拟LCD的总线时序来完成对其的控制操作而间接控制指的是MCU本身就有外部总线拉出与LCD的总线接口对应的连接上程序中直接操作总线以控制LCD。考虑到电路设计的简洁性及灵活性本系统采用PWM信号点亮LCD的方式硬件电路图如下沈阳航空航天大学北方科技学院毕业设计,论文,图PWM信号点亮LCD硬件电路时钟电路的制作STM工作时是在统一的时钟脉冲控制下一拍一拍的进行的这个脉冲是由STM控制器中的时序电路发出的STM的时序就是CPU在执行指令时所需控制信号的时间顺序。为了保证各部件间的同步工作STM内部电路就在唯一的时钟信号控制下严格的按时序进行工作。要给单片机提供时序要有相关的硬件电路即振荡器和时钟电路。常用的时钟电路设计有两种方式一种是内部时钟方式另一种是外部时钟电路方式。本系统采用了内部时钟方式利用STM内部的振荡器然后在引脚OSCIN和OSCOUT两端跨接晶体就构成了稳定的自激振荡器其发出的脉冲直接送入内部时钟电路如图所示。沈阳航空航天大学北方科技学院毕业设计,论文,图STM内部时钟方式电路外接晶振时C和C值选择为pFCC对频率有微调作用晶体振荡频率为MHz。在实际连接中为了减少寄生电容更好地保证振荡器稳定、可靠地工作振荡器和电容应尽可能安装得与单片机芯片靠近。沈阳航空航天大学北方科技学院毕业设计,论文,第章软件设计STM固件库简介STM的函数库是一个固件函数包它由程序、数据结构和宏组成包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例。通过使用本固件函数库无需深入掌握细节用户也可以轻松应用每一个外设。因此使用本固态函数库可以大大减少用户的程序编写时间进而降低开发成本。每个外设驱动都由一组函数组成这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API(applicationprogramminginterface应用编程界面)驱动API对该驱动程序的结构函数和参数名称都进行了标准化。所有的驱动源代码都符合“StrictANSIC”标准(项目于范例文件符合扩充ANSIC标准)。驱动源代码已经文档化他们同时兼容MISRAC标准(根据需要我们可以提供兼容矩阵)。由于整个固态函数库按照“StrictANSIC”标准编写它不受不同开发环境的影响。仅对话启动文件取决于开发环境。该固态函数库通过校验所有库函数的输入值来实现实时错误检测。该动态校验提高了软件的鲁棒性。实时检测适合于用户应用程序的开发和调试。但这会增加了成本可以在最终应用程序代码中移去以优化代码大小和执行速度。因为该固件库是通用的并且包括了所有外设的功能所以应用程序代码的大小和执行速度可能不是最优的。对大多数应用程序来说用户可以直接使用之对于那些在代码大小和执行速度方面有严格要求的应用程序该固件库驱动程序可以作为如何设置外设的一份参考资料根据实际需求对其进行调整。本设计即是利用STM中的固件库为基础而编写的直接调用现成的外设驱动函数使得主程序变的更加简洁可读性比较高。本设计中用到的固件库函数主要有时钟初始化相关的固件库函数、IO口初始化相关的固件库函数和SPI总线接口相关的固件库函数。沈阳航空航天大学北方科技学院毕业设计,论文,软件的总体设计本设计的程序编辑完成后放在项目的主程序中是在其中的一个时间片执行的也就是说主程序周期性的采集所输入的模拟值。在本设计中由于要保证程序的连续的运行所以要持续的对输入量进行采集也就是说本设计中的各个初始化工作完成之后程序会死循环在通讯子程序里面从而连续不断的采集控制的模拟值。设计原程序时采用模块化的思想将程序划分为几块这样做即使得程序结构清晰、增强可读性又使得程序在调试的时候可以单独对每个子程序分别调试减少了程序调试的时间。本设计的源程序主要分为以下几个部分:时钟初始化子程序GIPO初始化子程序嵌套向量中断控制器(NVIC)初始化子程序和AD转换子程序。软件的总体流程图如下图所示。开始系统时钟初始化GIPO初始化NVIC初始化AD初始化(DMA模式)判断数否据改变是PWM信号LCD显示图软件总体流程图沈阳航空航天大学北方科技学院毕业设计,论文,时钟初始化子程序系统时钟SYSCLK可以选择三种类型的时钟提供:HSE、HIS和PLLCLK其中HSE为外部高速时钟可以由外部晶振电路提供晶振电路分别接到SOCIN和SOCOUT即可而HSI时钟信号由内部MHz的RC振荡器产生可直接作为系统时钟或在分频后作为PLL输入由于外部时钟源工作稳定而且时钟频率精确所以本设计采用外部时钟源作为系统的时钟。STM的系统时钟可以有内部的振荡器提供也可以由外部的由晶振构成是振荡电路提供时钟本设计中采用外部振荡电路为STM提供稳定的时钟脉冲。由于STM中的包含的大部分外设是在连续的时钟脉冲下才能正常工作所以STM中存在一些分频器和倍频器这些分频器或倍频器将系统时钟进行分频或者倍频用来为相应的外设提供合适的时钟信号下图为STM时钟树。沈阳航空航天大学北方科技学院毕业设计,论文,图STM时钟树沈阳航空航天大学北方科技学院毕业设计,论文,本设计所需的STM的外设包括TIM、TIM和GPIOA口所以也要对外设的时钟进行设置。由于在APB和APB系统总线外设上所以要对APB和APB总线的时钟频率进行设置。经过APB与APB的分频将SYSCLK转换成可以进行外设及TIMX可以接收的系统时钟。在时钟初始化子程序中先对系统时钟的模式进行选择即将系统时钟设置为HSE模式(外部时钟模式)然后设置AHB时钟等于系统时钟且设置了低速或高速AHB最后使能的时钟时钟初始化子程序的流程图如下图。开始使能外部高速晶振HSE否HSE设置成功,是设置AHB时钟设置PLL时钟源及倍频系数检查指定的RCC否标志位设置与否是选PLL作为系统的时钟图时钟初始化流程图IO口初始化子程序沈阳航空航天大学北方科技学院毕业设计,论文,每个GPIO端口有两个位配置寄存器(GPIOxCRLGPIOxCRH)两个位数据寄存器(GPIOxIDR和GPIOxODR)一个位置位复位寄存器(GPIOxBSRR)一个位复位寄存器(GPIOxBRR)和一个位锁定寄存器(GPIOxLCKR)。每个IO端口位可以自由编程然而I端口寄存器必须按位字被访问。GPIOxBSRR和GPIOxBRR寄存器允许对任何GPIO寄存器的读更改的独立访问这样在读和更改访问之间产生IRQ时不会发生危险。当作为输出配置时写到输出数据寄存器上的值(GPIOxODR)输出到相应的IO引脚。可以以推挽模式或开漏模式(当输出时只有NMOS被打开)使用输出驱动器。输入数据寄存器(GPIOxIDR)在每个APB时钟周期捕捉IO引脚上的数据。本设计使用的STM的TIMChannel,其接口对应的是STM上的PA口。设计中PA的通讯方式是推挽式输出方式设置的最高输出速率为MHz。PWM信号子程序脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用方波的占空比被调制用来对一个具体模拟信号的电平进行编码。脉冲宽度调制模式可以产生一个由TIMARR寄存器确定频率、由TIMCCRx寄存器确定占空比的信号。在TIMCCMRx寄存器中的OCxM位写入’’确定PWM模式能够独立地设置OC输出通道产生一路PWM。通过设置TIMCounterMode设置其为向上计数通过设置TIMCCMRx寄存器的OCPE位使能相应的预装载寄存器最后还要设置TIMCR寄存器的ARPE位使能自动重装载的预装载寄存器。因为仅当发生一个更新事件的时候预装载寄存器才能被传送到影子寄存器因此在计数器开始计数之前必须通过设置TIMEGR寄存器中的UG位来初始化所有的寄存器。OCx的极性可以通过软件在TIMxCCER寄存器中的CCxP位设置它可以设置为高电平有效或低电平有效。OCx的输出使能通过(TIMxCCER和TIMxBDTR寄存器中)CCxE、CCxNE、MOE、OSSI和OSSR位的组合控制。在PWM模式下TIMxCNT和TIMxCCRx始终在进行比较依据计数器的计数方向以确定是否符合TIMxCCRxTIMxCNT或者TIMxCNTTIMxCCRx。根据TIMxCR寄存器中CMS位的状态定时器能够产生边沿对齐的PWM信号或中央对齐的PWM信号。沈阳航空航天大学北方科技学院毕业设计,论文,AD转换初始化子程序位ADC是一种逐次逼近型模拟数字转换器。它有个通道可测量个外部和个内部信号源可以把转换分成两组:规则的和注入的。在任意多个通道上以任意顺序进行的一系列转换构成成组转换各通道的AD转换可以单次、连续、扫描或间断模式执行ADC的结果可以左对齐或右对齐方式存储在位数据寄存器中。在开始ADC转换和个时钟周期后EOC标志被设置位ADC数据寄存器包含转换的结果。时序图如下图图时序图在ADC初始化设置时首先开启AHB外设时钟使能寄存器DMA时钟定义转换数据量设置DMA的通道的初始化独立地选择通道的采样时间在通道设置看门狗开启ADC并启动转换应用连续转换模式使用DMA模式接着便开始转换规则通道完成由模拟量到数据量的转变。其结构图如下沈阳航空航天大学北方科技学院毕业设计,论文,开始存器开启AHB寄设置看门狗设置转换模式开启转换通道开始转换图ADC转换LCD显示子程序液晶显示模块的显示器上的显示点与驱动控制芯片中的显示缓存RAM是一一对应的驱动控制芯片当中共有(Pagexbit)X个位的显示RAM区。而显示器的显示点阵大小为X点所以实际上在液晶显示模块中有用的显示RAM区为X个位按byte为单位划分共分为个Page每个Page为行而每一行为个位(即列)。驱动控制芯片的显示RAM区每个byte的数据对应屏上的点的排列方式为:纵向排列低位在上高位在下。如要点亮LCD屏上的某一个点时实际上就是对该点所对应的显示RAM区中的某一个位进行置操作所以就要确定该点所处的行地址、列地址。从图中可以看出MzL液晶显示模组的行地址实际上就是Page的信息每一个Page应有行而列地址则表示该点的横坐标在屏上为从左到右排列Page中的一个Byte对应的是一列(行即个点)达列根据这样的关系在程序中控制LCD显示屏的显示。沈阳航空航天大学北方科技学院毕业设计,论文,图显示RAM区与显示屏点映射图沈阳航空航天大学北方科技学院毕业设计,论文,第章系统调试调试方案本设计所使用的硬件平台包括STM、ADC转换器和LCD显示器将STM、ADC转换器和LCD显示器共同焊接到PCB板上所以实际的调试过程中主要是将程序下载到STM中进行联调。硬件调试方案本设计所使用的硬件平台已经基本搭好由于STM的集成度都比较高所以本设计所用到的元器件比较少电路的链接也比较简单。STM与舵机之间只有三条连接线即舵机的电源线、地线和信号线。硬件部分的调试系统主要是采用逐块调试法。先对整个电路板的STM处理器进行检测当确信焊接无误后安装其它元器件进行调试。第一步:检测LCD显示器是否正常工作。第二步:对ADC转换器进行测试、调试。第三步:对舵机进行测试。当这些工作都完毕后才能开始整机连调。软件调试方案软件的调试和硬件的调试都是独立进行的软件部分包括时钟初始化子程序、ADC转换子程序、PWM信号子程序和LCD显示子程序。软件调试中需要用到的测量信号可以用仿真实验台上的电压信号进行模拟整个测试过程可以通过keiluvision仿真软件进行模拟仿真调试。完成程序的设计和硬件的搭接之后要能确保软件调试和硬件调试各自都正确无误接着再对硬、软件进行联合调试。在调试中继续找出单独调试中无法显现的故障反复进行改进软件、修改硬件设计的工作直到所设计的舵机控制系统能够进行正确仿真后才能进行最后的软件固化与整机的组装工作。沈阳航空航天大学北方科技学院毕业设计,论文,故障调试及解决方法一、软件编写完成后进行软件仿真时输出的PWM信号出现了周期的错误。原因分析与解决方法:PWM信号是由STM微处理器的定时器产生通过更改定时器的初始设置更改TIMPeriod设置了一个更新事件装入活动的自动重装载寄存器周期的值更改TIMPrescaler设置来改变TIM时钟频率除数的预分频值通过设置IMCCR寄存器确定占空比的信号这样就可以得到正确的PWM信号。二、程序仿真正确将程序下载到STM处理器中时LCD显示的数据不稳定。原因分析与解决方法:既然能够显示数据说明硬件LCD连接是正确的。可知还是在软件编写时出现了问题便从LCD显示程序一步步检查最后发现定义数据的类型出现了错误改正后显示出稳定的舵机转动的角度。三、为什么舵机会老发出吱吱的响声,原因分析:舵机老发出吱吱的来回定位调整响声是由于有的舵机无滞环调节功能控制死区范围调得小只要输入信号和反馈信号老是波动它们的差值超出控制死区舵机就发出信号驱动电机。另没有滞环调节功能如果舵机齿轮组机械精度差齿虚位大带动反馈电位器的旋转步步范围就已超出控制死区范围那舵机必将调整不停吱吱不停。四、舵机为何抖舵,控制死区敏感输入信号和反馈信号因各种原因波动差值超出范围舵臂动所以抖舵。联调结果总体来说软件还是比较容易实现的但由于不联系硬件其中的某些错误是看不出来的所以重要的部分还是软硬件联调。系统软、硬件的联调是一个不断完善的过程常常需要反复多次修改补充才能调试出一个性能良好的系统。在联调过程中我们经常遇到故障这时需要对系统进行检查万用表是使用最多的检查工具。在系统联调时不排除某个元件被烧坏或者不工作。在软件和硬件联合调试后系统上电后进行实物演示演示结果证明该设计基本达到了预期的设计目的键盘能够控制舵机的角度和速度并通过LCD显示舵机的角度和速度。但由于本人水平有限设计的舵机控制沈阳航空航天大学北方科技学院毕业设计,论文,系统难免结构有些简单、设计不尽合理实现起来也不是十分的准确。但能够实现毕业设计课题所要求的功能。软件仿真时产生的PWM信号如图所示图为舵机转动图图LCD显示的舵机转动的角度图基于STM的舵机控制系统图。图PWM信号沈阳航空航天大学北方科技学院毕业设计,论文,图舵机的转动图舵机转角的显示沈阳航空航天大学北方科技学院毕业设计,论文,图基于STM的舵机控制系统沈阳航空航天大学北方科技学院毕业设计,论文,结论舵机是自动化专业的前沿技术现代社会在航空航天、工业生产和平常生活等领域中应用已非常广泛。不仅在航模飞机中在其他的模型运动中都可以看到它的应用:船模上用来控制尾舵车模中用来转向等等。目前在高档遥控玩具如航模包括飞机模型潜艇模型遥控机器人中已经使用得比较普遍由此可见凡是需要操作性动作时都可以用舵机来实现随着舵机的应用越来越广泛对舵机的精确控制要求也越来越高因此研究舵机的精确控制不但具有理论意义而且有较大的实用价值。本文设计的基于STM的舵机控制系统就是在这种背景基础上设计的。本设计是在各种仪器连接使用的基础上设计而成的只有充分了解有关STM微处理器以及各部分之间的关系才能达到要求。整个课题的开发过程主要包括了硬件电路设计和软件程序的编写两个部分主要任务是开发一个以STM为核心的舵机控制系统通过在MDK的环境下编程由STM产生PWM信号可实现键盘对舵机角度和速度的控制能够通过LCD显示舵机转动的角度和速度。通过整机联调验证了系统的可行性能满足设计要求达到了设计的指标。硬件部分是利用STM体积小、易扩展、集成度高、可靠性高、功耗低、中断处理能力强等特点。软件部分采用模块化设计这些模块包括主程序、ADC转换子程序、PWM信号子程序和LCD显示子程序。软件调试中需要用到的测量信号可以用仿真实验台上的电压信号进行模拟整个测试过程可以通过keiluvision仿真软件进行模拟仿真进行调试以确保程序的正确性。通过以上论述可以发现整个设计的实用性较高使用的硬件都是比较能够方便取得的但还是有很多缺陷如显示的角度不是十分准确以及舵机的转角不精确等问题希望以后还能有所改进趋于完美。沈阳航空航天大学北方科技学院毕业设计,论文,社会经济效益分析本文所设计的基于STM的舵机控制系统的系统体积小、功耗低、集成度高接口电路比较简单等优点能够较容易的嵌入到其他的控制的系统中。位处理器STM处理具有处理速度快、存储容量大、外设接口丰富能够及时准确的处理采集到的加速度数据另外MzT彩色TFT模块功能强大能够显示多种测量环境的舵机数据。软件采用了,语言编写和模块化设计思想程序可读性强便于系统的改进和升级灵活性和适应性强。该测试系统可用于工程技术人员对控制系统的检修也可用于采购人员对器件的技术性能检测。沈阳航空航天大学北方科技学院毕业设计,论文,参考文献李宁基于MDK的STM的开发应用M北京:北京航空航天大学出版社,孙雄勇VISUALC实用教程M北京:中国铁道出版社,JosephYiu著ARMCortexM权威指南M北京:北京航空航天大学出版社,孙秋野,孙凯等著ARM嵌入式系统开发典型模块M北京:人民邮电出版社,谭浩强C程序设计M北京:清华大学出版社,童师白模拟电子技术基础M高等教育出版社,:张勇著ARM原理与C程序设计M北京:电子工业出版社出版社,张琦文,谢建雄,谢劲心编著ARM嵌入式常用模块与综合系统设计实例精M北京:电子工业出版社,讲王永红徐炜郝立平编著STM系列ARMCortexM微控制器原理与实践J北京:北京航空航天大学出版社,:马忠梅徐英慧编著ARM嵌入式处理器结构与应用基础M北京:北京航空航天大学出版社,彭蔓蔓著嵌入式系统导论M北京:清华大学出版社,彭舰著嵌入式系统设计M电子工业出版社,陈艳华著基于ARM的嵌入式系统开发与实例M北京:中国石化出版社,嵌入式开发专家主流ARM嵌入式系统设计技术与实例精解M北苏东著京:人民邮电出版社,SGSLNReferenceGuideandUserGuidepdfARMLimitedARMSoftwareDevelopmentToolkitVersionUserGuidepdf沈阳航空航天大学北方科技学院毕业设计,论文,致谢这次毕业设计是我在大学的学习生活中的最后一课也是大学四年以来最直接接触本专业知识、实践性最强的一门课。毕业设计对我们每一个同学都是陌生的虽然我们作为自动化专业的学生已经四年但是对于这样一门要求知识的整合和动手能力的课程我们还需要学习很多。所以在实际的设计过程中遇到了不少的麻烦。设计初期对于STM处理器的理解不深刻虽然手上有不少的参考资料。但是在自己看过了一些之后还是感觉一无所获。所以当时的设计进度很慢。也曾担心自己是否能完成这次设计。值得高兴的是在设计的过程中我有良好的伙伴和向导。同在实验室的同学们把很多他们在STM学习中总结的知识告诉我让我少走了不少的弯路。另外我的指导老师也给予了我莫大的支持和鼓励。在百忙的工作中抽出了不少的时间给我们开交流会为大家在毕业设计上指引方向。同时本次毕业设计的整个过程中辅导我的研究生邸庆龙同学是一个非常耐心和博学的人。没当我遇到不懂的地方他都能细心又清楚地为我解答。他为人的坦诚、治学的严谨、以及高尚的品德和许许多多数不清的优点都是我应该学习的。我为我能遇到这样一个好学长、好老师及好榜样而感到荣幸和自豪。在此致以他最诚挚的谢意~此外我的毕业设计以及和我一同奋战在试验室的同组同学的毕业设计都是我们在沈航一段美好的回忆。我会珍惜这样一段和同学们在一起难得的学习时光。我相信这一定是我们步入社会及走向工作岗位之前重要的一步。我的这一小步也许就是实现人生理想的一大步。最后把最诚挚的感谢送给我们最忙碌但又最敬爱的张庆新老师。张老师为我们这次毕业设计做了很多工作也提供给我们很多的帮助。您对同学们的关心和帮助大家都记在心里。在这里衷心地道一声感谢。沈阳航空航天大学北方科技学院毕业设计,论文,附录I电路原理图VRvKRSCResTapCKnFAD输入GNDGNDVCPU单元GNDRVUCKGNDPAWKUPUSARTCTSADCINTIMCHETRPCADCINnFPAUSARTRTSADCINTIMCHPCADCINPPWMBLPAUSARTTXADCINTIMCHPCADCINPAPAUSARTRXADCINTIMCHPCADCINCPASPINSSUSARTCKADCINPCADCINnFPASPISCKADCINPCADCINSCPASPIMISOADCINTIMCHPCGNDLDPASPIMOSIADCINTIMCHPCVJPALCDRDCPAUSARTCKTIMCHMCOPCLCDRWVCCVCCPAUSARTTXTIMCHPCGNDPBPALCDRSGNDNTRSTPAUSARTRXTIMCHPCCPPAPALCDRSTMHzGNDTDIPAUSARTCTSCANRXUSBDM()TIMCHPCnFPAPALCDCSXGNDTMSPAUSARTRTSCANTXUSBDP()TIMETRPCPAPAPCGNDTCKPAJTMSSWDIOPCTAMPERRTCPAPCCGNDRTCKPAJTCKSWCLKPCOSCINPBPAPCGNDTDOPAJTDIPCOSCOUTNRSTGNDNRSTPDGNDNCPBADCINTIMCHPDFSMCDPDGNDNCPBADCINTIMCHFSMCDPBPDPBBOOTPDTIMETRUARTRXJTAGPBPDPBJTDOPDFSMCCLKPBPDPBJNTRSTPDFSMCNOEPBPDPBICSMBAlPDFSMCNWEPDPBICSCLTIMCHPDFSMCNWAITPDPBICSDATIMCHPDFSMCNEFSMCNCEPDPBTIMCHPDFSMCDPDPBTIMCHPDFSMCDPDPBICSCLUSARTTXPDFSMCDCPDPBICSDAUSARTRXPDFSMCAOSCINPDPBSPINSSICSMBAUSARTCKTIMBKINPDFSMCAPDPBSPISCKUSARTCTSTIMCHNPDFSMCApFPDPBSPIMISOUSARTRTSTIMCHNPDFSMCDXPDPBSPIMOSITIMCHNPDFSMCDMHzCPEPETIMETRFSMCNBLOSCOUTOSCINPEOSCINPEFSMCNBLOSCOUTPEOSCOUTPETRACECLKFSMCApFPEPETRACEDFSMCARVKBOOTPEBOOTPETRACEDFSMCAPEPETRACEDFSMCANRSTPENRSTPETRACEDFSMCARPEPEFSMCDKPEPEFSMCDPEVREFPEFSMCDPEVVREFPEFSMCDPEPEFSMCDCSCPENCPEFSMCDnFPEPEFSMCDPEPEFSMCDPEPEFSMCDSTMFVE沈阳航空航天大学北方科技学院毕业设计,论文,CPU单元UPAWKUPUSARTCTSADCINTIMCHETRPCADCINPAUSARTRTSADCINTIMCHPCADCINPAUSARTTXADCINTIMCHPCADCINPAUSARTRXADCINTIMCHPCADCINPASPINSSUSARTCKADCINPCADCINPASPISCKADCINPCADCINPASPIMISOADCINTIMCHPCPASPIMOSIADCINTIMCHPCLCDRDPAUSARTCKTIMCHMCOPCLCDRWPAUSARTTXTIMCHPCLCDRSPAUSARTRXTIMCHPCLCDRSTPAUSARTCTSCANRXUSBDM()TIMCHPCLCDCSPAUSARTRTSCANTXUSBDP()TIMETRPCPCPAJTMSSWDIOPCTAMPERRTCPCPAJTCKSWCLKPCOSCINPCPAJTDIPCOSCOUTPDPBADCINTIMCHPDFSMCDPDPBADCINTIMCHFSMCDPDPBBOOTPDTIMETRUARTRXPDPBJTDOPDFSMCCLKPDPBJNTRSTPDFSMCNOEPDPBICSMBAlPDFSMCNWEPDPBICSCLTIMCHPDFSMCNWAITPDPBICSDATIMCHPDFSMCNEFSMCNCEPDPBTIMCHPDFSMCDPDPBTIMCHPDFSMCDPDPBICSCLUSARTTXPDFSMCDPDPBICSDAUSARTRXPDFSMCAPDPBSPINSSICSMBAUSARTCKTIMBKINPDFSMCAPDPBSPISCKUSARTCTSTIMCHNPDFSMCAPDPBSPIMISOUSARTRTSTIMCHNPDFSMCDPDPBSPIMOSITIMCHNPDFSMCDPEPETIMETRFSMCNBLPEOSCINPEFSMCNBLPEOSCOUTPETRACECLKFSMCAPEPETRACEDFSMCAPEBOOTPETRACEDFSMCAPEPETRACEDFSMCAPENRSTPETRACEDFSMCAPEPEFSMCDPEPEFSMCDPEVREFPEFSMCDPEVREFPEFSMCDPEPEFSMCDPENCPEFSMCDPEPEFSMCDPEPEFSMCDPEPEFSMCDSTMFVE沈阳航空航天大学北方科技学院毕业设计,论文,图PWM信号沈阳航空航天大学北方科技学院毕业设计,论文,图舵机的转动图舵机转角的显示沈阳航空航天大学北方科技学院毕业设计,论文,图基于STM的舵机控制系统沈阳航空航天大学北方科技学院毕业设计,论文,附录程序清单#include<stdioh>#include"stmfxh"#include"stmfxith"#include"TFTh"**端口定义|**#defineLED(<<)PB:LEDD#defineBPxPC:BP#defineBPxPA:BP#defineUPxPB:UP#defineRIGHTxPB:RIGHT#defineLEFTxPB:LEFT#defineDOWNxPB:DOWN#defineOKxPB:OK#defineJOYSTICKxFJOYSTICKALLKEYS*定义ADC的基地址*#defineADC((ADCTypeDef*)ADCBASE)*定义DMA的基地址*#defineDMAChannel((DMAChannelTypeDef*)DMAChannelBASE)|SOFTWAREDATA|**unsignedshortanalog*voltageonanalogPinsPAPA**对定时器的初始化*沈阳航空航天大学北方科技学院毕业设计,论文,TIMTimeBaseInitTypeDefTIMTimeBaseStructureTIMOCInitTypeDefTIMOCInitStructureuinttCCRVal=uinttCCRVal=uinttCCRVal=uinttCCRVal=uinttCCRNew=uinttCCRNew=uCCRVal=uinttPrescalerValue=ErrorStatusHSEStartUpStatus*系统时钟初始化*voidRCCConfiguration(void)*GPIO初始化*voidGPIOConfiguration(void)*嵌套向量中断控制器初始化*voidNVICConfiguration(void)*Privatefunctions***|Delay||延时Insertsadelaytime||nCount:延时时间||nCount:延长时间的长度**voidDelay(vunCount){for(nCount!=nCount)沈阳航空航天大学北方科技学院毕业设计,论文,}**|ADC初始化定义|**voidadcInit(void){*setPINanaloginput(seestmInitc)*GPIOA>CRL=~xF*使能DMA的系统时钟*RCC>AHBENR|=(<<)*设置通道的内存地址寄存器*DMAChannel>CMAR=(unsignedlong)analog*设置通道的外设地址寄存器*DMAChannel>CPAR=(unsignedlong)(ADC>DR)*设置传输个字的数据量*DMAChannel>CNDTR=*配置DMA通道*DMAChannel>CCR=xA*循环模式执行存储器增量**外设数据宽度bit**通道优先级高**开通DMA的通道*DMAChannel>CCR|=(<<)*启动ADC时钟*RCC>APBENR|=(<<)*通道转换序列个转换*沈阳航空航天大学北方科技学院毕业设计,论文,ADC>SQR=x*设置转换序列由通道–通道–通道*ADC>SQR=(<<)|(<<)|(<<)*设置各个通道采样时间*ADC>SMPR=(<<)|(<<)|(<<)*选择独立的扫描模式*ADC>CR=x*右对齐数据转换使ADC处于DMA模式*ADC>CR=xE*使用外部触发信号启动转换开始转换规则通道*ADC>CR|=x}********************************************************************************FunctionName:main*Description:Mainprogram*Input:None*Output:None*Return:None*******************************************************************************intmain(void){inti,CCRVallastchars*系统时钟初始化子函数*RCCConfiguration()沈阳航空航天大学北方科技学院毕业设计,论文,*嵌套向量中断控制器设置*NVICConfiguration()*IO口初始化子函数*GPIOConfiguration()*TIMConfiguration:generatePWMsignalswithdifferentdutycycles:TIMCLK=MHz,Prescaler=x,TIMcounterclock=MHzTIMARRRegister==>TIMFrequency=TIMcounterclock(ARR)TIMFrequency=KHzTIMChanneldutycycle=(TIMCCRTIMARR)*=TIMChanneldutycycle=(TIMCCRTIMARR)*=TIMChanneldutycycle=(TIMCCRTIMARR)*=TIMChanneldutycycle=(TIMCCRTIMARR)*=TIMx是TIMxARR寄存器确定频率(周期)、由TIMxCCRx寄存器确定占空比的信号**计算新的RTC预分频值不加会影响显示闪烁*PrescalerValue=(uintt)(SystemCoreClock)*定时器的初始化设置**自动重装载寄存器周期的值*TIMTimeBaseStructureTIMPeriod=*设置TIM时钟频率除数的预分频*TIMTimeBaseStructureTIMPrescaler=*设置了时钟分割*TIMTimeBaseStructureTIMClockDivision=*TIM向上计数模式*TIMTimeBaseStructureTIMCounterMode=TIMCounterModeUp沈阳航空航天大学北方科技学院毕业设计,论文,*TIM应用设置模式*TIMTimeBaseInit(TIM,TIMTimeBaseStructure)*对PWM进行设置**TIM脉冲宽度调制模式*TIMOCInitStructureTIMOCMode=TIMOCModePWM*TIM输出比较极性高*TIMOCInitStructureTIMOCPolarity=TIMOCPolarityHigh*使能输出*TIMOCInitStructureTIMOutputState=TIMOutputStateEnable*设置了待装入捕获比较寄存器的脉冲值*TIMOCInitStructureTIMPulse=CCRValTIMOCInit(TIM,TIMOCInitStructure)TIMOCPreloadConfig(TIM,TIMOCPreloadEnable)*使能或者失能TIMx在ARR上的预装载寄存器*TIMARRPreloadConfig(TIM,ENABLE)*使能TIM外设*TIMCmd(TIM,ENABLE)*TIMConfiguration:generatePWMsignalswithdifferentdutycycles:TIMCLK=MHz,Prescaler=x,TIMcounterclock=MHzTIMARRRegister==>TIMFrequency=TIMcounterclock(ARR)TIMFrequency=KHzTIMChanneldutycycle=(TIMCCRTIMARR)*=TIMChanneldutycycle=(TIMCCRTIMARR)*=TIMChanneldutycycle=(TIMCCRTIMARR)*=TIMChanneldutycycle=(TIMCCRTIMARR)*=TIMx是TIMxARR寄存器确定频率(周期)、由TIMxCCRx寄存器确定占空比的信号沈阳航空航天大学北方科技学院毕业设计,论文,**Timebaseconfiguration*TIMTimeBaseStructureTIMPeriod=TIMTimeBaseStructureTIMPrescaler=TIMTimeBaseStructureTIMClockDivision=TIMTimeBaseStructureTIMCounterMode=TIMCounterModeUpTIMTimeBaseInit(TIM,TIMTimeBaseStructure)*PWMModeconfiguration:Channel*TIMOCInitStructureTIMOCMode=TIMOCModePWMTIMOCInitStructureTIMOutputState=TIMOutputStateEnableTIMOCInitStructureTIMPulse=CCRValTIMOCInitStructureTIMOCPolarity=TIMOCPolarityHighTIMOCInit(TIM,TIMOCInitStructure)TIMOCPreloadConfig(TIM,TIMOCPreloadEnable)*PWMModeconfiguration:Channel*TIMOCInitStructureTIMOutputState=TIMOutputStateEnableTIMOCInitStructureTIMPulse=CCRValTIMOCInit(TIM,TIMOCInitStructure)TIMOCPreloadConfig(TIM,TIMOCPreloadEnable)TIMOCInitStructureTIMOutputState=TIMOutputStateEnableTIMOCInit(TIM,TIMOCInitStructure)沈阳航空航天大学北方科技学院毕业设计,论文,TIMOCPreloadConfig(TIM,TIMOCPreloadEnable)*PWMModeconfiguration:Channel*TIMOCInitStructureTIMOutputState=TIMOutputStateEnableTIMOCInitStructureTIMPulse=CCRValTIMOCInit(TIM,TIMOCInitStructure)TIMOCPreloadConfig(TIM,TIMOCPreloadEnable)TIMARRPreloadConfig(TIM,ENABLE)*使能TIM外设*TIMCmd(TIM,ENABLE)*调用LCD初始化设置子程序*LCDInit()*LCD清屏为蓝色*LCDClearScreen(Blue)*调用ADC初始化设置子程序*adcInit()Font=*显示舵机控制系统*LCDPutString(,,"舵机控制系统",Cyan,Blue)*显示转角*LCDPutString(,,"转角",Red,Yellow)*显示along*LCDPutString(,,"along",Magenta,Blue)*循环显示舵机的转角*沈阳航空航天大学北方科技学院毕业设计,论文,while(){CCRVallast=analog*xFFF*判断输入的数据量是否改变*if(CCRVal!=CCRVallast){CCRVal=CCRVallastTIMSetCompare(TIM,CCRVal)LCDPutString(,,s,Red,Yellow)*显示舵机的角度*sprintf(s,"f度,(float)(analog*xFc))i=analog*xFFFLCDRectangle(,,i,,Magenta)LCDRectangle(i,,,,Green)*判断舵机的正转与反转*if((float)(analog*xFFF)<)LCDPutString(,,"反转",Yellow,Blue)elseLCDPutString(,,"正转",Yellow,Blue)*延时*Delay()}}}********************************************************************************FunctionName:RCCConfiguration*Description:Configuresthedifferentsystemclocks*Input:None沈阳航空航天大学北方科技学院毕业设计,论文,*Output:None*Return:None********************************************************************************voidRCCConfiguration(void){*使能TIM时钟*RCCAPBPeriphClockCmd(RCCAPBPeriphTIM,ENABLE)*使能TIM时钟*RCCAPBPeriphClockCmd(RCCAPBPeriphTIM,ENABLE)*使能GPIOAandGPIOB时钟*RCCAPBPeriphClockCmd(RCCAPBPeriphGPIOA|RCCAPBPeriphGPIOB|RCCAPBPeriphGPIOC|RCCAPBPeriphAFIO,ENABLE)}********************************************************************************FunctionName:GPIOConfiguration*Description:ConfiguretheTIMOuputChannels*Input:None*Output:None*Return:None*******************************************************************************voidGPIOConfiguration(void){*初始化外设GPIOA寄存器*沈阳航空航天大学北方科技学院毕业设计,论文,GPIOInitTypeDefGPIOInitStructure*GPIOA配置TIMchannelandasalternatefunctionpushpull**选择待设置的GPIO管脚*GPIOInitStructureGPIOPin=GPIOPin|GPIOPin|GPIOPin|GPIOPin*设置选中管脚的工作状态为复用推挽输出*GPIOInitStructureGPIOMode=GPIOModeAFPP*设置管脚的最高输出速率为MHz*GPIOInitStructureGPIOSpeed=GPIOSpeedMHz*设置应用到GPIOA*GPIOInit(GPIOA,GPIOInitStructure)*GPIOB配置:TIMchannelandasalternatefunctionpushpull**选择待设置的GPIO管脚*GPIOInitStructureGPIOPin=GPIOPin|GPIOPinGPIOInit(GPIOB,GPIOInitStructure)*GPIOC配置:TIMchannelandasalternatefunctionpushpull*GPIOInitStructureGPIOPin=GPIOPin|GPIOPin|GPIOPin|GPIOPin|GPIOPin|GPIOPin|GPIOPin|GPIOPin|GPIOPin|GPIOPin|GPIOPin|GPIOPin|GPIOPinGPIOInit(GPIOC,GPIOInitStructure)}*除错(DEBUG)模式*#ifdefDEBUG***********************************************************************沈阳航空航天大学北方科技学院毕业设计,论文,*********FunctionName:assertfailed*Description:Reportsthenameofthesourcefileandthesourcelinenumber*wheretheassertparamerrorhasoccurred*Input:file:pointertothesourcefilename*line:assertparamerrorlinesourcenumber*Output:None*Return:None********************************************************************发现错误则进入死循环*voidassertfailed(u*file,uline){*Usercanaddhisownimplementationtoreportthefilenameandlinenumber,ex:printf("Wrongparametersvalue:filesonlinedrn",file,line)*while(){}}#endif**********(C)COPYRIGHTSTMicroelectronics*****ENDOFFILE****沈阳航空航天大学北方科技学院毕业设计,论文,毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文)是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知除文中特别加以标注和致谢的地方外不包含其他人或组织已经发表或公布过的研究成果也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体均已在文中作了明确的说明并表示了谢意。作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定即:按照学校要求提交毕业设计(论文)的印刷本和电子版本学校有权保存毕业设计(论文)的印刷本和电子版并提供目录检索与阅览服务学校可以采用影印、缩印、数字化或其它复制手段保存论文在不以赢利为目的前提下学校可以公布论文的部分或全部内容。作者签名:日期:沈阳航空航天大学北方科技学院毕业设计,论文,学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定同意学校保留并向国家有关部门或机构送交论文的复印件和电子版允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期:年月日导师签名:日期:年月日沈阳航空航天大学北方科技学院毕业设计,论文,注意事项设计(论文)的内容包括:)封面(按教务处制定的标准封面格式制作))原创性声明)中文摘要(字左右)、关键词)外文摘要、关键词)目次页(附件不统一编入))论文主体部分:引言(或绪论)、正文、结论)参考文献)致谢)附录(对论文支持必要时)论文字数要求:理工类设计(论文)正文字数不少于万字(不包括图纸、程序清单等)文科类论文正文字数不少于万字。附件包括:任务书、开题报告、外文译文、译文原文(复印件)。文字、图表要求:)文字通顺语言流畅书写字迹工整打印字体及大小符合要求无错别字不准请他人代写)工程设计类题目的图纸要求部分用尺规绘制部分用计算机绘制所有图纸应符合国家技术标准规范。图表整洁布局合理文字注释必须使用工程字书写不准用徒手画)毕业论文须用A单面打印论文页以上的双面打印)图表应绘制于无格子的页面上)软件工程类课题应有程序清单并提供电子文档装订顺序)设计(论文))附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订)其

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/53

基于STM32的舵机控制系统毕业设计论文

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利