单片机原理及应用课程设计
                           
设计题目  十字路口交通灯控制   
班级      学生姓名      学号 
指导教师         
分院院长 
教研室主任  
电气工程学院
课题摘要:
如今单片机的应用已经扩展到社会各界和生活的方方面面.伴随着计算机,电子器件等的发展.单片机也迅速得到了应用,凭借这单片机的设计灵活,功能强大,扩展性强,成本低廉等等因素,单片
机已经成为了设计多种电子控制课题的首选元器件.正因为如此.单片机的课程也已经走进各大校园,在完成了我们这学期的学习后,我们着手应用这所学习的知识来动手参与设计红绿灯的交通控制,这一个典型的然而又极具代表的课题作以设计.从而对学习到的知识进行更深入的理解和应用
本设计是关于单片机控制的交通灯模拟系统的设计。主要内容有交通灯模拟系统设计方案,主要功能,各功能模块的介绍,电路设计,硬件部分设计,软件部分设计,硬件调试,设计方法以及课程设计的心得体会等等。该设计中用光二极管来模拟信号灯,紧急车的优先通过请求信号由外部中断技术来模拟。要求使AT89c51定时/计数器0作为定时器,要求对通行时间进行倒计时,从P0 口输出,在LED上显示并进行递减,以此来实现十字路口交通灯的指示功能。根据交通灯系统所需要实现的功能要求,先画出实验程序框图和主程序流程图,然后根据流程图写出其子程序。最后将程序烧至单片机实验箱的芯片中,通过程序控制交通灯的亮灭。

目录
一、系统功能…………………………………………………………….4
二、硬件电路设计及描述……………………………………………….6
三、源程序代码………………………………………………………….9
四、系统调试…………………………………………………………….12
五、课程设计总结……………………………………………………….13
六、心得体会…………………………………………………………….14

一、系统功能
1.交通灯基本功能的选择.
根据设计要求,此次的基本功能为十字路口的交通灯南北东西两个方向的路灯控制。在这个基本功能的前提下,设计附加功能来完善设计功能
2.附加功能的选择
1)设计一个十字路口交通灯控制器。用单片机控制LED灯模拟指示,用2位数码管显示倒计时剩余时间。模拟XY方向的十字路口交通信号控制情况。红、绿黄灯时间可通过键盘进行设定调整。
2)本项目为典型的LED显示和中断定时电路。利用定时器T0产生每10ms一次的中断,每100次中断为1s。对两个方向分别显示红、绿、黄灯,及相应的剩余时间即可。值得注意的是需要意识到,X方向红灯时间 = Y方向绿灯时间+黄灯缓冲时间这一常识。
3)用4个按键,结合红、黄、绿灯显示,设置红绿灯的倒计数的时间。
44个按键的功能分配可以自行设定,也可以按如下方法设定。
K1—功能键,每按下一次对应的LED灯亮,表示要设置该灯的倒计时时间。同时,十位数码管闪烁。
K2—移位键,每按下一次向后移一位。
K3—1键。
K4—1键。。

3系统设计思路   
3.1实际模型
车道和人行道规划
说明:东西南北方向共有12个车道交通灯,各方向红黄绿各三个,由于东西方向与南北方向左右转交通灯意义相同,所以实际忽略东西方向的左右转红绿灯。人行道上的交通灯也是同样道理,每个路口各选择红绿灯两盏。
3.2硬件接口介绍
P1口作为车道交通灯控制输出口,由低到高分别对应南北方向上的绿黄红灯、南北方向上的左右转红绿灯以及东西方向上的绿黄红灯。
P3.1P3.5P3.6P2.7口作为人行道交通灯控制输出口,分别对应南北口上的红绿灯及东西口上的红绿灯。
1 各个方向机动车道人行道灯时序表
时间
0-15s
15-20s
20-25s
25-40s
40-45s
南北车行道
绿灯
黄灯
红灯
红灯
怎么写代码做软件
红灯
东西车行道
红灯
红灯
红灯
绿灯
黄灯
南北人行道
绿灯
红灯
红灯
红灯
红灯
东西人行道
红灯
红灯
红灯
绿灯
红灯
南北转弯灯
红灯
红灯
绿灯
红灯
红灯

二、硬件电路设计及描述
1.器件设备:
电脑1台,Keil uVision3仿真调试软件1套,西特尔写入器1台,89C51单片机芯片1块,12M晶振1个,30pF电容2个,LED发光二极管12个,数码管,电阻若干。
2.硬件原理图:

三、源程序代码
bbbz#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void Disp(uint disp_value);
void Disp_ss(uint disp_value);
void jtd(uint bcd_value);
void Delay_ms(uint delay);
void send_data(uchar send_dat);
void sn_green();
void sn_yellow();
void ew_yellow();
void ew_green();
key_scan();
uchar x_time;
uchar y_time;
void key_deal();
uchar gms_timer,rms_timer,sum_timer;
uchar code LED_Val[] = {0xC0,0xF9,0xA4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};
uchar data num[4];
uchar data led_point[4]={0xfe,0xfd,0xfb,0xf7};
bit ewg_flag,ewy_flag,sng_flag,sny_flag;
sbit s_n_red=P2^0;
sbit s_n_yellow=P2^1;
sbit s_n_green=P2^2;
sbit e_w_red=P2^3;
sbit e_w_yellow=P2^4;
sbit e_w_green=P2^5;
sbit e_w_red2=P3^0;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。