基于DSP的交通灯毕业设计论文.docx

上传人:来看看 文档编号:3920104 上传时间:2019-10-10 格式:DOCX 页数:39 大小:492.77KB
返回 下载 相关 举报
基于DSP的交通灯毕业设计论文.docx_第1页
第1页 / 共39页
基于DSP的交通灯毕业设计论文.docx_第2页
第2页 / 共39页
基于DSP的交通灯毕业设计论文.docx_第3页
第3页 / 共39页
基于DSP的交通灯毕业设计论文.docx_第4页
第4页 / 共39页
基于DSP的交通灯毕业设计论文.docx_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《基于DSP的交通灯毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于DSP的交通灯毕业设计论文.docx(39页珍藏版)》请在三一文库上搜索。

1、基于DSP的交通灯信息工程学院 班级:0312405 姓名:覃川 学号:031240507摘要: 结合我国的交通现状和实际需求,研发的灵活配时的交通信号控制,实现定时控制方式。这里主要介绍信号定时的具体实现;系统的设计主要围绕配时设置展开。本文提出了基于DSP的交通信号控制机的具体实现方法,给出了详细的硬件、软件设计。首先提出系统的总体设计;然后以信号机功能为主线介绍上位机实现各功能的方法,以各模块组成为中心介绍下位机的硬件设计,围绕倌号机 程序编制的重点和难点介绍了下位机的固件设计,即DSP程序;最后提出了以 U盘文件方式进行配时设置,介绍了 U盘和文件系统识别的基本过程. 关键字:交通信号

2、控制机Abstract: Combining with the trafficsituation in Chinaandthe actual demand,traffic signalcontrol at the time offlexiblewithR & D,to achieve timingcontrol method.Here mainlyintroducethe concrete realization ofthe timingsignal;systemdesignmainly around thetimingsettingexpansion.This paper presentst

3、he concrete realizationmethodof trafficsignal controller based on DSP,gives the detaileddesign of hardware and software.First proposedthe overall design of the system;and then to thesignalfunctionas the main line thecomputerrealization method ofeach function,hardwaredesign as the centerto introducet

4、he lower position machineby each module,key and difficultyaboutprogrammingmachinegroomnumberdescribes thefirmware design oflower computer,namely theDSP program;finally puts forwardsettingwithto U diskfile mode,introduces the basicprocess of Udiskand filesystemidentification. Key words: DSP、Traffic s

5、ingnal controller目录1 系统概述21.1设计目的21.2 设计任务22 方案论证32.1设计思路32.2设计方案42.3 工作状态53硬件设计63.1硬件总体设计63.2 交通灯显示模块73.3计数显示模块73.4开关模块84软件设计94.1程序流程94.2交通灯模拟显示104.3定时器及中断设计104.4外中断设计125系统调试125.1硬件调试125.2软件调试145.3系统下载186 致谢18参考文献19附录191 系统概述1.1设计目的(1)练习自主独立的设计,实现理论和实践的统一,提高自我动手能力。(2)利用DSP开发环境CCS C2000对源程序文件进行编译、链接

6、、装载调试,以完成基本的DSP项目文件设计。(3)通过此次课程设计,学习DSPF2812芯片的I/O端口控制方法,熟悉字模的简单构建和使用,熟悉掌握在DSP软硬件环境下的程序开发流程,达到学以致用的目的。 1.2 设计任务利用ICETEK-EDU实验箱提供的设备,设计模拟实际生活中十字路口交通灯控制的程序。要求如下:交通灯分红黄绿三色,东、南、西、北各一组,用灯光信号实现对交通的控制:绿灯信号表示通行,黄灯表示警告,红灯禁止通行,灯光闪烁表示信号即将改变。计时显示:88点阵显示两位计数,为倒计时,每秒改变计数显示。正常交通控制信号顺序:正常交通灯信号自动变换(1)南北方向绿灯,东西红灯(10秒

7、)。(2)南北方向绿灯闪烁3次,东西红灯(4秒)。(3)南北方向黄灯,东西红灯(2秒)。(4)南北方向红灯,东西方向绿灯(10秒)。(5)南北方向红灯,东西方向绿灯闪3次(4秒)。(6)南北方向红灯,东西方向黄灯(2秒)。(7)返回(1)循环控制。功能键:(1)启动开关 (2)急救灯的启动开关紧急情况处理:模仿紧急情况(重要车队通过、急救车通过等)发生时,交通警察手动控制(1)当任意方向通行剩余时间多于10秒,将时间改成10秒。(2)正常变换到四面红灯(20秒)。(3)直接返回正常信号顺序的下一个通行信号(跳过闪烁绿灯、黄灯状态)。2 方案论证2.1设计思路根据DSP的硬件中断、定时器、显示/

