《915153936基于SPCExx1A单片机控制的模拟交通灯系统毕业论文.doc》由会员分享,可在线阅读,更多相关《915153936基于SPCExx1A单片机控制的模拟交通灯系统毕业论文.doc(40页珍藏版)》请在三一办公上搜索。
1、Xxxx毕 业 设 计 任 务 书专业 应用电子技术年级 20xx级班级 一班姓名 xx 学号 20xx0203052毕业设计指导须知一、毕业设计是高职教学过程中一个十分重要的环节。是锻炼学生运用所学知识正确分析和解决实际问题的一个重要方面,也是高职培养应用型专门人才的要求。二、导教师应为具有讲师以上或相应职称的有关专业人员,且专业对口(指所指导专业应同所聘教师专业职称相一致)。经系、教务处审查同意后,才能指导学生的毕业设计。三、学生应以严肃认真,实事求是的态度完成设计。要独立思考,自己动手,不得抄袭或找人代笔。四、毕业设计选题要符合专业培养目标的要求。论文(任务书)写作要做到论点明确、论据充
2、分,论理透彻,语言准确恰当,书面整洁、字迹工整,图纸应清晰、工整,符合设计要求,符合国家有关标准和部颁标准。字数、图纸数量符合有关要求。并在规定的时间内完成。五、答辩过程中学生要严认真,文明礼貌,谦虚谨慎,认真回答答辩主持人,委员等提出的问题。六、填报有关表格时,应按项目要求逐项填实、填全、填清。学号20xx0203052姓名xx学制三年专业应用电子技术年级20xx级教学班负责人xx班级1班指导教师姓名xx职务或职称助教设 计 题 目模拟交通灯系统指导教师评语:成绩: 指导教师签名: 工作单位 年 月 日系复审意见:成绩: 复审人签名: 职称: 公章 年 月 日教务处终审意见:公章 年 月 日
3、答 辩 情 况 记 录答 辩 题 目答 辩 情 况正确基本正确经提示回 答不正确未回答此表由主持答辩的同志填写。答辩委员会(或小组)评语:成绩: 主持答辩人签名: 职称: 月 日一、毕业设计的任务和具体要求:(一) 任务1巩固和提高学生学过的基础理论和专业知识。2提高学生运用所学专业知识进行独立思考和综合分析、解决实际问题的能力。3培养学生掌握正确的思维方法和利用软件和硬件解决实际问题的基本技能。4增强学生对实际工艺技术、电子技术和设备技术等方面的认识,掌握分析处理方法,进行调试、计算等基本技能的训练,使之具有一定程度的实际工作能力。5使学生掌握科研、资料查询的基本方法以及获取新知识的能力。6
4、促使学生学习和获取新知识,掌握自我学习的能力。7通过参与企业实际工作,使学生了解社会和工作,在职业道德、社会公德和综合素质具方面得到提高,具备一定的实际工作能力和社会适应能。(二) 具体要求1实事求是的态度完成设计,要独立思考,自己动手,不得抄袭或找人代笔。2使学生复习、巩固所学过的理论与专业知识,并予以适当的深化。3进一步训练学生的基本技能(如:搜集资料、整理数据、制表绘图、发现与分析问题、寻求解决问题的方案、撰写学术论文等)。4论文(任务书)写作要做到论点明确、论据充分,论理透彻,语言准确恰当,书面整洁、字迹工整,图纸应清晰、工整,符合设计要求,符合国家有关标准和部颁标准。字数、图纸数量符
5、合有关要求。并在规定的时间内完成。二、毕业设计应完成的图纸:图1-1 路口交通示意图,见2页图1-2 通行示意图,见2页图2-1 SPCExx1A内部结构图,见4页图2-2 61板实物图,见9页图2-3 测试流程图,见10页图2-4 交通灯模组实物图,见11页图3-1 系统结构框图,见12页图3-2 硬件连线图,见13页图3-3 功能框图,见13页图4-1 SPCExx1A最小系统,见14页图4-2 电源模块电路图,见15页图4-3 交通灯模组V3.0_LED板实物图,见15页图4-4 LED板电路,见16页图4-5 交通灯模组V3.0_LED驱动板实物图,见16页图4-6 LED驱动电路,见
6、17页图4-7 61板上J5的选择,见17页图4-8 LED板与驱动板的连接,见18页图4-9 状态1,见19页图4-10 状态3,见20页图4-11 状态5,见21页图4-12 状态7,见22页图4-13 操作流程图,见23页图 5-1 主程序流程图,见25页三、其他要求:无四、毕业设计的期限:自 2008年 9 月 1 日 至 2008 年 10 月 10 日五、毕业设计(论文)进度计划:起 至 日 期工 作 内 容备 注09-01到09-xx09-07到09-2009-21到09-2810-01到10-10拟定课题,元件采购,C语言学习分析原理,设计电路、程序搭建硬件电路,调试程序毕业论
7、文撰写模拟交通灯系统摘 要在现代社会城市交通越来越拥挤,塞车现象越来越严重。在北京塞车已经是司空见惯的事情,塞上半个小时都不足为奇。交通指挥设施就变得越来越重要了,本论文结合实际应用使用单片机完成模拟交通灯控制系统。本方案利用SPCExx1A为主控制器,配合交通灯模组V3.0设计的交通灯控制系统。该系统在适当的时候控制点亮绿色、黄色或者红色的LED灯,示意行人或者车辆可以通行或者不可以通行;另外通过数码管倒计时,示意车辆或者行人不可以通行时需要等待的时间或者通行时还有多少的剩余时间。 目 录第1章 前言11.1 选题背景11.2 路口交通简介21.3交通灯的分类31.4交通灯功能简介3第2章
8、芯片简介42.1 SPCExx1A单片机42.1.1 SPCExx1A简介42.1.2 芯片特性52.2 SPCExx1A 精简开发板72.2.1 61板的功能简介72.2.2 61板的自检92.3 交通灯模组V3.0系统概述102.3.1功能简介102.3.2电气参数112.3.3注意事项11第3章系统总体方案123.1 硬件框图123.2 电路连接图123.3 功能框图13第4章 系统硬件设计144.1 SPCExx1A最小系统144.2 电源模块144.3 LED板154.4 LED驱动电路164.5硬件连接步骤及流程17第5章 系统软件设计245.1 软件结构245.2 主程序流程图2
9、45.3主程序说明25第6章 调试故障分析27第7章 结语287.1 全文总结287.2 工作展望28参考文献、资料索引29致 谢30 第1章 前言1.1 选题背景 随着社会经济的发展,城市交通问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。 随着城市机动车量的不断增加,许多大城市如北京、上海、南京等出现了交通超负荷运行的情况,因此,自80年代后期,这些城市纷纷修建城市高速道路,在高速道路建设完成的初期,它们也曾有效
10、地改善了交通状况。然而,随着交通量的快速增长和缺乏对高速道路的系统研究和控制,高速道路没有充分发挥出预期的作用。而城市高速道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。所以,如何采用合适的控制方法,最大限度利用好耗费巨资修建的城市高速道路,缓解主干道与匝道、城区同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主要问题。单片机技术的出现给现代工业测控领域带来了一次技术革命。目前,单片机仍以其高可靠性、高性价比,在工业控制系统、数据采集系统、智能画仪器仪表、智能家电等诸多领域得到了广泛的应用。作为将要从事单片机应用系统开发方
11、面的技术人员,掌握单片机的应用技术是必要的。 在单片机的应用过程中,单片机只是应用系统的一个核心部件,为把单片机系统应用于不同的领域,只掌握单片机的基础知识是远远不够的,要想构成一个完善的应用系统,还要熟悉执行机构及硬件接口电路的应用特性,同时,还应该掌握系统的结构布局、印刷电路板的结构布局及软件的设计技巧这些书本上学不到的知识,因此为设计出完善的应用系统,必须在实际工作中勤于实践,逐步积累这方面的经验。本方案要求利用凌阳科技公司的凌阳16位单片机SPCExx1A作为主控芯片和交通灯模组V3.0包括一块驱动电路板(交通灯模组V3.0_驱动板)和四块LED板(交通灯模组V3.0_LED板)。充分
12、利用SPCExx1A精简开发板(简称61板)上面的三个按键,完成一个简易交通灯系统。1.2 路口交通简介 十字路口交通情况如下图所示:图1-1路口交通示意图(注:R表示车辆右拐 L:表示车辆左拐 S:表示车辆直行 P:表示人行 数字1、2、3、4表示路口1、2、3、4)上图中,常规交通灯的绿灯亮状态(通行)顺序为: 图1-2 通行示意图其中,“1-2”表示1P和2P可以通过路口2通行;“2-3”表示2P和3P可以通过路口3通行;“3-4”表示3P和4P可以通过路口4通行;“4-1”表示4P和1P可以通过路口1通行。1.3交通灯的分类 交通灯包括交通信号灯、交通工具信号灯和交通工具照明灯三类:交
13、通信号灯:它是为管理交通工具和行人的动向,传达一种命令而设置的一类固定不动的灯具。交通信号包括用光的颜色、闪烁和排列组合成的灯光信号和能显示发光文字、符号的灯光标志两种。后者只用于陆上道路交通中,起指示限速、导向和表示道路情况等的作用。交通信号灯可按交通的种类分为:用于陆上交通的铁路信号灯、道路交通信号灯,用于水上交通的航标灯(大型的称灯塔)和用于空中交通的机场灯、障碍灯等。 交通工具信号灯:它是安装在交通工具上以显示其存在和运动状态的一类灯具。包括飞机灯、船灯、火车灯和汽车灯。 交通工具照明灯:它是安装在交通工具内部或外部起照明作用的灯具。其中照明前方或搜索目标的一类灯具称强光照明灯,它们有
14、规定的光分布,如火车和汽车上的前照灯、船用探照灯、苏伊士运河灯和飞机的着陆滑行灯等。 不同类型的交通灯的外形、结构、光源、光分布和供电方式等有所不同,但光色和外壳防护性能基本相同。1.4交通灯功能简介本方案的交通灯就是一个简易的交通指示灯控制系统, 由一套SPCExx1A精简开发板(简称61板)和一套交通灯模组构成,功能有: 1. 系统有两个状态,设置状态和显示状态,利用61板的键盘的KEY1键盘可以进行两个状态间的切换; 2. 开机时,系统为显示状态,四个路口数码管从默认的倒计时时间(本系统四个路口分别为24、24、49、74)开始倒计时; 3. 设置状态时利用61板的KEY1KEY3键盘可
15、以设置各路口直行通行倒计时时间,设置的路口数码管闪烁显示,各路口的通行时间可以不相等,其中KEY2为加1键,KEY3为减1键,KEY1为确定键; 4. 显示状态时,交通灯模组的四个LED板的数码管进行倒计时;LED板各组的红绿灯交通指示;如果一个LED板上有三个绿灯亮,这时候数码管显示的是通行时间,否则,数码管显示的是等待时间;显示过程中按KEY1键可以重新进入设置状态。第2章 芯片简介2.1 SPCExx1A单片机 2.1.1 SPCExx1A简介SPCExx1A是凌阳科技研发生产的性价比很高的一款十六位单片机,具有易学易用且效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,
16、可以实现C语言与汇编语言的互相调用.SPCExx1A片内还集成了一个ICE(在线仿真电路)接口,使得对该芯片的编程、仿真变得非常方便,而ICE接口不占用芯片上的硬件资源,结合凌阳科技提供的集成开发环境(unSP IDE),用户可以进行在线调试、仿真;而程序的下载(烧写)也是通过该接口完成。 图2-1 SPCExx1A内部结构图2.1.2芯片特性1. 16位nSP微处理器; 2. 工作电压:内核工作电压VDD为3.03.6V(CPU),IO口工作电压VDDH为3.05.5V(I/O); 3. CPU时钟:0.32MHz49.152MHz; 4. 内置2K字SRAM; 5. 内置32K字FLASH
17、; 6. 可编程音频处理; 7. 晶体振荡器; 8. 系统处于备用状态下(时钟处于停止状态),耗电小于2A/3.6V; 9. 2个16位可编程定时器/计数器(可自动预置初始计数值); 10. 2个10位DAC(数-模转换)输出通道; 11. 32位通用可编程输入/输出端口; 12. 14个中断源可来自定时器A/B,时基,2个外部时钟源输入,键唤醒; 13. 具备触键唤醒的功能; 14. 使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据; 15. 锁相环PLL振荡器提供系统时钟信号; 16. 32768Hz实时时钟; 17. 7通道10位电压模-数转换器(ADC
18、)和单通道声音模-数转换器; 18. 声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能; 19. 具备串行设备接口; 20. 低电压复位(LVR)功和低电压监测(LVD)功能; 21. 内置在线仿真板(ICE,In- Circuit Emulator)接口。另外,SPCExx1A单片机具有易学易用的效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用,并且提供了语音录放的库函数,只要了解库函数的使用,就会很容易完成语音录放,这些都为软件开发提供了方便的条件。 SPCExx1A具有PLCC84和LQFP80两种封装形式,其引
19、脚功能见表 1和表 2:表 1表 22.2 SPCExx1A 精简开发板 2.2.1 61板的功能简介SPCExx1A精简开发板(简称61板),是以凌阳16位单片机SPCExx1A为核心的精简开发仿真实验板,大小相当于一张扑克牌,是“凌阳科技大学计划”专为大学生、电子爱好者等进行电子实习、课程设计、毕业设计、电子制作及电子竞赛所设计的,也可作为单片机项目初期研发使用。61板除了具备单片机最小系统电路外,还包括有电源电路、音频电路(含Mic输入部分和DAC音频输出部分)、复位电路等,采用电池供电,方便学生随身携带!使学生在掌握软件的同时,熟悉单片机硬件的设计制作,锻炼学生的动手能力,也为单片机学
20、习者和开发者创造了一个良好的学习条件和开发新产品的机会! 61板上有调试器接口(Probe接口)以及下载线(EZ_Probe)接口,分别可接凌阳科技的在线调试器、简易下载线,配合unSP IDE,可方便地在板上实现程序的下载、在线仿真调试。 61板上的主要功能模块如下: 1SPCExx1A单片机最小系统外围电路模块; 2电源输入模块; 3音频电路(包含Mic输入、DAC音频功放输出)模块; 4按键模块; 5I/O端口接口模块; 6调试、下载接口模块; 下面将61板各区的功能进行一下简要的介绍,以便在后面的编程调试时知道是要操作硬件的哪一部分。电源区:为整个系统提供电源,通常采用系统配套的电池盒
21、进行供电,只要放入3节5号电池就可以满足供电需求了。下载区:程序就是通过这边的接口下载到SPCExx1A单片机的,当然,在进行在线调试时也能上传一些硬件信息到开发环境中。音频区:这里的麦克风是用来进行语音输入的,还有一个喇叭的接口用来进行语音播放。SPCExx1A与周边:这就是整块板子的大脑,所有控制信息都是从这里发出的,那些周边器件用来协助SPCExx1A单片机正常工作。键控区:采用这几个按键我们可以做一些简单的试验,比如说当板子里下载了复读机的程序,按这几个按键就可以分别用来进行录音、暂停和播放,如果下载了语音万年历的程序,这几个按键就可以用来设定初始时间和控制播放当前时间等。复位区:这里
22、是由几个简单的电子元器件组成,当按下这里面的按键后,单片机就重新开始工作,也可以说成是单片机里的程序从第一条开始重新运行。端口区:用于对外挂硬件的控制,或者获取外部硬件的一些状态以便SPCExx1A来进行处理。图2-2 61板实物图2.2.2 61板的自检第一步 连接电源,可以连接电池盒(3节),也可以直接接5V的稳压源; 现象:当电源接通时,红色的发光二极管会点亮。同时会有语音提示:“欢迎进入自检模式”,此时因为还没有连线,所以会听到:“I/O测试失败”的警告,进行第二步的操作; 第二步 用排线分别将IOA口的低8位和IOB口的低8位相连,IOA口的高8位和IOB口的高8位相连,然后按下RE
23、SET复位键; 现象:当按下RESET复位键后,程序重新开始执行,语音提示“欢迎进入自检模式”,当听到语音提示“I/O测试成功”后,进行第三步操作; 第三步 按K1键进行睡眠功能测试; 现象:如果测试成功,会看到绿色的发光二极管闪亮一下,并有语音提示 “睡眠测试成功”,否则提示“睡眠测试失败”,然后进行第四步操作; 第四步 按下K2键进行A/D转换的测试; 现象:语音提示:“A/D测试成功”,否则提示“A/D测试失败”,进入最后一步操作; 第五步 拔掉第一步测试时的排线,并按下K3键测试MIC输入及D/A转换输出是否正常;(注:在按下K3键后,喇叭会发出啸叫声,用手按在MIC上可消除啸叫声。)
24、 现象:可以在MIC上轻轻的拍几下,同时听是否有声音输出,如果有,则说明MIC输入和D/A转换输出部分正常。 以上操作,只有当I/O测试成功后,按键才会有效。 图2-3 测试流程图2.3 交通灯模组V3.0系统概述 2.3.1功能简介1交通灯模组V3.0由一块驱动板(交通灯模组V3.0_驱动板)和四块LED板(交通灯模组V3.0_LED板)构成,使用时,只需要把四块LED板分别插接(或者连接)在驱动板的J1J4四个接口上即可使用;通过软件设计,控制四块LED板上的数码管倒计时,并控制红、绿、黄二极管的点亮与熄灭,就可以实现交通灯功能。2LED板中每个方向提供四组交通LED灯(包括左转、直行、右
25、转、人行道四组),每组交通灯包括红、黄、绿三个灯,可以实现交通的通行控制; LED板中每个方向提供两个数码管,可以实现100以内的倒计时。 3交通灯模组实物图如图 24,使用时,直接用10pin排线连接驱动板的单片机接口和61板的I/O口即可使用。 图2-4 交通灯模组实物图2.3.2电气参数 1工作电压:DC4.5V(推荐使用5V稳压源); 2尺寸: 驱动电路板:78.7mm67.9mm; LED板:45.2mm53.2mm2.3.3注意事项 1不要把61板的“+”、“-”与模组的“+”、“-”接反; 2为了保证数码管及LED灯的亮度,61板上的J5接口要选择5V,推荐使用5V的稳压源给61
26、板供电; 3向驱动板上插(或者用排线连接)LED板时注意不要接反。 第3章系统总体方案3.1 硬件框图本系统由一套61板和一套交通灯模组构成,如图 31,SPCExx1A通过I/O口控制交通灯模组中各LED板的数码管和发光二极管的显示;通过61板上的三个键盘KEY1KEY3可以设置各LED板指示的路口通行倒计时时间。 图3-1 系统结构框图3.2 电路连接图系统硬件连接如图 32,把四个LED板连接到驱动板上,利用三根10pin排线分别连接交通灯模组和61板的J5与J9、J6与J6、J7与J7;连接61板电源,注意要把61板的J5接口选择为5V。图3-2 硬件连线图3.3 功能框图图3-3 功
27、能框图第4章 系统硬件设计4.1 SPCExx1A最小系统SPCExx1A最小系统包括SPCExx1A芯片及其外围的基本模块,其中外围的基本模块有:晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等,如图 4.1所示。 图4-1 SPCExx1A最小系统4.2 电源模块61板电源模块电路如图 42,SPCExx1A的内核供电为3.3V,而I/O端口可接3.3V5V,所以在电源模块(61板上)中有一个端口电平选择跳线,如图中的J5。 图4-2 电源模块电路图4.3 LED板LED板电路如图44,LED板包含两位数码管U1、12个LED灯D1D12和一个2
28、6的接口J1。其中,12个LED灯构成26的连接方式,D1D6的阴极连接到一个公共段G3上,D7D12的阴极连接到一个公共段G4上。当G3为低电平、a为高电平的时候就可以点亮D1;同样,如果要点亮D10,只要使G4为低电平、d为高电平即可。使用时可以直接通过J1口与驱动板连接。 图4-3 交通灯模组V3.0_LED板实物图 图4-4 LED板电路4.4 LED驱动电路 如图46,ULN2803是常见的驱动芯片,一片可提供8路的驱动信号(关于ULN2803的详细资料,请参考ULN2803的DataSheet),两片ULN2803共16路,用来驱动8位数码管及8组16LED灯(每个LED板上有两组
29、,4个LED板共8组,详细参考LED板的电路图)的阴极,其中U1为数码管的驱动芯片,U2为LED灯的阴极驱动芯片;8个三极管Q1Q8组成的共集电极电路用来驱动8位数码管的段及LED灯的阳极。 图4-5 交通灯模组V3.0_LED驱动板实物图图4-6 LED驱动电路4.5硬件连接步骤及流程第一步:按照图47所示连接硬件,连接好下载线或者Probe,打开电源。注意61板上的J5要选择5V;LED板不要插反。如图 47和图 48为正确连接。 图4-7 61板上J5的选择 图4-8 LED板与驱动板的连接第二步:在交通灯模组V3.0DemoCodeTraffic路径下双击打开Traffic.spj工程
30、;Rebuild All工程,把工程下载到61板上; 第三步:全速运行,这时候可以观察四个LED板的数码管和LED灯的变化,体验交通灯的控制顺序。此时四个LED板数码管倒计时和LED灯的亮灭8种状态循环进行,如下: 状态1:如图49,红绿灯亮灭及数码管倒计时状态为1S,1L,1-2P,3R,4R通行,路口1(J1)倒计时显示24(表示直行和左拐通行时间),路口2(J2)倒计时显示24(表示直行和左拐等待时间),路口3(J3)倒计时显示49(表示直行和左拐等待时间),路口4(J4)倒计时显示74(表示直行和左拐等待时间)。所有数码管开始倒计时,当路口2的数码管显示3时,进入状态2。(1表示J1、
31、2表示J2、3表示J3、4表示J4,S表示直行,L表示左拐,R表示右拐,P表示人行) 图4-9 状态1状态2:路口1倒计时显示03,路口2倒计时显示03,路口3倒计时显示28,路口4倒计时显示53。此时1S,1L,1-2P,3R由绿灯变黄灯,2S,2L,2-2P,1R由红灯变黄灯闪烁。继续倒计时,路口1倒计时到00后,从74开始倒计时;路口2倒计时到00后从24开始倒计时,进入状态3。 状态3:如图 410,红绿灯亮灭及数码管倒计时状态为2S,2L,2-3P,4R,1R通行,路口1倒计时显示74,路口2倒计时显示24,路口3倒计时显示24,路口4倒计时显示49。图4-10 状态3状态4:路口2
32、倒计时显示02,路口3倒计时显示02,路口4倒计时显示27,路口1倒计时显示52。此时2S,2L,2-3P,4R由绿灯变黄灯,3S,3L,3-4P,2R由红灯变黄灯。继续倒计时,路口2倒计时到00后,从74开始倒计时;路口3倒计时到00后从24开始倒计时,进入状态5。 状态5:如图4-11,红绿灯亮灭及数码管倒计时状态为3S,3L,3-4P,1R,2R通行,路口2倒计时显示74,路口3倒计时显示24,路口4倒计时显示24,路口1倒计时显示49。图4-11 状态5状态6:路口3倒计时显示02,路口4倒计时显示02,路口1倒计时显示27,路口2倒计时显示52。此时3S,3L,3-4P,1R由绿灯变
33、黄灯,4S,4L,4-1P,3R由红灯变黄灯。继续倒计时,路口3倒计时到00后,从74开始倒计时;路口4倒计时到00后从24开始倒计时,进入状态7。 状态7:如图4-12,红绿灯亮灭及数码管倒计时状态为4S,4L,4-1P,2R,3R通行,路口3倒计时显示74,路口4倒计时显示24,路口1倒计时显示24,路口2倒计时显示49。图4-12 状态7状态8:路口4倒计时显示02,路口1倒计时显示02,路口2倒计时显示27,路口3倒计时显示52。此时4S,4L,4-1P,2R由绿灯变黄灯,1S,1L,1-2P,4R由红灯变黄灯。继续倒计时,路口4倒计时到00后,从74开始倒计时;路口1倒计时到00后从
34、24开始倒计时,进入状态1,如此循环。第四步:如果要自己设置各路口的通行时间,按61板上的KEY1键进入设置状态。按KEY1开始设置第一个(J1)LED板的数码管显示的通行时间,此时第一个LED板的数码管闪烁,KEY2为加1键,KEY3位减1键;设置完第一个,按KEY1键设置第二个LED板,设置方法和设置第一个LED板相同;设置完成后设置第三个、第四个,全部设置完成后,如果设置正确,按KEY1键后4个LED板的数码管开始显示,且其发光二极管进行相应指示;如果没有设置正确,系统不会进行倒计时,这时候需要按KEY1键重新进行设计。 注意:由于每个路口只有两位数码管显示倒计时时间,所以无论是通行时间
35、,还是等待时间,都不能超过99;一个路口的等待时间等于其他三个路口通行时间之和,如果相邻三个路口设置的通行时间之和大于99,则设置错误,需要重新设置,按KEY1会自动进入设置状态进行设置。 四个路口的通行时间可以设置相同,也可以不同。 操作流程如图4-13: 图4-13 操作流程图第5章 系统软件设计5.1 软件结构本系统软件包括main.c、DIGuser.c、DIG.asm、Key.c、isr.asm 5个源文件,其中: main.c文件为主程序文件,控制系统在两个状态(设置状态与显示状态)的切换,设置状态时通行时间的设置和显示状态时各数码管的倒计时和发光二极管的点亮与熄灭。 DIGuse
36、r.c为一个用户函数文件,这个函数里定义了倒计时、显示、熄灭等与数码管和发光二极管相关的函数。 DIG.asm是一个针对交通灯模组专门写的一个数码管和发光二极管写的驱动函数文件,包括初始化函数和动态扫描函数,其中动态扫描函数要求在1KHz的中断服务函数中调用;同时,通过这个文件可以设置I/O口。 Key.c是一个键盘扫描文件,包含键盘I/O口的初始化和键扫描函数; isr.asm是中断服务函数文件,本系统中用到了两个中断服务函数文件,其中2Hz中断用来倒计时,1KHz中断用来刷新显示。 5.2 主程序流程图本系统有两个状态:设置状态和显示状态,设置状态时通过键盘来设置4个路口的通行时间(默认4
37、个路口的通行时间相同,各为25s),被设置的路口数码管会闪烁显示;显示状态中又分了东边路口指示直行通行,南边路口指示直行通行,西边路口指示直行通行,北边路口指示直行通行四个显示状态;四个路口数码管显示倒计时时间。 主程序流程如图 5-1所示:上电后为显示状态,系统按照默认的倒计时时间进行倒计时显示,从东边路口通行状态开始,按照东、南、西、北的方式顺序进行;在显示的过程中,如果有KEY1键按下,则进入设置状态。 设置状态时,按KEY1进入第一个路口的指示通行时间设置,按KEY2和KEY3进行设置,设置完成后按KEY1切换到下一个路口设置,四个路口都设置完成后,先判断设置是否正确,如果不正确,返回
38、继续设置。 由于一个路口通行完成后,需要等待其他三个路口通行完成,所以等待的最大时间为其他三个路口的通行时间之和,如果其他三个路口的直行时间之和大于100,系统就认为设置出错,这是因为数码管最多显示99。 开始初始化为显示状态设置状态?N键盘扫描,取键值YKEY1?KEY2?KEY3?确认YYYYYYYYYNNNNNNNNN加一减一重新设置闪烁显示全部设置完成?设置正确?设置为显示状态计算东边路口指示的通行时间和其他路口指示的等待时间设置为东边路口直行通行状态。东边路口指示直行通行设置为南边路口直行通行状态。南边路口指示直行通行设置为西边路口直行通行状态。西边路口指示直行通行设置为北边路口直行
39、通行状态。北边路口指示直行通行设置为设置状态是否为显示状态?是否为显示状态?是否为显示状态?是否为显示状态?图 5-1 主程序流程图5.3主程序说明图 5-1中,显示状态时,各路口的直行状态,其实是图 1-2通行示意图四个通行状态的其中一个状态,所以这个状态不但要允许直行通行,同时要允许图 1-2中各状态下其他方向通行。比如在东边路口直行通行状态下,事实上该状态函数里,按照图 1-2,应该是1L、1S、1-2P、3R、4R状态,所以不但要允许东边路口指示直行通行,也要允许东边路口左拐和人行道指示通行,还要允许西边和北边路口右拐指示通行,程序段如下:LEDShow(EAST_L,LeftGrn,
40、StrtGrn,RigtRed,MansGrn); /东边路口左拐、直行、人行道绿灯亮,右拐红灯亮 LEDShow(SOUTH_L,LeftRed,StrtRed,RigtRed,MansRed); /南边路口全部红灯亮 LEDShow(WEST_L,LeftRed,StrtRed,RigtGrn,MansRed); /西边路口左拐、直行、人行道红灯亮,右拐绿灯亮 LEDShow(NORTH_L,LeftRed,StrtRed,RigtGrn,MansRed); /北边路口左拐、直行、人行道红灯亮,右拐绿灯亮另外,在四个显示状态里,都调用了键盘扫描函数,如果KEY1按下,结束显示状态,进入设置
41、状态。程序段如下:iKey = KeyScan(); /取键值 if(iKey=1) /判断KEY1是否按下 DirFlag = 0; status = 1; /是,进入设置状态 这也是每次进入一个显示状态前,先判断是否为显示状态的原因。 每个显示状态的直行通行路口从设置好的通行时间开始倒计时,倒计时到0时,从其他三个路口的通行时间之和开始倒计时;其他路口正常减1倒计时。程序段如下:while(status=SHOW) max = Snumset+Wnumset+Nnumset-1;/设置通行后的等待时间 DirFlag = EAST_G; /设置方向状态标志为东边路口车辆直行通行状态,EAS
42、T_G为EAST Green Enum = Enumset-1; /东边路口数码管从Enumset(设置通行时间)-1开始倒计时 EastSTrough(); /进入1L,1S,1P,3R,4R(通行25s)状态,该函数在DIGuser.c文件中定义 if(status=SHOW) max = Wnumset+Nnumset+Enumset-1; /设置通行后的等待时间 DirFlag = SOUTH_G; /设置方向状态标志为南边路口车辆直行通行状态,SOUTH_G为SOUTH Green Snum = Snumset-1; /南边路口数码管从Snumset(设置通行时间)-1开始倒计时 S
43、outhSTrough(); /进入2L,2S,2P,4R,1R(通行25s)状态,该函数在DIGuser.c文件中定义 if(status=SHOW) max = Nnumset+Enumset+Snumset-1; /设置通行后的等待时间 DirFlag = WEST_G; /设置方向状态标志为西边路口车辆直行通行状态,WEST_G为WEST Green Wnum = Wnumset-1; /西边路口数码管从Wnumset(设置通行时间)-1开始倒计时 WestSTrough(); /进入3L,3S,3P,1R,2R(通行25s)状态,该函数在DIGuser.c文件中定义 if(statu
44、s=SHOW) max = Enumset+Snumset+Nnumset-1; /设置通行后的等待时间 DirFlag = NORTH_G; /设置方向状态标志为北边路口车辆直行通行状态,NORTH_G为NORTH Green Nnum = Nnumset-1; /北边路口数码管从Nnumset(设置通行时间)-1开始倒计时 NorthSTrough(); /进入4L,4S,4P,1R,2R(通行25s)状态,该函数在DIGuser.c文件中定义 *P_Watchdog_Clear = 0x0001; 第6章 调试故障分析1.上电后数码管不显示,LED灯也不点亮,为什么? 答:检查交通灯模组
45、的驱动板电源指示灯是否点亮,如果没有点亮,切断电源,检查是否正负极接反。 2.驱动板电源指示灯亮,可是数码管和发光二极管显示不正常,或者发光二极管变化显示,数码管显示乱七八糟。 答:可能由两种情况造成:第一,交通灯模组和61板连接不正确,注意61板和交通灯模组驱动板的连接顺序是J5接J9、J6接J6、J7接J7;第二,LED板和驱动板的插接不正确,注意LED板不要插反。 3.数码管和发光二极管的亮度很暗,不明显。 答:首先确认61板的J5是否选择了5V,如果选择,可能是电池盒供电不足,换新电池或者5V的稳压源即可解决。 4.交通灯模组中除了范例外,是不是还可以做成其他的交通控制系统? 答:可以,根据读者