基于单片机80C51设计地下车库车位显示及控制_第1页
基于单片机80C51设计地下车库车位显示及控制_第2页
基于单片机80C51设计地下车库车位显示及控制_第3页
基于单片机80C51设计地下车库车位显示及控制_第4页
基于单片机80C51设计地下车库车位显示及控制_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 题 制 作 论 文设计题目名称:基于单片机80C51设计地下车库车位显示及控制自动化 专业名称:_班 级:_姓 名:_学 号:_指导教师:_ 摘要1一 说明2二 硬件组成22.1、80C5122.2、74LS16442.3、LED数码管5三、流程图73.1、中断流程图73.2、主程序流程图7总结8参考文献9附录1 程序10附录2 Proteus仿真图14摘要 随着经济的发展、社会的进步,越来越多的土地被用来建设,随之而来的就是合理利用资源的一系列问题。本实验课题就基于合理利用土地资源而进行的简单设计。本次课题设计应用的是80C51芯片实现地下停车位的控制显示,利用串行口通信,外加74LS1

2、64扩展芯片。由80C51的两个中断实现灯闪烁以及紧急情况中断和清除紧急情况中断。车位显示由两个共阳极七段数码管显示,外加74LS164实现数码管的静态显示。检测原件用按钮开关代替。关键词:80C51、74LS164、数码管、中断一 说明本次设计的思路大致是:(1)当进车无出车 进车指示灯闪烁,提醒此时有进车,出车的等待。等进车过程结束,方可出车;(2)当出车无进车 出车指示灯闪烁,提醒此时有出车,进车的等待。等出车过程结束,方可进车;(3)同时有进车和出车 当同时有进车和出车,或者在第一个进车未结束时,又有出车等待,同时有另一个进车等待,则第一个进车结束后,优先出车,出车结束后才允许等待进车

3、的进车;(4)紧急情况中断0 设置中断0为紧急情况中断,当出现紧急情况时,按下紧急情况按钮,此时中断0响应,进车、出车口黄灯常亮;(5)清除紧急情况中断1 设置中断1为高优先级中断,当紧急情况清除后,按下清除紧急情况按钮,中断1响应,并把紧急情况中断0清除。二 硬件组成课题设计所用到的硬件主要有:80C51芯片一个,74LS164扩展芯片一个,七段数码管两个,LED灯三个,按钮开关和刀闸开关若干,电阻若干,电容三个,晶振一个。2.1、80C51 (1)80C51的硬件结构图图2-1-1(2)组成51单片机内部含有一个8位CPU,4个8位并行口,一个串行口,两个16位定时器,5个中断源,128

4、Byte RAM,4K ROM,21 Byte SFR。(3)引脚80C51表面贴装有44个引脚,其中4个是空引脚。电源及时钟引脚:Vcc、Vss、XTAL1、XTAL2控制引脚:PSEN、ALE、EA、RSTI/O口引脚P0、P1、P2、P3 图2-1-2(4)中断 MCS51单片机的5个中断源分为两种类型:一类是外部中断源,包括INT0和INT1:另一类是内部中断源,包括两个定时/计数器(T0和T1)的溢出中断和串行口的发送/接受中断。1图2-1-3 本次课题设计用到了串行口中断、外部中断1和外部中断0、定时器0中断。 串行口中断主要是负责把数码管要显示的数字的代码通过串行口通信发送到74

5、LS164,通过串行中断判断发送数据是否结束。 定时器0中断主要是负责让LED灯闪烁,有定时器0定时,每10ms产生一次中断。产生中断控制LED点亮和熄灭的时间,实现LED灯闪烁。 定时器0中断还有一个作用是判断进车、出车情况。如果进车时间超过设定值,就会复位,返回主函数中。 外部中断0和外部中断1是进行紧急情况的中断。当出现紧急情况时,按下紧急按钮,则外部中断0响应,禁止进出车,同时控制LED长亮。等紧急情况清除后,按下清除紧急按钮,则外部中断1响应,将设备复位并清除中断0.(5)定时器 在MCS-51单片机中,与定时器/计数器应用有关的控制器有4个,分别为定时器控制寄存器(TCON)、定时

6、/计数器工作方式控制寄存器(TMOD)、中断允许控制寄存器(IE)、中断优先级控制寄存器(IP)。2.2、74LS16474ls164、74lsT164 是高速硅门 CMOS器件,与低功耗肖特基型 TTL 器件的引脚兼容。74HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。图2-2-1时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两