8、控制模块上的发光二极管控制的原理。用定时器定时,用连接在2812DSP扩展地址接口上的寄存器EWR和SNR控制红绿黄灯的开关,用硬件外部中断模拟急救车的到达。有急救车到达时,两向为全红,以便让急救车通过。急救车通过后,交通灯恢复硬件中断前的状态。触发开关为中断申请,表示有急救车通过。在实验箱上交通灯模块由连接在2812DSP扩展地址接口上的寄存器EWR和SNR控制, 这两个寄存器均为6位寄存器,交通灯模块(CTRLR)的I/O地址: 0x108007。2.2设计方案2.2.1 设计原理 根据设计要求,由于控制是由不同的各种状态按顺序发生的,可以采用状态机制控制方法来解决此问题。这种方法是:首先

9、列举所有可能发生的状态;然后将这些状态编号,按顺序产生这些状态;状态延续的时间用程序控制。对于突发情况,可采用在正常顺序的控制中插入特殊控制序列的方式完成。时钟计数:采用250ms 一次中断进行累加计数。如表2.1所示。 状 态编号信号灯状态状态定义时间(计数值,起始时间, 结束时间) 计数 显示1南北灯绿,东西灯红statusNSGreenEWRed10s(40,0 , 39)10-12南北绿灯闪,东西红灯statusNSFlashEWRed4s (16, 40,55 )4-13南北黄灯,东西红灯statusNSYellowEWRed2s (8,56,63)2-14南北红灯,东西绿灯stat

10、usNSRedEWGreen10s(40,64,103)10-15南北红灯,东西绿灯闪statusNSRedEWFlash4s (16,104,119)4-16南北红灯,东西黄灯statusNSRedEWYellow2s (8,120,127)2-1*南北红灯,东西红灯statusNSRedEWRed20s(80, 0, 79)20-1表2.1 信号灯状态图2.2.2 定时器设计MS320F2812A内部有三个32位通用定时器(TIMER0/1/2),定时器1和2被保留给实时操作系统(DSPBIOS)用,只有定时器0可以提供给用户使用。定时器采用中断方式,可以提高CPU的利用率。2.2.3 倒

11、计时显示设计利用ICETEK-CTR上的发光二极管显示阵列模拟显示。DSP须将显示的图形按列的顺序存储起来(88点阵,8个字节,高位在下方,低位在上方),然后定时刷新控制显示。具体方法是,将以下控制字按先后顺序、每两个为一组发送到端口0x602802,发送完毕后,隔不太长的时间(以人眼观察不闪烁的时间间隔)再发送一遍。由于位值为“0”时点亮,所以需要将显示的数据取反。2.2.4 紧急状况下设计利用ICETEK-CTR上键盘产生外中断,中断正常信号顺序,进入突发情况。2.3 工作状态状态一:南北绿灯、东西红灯,延时10秒,10秒后南北绿灯闪3次,东西红灯延时4秒;状态二:南北黄灯、东西红灯,持续

