单片机课程设计报告基于8255A的交通灯.doc

上传人:李司机 文档编号:1180094 上传时间:2022-07-14 格式:DOC 页数:17 大小:97KB
返回 下载 相关 举报
单片机课程设计报告基于8255A的交通灯.doc_第1页
第1页 / 共17页
单片机课程设计报告基于8255A的交通灯.doc_第2页
第2页 / 共17页
单片机课程设计报告基于8255A的交通灯.doc_第3页
第3页 / 共17页
单片机课程设计报告基于8255A的交通灯.doc_第4页
第4页 / 共17页
单片机课程设计报告基于8255A的交通灯.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《单片机课程设计报告基于8255A的交通灯.doc》由会员分享,可在线阅读,更多相关《单片机课程设计报告基于8255A的交通灯.doc(17页珍藏版)》请在三一办公上搜索。

1、目 录第一章引言11.1设计目的11.2 设计背景11.3 设计要求2第二章系统硬件设计32.1设计方案32.2工作原理32.3 硬件介绍42.3.1 MSC-51芯片简介42.3.2 8255A芯片5第三章系统软件设计73.1 时间及信号灯的显示73.2 延时设计83.3 程序流程图93.4 程序源代码10第四章系统调试结果154.1 测试结果15小结16参考文献17第一章 引言1.1设计目的1、通过交通信号灯控制系统的设计,掌握8255A并行口传输数据的方法,以控制发光二极管的亮与灭;2、用8255作为输出口,控制十二个发光二极管熄灭,模拟交通灯管理.3、通过单片机课程设计,熟练掌握汇编语

2、言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力;4、完成控制系统的硬件设计、软件设计、仿真调试。1.2 设计背景十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通平安和道路畅通的关键。当前,国大多数城市正在采用“自动红绿交通灯,它具有固定的“红灯绿灯转换间隔,并自动切换。它们一般由“通行与制止时间控制显示、红黄绿三色信号灯和方向指示灯三局部组成。在交通灯的通行与制止时间控制显示中,通常要么东西、南北两方向各50秒;要么根据交通规律,东西方向60秒,南北方向40秒,时间控制都是固定的。交通灯的时间控制显示,以固定时间值预先“固化在单片

3、机中,每次只是以一定周期交替变化。但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受认为因素的影响。采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。 目前,有一种使用“模糊控制技术控制交通灯的方法。能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以

4、便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。1.3 设计要求编写程序, 使用8255A 可编程并行接口芯片, 控制12 位L ED (发光二极管) 的亮灭, 从而实现交通灯的模拟控制过程。控制要求如下:初始状态为四个路口的红灯全亮, 之后, 东西路口的绿灯亮南北路口的红灯亮, 东西路口方向通车。延时一段时间后东西路口的绿灯熄灭, 黄灯开场闪烁, 闪烁假设干次后, 东西路口红灯亮,而同时南北路口的绿灯亮, 南北方向开场通车, 延时一段时间后, 南北路口的绿灯熄灭, 黄灯开场闪烁。闪烁假设干次后, 再切换到东西路口方向, 之后重复以上过程。第二章 系统硬件设计2.1设计方案东西、南北两干道交

5、于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人平安通行。红灯亮制止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。设东西道比南北道的车流量大,指示灯燃亮的方案如表2。60S5S80S5S东西道红灯亮黄灯亮绿灯亮黄灯亮南北道绿灯亮黄灯亮红灯亮黄灯亮上表说明: 1当东西方向为红灯,此道车辆制止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人制止通行。时间为60秒。2黄灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换。3当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆制止通过,行人通行。时间为80秒

6、。 东西方向车流大 通行时间长。4这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能平安畅通的通行。2.2工作原理1开关键盘输入交通灯初始时间,通过8051单片机P1输入到系统2 由8051单片机的定时器每秒钟通过P0口向8255的数据口送信息,由8255的PA 口显示红、绿、黄灯的燃亮情况;由8255的PC口显示每个灯的燃亮时间。38051通过 设置 各个信号等的燃亮时间、通过8031设置,绿、红时间分别为60秒、80秒循环由8051的 P0口向8255的数据口输出。4 通过8051单片机的P3.0位来控制系统是工作或设置初值,当.牌位0就对系统进展初始化,为1系统就开场工作。

