基于AT89C51单片机的滚动电梯显示设计.doc
《基于AT89C51单片机的滚动电梯显示设计.doc》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的滚动电梯显示设计.doc(23页珍藏版)》请在冰豆网上搜索。
江苏信息职业技术学院毕业设计(论文)
毕业设计
8×8LED点阵屏仿电梯数字滚动显示
系电子信息工程系
专业电子信息工程姓名姚新宇
班级电信122学号121043209
指导教师郑雪芳职称讲师
设计时间先空着
江苏信息职业技术学院毕业设计
摘要
摘要要重写,注意摘要写的是你做了什么。
本毕业设计完成了一个……的系统,(系统是如何工作的,此处作一个介绍)
本文分成。
。
。
。
。
。
个部分,第一部分介绍了。
。
。
。
。
。
,第二部分介绍了。
。
。
。
。
。
,第三部分介绍。
。
。
。
以此类推
关键词:
单片机,电梯,C语言,再找两个
目录
摘要 2
目录 3
第1章绪论 4
1.1研究的背景及意义 4
1.2课题的内容与要求 4
第2章方案设计 1
第3章硬件电路设计 2
3.1单片机 2
3.2元件 4
3.3晶振、复位电路 4
第四章软件设计 6
5.1程序流程图 6
5.2各模块的流程图 7
第5章仿真结果 9
总结与展望 12
参考文献 13
致谢 14
附录一电路图 15
附录二完整程序 15
附录二完整程序 16
第1章绪论
1.1研究的背景及意义
当今世界,电子技术迅猛发展,点阵式显示器件作为信息显示的重要媒体,在金融证券、体育、邮电电信、指挥调度、国防军事等许多领域中得到了广泛应用。
因此点阵式显示器件的研制、生产也得到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。
由于LED电子显示屏具有所显内容信息量大,外形美观大方,操作使用方便灵活,适用于火车、汽车站、码头、金融证券市场、文化中心、信息中心体育设施等公共场所。
该设计广泛涉及了计算机及电子技术中的电源技术,单片机技术,数据通信技术,显示技术,存储技术,系统软件技术,接口及驱动等技术。
我国经济发展迅猛,对信息传播有越来越高的要求,可以相信,LED电子显示屏以其大的显示信息量,寿命长,耗电量小,重量轻,空间尺寸小,稳定性高,易于操作,安装和维护等特点,将在社会经济发展中扮演越来越重要的角色。
1.2课题的内容与要求
本课题的主要任务是完成一个电梯LED滚动显示,即根据每个楼层不同
顾客的按键要求,让电梯显示出楼层,正确高效的指导电梯完成各项载客任务。
设计基于单片机的LED滚动显示系统的硬件电路与软件程序,给出硬件系统的电路
原理图,对硬件电路与软件分别进行调试,得到调试成功的基于单片机的电梯LED显示控制系统。
(只是led滚动显示,不涉及电梯智能控制,不能乱写,本部分需要重新写)
根据此任务,本课题需要研究的内容有:
1、根据系统的技术要求,进行系统硬件的总体方案设计;
2、学习单片机的相关知识,并且加以运用;
3、选择适当的芯片,并对其内部协议有所掌握,便于应用。
4、研究单片机C语言编程,并且规定电梯的工作规则,用C语言加以实现;
5、对软件和硬件进行调试,让其协调工作,完成指定任务。
第2章方案设计
8×8LED点阵仿电梯数字滚动屏以。
。
。
。
。
。
为核心,用。
。
。
作为显示屏,硬件部分包括。
。
。
。
。
。
。
。
。
。
电路。
并画出系统的组成框图
框图后面,对系统的工作过程作一个简单介绍。
本文介绍了一种采用单片AT89S51芯片进行电梯控制系统的设计方法,主要阐述如何使用单片机进行编程来实现电子设计的方法,利用单片机编程实现功能,简洁而又多变的设计方法,缩短了研发周期,同时使电梯控制系统体积更小功能更强大。
本设计实现了电梯控制系统所需的一些基本功能,能通过数字按键选择楼层,数码管显示实时楼层数。
原理图采用proteus专业软件来设计。
原理图如下:
原理图放到第三章
第3章硬件电路设计
先对系统的工作过程作一个简单介绍,之后将硬件电路图放在此处。
3.1单片机
1.AT89C51单片机
AT89C51是一个低电压,高性能CMOS8位单片机带有4K字节的可反复擦写的程序存储器(PENROM)。
和128字节的存取数据存储器(RAM)这种器件采用(ATMEL)公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。
片内含有8位中央处理器和闪烁存储单元,有较强的功能的AT89C51单片机能够被应用到控制领域中。
本设计采用AT89C51,它提供以下的功能标准:
4K字节闪烁存储器,128字节随机存取数据存储器,32个I/O口,2个16位定时/计数器,1个5向量两级中断结构,1个串行通信口,片内震荡器和时钟电路。
另外,AT89C51还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式。
闲散方式停止中央处理器的工作,能够允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。
掉电方式保存随机存取数据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一个复位。
2.74LS245单片机(这个不是单片机吧?
?
查查资料)
74LS245是我们常用的芯片,用来驱动LED或者其他的设备,它是8路相同三态双向总线收发器,可双向传输数据。
74LS245还具有双向三态功能,既可以输出,也可以输入数据。
8051单片机的P0口总线负载达到或超过P0口最大负载能力时,必须接入74LS245等总线驱动器。
当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输;(接收)DIR=“1”,信号由A向B传输;(发送)当CE为高电平时,A、B均为高组态。
由于P2口始终输出地址的高8位,接口时74LS245d三态控制端1G和2G接地,P2口与驱动器输入线对应相连。
P0口与74LS245输入端相连,E端接地,保证数据线畅通。
8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P0.1←D1),其他时间处于输出(P01→D1)。
3.28**LED点阵
8×8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上。
当对应的某一行置1,某一列置0,则相应的二极管就亮。
LED点阵显示器是由一串发光或者不发光的点状显示器按矩阵的方式排列组成的。
不论显示图形还是文字,都是控制与组成这些图形或者文字的各个点所在的位置相对应的LED器件发光。
通常事先把需要显示的图形文字转换成点阵图形,再按照显示控制的要求以一定的格式形成显示数据。
对显示屏而言,每一个LED发光器件占数据中的一位,在需要该器件发光的数据相应的位填1,否则填0.根据控制电路的安排,相反的定义同样可行。
3.3晶振、复位电路
晶振是电路中常用用的时钟元件,全称是叫晶体震荡器,在单片机系统里晶振的作用非常大,他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。
晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。
高级的精度更高。
有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。
晶振的作用是为系统提供基本的时钟信号。
通常一个系统共用一个晶振,便于各部分保持同步。
有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。
复位电路
复位电路,就是利用它把电路恢复到起始状态。
就像计算器的清零按钮的作用一样,以便回到原始状态,重新进行计算。
和计算器清零按钮有所不同的是,复位电路启动的手段有所不同。
一是在给电路通电时马上进行复位操作;二是在必要时可以由手动操作;三是根据程序或者电路运行的需要自动地进行。
复位电路都是比较简单的大都是只有电阻和电容组合就可以办到了。
再复杂点就有三极管等等配合程序来进行了。
为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。
一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。
由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才会撤除,微机电路开始正常工作。
3.4按键模块
乘客可由按键控制电梯上升下降,按下对应楼层按键,点阵屏数字将从当前位置向下或向上平滑滚动显示到指定楼层位置。
第四章软件设计
5.1程序流程图
本文设计了实现单片机控制下电梯智能控制系统的设计方案。
可以按照乘客的要求,将乘客送到要去的目的层。
但是,电梯还有很多的扩展的空间并未实现,比如电梯自动语音报站系统的设计,楼层监控系统,节能设计以及其它更多的服务。
开始
主程序
键盘扫描子程序
K1~K5按下?
点亮相应的LED
键盘扫描子程序
开T0中断
键盘扫描子程序
K1~K5按下?
2S到,当前楼层+1=键值?
返回主程序
转判断子程序
存键值
Y
N
N
Y
5.2各模块的流程图
1.主程序模块
开始
P3口初始化0x08
对定时器TMOD赋值0x01
计算初值,并写入TH0TL0
启动定时器TR1
对IE中断赋值,开放中断
调信号采集子程序
系统主程序主要用于变量及其他部件的初始化,如定时器T0的初始化,以便能够准确的进行相应的操作。
同时进行相应的功能键判断,从而实现特殊功能。
其相应的流程图如下:
2判断子程序
在相应的中断子程序中,需要进行相应楼层的逻辑判断,尤其是两个楼层申请的时候,一般都需要根据现在的楼层状态以及相应的升降标志位进行相应的处理,例如在上升状态时,若第二个楼层的申请较第一个申请离现在的楼层状态更近,则应先响应第二个申请的响应,然后再对第一个申请进行响应,若有楼层申请在当前楼层的下面,也应根据升降的标志位进行判断,如果是上升状态,应先响应上面的楼层,然后再响应其他的申请。
当然,如果处于下降状态,则以相反的顺序进行响应。
这里只是两个楼层申请时的讨论。
当有更多楼层响应时,还需进一步进行逻辑的思考与判断。
FLAG=1?
SEC>NOW?
判断子程序
N
SEC>FIR?
SEC>NOW?
SEC>FIR?
先上升到SEC楼层
上升到未到的层
返回到主程序
下降到FIR层
先上升到FER楼层
下降到未到的层
返回主程序
N
Y
N
N
N
Y
N
下降FIR楼层
第5章仿真结果
在Proteus中完成电路图的绘制,并将数码管显示的温控电动机的程序输入到keil中,并进行编译,生成hex文件。
之后将生成的hex文件添加到单片机中,实现二者的联调,得到仿真结果。
按下按键。
。
。
,出现如图5.1所示的界面。
按下开关K2,出现。
。
。
。
。
按下开关K3,出现
按下开关K4,出现
按下开关K5,出现
总结与展望
一、总结
通过此次电梯控制系统的设计,我收获颇丰。
设计的核心内容就是利用单片机C51的编程来实现控制外围各电路的运行。
通过本次设计,我熟练掌握了程控系统设计的一般步骤,熟悉了编程软件的用法,并对编程能力起到了一定的提高作用。
本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。
在此次设计中,我们得到以下体会:
一、在这次点阵设计的过程让我进一步熟悉KEIL及Proteus的使用。
二、通过这次点阵设计,重新复习并进一步学习了MCS-52优点,明确了研究目标。
三、在后的设计中,既要想到电路器件的联合使用,又要灵活变通,举一反三。
二、今后研究方向
重写
参考文献
[1]李朝青.单片机通讯技术与工程实践.北京:
航空航天大学出版,2007.2
[2]李群芳.单片机原理接口与应用.北京:
清华大学出版社,2005.6
[3]朱清慧,张凤蕊,翟天嵩,王志奎.Proteus教程——电子线路设计、制作与仿真[M].北京:
清华大学出版社,2008.
[4]康华光,陈大钦.电子技术基础—模拟部分第五版[M].北京:
高等教育出版社,2005
[5]郭天祥.51单片机C语言教程[M].北京:
电子工业出版社.2008.
[6]陈小忠.单片机接口技术使用子程序[M].北京:
人民邮电出版社,2005.
[7]51单片机C语言教程[M].北京:
电子工业出版社,2009.
[8]何希才.新型实用电子电路400列[M].北京:
电子工业出版社,2006.
字体段落格式
致谢
感谢我的导师郑雪芳老师,她耐心回答我不懂的问题,她循循善诱的教导和不拘一格的思路给予我无尽的启迪。
感谢所有教过我的科任老师的教育培养。
他们细心指导我的学习和各种实践活动
感谢我的室友们,在和他们相处的两年多里,我学会了很多,会体会别人的感受,天天在一起快乐的学习,一起愉快的玩耍,有什么不能解决的问题我们都是互帮互助。
虽然马上要各奔东西,但是我会记住我们在一起的时光。
希望大家可以找到满意的工作,为了更美好的明天而奋斗。
感谢我的父母,在这些年里他们对我照顾,我会找一个好工作,赚更多的钱来回报他们。
附录一硬件电路图
附录二完整程序
#include//52系列单片机头文件
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeTable_OF_Digits[]=
{
0x00,0x3C,0x66,0x42,0x42,0x66,0x3C,0x00,//0
0x00,0x08,0x38,0x08,0x08,0x08,0x3E,0x00,//1
0x00,0x3C,0x04,0x04,0x3C,0x20,0x3C,0x00,//2
0x00,0x3C,0x04,0x3C,0x04,0x04,0x3C,0x00,//3
0x00,0x20,0x28,0x28,0x3C,0x08,0x08,0x00,//4
0x00,0x3C,0x20,0x20,0x3C,0x04,0x3C,0x00,//5
0x00,0x20,0x20,0x20,0x3C,0x24,0x3C,0x00,//6
0x00,0x3C,0x04,0x04,0x04,0x04,0x04,0x00//7
};
uintr=0;
charoffset=0;
ucharCurrent_Level=1,Dest_Level=1,x=0,t=0;
//------------------------------------------
//主程序
//------------------------------------------
voidmain()
{
P3=0x80;
Current_Level=1;
Dest_Level=1;
TMOD=0x01;
TH0=-4000/256;
TL0=-4000%256;
TR0=1;
IE=0x82;
while
(1);
}
//------------------------------
//TO中断
//-------------------------------
voidLED_Screen_Display()interrupt1
{
uchari;
if(P1!
=0xFF&&Current_Level==Dest_Level)
{
if(P1==0xFE)Dest_Level=5;
if(P1==0xFD)Dest_Level=4;
if(P1==0xFB)Dest_Level=3;
if(P1==0xF7)Dest_Level=2;
if(P1==0xEF)Dest_Level=1;
}
TH0=-4000/256;
TL0=-4000%256;
P3=_crol_(P3,1);
i=Current_Level*8+r+offset;
P0=~Table_OF_Digits[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;
}
}
18