12、2秒; 状态三:东西绿灯、南北红灯,延时10秒,10秒后东西绿灯闪3次,南北红灯持续4秒;状态四:东西黄灯、南北红灯,持续2秒;状态五:紧急状态下东西南北均亮红灯;3硬件设计3.1硬件总体设计 根据设计要求,由于控制是由不同的各种状态按顺序发生的, 我可以采用状态机制控制方法来解决此问题。这种方法是: 首先列举所有可能发生的状态; 然后将这些状态编号, 按顺序产生这些状态;状态延续的时间用程序控制,对于突发情况, 可采用在正常顺序的控制中插入特殊控制序列的方式完成。 突发事件设置, 在实际交通过程中会出现突发状况, 比如说有救护车或者110 紧急车要通过, 此时就可以通过小键盘进行突发状况模拟

13、。通过按键进入到中断服务子程序, 相当于原来先要通过的车辆在突发状况来了以后就要先让紧急车辆通过。原理框图如图3.1所示。TMS320F2812PGFAJTAGPORT 片上资源:主频:150MHzA/D RAM:128K*16bit FLASH128*16bit CANDSP总线SRAM:64K*16bit扩展DSP引脚CPLDLED数据地址控制I/OPWMSPI驱动RS232CANJTAG16路,12bit驱动4个用户可控开关图3.1 ICETEK-F2812-AE原理框图3.2 交通灯显示模块利用ICETEK-CTR上的一组发光二极管(共12只,分为东西南北四组、红黄绿三色)的亮灭实现交

14、通信号的模拟。TMS320F2812 DSP有最多56个专门的通用输入输出管脚。这些通用输入输出管脚通过专用寄存器可以由软件控制,比如指定输入、输出以及输出值等。通过ICETEK-F2812-AE评估板的插座,扩展板(通用输出/控制模块ICETEK-CTR)将板上的一个指示灯和DSP的一个通用输入/输出管脚直接相连。这个管脚为PWM12,可以设置成通用输入/输出管脚使用。扩展原理如图3.2所示。图3.2 发光二极管设计原理3.3计数显示模块计数显示采用放光二极管显示阵列显示。TMS320F2812 DSP的存储器扩展接口(EMIF)用来与大多数外围设备进行连接,典型应用如连接片外扩展存储器等。

15、这一接口提供地址线、数据线和一组控制线,ICETEK-F2812-A评估板已将这些扩展线引到了板上的扩展插座上,供扩展使用。发光二极管显示阵列由扩展端口控制,EMIF接口的两个寄存器提供具体控制。原理图如图3.3所示。图3.3 计数显示原理3.4开关模块开关模块采用外部外部存储器扩展接口(EMIF)上的PS2接口键盘,通过扫描码判断输入键值。TMS320F2812 DSP的扩展存储器接口(EMIF)用来与大多数外围设备进行连接,典型应用如连接片外扩展存储器等。这一接口提供地址线、数据线和一组控制线,ICETEK-F2812-A评估板已将这些扩展线引到了板上的扩展插座上。键盘的扫描码由DSP的扩

16、展地址0x108001给出,当有键盘输入时,读此端口得到扫描码,当无键被按下时读此端口的结果为0。开关设计原理如图3.4所示。图3.4 开关设计原理4软件设计4.1程序流程该设计实现的功能是南北方向绿灯,东西红10秒,南北方向绿灯闪烁3次,东西红灯4秒,南北方向黄灯,东西红灯2秒,南北方向红灯,东西方向绿灯10秒,南北方向红灯,东西方向绿灯闪3次4秒,南北方向红灯,东西方向黄灯(2秒)。在紧急情况下,当任意方向通行剩余时间多于10秒,将时间改成10秒,正常变换到四面红灯20秒,然后直接返回正常信号顺序的下一个通行信号(跳过闪烁绿灯、黄灯状态)。程序流程图如图4.1所示。开始初始化: CPU频率

