ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:1.40MB ,
资源ID:13341784      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-13341784.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件工程大作业.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

软件工程大作业.docx

1、软件工程大作业软件工程大作业交通灯控制系统2012年12月20日一、设计背景及需求分析1.设计背景随着人口快速的增多,交通工具的爆炸性的发展,以及道路资源的有限性,交通控制就应运而生,在人类的生活、工作环境中,交通扮演着极其重要的角色,人们的出行都无时不刻与交通打着交道。要保证高效安全的交通秩序,除了制定一系列的交通规则,还必须通过一定的技术手段加以实现。电子科学技术的发展和成熟能比较好的解决系统建立中硬软件方面要求的技术难题。目前,交通控制方面的研究能完全实现自动智能化,甚至将整个区域整合成一个统一的系统范围,还能根据正常时段以及特定突发时段的情况进行科学的自动调整。交通对于社会的工业经济和

2、人们的生活生产中有着十分重要的意义。随着单片机和传感技术的迅速发展,自动检测领域发生了巨大变化,交通自动监测控制方面的研究有了明显的进展,并且必将以其优异的性能价格比,逐步取代传统的交通控制措施。城市道路交通自动控制系统的发展是以城市交通信号控制技术为前导,与汽车工业并行发展的。在其各个发展阶段,由于交通的各种矛盾不断出现,人们总是尽可能地把各个历史阶段当时的最新科技成果应用到交通自动控制中来,从而促进了交通自动控制技术的不断发展。在近百年的发展中,道路交通信号控制系统经历了手动到自动,从固定配时到灵活配时,从无感应控制到有感应控制,从单点控制到干线控制,从区域控制到网络控制的长远过程。交通控

3、制研究的发展,旨在解决人类交通因需求的增多而日益繁重带来的问题,局限于道路建设的暂时不足和交通工具的快速增长,就要使更多的车辆安全高效的利用有限的道路资源,避免因无序和抢行等无控制原因造成的不必要阻塞甚至瘫痪,另外,针对整个交通线路车辆的多少实时调整和转移多条线路的分流也十分必要。2.需求分析2.1实现交通信号灯(红灯、黄灯和绿灯)的基本定时控制。2.2采用数码LED显示路口各个方向红灯、黄灯和绿灯的持续时间并进行倒计时提醒。2.3可以通过键盘进行各个时间的设置。实现对特殊需求的控制。2.4实时检测车流量。2.5闯红灯报警设置。2.6换灯时进行声音提示。二、系统设计1.总体设计本设计系统以单片

4、机为控制核心,连接成最小系统,由车流量检测模块,违规检测模块,和按键设置模块等产生输入,信号灯状态模块,LED倒计时模块和蜂鸣器状态模块接受输出。图1 总体框图2.可行性分析2.1 电源提供方案为使模块稳定工作,须有可靠电源。方案一:采用电池供电。此方案随着能量的耗尽电压下降便导致电路供电异常,且需要的电池数量多,经济性差。方案二:采用自制电源电路供电。此方案提供稳定电压,且结构简单,制作方便,成本较低。比较后选择方案二。2.2单片机选择方案方案一:采用MSP430G2553。此单片机的亮点是功耗较低,但其本身I/O接口数量少,不能满足系统需要,且价格较高。方案二:采用AT89S52。此单片机

5、是一种较低功耗、高性能CMOS 8位微控制器,具有32位I/O接口线,有两个外部中断,两个定时器,能满足系统的基本需求,且价格较低廉。比较后选择方案二。2.3键盘选择方案方案一:一个I/O接口对应一个键。浪费I/O接口,且设计的键数有限。方案二: 用zlg7289A键盘控制芯片组成键盘模块,zlg7289A具有串行接口,同时可连接多达64 键的键盘矩阵,单片即可完成键盘接口的全部功能,还具有多种控制指令。比较后选择方案二。2.4交通灯选择方案 LED灯构造简单、成本低廉、技术成熟度高.故选LED灯做为交通灯。2.5显示选择方案方案一:液晶12864。价格较高,可视角度有限制,操作较复杂。虽然具

