嵌入式系统基础
课程设计
题目: 班级: 姓名: 学号: 同组人:
嵌入式系统基础
课程设计
题目:交通信号灯实时控制系统设计 班级:通信0701 姓名: 学号: 同组人:
一、 设计题目:交通灯的控制 二、设计要求
交通灯模拟控制系统设计利用单片机的定时器定时,令十字路口的红绿灯交替点亮或熄灭。用8051做输出口,控制十二个发光二极管亮灭,模拟交通灯管理。
三、设计内容
因为本课程设计是交通灯的控制设计,所以要了解实际交通灯的变化情况和规律,假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后状态1南北红灯,东西绿灯通车。过一段时间转状态2东西绿灯灭,黄灯闪烁几次,南北仍然红灯。再转状态3,南北绿灯通车,东西红灯。过一段时间转状态4,南北绿灯灭,闪几次黄灯,南东西仍然红灯。最后循环至状态1。
四、方案论证
本实验可以有好几种方案实现交通灯的模拟控制。 方案一:对8255A接口芯片进行编程,使红绿黄灯发光二极管按照十字路口交通灯的形式点亮或熄灭。
方案二:利用8051芯片对串行口P1口进行编程控制,使红绿灯发光二极管按照十字路口交通灯的形式点亮或熄灭。
8255A是一个通用的可编程的并行I/O接口芯片。它无内部地址锁存器功能,因此,需要借助地址锁存芯片所存来自单片机的地址信号。这对于硬件接口来说,增加了成本。而且,当8255A
工作在方式1或方式2时,都可能产生中断信号INTR,是否允许数据传送过程中产生中断信号,取决于用户程序对内部控制位INTR的控制,这恰好又增加了对程序的设计难度。
8051芯片就是一个单片机芯片,用8051进行交通灯模拟控制设计,除了二极管之外,无须再加其他硬件设备,直接对芯片的P1口进行编程控制,减少了成本。而且,8051片内有4KB的程序存储器。CPU访问存储器时,一是访问的地址空间在4KB范围内,CPU直接访问片内程序存储器;二是访问的地址超出4KB时,CPU将自动执行外部程序存储器的程序。利用8051芯片,可以简化程序的设计。
综上所述,本次课程设计采用8051芯片进行交通灯模拟系统控制设计。
五、设计原理
红绿灯变化规律:
设有一个十字路口,两组灯分别代表东西和南北两个方向,
1) 两个路口红灯亮;
2) 南北路口绿灯亮,东西路口红灯亮; 3) 南北路口绿灯灭,东西路口红灯亮; 4) 两个路口黄灯闪烁; 5) 两个路口红灯全亮;
6) 东西路口绿灯亮,南北路口红灯亮; 7) 东西路口绿灯灭,南北路口红灯亮; 8) 两个路口黄灯闪烁; 9) 转向2)循环。
状态 0 1 2 3 4 北 西 南 东 绿 黄 红 绿 黄 红 绿 黄 红 绿 黄 红 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 交通信号灯状态表
对于交通灯信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组信号灯显示情况是相同的,所以只要有两组就行了,因此,采用单片机内部的I/O口上的P1口中的6个信号灯 通过编写程序,实现对发光二级管的控制,来模拟交通信号灯
的管理。每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。
硬件资源及其分配:
主要用到的硬件:P1口、LED发光二级管、定时器T1. 硬件分配:P1口:作为输出口,与发光二极管相连接,且串行 口工作在方式0,延时为4秒。其状态对应的十六进制值如下:
方向状态 0 1 2 3 4 无 南 北 东 西 P1.7 P1.6 P1.5P1.4P1.3 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 十六进制说明 P1.2P1.1P1.0 值 0 0 1 09 H 全为红灯 1 0 0 0CH 0 1 0 0 0 1 0 0 1 0AH 21H 11H 东西绿南北红 东西黄南北红 东西红南北绿 东西红南北黄 状态对应的十六进制值表
六、交通信号灯模拟控制系统设计程序流程图
开始 初始化
东西红灯亮,南北绿灯亮,延时 东西黄灯亮,南北红灯亮,延时 东西绿灯亮,南北红灯亮,延时 四个路口红灯亮 延时
东西红灯亮,南北黄灯亮,延时
程序流程图
七、根据流程图进行分步设计:
1) 初始化
CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 CLR P1.7 2) 1秒延时系统设定
设定定时器T1工作在方式1,则TMOD=00010000B=10H,计数初值Count=2^16-Td/Tcy=65536-1000/Tcy=3CB0H。 程序如下:
DELAY: MOV R3,#20H ;定时一秒
MOV TMOD,#10H ;T1定时器,方式1 MOV TH1,#03CH ;设置加1计数器的计
;数
;初值高字节 MOV TL1,#0B0H ;设置加1计数器的
;计
;数初值低字节 SETB TR1 ;启动T1 SETB ET1 ;开T1中断 SETB EA ;开总允许中断 3) 全为红灯时的初态 由P1表格可设计程序如下:
MOV A,#09H ;置初态,东南西北都为红灯亮 MOV P1,A MOV R2,#4
4) 东西绿灯亮,南北红灯亮
根据P1口状态表格,设计程序如下:
MOV A,#0CH ;东西绿灯亮,南北红灯亮 MOV P1,A MOV R2,#10
5) 东西黄灯闪,南北红灯亮 根据P1口状态表格,设计程序如下:
MOV A,#0AH ;东西黄灯闪,南北红灯亮 MOV P1,A MOV R2,#2
6) 东西红灯亮,南北绿灯亮
根据P1口状态表格,可将程序设计如下:
MOV A,#21H ;东西红灯亮,南北绿灯亮
MOV P1,A MOV R2,#10
八、总程序为:
ORG 0000H
AJMP CHUSHIHUA ORG 00020H AJMP MAIN CHUSHIHUA:ORG 00030H
CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 CLR P1.7
MAIN: MOV SP,#60H MOV SCON,#00H CLR TI CLR RI
MOV A,#09H
0 ;初始化程序;设置串行口工作方式;置初态,东南西北都为红灯亮
MOV P1,A MOV R2,#4
L1: LCALL DELAY ;调用4次一秒的延时子程序 DJNZ R2,L1
H1: MOV A,#0CH ;东西绿灯亮,南北红灯亮 MOV P1,A MOV R2,#10 L2: LCALL DELAY DJNZ R2,L2
MOV A,#0AH MOV P1,A MOV R2,#2 L3: LCALL DELAY DJNZ R2,L3
H2: MOV A,#21H MOV P1,A MOV R2,#10 L4: LCALL DELAY DJNZ R2,L4
MOV A,#11H MOV P1,A MOV R2,#2
;东西黄灯闪,南北红灯亮 ;东西红灯亮,南北绿灯亮 ;东西红灯亮,南北黄灯闪 L5: LCALL DELAY DJNZ R2,L5
LJMP H1 ;循环 一秒的延时子程序
DELAY: MOV R3,#20H ;定时一秒
MOV TMOD,#10H ;T1定时器,方式 MOV TH1,#03CH MOV TL1,#0B0H SETB TR1 SETB ET1 SETB EA LOOP: JBC TF1,NEXT NEXT: MOV TL1,#080H MOV TH1,#3CH DJNZ R3,LOOP RET
八 交通信号灯模拟系统仿真电路图
1 D1LED-GREEND3LED-YELLOW19U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161718XTAL2D5LED-RED9RST293031PSENALEEAD2LED-GREEN12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C51D4LED-YELLOWD6LED-RED 九、调试
1) 打开仿真软件,创建文件 2) 选择芯片
3) 创建文档,把编好程序写入文档并保存在ASM文件 4) 把保存的文档加载到Source Group 5) 编译程序,设置为16进制 6) 运行程序结果
7) 把编写好的16进制文件装进单片机8051仿真,对其初始
化
8) 反复调试,直到达到预定目的。
因篇幅问题不能全部显示,请点此查看更多更全内容