17、、ICETEK-CTR、定时器、中断控制寄存器、工作变量根据定时器计数确定当前状态根据当前状态设置指示灯状态根据当前状态设置发光二极管显示阵列状态读取键盘输入结束?是否结束定时器中断服务程序入口计数工作变量值在原基础上加1退出定时器中断服务程序键盘中断服务程序入口设置突发事件标志退出键盘中断服务程序图4.1 程序流程图4.2交通灯模拟显示显示/控制模块上的发光二极管是由连接在2812DSP扩展地址接口上的寄存器EWR和SNR控制的。这两个寄存器均为6位寄存器,其位定义见表4.1表4.2。两个寄存器的地址均映射到2812DSP的扩展空间,CTRLR地址为0x108007,DSP通过对该地址的写操

18、作来修改两个寄存器上各位的状态,当寄存器某位取1值时,相应指示灯被点亮,取0值则熄灭。当写入CTRLR的数据(8位有效值)的高两位为00时,数据bit5bit4bit3bit2bit1bit0东-红 东-黄 东-绿 西-红 西-黄 西-绿的低6位将写入EWR寄存器;当高两位的值为01时,写入SNR寄存器表4.1 寄存器EWRbit5bit4bit3bit2bit1bit0南-红 南-黄 南-绿 北-红 北-黄 北-绿表4.2 寄存器SNR4.3定时器及中断设计TMS320F2812A内部有三个32位通用定时器(TIMER0/1/2),定时 器1和2被保留给实时操作系统(DSPBIOS)用,只有

19、定时器0可以提供给用户使用。定时器采用中断方式,中断过程如下:a接受中断请求。必须由软件中断(从程序代码)或硬件中断(从一个引脚或一个基于芯片的设备)提出请求去暂停当前主程序的执行。b响应中断。必须能够响应中断请求。如果中断是可屏蔽的,则必须满足一定的条件,按照一定的顺序去执行。而对于非可屏蔽中断和软件中断,会立即作出响应。c准备执行中断服务程序并保存寄存器的值。d执行中断服务子程序。调用相应得中断服务程序ISR,进入预先规定的向量地址,并且执行已写好的ISR。定时器及中断的流程如图4.2。开始初始化DSP时钟初始化中断向量等待中断产生初始化定时器改变指示灯状态中断服务开始中断服务结束图4.2

20、 定时器及中断流程图4.4外中断设计紧急情况时,利用ICETEK-CTR上键盘产生外中断,中断正常信号顺序,模拟突发情况。显示/控制模块ICETEK-CTR通过接口P8连接小键盘,接收小键盘传送的扫描码,并在每个扫描码结束后保存,同时向DSP的XINT2发送中断信号;当DSP读键盘时将扫描码送到数据总线上。小键盘上每次按下一个键将产生2个扫描码、2次中断。外中断的程序流程图如图4.3所示。开始初始化:DSP时钟、ICETEK-CTR初始化中断控制寄存器等待中断产生改变指示灯状态中断服务开始中断服务结束。图4.3 外中断程序流程图5系统调试5.1硬件调试5.1.1电源调试1连接电源:打开实验箱,

21、取出三相电源连接线(如右图),将电源线的一端插入实验箱外部左侧箱壁上的电源插孔中。确认实验箱面板上电源总开关(位于实验箱底板左上角)处于“关”的位置,连接电源线的另一端至220V 交流供电插座上,保证稳固连接。2使用电源连接线(如右图,插头是带孔的)连接各模块电源:确认实验箱总电源断开。连接ICETEK-CTR 板上边插座到实验箱底板上+12V电源 插座;ICETEK-CTR 板下边插座到实验箱底板上+5V 电源插座;如使用PP(并口)型仿真器,则连接仿真器上插座到实验箱底板上+5V电源插座;连接DSP 评估板模块电源插座到实验箱底板上+5V 电源插座。注意各插头要插到底,防止虚接或接触不良。