6、有显示字符图画等多种功能,但是在本系统中,只需要显示相应的数字,没必用液晶12864。方案二:数码管。数码管具有功耗较小,耐冲击,长寿命,价格低,响应速度快等优点。比较后选择方案二。2.6成本分析单片机7元、键盘模块15元、导线10元、数码管5元、显示灯2元、电路板15元。总计54元。3.总体设计3.1通行方案设计图2 交通状态图 通过具体的路口交通灯状态的演示分析我们可以把这四个状态归纳如下:东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时20秒。此状态下,东西向禁止通行,南北向允许通行。东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时5秒。此状态下,除了已经正在通行中的其他

7、所以车辆都需等待状态转换。南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时20秒。此状态下,东西向允许通行,南北向禁止通行。南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时5秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。下面我们可以用图表表示灯状态和行止状态的关系如下:状态1状态3状态4状态6东西向禁行等待变换通行等待变换南北向通行等待变换禁行等待变换东西红灯1100东西黄灯0001东西绿灯0010南北红灯0011南北绿灯1000南北黄灯0100图3 交通状态及红绿灯状态东西南北四个路口均有红绿黄3灯和数码显示管2个,在任一个路口,遇红灯禁止通行,转绿灯允许通

8、行,之后黄灯亮警告行止状态将变换。状态及红绿灯状态如表1所示。说明:0表示灭,1表示亮。3.2软件流程图4 软件流程1图5 软件流程2三、模块设计及编码实现1. 键盘芯片控制模块/*键盘控制芯片头文件*/#ifndef _TM1638_H_#define _TM1638_H_void delay_us();void delay_ms();void delay();void TM1638_Write(unsigned char DATA); /写数据函数unsigned char TM1638_Read(void); /读数据函数void Write_COM(unsigned char cmd)

9、; /发送命令字unsigned char Read_key(void); /读按键值void init_TM1638(void); /芯片初始化void LED_display(unsigned char ddata0,unsigned char ddata1,unsigned char ddata2,unsigned char ddata3, /显示按键 unsigned char ddata4,unsigned char ddata5,unsigned char ddata6,unsigned char ddata7);#endif#define uchar unsigned char#

10、define uint unsigned intuchar data disbuffer8=0,0,0,0,0,0,0,0;uchar code tab_key=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0xef;uchar flag_break;uchar key_value;uchar red,green,time,yellow;void LED_display(uchar data0,uchar data1,uchar data2,uchar data3,uch

11、ar data4,uchar data5,uchar data6,uchar data7);sbit DIO=P35;sbit CLK=P36;sbit STB=P37;void delay_us(unsigned int time) while (time-); void delay_ms(unsigned int time) while(time-) delay_us(100); void delay( unsigned long cnt) unsigned int i = 0; while(cnt-) for (i = 0; i 2; i+) /*函数功能:向芯片写数据*/void TM