7、5红灯倒计时时间,当有车辆闯红灯时,启动蜂鸣器进展报警,3S后然后恢复正常。6增加每次绿灯时间车流量检测的功能,并且通过查询P2.0端口的电平是否为低,开关按下为低电平,双位数码管显示车流量,直到下一次绿灯时间重新记入。7绿灯时间倒计时完毕,重新循环。2.3 硬件介绍2.3.1 MSC-51芯片简介8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进展系统的讲解。8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:中央处理器:中央处理器(CP

8、U)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(RAM):8051部有128个8位用户数据存储单元和128个专用存放器单元,它们是统一编址的,专用存放器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。 程序存储器(ROM):8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。定时/计数器(ROM):8051有两个16位的可编程定时/计数器,以实

9、现定时或计数产生中断用于控制程序转向。并行输入输出(I/O)口:8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。全双工串行口:8051置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统:8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。时钟电路:8051置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。2.3.2 8255A芯片Intel 8086/8088 系列的

10、可编程外设接口电路Programmable Peripheral Interface)简称 PPI,型号为8255,具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。8255A的部构造和引脚图部构造 数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。 三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B

11、端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。 A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址一样的控制字存放器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。方式控制字的高5位决定A组的工作方式,低3位决定B组的工作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来

12、控制把状态信息或输入数据通过相应的端口送到CPU。引脚信号8255A的引脚分为数据线、地址线、读/写控制线、输入/输出端口线和电源线。D7D0data bus:三态、双向数据线,与CPU数据总线连接,用来传送数据。chip select:片选信号线,低电平有效时,芯片被选中。A1, A0port address:地址线,用来选择部端口。read:读出信号线,低电平有效时,允许数据读出。write:写入信号线,低电平有效时,允许数据写入。RESETreset):复位信号线,高电平有效时,将所有部存放器包括控制存放器清0。PA7PA0port A:A口输入/输出信号线。PB7PB0port B:B

13、口输入/输出信号线。PC7PC0port C:C口输入/输出信号线。VCC:5V电源。 GND:电源地线。 8255A的工作方式8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种; 方式0 :根本的输入输出方式,即无须联络就可以直接进展的 I/O方式。其中A、B、C口的高四位或低四位可分别设置成输入或输出。 方式1 :选通I/O,此时接口和外围设备需联络信号进展协调,只有A口和B口可以工作在方式1,此时C口的*些线被规定为A口或B口与外围设备的联络信号,余下的线只有根本的I/O功能,即只工作在方式0. 方式2: 双向I/O方式,只有A口可以工作在这种方式,该

14、I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。 8255A是一个并行输入、输出器件,具有24个可编程设置的I/O口,包括3组8位的I/O为PA口、PB口、PC口,又可分为2组12位的I/O口:A组包括A口及C口高4位,B组包括B口及C组的低4位。第三章 系统软件设计3.1 时间及信号灯的显示显示原理:当定时器定时为1秒,时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间 ,同时一直显示信号灯的颜色,这时在返回定时子程序定时一秒,在显示黄灯的下一个时间,这样依次把所有的灯色的时

15、间显示完后在重新给时间计数器赋初值 ,重新进入循环。 8255PA口输出信号接信号灯: 由于发光二极管为共阳极接法,输出端口为低电平,对应的二极管发光,所以可以用置位方法点亮红,绿,黄发光二极管。58255输出信号与数码管的连接: LED 灯的显示原理:通过同名管脚上所加电平的上下来控制发光二极管是否点量而显示不同的字形如 SP,g,f,e,d,c,b,a 管角上加上所以上为伏,不亮其余为高电平,全亮则显示为采用共阴级连接:其中 PC0PB0-a,PC1PB1-b, PC2PB2-c,PC3PB3-d,PC4PB4-e, PC5PB5-f,PC6PB6-gPC7PB7 -SP接地显示数值dop

16、 g f e d c b a 驱动代码16进制00 0 1 1 1 1 1 1 3FH1 0 0 0 0 0 1 1 006H2 0 1 0 1 1 0 1 15BH3 0 1 0 0 1 1 1 14FH4 0 1 1 0 0 1 1 066H5 0 1 1 0 1 1 0 06DH6 0 1 1 1 1 1 0 07DH7 0 0 0 0 0 1 1 107H8 0 1 1 1 1 1 1 17FH 表 3 驱动代码表8255与8051的连接:用8051的P0 口的 p0.7 连接8255的片选信号cs 我们用8031的地址采用全译码方式,当p0.7 =0 时片选有效, 其他无效, p0.