22、3连接DSP 评估板信号线:当需要连接信号源输出到A/D 输入插座时,使用信号连接线(如右图)分别连接相应插座。4接通电源:检查实验箱上220V 电源插座(箱体左侧)中保险管是否完好,在连接电源线以后,检查各模块供电连线是否正确连接,打开实验箱上的电源总开关(位于实验箱底板左上角),使开关位于“开”的位置,电源开关右侧的指示灯亮。5.1.2 Emulator调试1启动Simulator 方式双击桌面上图标:2启动Emulator 方式(1)首先将实验箱电源关闭。连接实验箱的外接电源线。(2)检查ICETEK-5100USB 仿真器的黑色JTAG 插头是否正确连接到ICETEK-VC5416-A

23、 板的J3 插头上。注:仿真器的插头中有一个孔加入了封针与J3 插头上的缺针位置应重合,保证不会插错。(3)检查是否已经用电源连接线连接了ICETEK-VC5416-A 板上的POW1 插座和实验箱底板上+5V 电源插座。(4)检查其他连线是否符合实验要求。检查实验箱上三个拨动开关位置是否符合实验要求。(5)打开实验箱上电源开关(位于实验箱底板左上角),注意开关边上红色指示灯点亮。ICETEK-VC5416-A 板上指示灯D1 和D2 点亮。如果打开了ICETEK-CTR 的电源开关,ICETEK-CTR 板上指示灯L1、L2 和L3 点亮。如果打开了信号源电源开关,相应开关边的指示灯点亮。(

24、6)用实验箱附带的USB 信号线连接ICETEK-5100USB 仿真器和PC 机后面的USB 插座,注意ICETEK-5100USB 仿真器上指示灯Power 和Run 灯点亮。(7)双击桌面上仿真器初始化图标:如果出现下面图5.1提示窗口,表示初始化成功,按一下空格键进入下一步操作。图5.1 初始化图 如果窗口中没有出现“按任意键继续”,请关闭窗口,关闭实验箱电源,再将USB 电缆从仿真器上拔出,返回第(2)步重试。 如果窗口中出现“The adapter returned an error.”,并提示“按任意键继续”表示初始瑞泰创新ICETEK-VC5416-A-USB-EDU 教学实验

25、系统软件实验指导III7化失败,请关闭窗口重试两三次,如果仍然不能初始化则关闭实验箱电源,再将USB 电缆从仿真器上拔出,返回第(2)步重试。双击桌面上图标:启动CCS2.21。如果进入CCS 提示错误,先选“Abort”,然后用“初始化ICETEK-5100USB2.0 仿真器”初始化仿真器,如提示出错,可多做几次。如仍然出错,拔掉仿真器上USB 接头(白色方形),按一下ICETEK-VC5416-A 板上S1 复位按钮,连接USB 接头再做“初始化ICETEK-5100 USB2.0 仿真器”。如果遇到反复不能连接或复位仿真器、进入CCS 报错,请打开Windows 的“任务管理器”,在“

26、进程”卡片上的“映像名称”栏中查找是否有“cc_app.exe”,将它结束再试。5.2软件调试5.2.1软件设计 CCS 可以工作在纯软件仿真环境中,就是由软件在PC 机内存中构造一个虚拟的DSP 环境,可以调试、运行程序。但一般软件无法构造DSP 中的外设,所以软件仿真通常用于调试纯软件的算法和进行效率分析等。在使用软件仿真方式工作时,无需连接板卡和仿真器等硬件。(1) 单击桌面上图标:进入CCS 设置窗口。(2) 在出现的窗口中按标号顺序进行如下图5.2设置:图5.2 仿真设置图接着在下面出现的窗口中选择“否(N)”。此时CCS 已经被设置成Simulator 方式(软件仿真TMS320V

27、C5416 器件的方式),如果一直使用这一方式就不需要重新进行以上设置操作了。2 设置CCS 通过ICETEK-5100USB 仿真器连接ICETEK-VC5416-A 硬件环境进行软件调试和开发。(1)单击桌面上图标:进入CCS 设置窗口(2)在出现的窗口中按标号顺序进行如下图5.3设置:图5.3 CSS2设置图(3)接着在下面的窗口中按标号顺序进行如下图5.4选择:图5.4 CSS2设置图在出现的窗口按标号顺序进行如下图5.5设置:图5.5 CSS2设置图(5) 在出现的窗口按标号顺序进行如下图5.6设置:图5.6 CSS2设置图以上设置完成后,CCS 已经被设置成Emulator 的方式

