- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告-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)