keilc温度控制直流电机转速课程设计报告.docx
《keilc温度控制直流电机转速课程设计报告.docx》由会员分享,可在线阅读,更多相关《keilc温度控制直流电机转速课程设计报告.docx(14页珍藏版)》请在冰豆网上搜索。
keilc温度控制直流电机转速课程设计报告
课程设计任务书
学院
信息科学与工程
专业
测控技术与仪器
学生姓名
学号
1003020116
设计题目
温度控制直流电机转速
内容及要求:
《keilc程序设计》是测控技术与仪器专业的专业基础课。
本设计是对该课程综合应用能力的检验,在鼓励学生熟悉基本原理的前提下,注重与实际应用相联系,提出自己的方案,完善设计。
1、熟悉单片机及被控对象的工作原理;
2、提出可行设计方案;
3、根据方案设计硬件电路、绘制电路原理图;
4、软件编程并调试;
5、系统调试;
5、完成课程设计报告。
进度安排:
第18周(2012年12月29日—2013年1月7日):
布置设计任务,查资料,完成总体方案设计,系统硬件电路设计,系统软件编写并调试,验收答辩。
指导教师(签字)
2012年11月24日
学院院长(签字)
2012年11月24日
一、设计目的及要求
1。
1设计目的
本设计主要是应用proteus软件和嵌入式C语言编程工具,结合单片机原理及应用.危机原理与接口技术等专业课程,强化和巩固专业理论基础,掌握Proteus仿真的技巧和嵌入式C语言编程工具,提高单片机开发能力,并为嵌入式开发打下基础。
1。
2设计要求
(1)使用AT89C51单片机为核心,使用4位集成式数码管显示当前温度,温度传感器使用DS18B20,使用L298驱动直流电动机.
(2)用4位集成式数码管显示当前温度,,当温度在≥45C时,直流电动机在L29800驱动下加速正转,温度在≥75C全速正转;当温度≤10C时,直流电动机加速反转,温度≤0C时,直流电动机全速反转;温度10C~45C之间时,直流电动机停止转动。
(3)控制程序在Keil软件中编写,编译,整个控制电路在Proteus仿真软件中连接调示。
二、设计方案及论证之硬件电路设计
2.1芯片简介
本设计选择采用AT89C51单片机为核心。
AT89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式.空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有部件工作直到下一个硬件复位.
2.2电路原理图
2.21电机测速即驱动部分:
电机选用美国史普拉格公司生产的3000系列霍尔开关传感器3013,它是一种硅单片集成电路,器件的内部有稳压电路,霍尔电视发生器,放大器,施密特触发器和集成开路输出电路,具有工作电压范围宽,可靠性高,外电路简单,输出电平可与各种数字电路兼容等特点.
电动机测试部分原理图如下:
2。
22电路供电系部分
电路通过12V电源供电,由霍尔元件及外围器件组成的测速电路将电动机转速转换成脉冲信号送到单片机89C51的P3。
5脚,作为T1计数器计数使用,得到的计数值。
与设定的值进行比较形成偏差.根据比较结果通过Po端口送给DAC0832进行数/模转换,从而使得输出电压增大或者减少,得到模拟电压输出给功率放大电路放大,再去控制电机的转速。
2.23显示部分
采用LM016L作为显示屏
下图为显示部分:
三、设计方案及论证之软件设计
3。
1程序设计思路
程序框图
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>0)i-—;//write0
DS=1;
i++;i++;
}
}
}
bittmpreadbit(void);读数据赋值给dat
{
uinti;
bitdat;
DS=1;
DS=0;i++;i++;
DS=1;i++;
dat=DS;
i=8;while(i〉0)i—-;
return(dat);
}
uchartmpread(void)
{
uchari,j,dat;
dat=0;
for(i=1;i〈=8;i++)
{
j=tmpreadbit();
dat=(j<<7)|(dat>〉1);
}
return(dat);
}
uinttmp();数据处理即判断温度正负
{
floattt;
uchara,b,b1;
dsreset();
delay
(1);
tmpwritebyte(0xcc);
tmpwritebyte(0xbe);
a=tmpread();
b=tmpread();
temp=b;
b1=b;
temp〈<=8;
temp=temp|a;
if(b1<8)
{
flag+=1;
tt=temp*0.0625;
temp=tt*10+0。
5;
dis_buf[0]=0;
}
else
{
flag-=1;
temp=~temp;
temp=temp+1;
tt=temp*0.0625;
temp=tt*10+0.5;
dis_buf[0]=0x40;
}
returntemp;
}
voiddisplay(uinttemp);将采集后转化的温度对数组赋值
{
ucharA1,A2,A3;
A1=temp/100;
A2=temp%100/10;
A3=temp%10;
t=A1*10+A2;
dis_buf[3]=table[A3];
dis_buf[2]=table1[A2];
dis_buf[1]=table[A1];
}
voidtimer1()interrupt3;用定时器T1调用温度采集函数进行温度采集
{
TH1=(65536-20000)/256;
TL1=(65536-20000)%256;
tmpchange();
display(tmp());
}
voidtimer0()interrupt1;用定时器T0将处理后的温度用数码管显示
{
TH0=(65536-500)/256;
TL0=(65536—500)%256;
P2=0xff;
P0=dis_buf[dis_index];
P2=dis_digit;
dis_digit=_crol_(dis_digit,1);
dis_index++;
dis_index&=0x07;
}
if(flag==1);判断电机旋转情况
{
flag=0;
if(t〉=75)
Turn_z();
else
if(t>=45)
Turn_zj();
else
if(t>10)
Turn_t();
else
Turn_fj();
}
else
if(flag==—1)
{
flag=0;
Turn_f();
}
四、器件清单
温度控制直流电机转速所需元器件清单
器件名称
型号
主要参数
数量
备注
单片机
AT89C51
4KB,33MHz
1
电阻
RES
10K,4。
7K
2
排阻
RESPack—8
470
1
电容
CAP
22pf、100pf
各2个
电解电容
CAP-ELEC
10uf
1
晶振
CRYSTAL
12M
1
二极管
IN4007
无
4
温度传感器
DS18B20
无
1
电机驱动芯片
L298
无
1
显示屏
LM016L
无
1
电动机
MOTOR-C
无
1
导线
LEAD
无
若干
电源
POWER
无
若干
地
GROUND
无
若干
五、器件识别与检测
根据单片机的C语言程序设计与应用,我们知道了C51单片机,所用的一般元器件有电阻、电容、开关、排阻,而对于晶振和数码管是我们所必须学习和掌握的,晶振是一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。
数码管根据公共端的连接情况有共阳极共阴极两种,对共阴极LED显示器的发光二极管的公共端的com接地,当某发二极管的阳极为高电平时,相应的发光二极管点亮.
六、仿真结果:
七、软件简述
7。
1keil简介
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。
因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试等在内的完整开发方案,通过一个集成开发环境uVision将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
7。
2keil与proteus联调与仿真实现
双击图标进入keiluVision2编程环境,输入程序。
返回桌面双击图标进入Proteus仿真环境。
点击左上角选项P后根据设计的电路图调出所需元件画好硬件原理图如图所示。
然后按照4.1节所写步骤设置keil和proteus的工作环境.实现keil和proteus的联调。
八、总结
在课程设计的过程中,用到了Keilc和Proteus两大软件,上课老师都有讲过这些专业知识,通过对这些专业知识的学习,提高了自己的知识水平,而在课程设计过程中,我加强了自己的动手能力,并且将专业知识用到实践上,让我对这两个软件更加熟悉。
我知道,课程设计是培养学生综合运用所学知识,发现实际为题、提出实际问题、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际学习能力、动手能力的具体训练和考察过程。
在此次设计过程中,在学习新知识的同时,把在课程中学到的理论知识运用到实际作品设计,操作中更进一步地熟悉了单片机芯片的结构及掌握了其工作原理和具体的使用方法与相关元器件的参数计算方法、使用方法了解了电路的开发和制作及课程设计报告的编写.加深了对相关理论知识及专业知识的掌握度,增强自身的动手能力,锻炼及提高了理解问题、分析问题、解决问题的能力,更深刻体会到了理论联系实际的重要性。
此次课程设计将我们一学期在keilc课程上的所学很好的应用到了实际设计中,非常感谢老师对我的帮助。
我会尽自己一切努力来好好学习这些课程,丰富自己的知识。
九、参考文献
1、单片机的C语言程序设计与应用.
2、微机原理接口与技术。
3。
单片机原理与应用技术.
4。
电动机调速的原理及系统。