单片机课设 电梯楼层显示器设计.docx
- 文档编号:7585514
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:13
- 大小:373.49KB
单片机课设 电梯楼层显示器设计.docx
《单片机课设 电梯楼层显示器设计.docx》由会员分享,可在线阅读,更多相关《单片机课设 电梯楼层显示器设计.docx(13页珍藏版)》请在冰豆网上搜索。
单片机课设电梯楼层显示器设计
1、题目设计要求
利用51单片机和8×8点阵显示屏设计电梯楼层显示器,实现6层显示控制。
2、系统的组成及设计方案
2.1系统组成
2.1.1晶振电路(时钟电路)
组成:
由51单片机本身时钟段和晶振提供,其中电路由两个22pF的电容C1和C2与一个晶体振荡器X1组成,仿真图如图2.1所示。
功能:
用来给单片机内各种微操作提供时间基准信号的。
图2.1晶振电路
2.1.2复位电路
组成:
由一个10K的电阻和一个10uF的电容接至51单片机的复位端,完成复位功能,其仿真图如图2.2所示。
功能:
使单片机内部的CPU及其他部件初始化,即处于一种确定的初始状态,然后从这个初始状态开始工作。
图2.2复位电路
2.1.351单片机
组成:
由P0、P1、P2、P3四个口以及复位端RST、电源VCC等多个功能接口组成,其具体结构如图2.3所示
功能:
存储和处理程序。
图2.3单片机结构图
2.1.4显示电路
功能:
8*8LED点阵用于显示电梯楼层,连接点阵显示器的共阳极r端需经驱动三极管与单片机的P3口相连,而共阴极c端需经限流电阻与单片机的P0口相连。
仿真图如图2.4所示。
图2.48*8LED点阵显示器
2.1.5驱动电路
用于驱动8*8点阵LED显示设备,使51单片机所发出的信号的电压相对稳定,增加负载能力。
2.1.65V电源
提供设备所需的电压,功耗。
2.2设计方案
本设计是六层电梯的单片机控制系统。
从系统硬件结构上来看,我们主要使用到51系列单片机、共阳8*8点阵LED屏、开关键盘输入电路、电源电路等等。
将这些硬件电路有机地结合起来使之满足8*8点阵屏仿电梯楼层数字滚动显示的实现硬件需要。
从系统软件设计角度来看,将8*8点阵屏仿电梯楼层数字滚动显示的课程设计采用程序模块化设计方法,将程序分为主程序、8*8点阵显示模块。
因此,我们可以综合上述的方案设计原理,从软件和硬件两部分进行有计划有步骤的系统分析和设计。
3、器件的功能和作用
3.1硬件系统实现
3.1.1工作原理及原理图
8*8点阵屏仿电梯楼层数字滚动显示的课程设计主要为手动按键显示楼层。
手动按键显示楼层是根据具体的硬件键盘设置功能键实现电梯显示屏楼层的滚动变换,在12MHz晶振的作用下,开关触发I/O口变自动调用相应位置中的程序,将对应的振动频率输出给8*8点阵,实现点阵显示屏的不同变化。
其原理图如图3.1所示。
图3.1电路原理图
3.1.2设计元器件说明
1)AT89C51简介
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图3.2和3.3所示。
图3.2三种单片机外形图图3.3AT89C51的管脚图
部分引脚功能:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
2)8*8LED点阵显示器
8×8点阵LED的引脚图如图3.4所示,当采用单片机进行控制时,连接点阵显示器的共阳极r端需经驱动三极管9012与单片机的P3口相连,而共阴极c端需经限流电阻与单片机的P0口相连。
在编程控制时,将8×8点阵LED显示分成行和列两部分,字符数据从P0口输出,扫描控制字从P3口输出,每一列由一个字节的数据组成,数据可一次送入,然后扫描一行,显示一个字需要扫描8次。
图3.48×8点阵LED引脚的排列图
3)晶振简介
晶振全称为晶体振荡器(英文CrystalOscillators),其作用在于产生原始的时钟频率,这个频率经过频率发生器的放大或缩小后就成了电脑中各种不同的总线频率。
图3.5晶振外形图
3.2系统软件设计
3.2.1程序流程图及主程序
程序流程图介绍:
第一类函数起作用于按键按下的时刻,当有按键按下时,以中断的方式发给单片机,此时,单片机即对程序中所有用到的各个状态变量进行置位,且点亮相应的发光二极管;第二类函数起作用与电梯到达目标楼层时,这时函数负责把相关发光二极管熄灭,并且及时清除相关状态位,以免影响判别函数做出正确判断;第三类函数是程序的核心,它直接负责管理电梯下一次所要到达的楼层,每当电梯经过一楼层时,此函数即会被调用,即为下一个电梯要停留的目标楼层值。
图3.6程序流程图
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitK1=P2^5;
sbitK2=P2^4;
sbitK3=P2^3;
sbitK4=P2^2;
sbitK5=P2^1;
sbitK6=P2^0;
sbitBE=P2^7;
ucharcodeNUM[]={
0x00,0x10,0x30,0x10,0x10,0x10,0x38,0x00,//点阵显示数字1
0x00,0x18,0x24,0x04,0x18,0x20,0x3c,0x00,//点阵显示数字2
0x00,0x18,0x24,0x04,0x18,0x04,0x24,0x18,//点阵显示数字3
0x00,0x08,0x18,0x28,0x48,0x7c,0x08,0x08,//点阵显示数字4
0x00,0x3c,0x20,0x38,0x04,0x04,0x38,0x00,//点阵显示数字5
0x00,0x18,0x24,0x20,0x38,0x24,0x24,0x18,//点阵显示数字6
};
uintr;
charoffset=0;
ucharCurrent_Level=1,Dest_Level=1,x=0,t=0;
voiddelay(uintx)//延迟函数,通过延时函数消除抖动
{
uchari;
while(x--)
for(i=0;i<120;i++);
}
voidmain()//主函数
{
P3=0x80;//给P3口赋初值
Current_Level=1;
Dest_Level=1;
TMOD=0x01;//定时器T0工作模式选择1
TH0=-4000/256;//TL0=-4000%256;
TR0=1;//启动T0开始计时
IE=0x82;//中断允许寄存器,其值为82时,二进制为10000010,IE.7位为1表示CPU开放中断,IE.1位也为1,表示允许定时器T0溢出中断
while
(1);//等待中断
}
voidLED_Screen_Display()interrupt1//中断函数
{
uchari;
if(P1!
=0xff&&Current_Level==Dest_Level)
{
if(P1==0xfe){Dest_Level=5;K6=0;}
if(P1==0xfd){Dest_Level=4;K5=0;}
if(P1==0xfb){Dest_Level=3;K4=0;}
if(P1==0xf7){Dest_Level=2;K3=0;}
if(P1==0xef){Dest_Level=1;K2=0;}
if(P1==0xdf){Dest_Level=0;K1=0;}
}
TH0=-4000/256;//复位
TL0=-4000%256;
P3=_crol_(P3,1);//循环左移一位
i=Current_Level*8+r+offset;
P0=~NUM[i];
if(Current_Level if(++r==8){ r=0; if(++x==4){ x=0; if(++offset==8){ offset=0; Current_Level++; } } } } else if(Current_Level>Dest_Level) { if(++r==8) { r=0; if(++x==4) { x=0; if(--offset==-8) { offset=0; Current_Level--; } } } } else { if(++r==8){r=0;} } } 3.2.2子程序功能实现 a.延时函数 voiddelay(uintx) { uchari; while(x--) for(i=0;i<120;i++); } b.楼层判断 if(Current_Level if(++r==8){ r=0; if(++x==4){ x=0; if(++offset==8){ offset=0; Current_Level++; } } } } else if(Current_Level>Dest_Level) { if(++r==8) { r=0; if(++x==4) { x=0; if(--offset==-8) { offset=0; Current_Level--; } } 4、系统仿真调试过程及结果 4.1Proteus下的仿真原理图设计 首先利用Proteus中的器件库完成电路的连接,其中电路由一个复位电路和一个时钟电路与单片机相连,P1口与六个控制开关相连,经LED显示屏与限流装置相连,构成一个完整的系统,其仿真图如图4.1所示: 图4.1仿真原理图 然后双击AT89C51,出现“EditComponet”,在ProgramFile中单击,出现文件浏览对话框,找到后缀为.hex的文件,单击确定,完成添加文件。 Proteus与程序代码的链接如图4.2所示。 图4.2Proteus与程序代码链接图 4.2仿真运行过程及结果 当闭合开关K6时,8*8LED点阵显示器显示楼层数为6层,并且只有K6断开连接时,其他楼层才能申请电梯的使用,并且显示相应的楼层数,楼层数为6时,运行结果如图4.3所示。 图4.3楼层为6时的楼层数字显示图 5、总结 通过这次单片机课程设计,让我在学习单片机理论知识的基础上,增强了实践动手能力。 在参考了许多相关资料后,理解了五层电梯的设计要求,并且完成了设计的功能要求,而且还完成了老师布置的相关问题的改进和提升,但本代码中可能仍存在一些不能解决的实际问题,许多工程实际问题不能完全用理论知识去解决,需要不断吸取现场经验,寻找解决问题方法。 虽然能完成设计的基本功能,但仍有可拓展的空间,比如超载报警、多层电梯等,都是可以继续研究以满足更多的功能要求,但以我现在对单片机知识的了解,可能不太容易完成,希望以后有机会再深入地学习单片机,设计出更符合实际功能需求的代码。 6、参考文献 [1]马秀丽周越王红《单片机原理与应用系统设计》清华大学出版社2014 [2]马秀丽周越王红《C语言程序设计》清华大学出版社2012 [3]张毅刚《MCS-51单片机应用设计》哈尔滨工业大学出版社2008 [4]张迎新《单片机基础》北京航空航天大学出版社2005 [5]郑田友《基于单片机的电梯控制系统的研究[J]》科技资讯2007
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课设 电梯楼层显示器设计 单片机 电梯 楼层 显示器 设计