实验报告-jgh.docVIP

  • 15
  • 0
  • 约1.72万字
  • 约 14页
  • 2017-02-07 发布于重庆
  • 举报
实验报告-jgh

DSP短学期课程调试报告 课程名称: DSP芯片应用系统设计 设计题目: 基于2812的电机控制系统设计 专 业: 电气工程及其自动化 班 级: 10自动化(2) 设 计 者: 贾官洪 学 号: 104173418 指导教师: 葛英辉 调试时间: 2012-7-17至2012-7-19 宁波大学信息科学与工程学院 一、设计目的 通过实验学习使用2812DSP的扩展I/O端口控制外围设备的方法,了解键盘的使用原理及编程方法;了解液晶显示器的显示控制原理及编程方法;掌握使用2812通用定时器的控制及中断服务程序的编程方法:了解步进电机的控制方法。 通过C语言编程中断程序,控制2812DSP通用I/O管脚产生不同占空比的PWM信号,学习直流电机的控制原理及控制方法。 二、 设计任务 利用小键盘控制电机的停转、转速和转向,并在液晶上实时显示电机当前运行状态以及设计者信息,实现双电机控制:直流电机和步进电机,系统将采用查询的方式从键盘读取按键信息,然后按照转速设定驱动电机,完成正转、反转、加速、减速、启动和停止。 三、系统构成 四、调试过程 因为这次短学期课程是我们初次设计较为复杂的控制系统,所以我决定采取分割模块,逐个击破的调试方法。 1、实现对直流电机的控制: 由设计报告中直流电机工作原理可知,通过定时器0设置其中I/O端口以一定频率改变高低电平状态,输出方波,即可实现直流电机速度控制。此外,只要对另外一I/O端口设置不同的电平,即可实现直流电机转向控制。控制方式如下: GpioDataRegs.GPADAT.bit.GPIOA4 = 1; nDir=0; //正转 GpioDataRegs.GPADAT.bit.GPIOA4 = 0; nDir=1; //反转 uN+ =10; if(uN 90) {uN=100; } //加速并控制最大转速 uN- =10; if(uN30) {uN=30; } //减速并控制最小转速 直流启动的实验具体代码如下: uN=70; uN1=uN; uN=70; Delay(128); GpioDataRegs.GPADAT.bit.GPIOA4 = 1; nDir=0; Delay(128); uN=uN1; //直流电机正传,与原来速度一样 zb=1; //zb为1则说明选择的为直流电机 2、实现对步进电机的控制: 本程序只要求实现正反转。由设计报告中直流电机工作原理可知,控制的方法是设置IOPF4为高电平则顺时针转动,低电平为逆时针转动。根据上述原理,对IOPF4口操作以控制转向。其中:nAddStep=-1为正向转动,nAddStep=1为反向转动。 步进启动的实验具体所需的代码如下: uPort8000=CTRCLKEY; *(int *)0x108007=0xc2;//开步进电机 nAddStep=-1;//正向 zb=2; //zb为2则说明选择的为步进电机 3、实现对双电机的控制: 双电机控制的基本原理是对直流电机和步进电机的结合,本程序中按键“3”选择双电机控制,直流和步进都正转启动代码如下: nAddStep=-1; uN=70; uN1=uN; Delay(128); GpioDataRegs.GPADAT.bit.GPIOA4 = 1; nDir=0; Delay(128); uN=uN1; s=1; //用此变量标记为双电机模式 4、实现按键的调试: 键盘原理比较简单,只要有键盘输入时,读I/O扩展地址0x8001端口得到扫描代码。读入语句如下: nScanCode=*(int *)0x108001; // 读扫描码 nScanCode=0x0ff; // 低8位 uPort8000=*(int *)0x108002;// 代码读入后要对其进行转换,即转换为按键对应是数字。 cKey=ConvertScanToChar(nScanCode); nKeyCode=( cKey=0 cKey=9 )?(cKey-0):(cKey-A+10); 至此我们可以看出,按键本质是对所按得键码进行进一步转换,以实现按键与具体数字相对应。那我们所要编的这个转换程序就是实现0x18到0的转换,0x14到1的

文档评论(0)

1亿VIP精品文档

相关文档