您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 交通信号灯程序调试步骤
交通信号灯调试一、线路板的检测和调试1.硬件调试硬件调试是利用基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。其中硬件调试可分为静态调试与动态调试两步进行1.1静态调试静态调试是在用户系统未工作时的一种硬件检测。第一步:目测:检查外部的各种元件或者是电路是否有断点。第二步:用万用表测试:先用万用表测试目测中有疑问的连接点,再监测电源和地线是否正确、可靠连接已经他们之间是否有短路现象,发现问题后及时修改,以免通电试验后造成线路板和元器件的毁坏。第三步:通电检测:给焊接好的线路板通电,通电后先目测有无异常现象(冒烟,火花现象),然后用手背测试大功率器件和集成电路等有无温升,若出现以上现象,立即断电;检测所有有插座的器件的电源和地是否符合要求;在本项目中需要测试的有:U1-40=5V,U1-31=5V,U1-9=0V(S1没按下),U1-9=5V(S1按下),还有SB1—SB44个按键分别是按下时=0V,弹起时=5V;利用导线分别把LED、蜂鸣器、数码管接到相应的低电平,测试线路和元器件是否正常工作。1.2动态调试动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。动态调试的一般方法是由近及远、由分到合。由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。由分到合的调试既告完成。由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。2软件调试在本项目中,我们首先将教材《单片机应用技术》中的第二页的“信号灯的闪烁控制”的程序录入,并烧录到芯片中去,然后通电试验,这是合格的线路板的状态时所有发光二极管闪烁,按下复位按键S1,系统复位。下面我详细介绍下程序录入、烧录的整个过程,在这个过程中需要一个编译软件和一个烧录器,在这儿我们的编译软件采用的是万利电子的“MedWinV2.39中文版”烧录器采用的是致远电子“EasyPRO80B”。2.1编写程序双击桌面的“MedWinV2.39中文版”图标,弹出对话框:在这儿,我们不是选用的万利电子的仿真器,所以我们选择“模拟仿真”选项后,单击“模拟仿真”就会进入MedWinV2.39中文版的操作界面,在此时如果是第一次使用这个软件,他会首先弹出一个对话框:这个对话框的意思是提示你的文件的保存的路径,和文件名的注意事项,如果不需要修改点击“确定”,后进入MedWinV2.39中文版的操作界面,如图:执行菜单命令【文件】/【新建】,出现如图所示的选择类型对话框;在选择合适的路径和合适的文件名后,如下图:单击【打开】按钮或按【Enter】键确认,就进入程序的录入界面,如图:在这儿就可以录入教材《单片机应用技术》中的第二页的“信号灯的闪烁控制”的程序了。录入结束后,执行菜单命令【文件】/【保存】,后保存下录入的程序(在以后所有的时候,在多保存下,放置意外出现时,因没有保存造成程序的丢失)。在录入结束后要进行汇编,才能把源程序转换成由机器语言构成的目标程序,执行菜单命令【项目管理】/【编译/汇编】(或Ctrl+F7),即可完成对当前源程序的“编译/汇编”。程序经“编译/汇编”后,观察屏幕下方的消息窗口,会出现纠错信息,提示是否存在错误、错误出现的位置及错误的类型和数量等,可根据信息提示对源程序的错误进行纠正,再重新进行“编译/汇编”直至错误信息数量为“0”。执行菜单命令【项目管理】/【输出IntelHex文件】,生产相应的目标程序,再将目标程序代码写入到单片机芯片内部的程序存储器中。2.2烧录程序双击桌面的“EASYPROPROGRAMMER”图标,弹出对话框:这个对话框表示烧录器没有连接或者没有安装USB驱动程序(安装驱动程序,将C:\EasyPROs\UsbDriver\UsbDriver.EXE。运行后,重新练级一次USB接口即可)。再双击桌面的图标后,弹出对话框:第一步:选择合适的芯片单击界面左边的“选择”按键,弹出对话框:选择的顺序是右-左-中,首先选择右边的类型中的“MCU”,然后选择左边的厂商中的“ATMEL-AT89SXX”,最后选择中间器件的“AT89S52”。单击【选择】按钮或按【Enter】键确认,就回到原来的操作界面,这时候我们发现在界面的下方的芯片名称一栏已经改成为“AT89S52”了;第二步:导入我们编写好的程序单击左边的“打开”按键,弹出对话框如下:选择我们刚才生产的“*.Hex”文件后,单击【打开】按钮或按【Enter】键确认,就回到原来的操作界面,这时候我们发现在界面的打开的文件一栏已经改成为我们上一步输出的文件的路径了;第三步:烧录程序单击上方的“操作一键通”按键,弹出对话框如下:单击【运行】按钮或按【Enter】键确认,就开始进行烧录,在烧录结束后界面如下:若出现下图则表示芯片没有插好或者插反,烧录器没有正确连接,检查无误后,再次烧录,知道正确位置后,将芯片从烧录器中拿出,插入到我们已经焊接好的线路板的插座中。2.3测试程序录入好之后,将芯片安插到线路板中,通电后,所有的发光管闪烁,按下复位按键,程序重新运行,表示你的硬件无误;否则,表示你的硬件焊接有误,对照原理图,自己检查,直至无误为止。二、程序的编写和调试交通信号灯,也是按照一定的时序点亮、熄灭信号灯,因此也可以看成是一种彩灯控制器,下表中列出了交通信号灯的时序,把它编制成一个表格,按照时序查表,输出,就可以实现交通信号灯的设计。1、当单片机开始工作,东西方向为绿灯,南北方向为红灯。当任意方向绿灯变化为红灯时,该方向的黄灯同时闪烁6次。LED的工作原理:如原理图所示,当我们控制的单片机的P1口为高电平时,相当于将LED的负极接+5V,LED两端的电压差为0V,这时候LED不能导通,所以它也不能发光;反之,当我们控制单片机的P1口为低电平的时候,LED的两端就有了正向电压差,这时候LED导通,所以他发光。电阻的作用限流,保证该支路的电流不会对LED和单片机造成损害。根据LED的工作原理和本项目的要求,我们将LED的变化制成表格如下:bu步步骤P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0十六进制代码东西红东西黄空东西绿南北红空南北黄南北绿1)11100111E7H2)11110111F7H10110111B7H3)011111107EH4)011111117FH011111017DH5)11100111E7H我们已经将本项目的步骤一的LED的变化制作成表格了,下面我们就按照表格中的步骤编先绘制程序的流程图:程序流程图开始初始化P1口东西绿灯亮,南北红灯亮延时设置黄灯循环次数R0=6东西黄灯灭延时东西黄灯亮灭】亮延时R0-1=0?NOYES东西红灯亮,南北绿灯亮延时设置黄灯循环次数R0=6南北黄灯灭延时南北黄灯亮灭】亮延时R0-1=0??NOYES我们按照程序流程图可以轻松的开始写下我们的程序了:注意事项:1、写程序的时候格式一定要注意,主程序和子程序要分开;2、各个程序一定要加以注释,方便我们以后的调试;3、主要在调用子程序或者循环的时候,跳转的位置和一些常用的变量的赋值的问题。到此为止,只要我们按照老师的要求,焊接和录入都没有问题了,现在本项目的第一步就已经完成了,而我们这儿的延时是用的程序的延时,在精度要求不高的情况是可以的,在要求时间比较准确的地方就不适合了,而89S52给我们提供了2个精准的内部的定时器和计数器,下一章我们将要用到这些了。2、利用89S52内部的定时器和计数器来控制两个方向的信号灯的亮灭时间,其中东西方向变化时间为15S,南北方向变化时间为30s,当时间少于6s时,变为黄灯闪烁,每秒闪烁一次。2.1定时器和计数器简介89S51单片机内部有两个16位定时器/计数器,即定时/计数器T'0和定时/计数器T1。它们都具有定时和计数功能,可用于定时或延时控制,对外部事件进行检测、计数等。定时/计数器T0由特殊功能寄存器TH0、TL0(字节地址分别为8CH和8AH)构成,TH0为高8位,TL0为低8位。定时/计数器T1由特殊功能寄存器TH1、TL1(字节地址分别为8DH和8BH)构成,TH1为高8位,TL1为低8位。其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时器控制寄存器TCON。TMOD主要是用于选定定时/计数器的工作模式与工作方式,TCON主要是用于控制定时/计数器的启动和停止。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。定时/计数器从硬件电路上来说,就是一个16位的加法计数器,按照其计数脉冲的来源不同,分成两种工作模式:定时与计数。当定时/计数器工作在定时方式时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的,所以定时器也可看作是对单片机机器周期的个数的计数器,当晶体振荡器确定后,机器周期的时间也就确定了,这样就实现了定时功能。以12M的晶振为例,一个机器周期就是1μs,这是在此晶振周期下最小的定时时间。当定时/计数器工作在计数方式时,外部事件是通过引脚T0(P3.4)和T1(P3.5)输入的,外部脉冲的下降沿触发计数。定时/计数器结构图2.2定时/计数器相关寄存器51系列单片机的定时/计数器是一种可编程部件,在定时/计数器开始工作之前,CPU必须将一些命令(称为控制字)写入该定时/计数器,这个过程称为定时/计数器的初始化。在初始化程序中,要将工作方式控制字写入定时方式寄存器TMOD,工作状态控制字(或相关位)写入控制寄存器TCON。2.2.1定时方式寄存器TMOD特殊功能寄存器TMOD为定时/计数器的方式控制寄存器,占用的字节地址为89H,不可以进行位寻址,如果要定义定时/计数器的工作方式,需要采用字节操作指令赋值。该寄存器中每位的定义如下所示。其中高4位用于定时/计数器T1,低4位用于定时器/计数T0。下面介绍与定时器/计数T0相关的TMOD的4低位。(1)GATE——门控位。(GATE)=0时,用软件使运行控制位TR0(定时/计数器控制寄存器TCON.4)置1来启动定时/计数器运行;(GATE)=1时,由TR0和外部中断引脚(P3.2)共同启动定时/计数器运行,只有当二者同时为1时才进行计数操作。(2)C/T——定时、计数模式选择位。(C/T)=1时,为计数方式;计数器对外部输入引脚T0(P3.4)的外部脉冲的下降沿计数。(C/T)=0时,为定时方式。(3)M1、M0——工作方式选择位,可通过软件设置选择定时/计数器四种工作方式,如表所示。2.2.2定时器控制寄存器TCONTCON的字节地址为88H,可进行位寻址(位地址为88H-8FH),其具体各位定义如下。其中低4位与外部中断有关,在下一个任务中会详细介绍,高4位的功能如下:TF0,TF1——分别为定时/计数器T0、T1的计数溢出标志位。当计数器计数溢出时,该位置1。编程在使用查询方式时,此位作为状态位供CPU查询,查询后由软件清0;使用中断方式时,此位作为中断请求标志位,中断响应后由硬件自动清0。TR0,TR1——分别为定时器T0、T1的运行控制位,可由软件置1或清0。(TR0)或(TR1)=1,启动定时/计数器工作(TR0)或(TR1)=0,停止定时/计数器工作2.2.3使用定时器的3个步骤:a、设置工作方式;b、设置定时器的初始值;c、开定时器,判断定时时间到否。在本任务中,只使用定时器T1,工作方式1。首先绘制定时器的程序流程图:定时器流程图这是一个1S的定时器的延时程序,可根据题目要求的时间的不同设置不同的循环次数,我们本题要求中需要的是0.5S的延时,同学们考虑下自己编写一个0.5S的延时吧。2.3另外设置一紧急按键,SB4为紧急按键,当紧急按键按下时,为特殊情况,此时为所用信号闪烁,报警器长鸣,4
本文标题:交通信号灯程序调试步骤
链接地址:https://www.777doc.com/doc-2743562 .html