17、1 p0.1 用于选择8255端口 P0.7 p0.6 p0.5 p0.4 p0.3 p0.2 P0.1 P0.0A7 A6 A5 A4 A3 A2 A1 A01 * * * * * 0 0 00H为8255 的PA口1 * * * * * 0 1 01H 为8255的PB口1 * * * * * 1 0 02H 为8255的PC口1 * * * * * 1 1 03H 为8255的控制口由于8051是分时对8255和储存器进展访问所以8051的P0口不会发生冲突3.2 延时设计 MCS-51的工作频率为2-12MHZ,我们选用的8031单片机的工作频率为6MHZ。机器周期与主频有关,机器周期

18、是主频的12倍,所以一个机器周期的时间为12*1/6M=2us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。 具体的延时程序分析: DELAY:MOV R4,*08H 延时1秒子程序 DE2:LCALL DELAY1 DJNZ R4,DE2 RETDELAY1:MOV R6,*0 延时125ms 子程序MOV R5,*0DE1: DJNZ R5,$ DJNZ R6,DE1RETMOV RN,*DATA 字节数数为2 机器周期数为1所以此指令的执行时间为2ms DELAY1 为一个双重循坏循环次数为256*256=65536 所以延时时间=65536*2=

19、131072us 约为125us DELAY R4设置的初值为8 主延时程序循环8次,所以125us*8= 1秒由于单片机的运行速度很快其他的指令执行时间可以忽略不计。3.3 程序流程图 程序流程图3.4 程序源代码 ORG 0000H ;主程序的入口地址 LJMP MAIN ;跳转到主程序的开场处 ORG 0003H ;外部中断0的中断程序入口地址 ORG 000BH ;定时器0的中断程序入口地址 LJMP T0_INT ;跳转到中断效劳程序处 ORG 0013H ;外部中断1的中断程序入口地址 MAIN : MOV SP,*50H MOV IE,*8EH ;CPU开中断,允许T0中断,T1

20、中断和外部中断1中断 MOV TMOD,*51H ;设置T1为计数方式,T0为定时方式,且都工作于模式1 MOV TH1,*00H ;T1计数器清零 MOV TL1,*00H SETB TR1 ;启动T1计时器 SETB E*1 ;允许INT1中断 SETB IT1 ;选择边沿触发方式 MOV DPTR ,*0003H MOV A, *80H ;给8255赋初值,8255工作于方式0 MOV* DPTR, AAGAIN: P3.1,N0 ;判断是否要设定东西方向红绿灯时间的初值,假设P3.1为1 则跳转 MOV A,P1 P1.7,RED ;判断P1.7是否为1,假设为1则设定红灯时间,否则设

21、定绿灯时间 MOV R0,*00H ;R0清零 MOV R0,A ;存入东西方向绿灯初始时间 MOV R3,A LCALL DISP1 LCALL DELAY AJMP AGAINRED: MOV A,P1 ANL A,*7FH ;P1.7置0 MOV R7,*00H ;R7清零 MOV R7,A ;存入东西方向红灯初始时间 MOV R3,A LCALL DISP1 LCALL DELAY AJMP AGAIN;-N0: SETB TR0 ;启动T0计时器 MOV 76H,R7 ;红灯时间存入76HN00: MOV A,76H ;东西方向制止,南北方向通行 MOV R3,A MOV DPTR,

22、*0000H ;置8255A口,东西方向红灯亮,南北方向绿灯亮 MOV A,*0DDH MOV* DPTR, AN01: P2.0,B0N02: SETB P3.0 CJNE R3,*00H,N01 ;比拟R3中的值是否为0,不为0转到当前指令处执行;-黄灯闪烁5秒程序-N1: SETB P3.0 MOV R3,*05H MOV DPTR,*0000H ;置8255A口,东西,南北方向黄灯亮 MOV A,*0D4H MOV* DPTR,AN11: MOV R4,*00HN12: CJNE R4,*7DH,$ ;黄灯持续亮0.5秒N13: MOV DPTR,*0000H ; 置8255A口,南北

23、方向黄灯灭 MOV A,*0DDH MOV* DPTR,AN14: MOV R4,*00H CJNE R4,*7DH,$ ;黄灯持续灭0.5秒 CJNE R3,*00H,N1 ;闪烁时间达5秒则退出;-N2: MOV R7,*00H MOV A,R0 ;东西通行,南北制止 MOV R3,A MOV DPTR,*0000H ; 置8255A口,东西方向绿灯亮,南北方向红灯亮 MOV A,*0EBH MOV* DPTR,AN21: P2.0,T03N22: CJNE R3,*00H,N21;-黄灯闪烁5秒程序-N3: MOV R3,*05H MOV DPTR,*0000H ;置8255A口,东西,

