单片机原理及应用课程设计
专 业:
设计题目: 十字路口交通灯控制
班级: 学生姓名: 学号:
指导教师:
分院院长:
教研室主任:
电气工程学院
课题摘要:
如今单片机的应用已经扩展到社会各界和生活的方方面面.伴随着计算机,电子器件等的发展.单片机也迅速得到了应用,凭借这单片机的设计灵活,功能强大,扩展性强,成本低廉等等因素,单片
机已经成为了设计多种电子控制课题的首选元器件.正因为如此.单片机的课程也已经走进各大校园,在完成了我们这学期的学习后,我们着手应用这所学习的知识来动手参与设计红绿灯的交通控制,这一个典型的然而又极具代表的课题作以设计.从而对学习到的知识进行更深入的理解和应用。
本设计是关于单片机控制的交通灯模拟系统的设计。主要内容有交通灯模拟系统设计方案,主要功能,各功能模块的介绍,电路设计,硬件部分设计,软件部分设计,硬件调试,设计方法以及课程设计的心得体会等等。该设计中用光二极管来模拟信号灯,紧急车的优先通过请求信号由外部中断技术来模拟。要求使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个按键,结合红、黄、绿灯显示,设置红绿灯的倒计数的时间。
4)4个按键的功能分配可以自行设定,也可以按如下方法设定。
K1—功能键,每按下一次对应的LED灯亮,表示要设置该灯的倒计时时间。同时,十位数码管闪烁。
K2—移位键,每按下一次向后移一位。
K3—加1键。
K4—减1键。。
3系统设计思路
3.1实际模型
图1 车道和人行道规划
说明:东西南北方向共有12个车道交通灯,各方向红黄绿各三个,由于东西方向与南北方向左右转交通灯意义相同,所以实际忽略东西方向的左右转红绿灯。人行道上的交通灯也是同样道理,每个路口各选择红绿灯两盏。
3.2硬件接口介绍
用P1口作为车道交通灯控制输出口,由低到高分别对应南北方向上的绿黄红灯、南北方向上的左右转红绿灯以及东西方向上的绿黄红灯。
用P3.1、P3.5、P3.6、P2.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小时内删除。
发表评论