12、1638_Write(unsigned char DATA) unsigned char i; for(i=0;i=1; CLK=1; /*函数功能:读芯片数据*/unsigned char TM1638_Read(void) unsigned char i; unsigned char temp=0; DIO=1; /设置为输入 for(i=0;i=1; CLK=0; if(DIO) temp|=0x80; CLK=1; return temp;/*函数功能:向芯片写命令字*/ void Write_COM(unsigned char cmd) STB=0; TM1638_Write(cmd

13、); STB=1;/*函数功能:读按键值*/unsigned char Read_key(void) unsigned char c4,i,key_value=0; STB=0; TM1638_Write(0x42); delay_ms(100); for(i=0;i4;i+) ci=TM1638_Read(); STB=1; if(c0=0x04) key_value=1; if(c0=0x40) key_value=2; if(c1=0x04) key_value=3; if(c1=0x40) key_value=4; if(c2=0x04) key_value=5; if(c2=0x40

14、) key_value=6; if(c3=0x04) key_value=7; if(c3=0x40) key_value=8; if(c0=0x02) key_value=9; if(c0=0x20) key_value=10; if(c1=0x02) key_value=11; if(c1=0x20) key_value=12; if(c2=0x02) key_value=13; if(c2=0x20) key_value=14; if(c3=0x02) key_value=15; if(c3=0x20) key_value=16; return (key_value);/*函数功能:芯片

15、初始化*/void init_TM1638(void) unsigned char i; Write_COM(0x8a);/亮度 Write_COM(0x8a);/亮度 Write_COM(0x40); /写数据命令 STB=0; TM1638_Write(0xc0);/写地址命令 for(i=0;i16;i+) TM1638_Write(0xff); STB=1;/*函数功能:显示按键值*/void LED_display(unsigned char ddata0,unsigned char ddata1,unsigned char ddata2,unsigned char ddata3,

16、unsigned char ddata4,unsigned char ddata5,unsigned char ddata6,unsigned char ddata7) unsigned char writedata0,writedata1,writedata2,writedata3,writedata4,writedata5,writedata6,writedata7; unsigned char data0,data1,data2,data3,data4,data5,data6,data7; data0=ddata4; data1=ddata5; data2=ddata6; data3=d

17、data7; data4=ddata0; data5=ddata1; data6=ddata2; data7=ddata3; writedata0=(tab_keydata0&0x01)+(tab_keydata1&0x01)1)+(tab_keydata2&0x01)2)+(tab_keydata3&0x01)3)+(tab_keydata4&0x01)4)+(tab_keydata5&0x01)5)+(tab_keydata6&0x01)6)+(tab_keydata7&0x01)1)+(tab_keydata1&0x02)+(tab_keydata2&0x02)1)+(tab_keyda

18、ta3&0x02)2)+(tab_keydata4&0x02)3)+(tab_keydata5&0x02)4)+(tab_keydata6&0x02)5)+(tab_keydata7&0x02)2)+(tab_keydata1&0x04)1)+(tab_keydata2&0x04)+(tab_keydata3&0x04)1)+(tab_keydata4&0x04)2)+(tab_keydata5&0x04)3)+(tab_keydata6&0x04)4)+(tab_keydata7&0x04)3)+(tab_keydata1&0x08)2)+(tab_keydata2&0x08)1)+(tab

19、_keydata3&0x08)+(tab_keydata4&0x08)1)+(tab_keydata5&0x08)2)+(tab_keydata6&0x08)3)+(tab_keydata7&0x08)4)+(tab_keydata1&0x10)3)+(tab_keydata2&0x10)2)+(tab_keydata3&0x10)1)+(tab_keydata4&0x10)+(tab_keydata5&0x10)1)+(tab_keydata6&0x10)2)+(tab_keydata7&0x10)5)+(tab_keydata1&0x20)4)+(tab_keydata2&0x20)3)+

20、(tab_keydata3&0x20)2)+(tab_keydata4&0x20)1)+(tab_keydata5&0x20)+(tab_keydata6&0x20)1)+(tab_keydata7&0x20)6)+(tab_keydata1&0x40)5)+(tab_keydata2&0x40)4)+(tab_keydata3&0x40)3)+(tab_keydata4&0x40)2)+(tab_keydata5&0x40)1)+(tab_keydata6&0x40)+(tab_keydata7&0x40)7)+(tab_keydata1&0x80)6)+(tab_keydata2&0x80

21、)5)+(tab_keydata3&0x80)4)+(tab_keydata4&0x80)3)+(tab_keydata5&0x80)2)+(tab_keydata6&0x80)1)+(tab_keydata7&0x80); Write_COM(0x8a);/亮度 Write_COM(0x40); /写 数据命令 STB=0; TM1638_Write(0xc0); /写地址命令 TM1638_Write(writedata0); TM1638_Write(0x80); TM1638_Write(writedata1); TM1638_Write(0x00); TM1638_Write(wri

22、tedata2); TM1638_Write(0x00); TM1638_Write(writedata3); TM1638_Write(0x00); TM1638_Write(writedata4); TM1638_Write(0x00); TM1638_Write(writedata5); TM1638_Write(0x00); TM1638_Write(writedata6); TM1638_Write(0x00); TM1638_Write(writedata7); TM1638_Write(0x00); STB=1;2.基于键盘的时间设置模块#ifndef JIANPAN_H#def

23、ine JIANPAN_Hvoid jianpan();#endifuchar flag_break;uchar red_init,yellow_init,green_init;uchar xiugai;uchar b=0,0;/*函数功能:将修改时间的十位存在b0;个位存在b1*/void fenwei(uchar xiugai_time) b0=xiugai_time/10; b1=xiugai_time%10;/*函数功能:读按键,将修改的按键值存在init中*/uchar xiugai_time() uchar i=0; uchar init; uchar gewei,shiwei; gewei=0; shiwei=0; init=0;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2