资源描述:
《keilc温度控制直流电机转速课程设计报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、目录一、设计目的及要求21.1设计目的21.2设计要求3二、设计方案及论证之硬件电路设计32.1芯片简介32.2电路原理图42.21电机测速即驱动部分:42.22电路供电系部分52.23显示部分5三、设计方案及论证之软件设计63.1程序设计思路6四、器件清单13五、器件识别与检测14六、仿真结果:15七、软件简述157.1keil简介157.2keil与proteus联调与仿真实现16九、参考文献17课程设计任务书学院信息科学与工程专业测控技术与仪器学生姓名学号1003020116设计题目温度控制直流电机转速内容及要求:《keilc程序设计》是测控技术
2、与仪器专业的专业基础课。本设计是对该课程综合应用能力的检验,在鼓励学生熟悉基本原理的前提下,注重与实际应用相联系,提出自己的方案,完善设计。1、熟悉单片机及被控对象的工作原理;2、提出可行设计方案;3、根据方案设计硬件电路、绘制电路原理图;4、软件编程并调试;5、系统调试;5、完成课程设计报告。进度安排:第18周(2012年12月29日-2013年1月7日):布置设计任务,查资料,完成总体方案设计,系统硬件电路设计,系统软件编写并调试,验收答辩。指导教师(签字)2012年11月24日学院院长(签字)2012年11月24日一、设计目的及要求1.1设计目的
3、本设计主要是应用proteus软件和嵌入式C语言编程工具,结合单片机原理及应用。危机原理与接口技术等专业课程,强化和巩固专业理论基础,掌握Proteus仿真的技巧和嵌入式C语言编程工具,提高单片机开发能力,并为嵌入式开发打下基础。1.2设计要求(1)使用AT89C51单片机为核心,使用4位集成式数码管显示当前温度,温度传感器使用DS18B20,使用L298驱动直流电动机。(2)用4位集成式数码管显示当前温度,,当温度在≥45C时,直流电动机在L29800驱动下加速正转,温度在≥75C全速正转;当温度≤10C时,直流电动机加速反转,温度≤0C时,直流电动
4、机全速反转;温度10C~45C之间时,直流电动机停止转动。(3)控制程序在Keil软件中编写,编译,整个控制电路在Proteus仿真软件中连接调示。二、设计方案及论证之硬件电路设计2.1芯片简介本设计选择采用AT89C51单片机为核心。AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/
5、计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。2.2电路原理图2.21电机测速即驱动部分:电机选用美国史普拉格公司生产的3000系列霍尔开关传感器3013,它是一种硅单片集成电路,器件的内部有稳压电路,霍尔电视发生器,放大器,施密特触发器和集成开路输出电路,具有工作电压范围宽,可靠性高,外电路简单,输出电平可与各种数字电路兼容等特点。电动机测试部分原理图如下:2.22电路供电系部分电路通过12V电源供电,由霍尔元件及外围器件组成的测速电路将电动机转速转换成脉冲信号送到单片机8
6、9C51的P3.5脚,作为T1计数器计数使用,得到的计数值。与设定的值进行比较形成偏差.根据比较结果通过Po端口送给DAC0832进行数/模转换,从而使得输出电压增大或者减少,得到模拟电压输出给功率放大电路放大,再去控制电机的转速。2.23显示部分采用LM016L作为显示屏下图为显示部分:三、设计方案及论证之软件设计3.1程序设计思路程序框图开始初始化读取DS18B20温度值X与设定值比较N(X>45)N(X<10)100C<=X<=750CY直流电动机停止转动X>=750CX<=00CNNYY电动机全速正传电动机全速正传电动机全速反转电动机全速反转返
7、回3.2源程序voiddsreset(void);温度采集初始化{uinti;DS=1;i++;DS=0;i=103;while(i>0)i--;DS=1;i=4;while(i>0)i--;DS=1;}voidtmpwritebyte(uchardat);控制温度传感器{uinti;ucharj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb)//write1{DS=0;i++;i++;DS=1;i=8;while(i>0)i--;}else{DS=0;i=8;while(i
8、>0)i--;//write0DS=1;i++;i++;}}}bittmpreadbit(vo