这是我们刚上大二参加比赛时写的一个小程序,那是我们都还年轻,算是我们团队的第一份作品吧。
当时的硬件是队友焊的,他们中现在已经有人成长为大牛了,国家级比赛特等奖啥的。
软件是我一个人写的,花了一下午吧,当时水平还不行。就当是练手了。
硬件不麻烦了,几个LED的串并联;软件也很简单,IO控制和一点逻辑处理而已。给新人们练手用再合适不过了~~
项目文档:
摘要
为了实现在十字路口根据不同方向车流量的大小调节红绿灯亮灭时间长短的功能,我们选用AVR mega16L
单片机。通过MCU对传感器得到的信息进行综合判AVR mega16L 单片机别和处理,加以人工控制,分别实现交通控制系统在运行、调整、显示和紧急状态下的调节功能。
设计的发挥部分,通过按键状态机的应用,实现了时间调节时长按连加的功能;尽量实现模块化,便于再次利用,节约了实践经费;倒计时用数码管显示;采用中断计时,保证显示时间与灯亮的时间的绝 对准确;出现紧急情况时,按下KEY2后实现全亮红灯,长按该键后解除,并恢复正常;具有一个闯红灯记录功能,并能精确记录闯红灯时间差。
关键字:AVR mega16 单片机 交通灯 C语言
红绿灯交通控制系统总体设计
一、 作品优点
1. 采用灌电流供电,通电电流最高可达40mA,灯的亮度高,指示效果明显;
2. 采用中断计时,计时精确;
3. 支持长按跳加功能,加快调节速度,使调节更为灵敏快捷;
4. 实行模块化控制,在调节红绿灯时长比例时,红绿灯仍正常运行,避免引起交通混乱;同时单方向通车时长有最大最小值限制,防止人为误操作导致但方向通车时间过短或者过长。
5. 采用AVR mega16L单片机,该单片机采用了先进的RISC结构大多数指令为单周期,运行速度快。工作电流1.1mA。电压可在 2.7~5.5V范围内浮动。高适应性,低功耗。
6. 采用模块化设计,降低了成本,并便于模块,
元件的多次利用。总体成本投入不超过5元。
7. 具有模式显示功能,可实时显示当前的工作模式,防止因模式过多引起的工作混乱。
8. 闯红灯报警功能。当发生闯红灯事件时,蜂鸣器鸣响一声,进行报警。
9. 程序仅采用一个中断,完成键盘扫描,LED显示,红绿灯显示,计时.更好地节约软件功能.
二、 四个模式
该装置共分为0、1、2、3四个模式。各个模式及相应代码如下。
运行模式 0 ;调整模式 1
显示模式 2 ;紧急模式 3
三、 四个按键功能
KEY1: MODE KEY2: EMERGENCY
KEY3: RECORD/PLUS KEY4: REDUCE
系统各模块的原理与实现
Ⅰ、运行模式:上电后自动进入红绿灯运行模式(0)。若此时KEY3被按下,表明发生闯红灯事件,蜂鸣器鸣响报警,该时刻被计入存储器。
Ⅱ、调整模式:按下模式转换键KEY1,进入调整模式(1)。此时,短按KEY3可实现时长加1,长按KEY3可实现连加,短按KEY4时长减1,长按KEY4时实现连减。
Ⅲ、显示模式:再次按下模式转换键KEY1,进入显示模式(2)。LED显示记录的闯红灯的时刻值。
Ⅳ、紧急模式:在运行模式(0)状态下,按KEY3进入紧急模式,所有红灯全亮,实现道路关闭,短按KEY3无效,长按KEY3解除紧急道路关闭,返回运行模式(0)
源程序(C):
3