24、南北方向黄灯亮 MOV A,*0E2H MOV* DPTR,AN31: MOV R4,*00H CJNE R4,*7DH,$ ;黄灯持续亮0.5秒N32: MOV DPTR,*0000H ; 置8255A口,南北方向黄灯灭 MOV A,*0EBH MOV* DPTR,AN33: MOV R4,*00H CJNE R4,*7DH,$ ;黄灯持续灭0.5秒 CJNE R3,*00H,N3 ;闪烁时间达5秒则退出 SJMP N00;-闯红灯报警程序-B0: MOV R2,*03H ;报警持续时间3秒B01: MOV A,R3 JZ N1 ;假设倒计时完毕,不再报警 CLR P3.0 ;报警 CJNE

25、 R2,*00H,B01 ;判断3秒是否完毕 SJMP N02;-1秒延时子程序-N7: RETIT0_INT:MOV TL0,*9AH ;给定时器T0送定时10ms的初值 MOV TH0,*0F1H INC R4 INC R5 CJNE R5,*0FAH,T01 ;判断延时是否够一秒,不够则调用显示子程序 MOV R5,*00H ;R5清零 DEC R3 ;倒计时初值减一 DEC R2 ;报警初值减一T01: ACALL DISP ;调用显示子程序 RETI ;中断返回;-显示子程序-DISP: JNB P2.4,T02DISP1: MOV B,*0AH MOV A,R3 ;R3中值二转十显

26、示转换 DIV AB MOV 79H,A MOV 7AH,BDIS: MOV A,79H ;显示十位 MOV DPTR,*TAB MOVC A,A+DPTR MOV DPTR,*0002H MOV* DPTR,A MOV DPTR,*0001H MOV A,*0F7H MOV* DPTR,A LCALL DELAYDS2: MOV A,7AH ;显示个位 MOV DPTR,*TAB MOVC A,A+DPTR MOV DPTR,*0002H MOV* DPTR,A MOV DPTR,*0001H MOV A,*0FBH MOV* DPTR,A RET;-东西方向车流量检测程序-T03: MOV

27、 A,R3 SUBB A,*00H ;假设绿灯倒计时完毕,不再检测车流量 JZ N3 P2.0,T03 INC R7 CJNE R7,*64H,E1 MOV R7,*00H ;中断到100次则清零E1: SJMP N22;-东西方向车流量显示程序-T02: MOV B,*0AHMOV A,R7 ;R7中值二转十显示转换 DIV AB MOV 79H,A MOV 7AH,BDIS3: MOV A,79H ;显示十位 MOV DPTR,*TAB MOVC A,A+DPTR MOV DPTR,*0002H MOV* DPTR,A MOV DPTR,*0001H MOV A,*0F7H MOV* DP

28、TR,A LCALL DELAYDS4: MOV A,7AH ;显示个位 MOV DPTR,*TAB MOVC A,A+DPTR MOV DPTR,*0002H MOV* DPTR,A MOV DPTR,*0001H MOV A,*0FBH MOV* DPTR,A LJMP N7;-延时4MS子程序-DELAY: MOV R1,*0AHLOOP: MOV R6,*64H NOPLOOP1: DJNZ R6,LOOP1 DJNZ R1,LOOP RET ;-字符表-TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END第四章 系统调试结果4.1 测

29、试结果东西方向的红灯和南北方向的红灯同时点亮; 此后,东西方向的路灯亮,南北方向仍维持红灯点亮;东西方向的红灯亮一段时间后,红灯灭,黄灯闪烁,南北方向维持不变;接着,南北方向绿灯亮,东西方向红灯亮;再后,南北方向黄灯闪烁,东西方向维持红灯,自此以后,重复第二步骤循环。小 结本系统就是充分利用了8051和8255芯片的I/O引脚。系统统采用MSC-51系列单片机Intel8051和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8031芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示交通灯信号通过PA口输出,显示时间直接

30、通过8255的PC口输出至双位数码管;车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。系统缺乏之处不能控制车的左、右转、以及自动根据车流改变红绿灯时间等。这是由于本身地理位子以及车流量情况所定,如果有需要可以设计扩大原系统来实现 。通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的根本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧特别是汇编语言的掌握方面都能向前迈了一大步。参 考 文 献1单片机高级教程,何立编,航空航天大学2003年2单片机教程习题与解答,俊谟等编,航空航天大学2003年3单片机原理及应用,洪润等编,清华大学2005年4单片机原理及接口技术修订版,朝青编著,航空航天大学1999年5微型计算机控制技术,新民编著,人民邮电1999年

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号