28、(用仿真器连接硬件板卡的方式),并且指定通过ICETEK-5100USB 仿真器连接ICETEK-VC5416-A 评估板。如果您需要一直使用这一方式就不需要重新进行以上设置操作了。5.2.2程序运行选择菜单“Project”的“New”项。如图5.7所示。图5.7 CSS2设置图如下图,按编号顺序操作建立Trafficlight.pjt 工程文件:展开主窗口左侧工程管理窗口中“Projects”下新建立的“Trafficlight.pjt”,其中各项均为空。(2) 在工程文件中添加程序文件:选择菜单“Project”的“Add Files to Project”项;在“Add Files t

29、o Project”对话框中选择文件目录为C:ICETEK-VC5416-EDULabLab0601-UseCCS,改变文件类型为“C SourceFiles(*.c;*.ccc)”,选择显示出来的文件“Trafficlight.c”;重复上述各步骤,添加Trafficlight.cmd 文件,到volume 工程中;添加 C:tiC5400cgtoolslibrts.lib。(3) 编译连接工程:选择菜单“Project”的“Rebuild All”项,或单击工具条中的按钮;注意编译过程中CCS 主窗口下部的“Build”提示窗中显示编译信息,最后将给出错误和警告的统计数。5.3系统下载(1

30、) 下载程序:执行FileLoad Program ,在随后打开的对话框中选择刚刚建立的C:ICETEK-VC5416-EDULabLab0601-UseCCSDebugTrafficlight.out 文件。(2) 设置软件调试断点:在项目浏览窗口中,双击Trafficlight.c 激活这个文件,移动光标到main()行上,单击鼠标右键选择Toggle Breakpoint 或按F9 设置断点(另外,双击此行左边的灰色控制条也可以设置或删除断点标记)。(3) 利用断点调试程序:选择DebugRun 或按F5 运行程序,程序会自动停在main()函数上。(4)在ICETEK-CTR 附带的小

31、键盘上按下按键,观察信号是否满足要求。6 致谢 该学期期间一直得到刘嵩老师的悉心教导。从他身上,我不仅学到了丰富的专业知识和分析问题、解决处理问题的能力,更重要的是学到了为人处事的道理和独立从事科研工作的本领,深深感谢老师对我的指导,感谢老师在生活学习上对我的帮助。参考文献1 刘和平等DSP原理及电机控制应用基于TMS320LF2407x系列M北京航空航天大学出版社,20062 宁改娣等. DSP控制器原理及应用M北京:科学出版社,2002.3 仿真系统使用说明书,北京瑞泰创新有限公司。4 清源科技.TMS320C54xDSP应用程序设计教程M.机械工业出版社,2004.1.5 清源科技.TM

32、S320C54x硬件开发教程M.机械工业出版社,2003.1.附录源程序main()int nWork1,nWork2,nWork3,nWork4;int nNowStatus,nOldStatus,nOldTimeCount,nSaveTimeCount,nSaveStatus;unsigned int nScanCode;nTimeCount=0; bHold=0;uLightStatusEW=uLightStatusSN=0;nNowStatus=0; nOldStatus=1; nOldTimeCount=0;InitDSP();/ 初始化DSP,设置运行速度InitICETEKCTR

