课程设计报告梁涛.docx
- 文档编号:9229414
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:22
- 大小:961.52KB
课程设计报告梁涛.docx
《课程设计报告梁涛.docx》由会员分享,可在线阅读,更多相关《课程设计报告梁涛.docx(22页珍藏版)》请在冰点文库上搜索。
课程设计报告梁涛
单片机原理及系统课程设计
评语:
考勤10分
守纪10分
过程30分
设计报告30分
答辩20分
总成绩(100分)
专业:
自动控制
班级:
控1201
姓名:
梁涛
学号:
201209218
指导教师:
赵斌
兰州交通大学自动化与电气工程学院
2014年12月31日
基于单片机的电梯控制系统设计
1引言
1.1系统设计目的
近些年来在我国任何一个城市,电梯都在被广泛应用着。
电梯给人们的生活带来了便利,也为我国现代化建设的加速发展提供了强大的保障。
电梯是高层建筑中安全、可靠、垂直上下的运载工具,对改善劳动条件、减轻劳动强度起到很大的作用。
电梯的应用范围很广,可用于宾馆、饭店、办公大楼、商场、娱乐场所、仓库以及居民住宅大楼等。
在现代社会中,电梯已成为人类必不可少的垂直运输交通工具。
1.2系统设计要求及方法
本设计是对电梯的运行进行控制,确保上下楼人的人生安全,采用AT89C51单片机为核心芯片,及其他相关硬件来实现的电梯控制系统,有报警装置、键盘输入装置、电机驱动装置、显示装置等构成。
2系统设计原理及方案
(1)警报电路
(2)楼层显示电路【外】(3)目的楼层显示【内】(4)键盘电路(5)电机驱动(6)复位电路。
基本功能框架如图1所示:
图1基本功能框架
3系统硬件设计
3.1键盘电路
用P3的8个口线做成4x4的矩阵键盘,键值有1234楼上;2345下;12345目的楼层;开门关门;警报。
电路图如图2所示:
图2键盘电路
3.2显示电路设计
本电路采用数码管显示电梯所到达的楼层数,数码管采用共阴极由单片机的P2口控制,当电梯运行到两楼层之间时,数码管显示为前一楼楼层。
如图3所示:
图3显示电路
3.3警报电路
用p1.0和p0.0进行控制。
电路图如图4所示:
图4警报电路
3.4目的楼层显示电路
目的楼层显示采用红色LED灯。
如图5所示:
图5目的楼层显示电路
3.5电机驱动电路
用单片机的P1.1口和P1.2口做输出口来驱动发光二极管,其中上行灯亮表示电机正转,下行灯亮表示电机反转。
如图6所示:
图6电机驱动电路
4系统软件设计
将程序输入到Keil软件中,组建、编译、运行,创建‘.hex’文件。
源程序见附录2。
程序流程图如图7所示:
图7程序流程图
5电梯优先级的算法
电梯上行时高层呼叫上行>高层呼叫下行>底层呼叫下行>底层呼叫上行。
下行时反之。
flag=0表示电梯不工作,flag=1表示电梯上行,flag=2表示电梯下行。
6系统仿真及调试
本次课程设计中的系统仿真利用Proteus软件进行硬件电路连接,通过放置元器件,合理布线,确认电路连接无误后,将KeilC软件生成的hex文件导入AT89C51单片机中进行仿真,最后仿真成功。
结果表明,该系统能成功实现电梯控制。
系统仿真及调试图见附录1。
7总结
目前电梯控制系统大多采用继电器或者可编程控制器(PLC)的控制方式,存在着成本高,需要三相供电等缺点,本设计给出了一种基于单片机的电梯模型控制系统设计。
以单片机为核心,再以适当的硬件电路和控制程序来检测和控制整个电梯的运行,具有成本低、通用性强、灵活性高、扩展容易及易于实现复杂控制等优点。
在这次课设中我也遇到了一些困难,比如在刚开始做目的楼层显示电路连接时无论怎么改变端口连接都不能实现,通过找老师答疑和上网查资料,最终发现了问题所在,顺利完成了这次课设。
在此期间,不仅让我更直观地了解了51单片机,还让我更好地理解和掌握了《单片机原理及应用系统设计》这门课程的知识,同时也让我了解到了电梯的工作原理。
在这次难得的课程设计过程中我锻炼了自己的思考能力和动手能力。
通过题目选择和设计电路,加强了我思考问题的完整性和实际生活联系的可行性。
在方案设计选择和芯片的选择上,培养了我综合灵活应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。
除此之外,锻炼了个人查阅技术资料的能力,动手能力,发现问题,思考问题,解决问题的能力。
参考文献
徐世许,朱妙其,王毓顺.《可编程序控制器》
林敏,丁金华,田涛.《计算机控制技术及工程应用》.北京:
国防工业出版社
郑萍.《现代电气控制技术》.重庆:
重庆大学出版社
周润景,刘晓霞.《单片机实用系统设计与仿真经典实例》.电子工业出版社
附录1
系统仿真图如图8所示:
图8系统仿真图
附录2
源程序代码如下
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitalarm1=P1^0;
sbitalarm2=P0^0;
sbitfz=P1^1;
sbitzz=P1^2;
sbitL1=P1^3;
sbitL2=P1^4;
sbitL3=P1^5;
sbitL4=P1^6;
sbitL5=P1^7;
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x00};//数码管显示代码
uintshang[6]={0,0,0,0,0,0};
uintxia[6]={0,0,0,0,0,0};
uintnei[6]={0,0,0,0,0,0};
uintnum,temp,flag=0,lc=1,i,n;
//函数声明语句
voiddelay(uintz);//键盘去抖动
voiddelay3();//延时三秒开关门
voiddelay5();//延时5秒,两层楼之间运行的时间
voidkeyscan();//键盘扫描
voiddisplay(uintaa);//数码管显示
voidinit();//端口初始化
voidzhishideng();//指示灯熄灭
//主函数
voidmain()
{
init();
while
(1)
{
keyscan();
zhishideng();
if(flag==0)
{
zz=fz=0;
shang[lc]=0;
xia[lc]=0;
nei[lc]=0;
n=lc;
for(i=n+1;i<=5;i++)//上行
{
keyscan();
zhishideng();
if(shang[i]==1||xia[i]==1||nei[i]==1)
{
flag=1;
break;
}
}
for(i=n-1;i>=1;i--)//下行
{
keyscan();
zhishideng();
if(shang[i]==1||xia[i]==1||nei[i]==1)
{
flag=2;
break;
}
}
}
if(flag==1)
{
keyscan();
zhishideng();
zz=1;
fz=0;
delay5();
lc++;
display(lc);
if(shang[lc]==1||nei[lc]==1)
{
shang[lc]=0;
nei[lc]=0;
zhishideng();
fz=0;
zz=0;
delay3();
}
flag=0;
n=lc;
for(i=n+1;i<=5;i++)
{
keyscan();
zhishideng();
if(shang[i]==1||xia[i]==1||nei[i]==1)
{
flag=1;
break;
}
}
if(flag==0||lc>=5)
{
n=lc;
if(shang[n]==0&&nei[n]==0)
{
fz=0;
zz=0;
delay3();
}
xia[n]=0;
for(i=n-1;i>=1;i--)
{
keyscan();
zhishideng();
if(shang[i]==1||xia[i]==1||nei[i]==1)
{
flag=2;
break;
}
}
}
}
if(flag==2)
{
keyscan();
zhishideng();
zz=0;
fz=1;
zz=0;
fz=1;
delay5();
lc--;
display(lc);
if(xia[lc]==1||nei[lc]==1)
{
xia[lc]=0;
nei[lc]=0;
zhishideng();
fz=0;
zz=0;
delay3();
}
flag=0;
n=lc;
for(i=n-1;i>=1;i--)
{
keyscan();
zhishideng();
if(shang[i]==1||xia[i]==1||nei[i]==1)
{
flag=2;
break;
}
}
if(flag==0||lc<=1)
{
n=lc;
if(xia[n]==0&&nei[n]==0)
{
fz=0;
zz=0;
delay3();
}
shang[n]=0;
for(i=n+1;i<=5;i++)
{
keyscan();
zhishideng();
if(shang[i]==1||xia[i]==1||nei[i]==1)
{
flag=1;
break;
}
}
}
}
}
}
//端口初始化函数。
voidinit()
{
P0=0xff;
P1=0xf8;
P2=table[lc];
P3=0x00;
}
//二极管点亮熄灭函数。
voidzhishideng()
{
L1=!
nei[1];
L2=!
nei[2];
L3=!
nei[3];
L4=!
nei[4];
L5=!
nei[5];
}
//数码管显示函数。
voiddisplay(uintaa)
{
P2=table[aa];
}
//延迟五秒函数。
voiddelay5()
{
uintx,y;
for(x=380;x>0;x--)
for(y=110;y>0;y--)
{
keyscan();
zhishideng();
}
}
//延迟三秒函数。
voiddelay3()
{
uintx,y;
for(x=280;x>0;x--)
for(y=110;y>0;y--)
{
keyscan();
zhishideng();
}
}
//ms级延函数。
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//键盘扫描函数。
voidkeyscan()
{
num=0;
P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xee:
num=1;
break;
case0xde:
num=2;
break;
case0xbe:
num=3;
break;
case0x7e:
num=4;
break;
}
while(temp!
=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xed:
num=5;
break;
case0xdd:
num=6;
break;
case0xbd:
num=7;
break;
case0x7d:
num=8;
break;
}
while(temp!
=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xeb:
num=9;
break;
case0xdb:
num=10;
break;
case0xbb:
num=11;
break;
case0x7b:
num=12;
break;
}
while(temp!
=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xe7:
num=13;
break;
case0xd7:
num=14;
break;
case0xb7:
num=15;
break;
case0x77:
num=16;
break;
}
while(temp!
=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
switch(num)
{
case1:
shang[1]=1;
break;
case2:
shang[2]=1;
break;
case3:
shang[3]=1;
break;
case4:
shang[4]=1;
break;
case5:
xia[2]=1;
break;
case6:
xia[3]=1;
break;
case7:
xia[4]=1;
break;
case8:
xia[5]=1;
break;
case9:
nei[1]=1;
break;
case10:
nei[2]=1;
break;
case11:
nei[3]=1;
break;
case12:
nei[4]=1;
break;
case13:
nei[5]=1;
break;
case14:
break;
case15:
break;
case16:
alarm1=1;alarm2=0;zz=fz=0;while
(1);
break;
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告