- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计项目简介
随着电子科学技术的发展,单片机的应用在现实生活中得到越来越广泛的应用。此十字路口交通灯控制的设计是基于单片机AT89C51的定时装置,当到达一定时间时相应的红、绿、黄灯亮起,起到疏导交通的作用。此外还可以通过人为控制根据具体情况设定具体定时时间,灵活性较强。
1.1 设计任务
用单片机的定时器产生秒信号,控制十字路口的红、绿、黄灯交替点亮和熄灭,并利用LED数码管十字路口两个方向的剩余时间。要求能用按键设置两个方向的通行时间(绿等、红等点亮时间)和暂缓通行时间(黄灯点亮时间)。系统的工作应符合一般交通灯控制的要求。
1.2 性能指标
两位数码管显示器(00-99)
四组(东、南、西、北)交通信号灯
东:绿<EAST>、红< EAST >、黄< EAST >
南:绿<SOUTH>、红< SOUTH >、黄<SOUTH>
西:绿<WEST>、红< WEST >、黄< WEST >
北:绿<NORTH>、红<NORTH >、黄<NORTH>
9个按键
BUTTON_RST-复位
BUTTON_RUN-运行
BUTTON_WE-东西方向红绿灯设置
BUTTON_SN南北方向红绿灯设置
BUTTON_Y-黄灯设置
BUTTON_DA-设置时间加一
BUTTON_DB-设置时间加十
BUTTON_CANCEL-取消设置
BUTTON_FINISH-完成设置
系统总体方案及硬件设计
2.1 单片机简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。如下图所示(Vcc和GND隐藏):
单片机最小系统:电源电路,复位电路和振荡电路(如下图)。
2.2 系统硬件电路的设计
硬件原理图
2.3系统功能描述
通电后,数码管显示00,不同方向的所有灯全部亮起;
点击BUTTON_RUN:电路以默认初始状态开始工作,初始状态下,东西方向方向通行设置时间完成后,此按键开始以设置时间,不设置重新点击则以上一次时间重新运行;
TTON_WE:进入东西方向红绿灯时间设置状态,东西方向红绿灯亮起,点击BUTTON_DA一次,数码管个位数加一,点击BUTTON_DB,数码管十位数加一,数码管显示时间为人为设定时间(0-99s),点击BUTTON_FINISH保存当前设置时间,点击BUTTON_CANCEL取消当前设置时间并回到默认(30秒)状态;点击BUTTON_RUN开始运行;
点击BUTTON_SN:进入南北方向红绿灯时间设置状态,南北方向红绿灯亮起,点击BUTTON_DA一次,数码管个位数加一,点击BUTTON_DB,数码管十位数加一,数码管显示时间为人为设定时间(0-99s),点击BUTTON_FINISH保存当前设置时间,点击BUTTON_CANCEL取消当前设置时间并回到默认(25秒)状态;点击BUTTON_RUN开始运行;
点击BUTTON_Y:进入黄灯时间设置状态,所有黄灯灯亮起,点击BUTTON_DA一次,数码管个位数加一,点击BUTTON_DB,数码管十位数加一,数码管显示时间为人为设定时间(0-99s),点击BUTTON_FINISH保存当前设置时间,点击BUTTON_CANCEL取消当前设置时间并回到默认黄灯(3秒)状态;点击BUTTON_RUN开始运行;
点击BUTTON_RST:为复位按键,回到刚上电后状态,以默认初始状态运行。
程序流程图
程序清单
#include<reg52.h>
//按键端口声明
sbit b_run = P3^0;
sbit b_we = P3^1;
sbit b_sn = P3^2;
sbit b_y = P3^3;
sbit b_da = P3^4;
sbit b_db = P3^5;
sbit b_cancel = P3^6;
sbit b_finish = P3^7;
//字符表
unsigned char code LedChar[]={ 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xFF }; //共阳极
unsigned char code LedRGY[] ={ 0x11, 0x14, 0x10, 0x0A, 0x22, 0x02, 0x3F, 0x03, 0x18, 0x24, 0x00 };
/*
LedRGY[0] 东西通行,南北禁止 LedRGY[1],[2] 东西黄灯闪烁
LedRGY[3] 东西禁止,南北通行 LedRGY[4],[5] 南北黄灯闪烁
LedRGY[6] 所有 灯 亮
LedRGY[7] 东西 红绿灯 亮
LedRGY[
文档评论(0)