33、();/ 初始化显示/控制模块InitTimer();/ 设置定时器中断/ 根据计时器计数切换状态/ 根据状态设置计数和交通灯状态while ( 1 )if ( bHold & nNowStatus=statusHold )if ( nTimeCount=nStatusHold )nNowStatus=nSaveStatus;nTimeCount=nSaveTimeCount;bHold=0;else if ( nTimeCountnStatusNSGreenEWRed )nNowStatus=statusNSGreenEWRed;else if ( nTimeCountnStatusNSFl

34、ashEWRed )nNowStatus=statusNSFlashEWRed;else if ( nTimeCountnStatusNSYellowEWRed )nNowStatus=statusNSYellowEWRed;else if ( nTimeCountnStatusNSRedEWYellow )nNowStatus=statusNSRedEWYellow;else if ( nTimeCountnStatusNSRedEWGreen )nNowStatus=statusNSRedEWGreen;else if ( nTimeCountnStatusNSRedEWFlash )nN

35、owStatus=statusNSRedEWFlash;else if ( nTimeCountnStatusNSRedEWYellow1 )nNowStatus=statusNSRedEWYellow;else if ( nTimeCount=0 & nWork20 & nWork30 & nWork40 )uLightStatusSN=( (nWork1%nWork3)=0 & nWork20 & nWork30 & nWork40 )uLightStatusEW=( (nWork1%nWork3)0 )nWork2=20-nTimeCount/nWork1;if ( bHold )if

36、( nWork210 )nTimeCount=nWork1*10;nWork2=10;if ( nOldTimeCount!=nWork2 )nOldTimeCount=nWork2;SetLEDArray(nWork2);break;case statusNSRedEWGreen:nWork1=(nStatusNSRedEWGreen-nStatusNSRedEWYellow)/20;if ( nWork10 )nWork2=20-(nTimeCount-nStatusNSRedEWYellow)/nWork1;if ( bHold )if ( nWork210 )nTimeCount=nS

37、tatusNSRedEWYellow+nWork1*10;nWork2=10;if ( nOldTimeCount!=nWork2 )nOldTimeCount=nWork2;SetLEDArray(nWork2);break;case statusHold:nWork1=nStatusHold/20;if ( nWork10 )nWork2=20-nTimeCount/nWork1;if ( nOldTimeCount!=nWork2 )nOldTimeCount=nWork2;SetLEDArray(nWork2);break;elseif ( bHold )nSaveStatus=nNo

38、wStatus;nSaveTimeCount=nTimeCount;nNowStatus=statusHold;nTimeCount=0;if ( nSaveStatus=statusNSFlashEWRed | nSaveStatus=statusNSYellowEWRed )nSaveStatus=statusNSRedEWGreen;nSaveTimeCount=nStatusNSRedEWYellow;else if ( nSaveStatus=statusNSRedEWFlash | nSaveStatus=statusNSRedEWYellow )nSaveStatus=statu

39、sNSGreenEWRed;nSaveTimeCount=0;nOldStatus=nNowStatus;switch ( nNowStatus )case statusNSGreenEWRed:uLightStatusEW=0x24; uLightStatusSN=0x49;SetLEDArray(20);break;case statusNSFlashEWRed:uLightStatusEW=0x24; uLightStatusSN=0x49;SetLEDArray(0);break;case statusNSYellowEWRed:uLightStatusEW=0x24; uLightS

40、tatusSN=0x52;SetLEDArray(20);break;case statusNSRedEWYellow:uLightStatusEW=0x12; uLightStatusSN=0x64;SetLEDArray(20);break;case statusNSRedEWGreen:uLightStatusEW=0x09; uLightStatusSN=0x64;SetLEDArray(20);break;case statusNSRedEWFlash:uLightStatusEW=0x09; uLightStatusSN=0x64;SetLEDArray(0);break;case statusHold:uLightStatusEW=0x24; uLightStatusSN=0x64;SetLEDArray(20);break;CTRLR=uLightStatusEW; CTRLR=uLightStatusSN;/ 设置交通灯状态RefreshLEDArray();/ 刷新发光二极管显示nScanCode=port8001;/ 读键盘扫描码nScanCode&=0x0ff

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1