7、个数据输入端(DSA和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,非同步地清除寄存器,强制所有的输出为低电平。本次课题设计是把两个74LS164级联进行驱动数码管静态显示的。两个74LS164的级联如图所示。图2-2-22.3、LED数码管LED数码管又分共阴和共阳两种如图2-3-1。如果把7段数码管的每一段都等效成发光二极管的正负两个极,那共阴就是把abcdefg这7个发光二极管的负极连 接在一起并接地;它们的7个正极接到7段译码驱动电路74LS164的相对应的驱动端上(也是abcdefg);共阳就是把 abc

8、defg的7个发光二极管的正极连接在一起并接到5V电源上,其余的7个负极接到译码驱动集成电路74LS164相应的abcdefg输出端上。无论共阴共阳7段显示电路,都需要加限流电阻,否则通电后就把7段译码管烧坏了。 点亮显示器有静态和动态两种方法。所谓静态显示,就是当显示某一字符时,相应的发光二极管恒定的导通或截止,这种显示方式每一位都需要有一个8位的输出控制;所谓动态显示就是一位一位地轮流点亮 图2-3-1 显示器各位,对于显示器的每一位来说,每隔一段时间点亮一次。显示器的亮度既与导通的电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可以实现亮度较高稳定的显示。若显示器的位数不

9、大于8位,则控制显示器公共极电位只需一个I/O口,控制显示器的各位显示的字型也需要一个8位口。图2-3-2为89C51的显示接口电路。本设计选用静态显示方式。8个74LS164作为4位七段显示器的静态显示口,静态显示方式显示器的亮度大,很容易作到显示不闪烁。而且静态显示时CPU不要频繁地为显示服务,因而主程序可以不必扫描显示器,软件设计简单,从而使单片机有更多的机会处理其它的事务。 图2-3-2 数码管接口电路三、流程图3.1、中断流程图图3-1-13.2、主程序流程图图3-2-1总结此次课题制作过程比较长,从构思,到画流程图,画原理图,写程序,可谓是一波三折。制作过程中也遇到了很多麻烦的问题

10、。比如说控制LED灯的闪烁,刚开始想利用数组实现对不同LED灯的控制,可是写程序事又遇到了新的问题,就是数组与对应端口的对应。又进行对数组和端口的对应定义,因为数组利用的是变量,说以#define的时候定义未成功。就利用了定时器进行LED灯闪烁的控制。还遇到的问题是判断进出车的函数,怎样实现优先出车,当进车函数进行时,又有出车时,怎样进行函数的优先执行。74LS164的级联,也是通过网上收索相关信息才得以实现。通过本次设计,使我真正认识到所学知识的不足和局限性。巩固了有关单片机的知识,也学到了很多新的知识。本次设计,锻炼了我理论和实际结合的能力,通过不断的遇到问题解决问题,弥补不足中提高自己。

11、由于能力有限,本次课题制作中不免有设计不合理的地方,还有未能实现的功能。以后还需多加努力。再此,还要感谢老师,也正是老师授课时把问题实际化,易理解化,一遍一遍不厌其烦的重复单片机基本内容后,才能让我们更容易接受,了解的更全面。 参考文献1 姜志海 赵艳雷 陈松 单片机的C语言程序设计与应用基于Proteus仿真(第2版) 2012年7月第2次印刷2 张齐 单片机应用系统设计技术-基于C语言编程M.北京电子工业出版社,2004。3 潘永雄 新编单片机与应用M 西安电子科技大学出版社 2003年4 周润景 基于Proteus的电路与单片机系统设计与仿真 M 北京航空航天大学出版社 2005年附录1

12、 程序#include<reg51.h>#define uint unsigned int#define uchar unsigned charunsigned char table10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;sbit a=P10;sbit b=P11;sbit c=P12;sbit d=P13;sbit LED1=P14;sbit LED2=P15;sbit LED3=P16;uint i,j,e1,e2,m,deng=0,count,time=0,D1,D2;void delay(uint e) /延

13、时函数 for(j=0;j<e;j+) for(i=0;i<125;i+);void display() /显示函数 TI=0; D2=count/10; SBUF=tableD2; while(TI=0); TI=0; D1=count%10; SBUF=tableD1; while(TI=0); TI=0;int comein() /进车操作函数 e1=1; TR0=1; while(c=1);/等待车辆通过检测 while(d=1) if(deng>1000) e1=0;e2=0;TR0=0;LED2=1;deng=0;return; count-; /车位减一 e1=

14、0; TR0=0; LED2=1; display(); delay(200);int comeout()/出车操作函数 e2=1; TR0=1; while(d=1); while(c=1) if(deng>1000) e1=0;e2=0;TR0=0;LED1=1;deng=0;return; count+;/车位加一 e2=0; TR0=0; LED1=1; display(); delay(200);void main() SCON=0x00; /串行口方式0工作 /kai zhong duan IE=0x85; /开中断0和中断1 IP=IP|0x04; /设中段1为高优先级中断

15、 IT0=0; IT1=0; /设置电平触发方式 TMOD=0x01; /设置定时器0工作在模式1下 TH0=(65536-10000)/256; TL0=(65536-10000)%256; ET0=1; /开计数器中断 count=3; display(); e1=0;e2=0; while(1) if(count>0) LED3=1;if(a=0)&&(b=0) comeout(); /出车 if(a=0)&&(e2=0) /进车以及进车判断 if(count>0) comein(); if(count=0) LED3=0; /当没有空车位时,

16、禁止进车,红灯亮 if(b=0)&&(e1=0) comeout(); /等待进车结束后优先出车 void t0() interrupt 1 /时间中断函数, TH0=(65536-10000)/256; TL0=(65536-10000)%256; time+; deng+; if(e1=1) /进车指示灯闪烁 if(time<=50) LED2=0; if(time>50) LED2=1; if(time=100) time=0; if(e2=1) /出车指示等闪烁 if(time<=50) LED1=0; if(time>50) LED1=1; if(time=100) time=0; void int0() interrupt 0 using 0/中断0 紧急情况中断 m=1; e1=1;e2=1; deng=0; LED1=0; LED2=0; TR0=0; while(m=1);void int1() interrupt 2 using 1 /中断1 清除紧急情况中断 e1=0;e2=0; LED1=1; LED2=1; m=0;附录2 Proteus仿真图15

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论