计算机控制系统课程设计 直流电机测速调速系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XI`ANTECHNOLOGICALUNIVERSITY
程序设
系统总体方法。
1
(1)该系统使用实验箱的直流电机、1602液晶、DA、键盘等模块完成设计;
(2)直流电机通过DA模块使用PWM方式进行驱动及调速;
(3)能够通过1602液晶显示当前转速及PWM占空比;
(4)通过按键控制电机的启动和停止。
2、扩展功能:
(1)能够通过按键手动输入目标转速(转/秒),启动电机后控制电机稳定在目标转速;
(2)使用1602液晶实时显示目标转速、当前转速及启停状态(on/off)。
四、实验思路:
本直流电机调速系统以单片机系统为依托,根据PWM调速的基本原理,控制电动机的转速为依据,实现对直流电动机的调速,并通过单片机控制速度的变化。本设计的直流电机调速系统主要是由硬件和软件两大部分组成。硬件部分是前提,是整个系统执行的基础,它主要为软件提供程序运行的平台。而软件部分,是对硬件端口所体现的信号,加以采集、分析、处理,最终实现控制器所要实现的各项功能,达到控制器自动对电机速度的有效控制。
用51来产生PWM波就必须要用软件编程的方法来模拟。方法大概可以分为软件延时和定时器
DA
1
2
1602C字符型液晶:CS:片选信号,低电平有效;RS:选择读写的是指令或数据,L:指令,H:为数据。RW:读写控制端,L:写操作,H:读操作。
12864J图形点阵液晶:CS:片选信号,低电平有效;CS1/2:左右半屏使能选择,H:左半屏,L:右半屏;RS:选择读写的是指令或数据,L:指令,H:为数据。RW:读写控制端,L:写操作,H:读操作。
12864M图形点阵液晶:JP6的16脚是空脚,JP6的15脚是PSB:PSB接高电平,CPU与液晶使用并行接口连接,连接方法与12864J完全相同;PSB接低电平,CPU与液晶使用串行接口连接,此
时,RS、RW、E与CPU的I/O管脚相连(STARES59PA才有该功能)。
(1602C字符型液晶)
(12864J图形点阵液晶)
2)DAC0832数模转换
CS:片选,低有效;
OUT:转换电压输出;
OUT1:经功放电路的电压输出;
主要特性:与MCS-51?兼容·;4K字节可编程FLASH存储器;寿命:1000写/擦循环;?数据保留时间:10年全静态工作:0Hz-24MHz??;?三级程序存储器锁定;128×8位内部RAM??;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;?低功耗的闲置和掉电模式;?片内振荡器和时钟电路;直流电机转速测量/控制
5)使用光电开关测速
CTRL:控制电压(DAC0832经功放电路提供)输入;
REV:光电开关脉冲输出(用于转速测量);
3、
计算机控制技术的课程设计相比硬件的课程设计,简直难了不止一个档次,作为主要的编程人员,当我实际要去控制一个物体的时候,我才知道自己以前学的知识有多么的不牢固,不过真真正正的去做一个实物控制程序的时候,才能真切的体会到以前书本上学的知识是如何运用到实际的,我基本上可以说是为了应付考试勉勉强强学了一些,这次实际做到项目设计后,才理解其真正的含义。
第页
还有本次项目,我们采用了LCD显示屏作为显示单元,比LED数码管复杂,LCD液晶显示屏这也是以前没有运用到过的,所以总体来说,这次课程设计带给我的不仅仅是旧知识的复习,还有新的探索。
本课程设计得以完成,首先要感谢秦刚老师,因为课程设计在他的悉心指导下才能顺利完成。他渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范、朴实无华、平易近人的人格魅力对我的影响非常深远。本设计从选题到完成,每一部步是在老师的指导下完成的,倾注了老师大量的心血。
在课程设
sbitset=P1^4; //set按键
sbitleft=P1^2; //左移光标
sbitright=P1^3; //右移光标
sbitLCD_RS=P3^0; //1602的RS
sbitLCD_RW=P3^1; //1602的RW
sbitsys_data=P3^4; //继电器控制脚,用于切换DA功率输出方向(电机or加热电阻)
xdataunsignedchardac0832_addr_at_0xd000;//DA的地址
xdataunsignedcharLCD_DATA_at_0x8000;//LCD1602的地址
/*******************以下为系统的状态量设置**************/
bitrps_triger=0; //转速(温度)刷新显示控制,1为需要刷新显示,0为不需要刷新显示
bitscale_triger=0; //占空比刷新显示控制
bitpower_triger=0; //电源指示刷新显示控制
式
4位),0~2
5%
1秒)数)
速,反之则缓慢调整)
unsignedchartime_scale=0; //占空比总周期计数变量,一个周期200次,可以精确到0.5%
unsignedinttime_check[4]={1000,3000,6000,10000};//转速调整时间系数表格unsignedcharcheck=0; //检测周期等级,分为0~4共5个等级,0为极小时间系数,4为稳定不变
void_nop_(void);
/*******************延时函数*****************/ voiddelay(inta)
{
while(a--);
}
/*******************外部中断初始化*****************/ voidinit_int0()
{
}
{
}
{
LCD_RS=0;
LCD_RW=0;
LCD_DATA=com;
delay(80);
}
voidLCD_write_data(unsignedchardat)