交通灯设计实验报告(硬件原理图+程序)
STC89C52交通灯实验
![STC89C52交通灯实验](https://img.taocdn.com/s3/m/f1f21c12b7360b4c2e3f6410.png)
//#define ENABLE_IAP0x81//SYSCLK<24MHz
//#define ENABLE_IAP0x82//SYSCLK<20MHz
#define ENABLE_IAP0x83//SYSCLK<12MHz
IAP_ADDRL= 0;//Clear IAP address to prevent misuse
}
/*---------------------
Read one byte from ISP/IAP/EEPROM area
Input:addr (ISP/IAP/EEPROM address)
Output: Flash data
IapIdle();
}
uchar code duanxuan[]={
0x3f,/*显示0*/0x06,/*显示1*/0x5b,/*显示2*/0x4f,/*显示3*/
0x66,/*显示4*/0x6d,/*显示5*/0x7d,/*显示6*/0x07,/*显示7*/
0x7f,/*显示8*/0x6f,/*显示9*/0x77,/*显示A*/0x7c,/*显示B*/
{
uint i,j;
for(i=xms;i>0;i--)
for(j=250;j>0;j--);//*该层循环延时约1ms*/
}
void displays(uchar H,L)
{
W1=0;P1=duanxuan[num0(L)];delay_ms(1);W1=1;P1=0x00;
W2=0;P1=duanxuan[num1(L)];delay_ms(1);W2=1;P1=0x00;
关于交通灯的实训报告
![关于交通灯的实训报告](https://img.taocdn.com/s3/m/b8d57180a48da0116c175f0e7cd184254a351b04.png)
一、引言随着我国城市化进程的加快,城市交通压力日益增大。
为了提高城市交通效率,确保交通安全,交通灯控制系统在城市交通管理中发挥着至关重要的作用。
本实训报告以单片机为核心,设计了一套智能交通灯控制系统,实现了对城市交通灯的智能控制。
二、实训目的1. 掌握单片机编程及接口技术;2. 熟悉交通灯控制系统的设计原理;3. 培养动手实践能力和创新意识。
三、实训内容1. 交通灯控制系统硬件设计(1)单片机:选用AT89C51单片机作为核心控制单元,具有丰富的片上资源,易于编程。
(2)LED显示模块:用于显示交通灯状态,包括东西方向和南北方向的红、黄、绿灯。
(3)按键模块:用于设置和修改交通灯的时间参数,以及切换交通灯状态。
(4)定时器模块:用于实现交通灯的计时功能。
2. 交通灯控制系统软件设计(1)系统初始化:初始化单片机,设置定时器、LED显示模块、按键模块等。
(2)交通灯状态控制:根据交通灯状态表,实现交通灯的切换。
(3)时间参数设置与修改:通过按键模块,修改交通灯的绿灯时间、黄灯时间和红灯时间。
(4)交通灯状态切换:通过按键模块,切换交通灯的当前状态。
(5)定时器中断:定时器中断实现交通灯的计时功能,当时间到达设定值时,切换交通灯状态。
四、实训过程1. 硬件设计(1)选用AT89C51单片机作为核心控制单元,连接LED显示模块、按键模块和定时器模块。
(2)根据电路原理图,焊接电路板。
(3)连接LED显示模块、按键模块和定时器模块,完成硬件电路搭建。
2. 软件设计(1)编写单片机程序,实现交通灯控制系统的各项功能。
(2)通过编程软件(如Keil)进行编译、调试,确保程序正确无误。
(3)将程序烧录到单片机中,观察交通灯控制系统运行情况。
五、实训结果与分析1. 实训结果(1)交通灯控制系统运行稳定,能够实现交通灯的智能控制。
(2)交通灯状态切换、时间参数设置与修改等功能均能正常实现。
2. 实训分析(1)通过本实训,掌握了单片机编程及接口技术,熟悉了交通灯控制系统的设计原理。
交通灯控制电路的设计(实验报告)
![交通灯控制电路的设计(实验报告)](https://img.taocdn.com/s3/m/c8f7672a30126edb6f1aff00bed5b9f3f80f7246.png)
交通信号灯控制电路的设计一、设计任务与要求1、任务用红、黄、绿三色发光二极管作为信号灯,设计一个甲乙两条交叉道路上的车辆交替运行,且通行时间都为25s的十字路口交通信号灯,并且由绿灯变为红灯时,黄灯先亮5s,黄灯亮时每秒钟闪亮一次。
2、要求画出电路的组成框图,用中、小规模集成电路进行设计与实现用EAD软件对设计的部分逻辑电路进行仿真,并打印出仿真波形图。
对设计的电路进行组装与调试,最后给出完整的电路图,并写出设计性实验报告。
二、设计原理和系统框图(一)设计原理1、分析系统的逻辑功能,画出其框图交通信号灯控制系统的原理框图如图2所示。
它主要由控制器、定时器、译码器和秒脉冲信号发生器等部分组成。
秒脉冲信号发生器是该系统中定时器和该系统中定时器和控制器的标准时钟信号源,译码器输出两组信号灯的控制信号,经驱动电路后驱动信号灯工作,控制器是系统的主要部分,由它控制定时器和译码器的工作。
图1 交通灯控制电路设计框图图中:Tl:表示甲车道或乙车道绿灯亮的时间间隔为25s,即车辆正常通行的时间间隔。
定时时间到,Tl=1,否则,Tl=0.Ty:表示黄灯亮的时间间隔为5s。
定时时间到,Ty=1,否则,Ty=0。
St:表示定时器到了规定的时间后,由控制器发出状态转换信号。
它一方面控制定时器开始下一个工作状态的定时,另一方面控制着交通信号灯状态转换。
2、画出交通信号灯控制器ASM图(1)甲车道绿灯亮,乙车道红灯亮。
表示甲车道上的车辆允许通行,乙车道禁止通行。
绿灯亮足规定的时间隔TL时控制器发出状态信号ST转到下一工作状态。
(2)乙车道黄灯亮乙车道红灯亮。
表示甲车道上未过停车线的车辆停止通行已过停车线的车辆继续通行乙车道禁止通行。
黄灯亮足规定时间间隔TY时控制器发出状态转换信号ST转到下一工作状态。
(3)甲车道红灯亮乙车道绿灯亮。
表示甲车道禁止通行乙车道上的车辆允许通行绿灯亮足规定的时间间隔TL时 控制器发出状态转换信号ST转到下一工作状态。
交通灯实训实验报告
![交通灯实训实验报告](https://img.taocdn.com/s3/m/b0c6f55817fc700abb68a98271fe910ef02dae06.png)
一、实验目的1. 理解交通灯控制系统的工作原理。
2. 掌握使用单片机进行交通灯控制系统的设计与实现。
3. 提高动手实践能力和问题解决能力。
二、实验原理交通灯控制系统通常采用单片机作为核心控制单元,通过编程实现对交通灯的红、黄、绿三种灯光状态的切换。
本实验采用单片机(如STC89C52)作为核心控制单元,利用定时器实现灯光的定时切换,并通过LED灯模拟交通灯的灯光状态。
三、实验器材1. 单片机开发板(如STC89C52开发板)2. LED灯(红、黄、绿各一个)3. 电阻(根据LED灯的规格选择)4. 跳线5. 编程器6. 计算机四、实验步骤1. 硬件连接:- 将红、黄、绿LED灯分别连接到单片机的P1.0、P1.1、P1.2端口。
- 将电阻串联在每个LED灯的两端,防止LED灯过载。
- 将跳线连接到单片机的相关引脚,用于编程和调试。
2. 软件编程:- 使用Keil软件编写单片机程序,实现交通灯的控制逻辑。
- 设置定时器,实现灯光的定时切换。
- 编写主循环程序,根据定时器的值切换LED灯的状态。
3. 程序调试:- 将程序烧录到单片机中。
- 使用示波器或逻辑分析仪观察LED灯的状态,确保程序运行正常。
4. 实验验证:- 将LED灯连接到实际交通灯的位置。
- 启动单片机,观察LED灯的状态是否符合交通灯的控制逻辑。
五、实验结果与分析1. 实验结果:- 红灯亮时,表示禁止通行。
- 绿灯亮时,表示允许通行。
- 黄灯亮时,表示准备切换到红灯。
2. 实验分析:- 通过本次实验,掌握了使用单片机进行交通灯控制系统的设计与实现。
- 了解了定时器在实现灯光切换中的作用。
- 提高了动手实践能力和问题解决能力。
六、实验总结1. 优点:- 实验操作简单,易于上手。
- 理论与实践相结合,提高了学生的动手能力。
2. 不足:- 实验内容较为简单,未能涉及到复杂交通灯控制系统的设计。
- 实验器材较为有限,限制了实验的拓展性。
七、实验拓展1. 研究复杂交通灯控制系统的设计,如多路口交通灯协同控制。
交通灯程序实验报告
![交通灯程序实验报告](https://img.taocdn.com/s3/m/370d27bac77da26925c5b0d5.png)
徐州工业职业技术学院《交通灯》实验报告题目:交通灯实验系部:电气工程系年级专业:应用电子082学生姓名:谢宜峰学号:830706032 指导老师:张江伟实验时间: 2010年6月22日一、实验目的仿真十字路口交通信号灯的工作过程,设计一个交通信号灯控制器。
要求: (1)、交通灯从绿变红时,有3秒黄灯亮的间隔时间; (2)、交通灯红变绿是直接进行的,没有间隔时间;(3)、主干道上的绿灯时间为27秒,支干道的绿灯时间为27秒; (4)、在任意时间,显示每个状态到该状态结束所需的时间。
图1路口交通管理示意图二、实验原理1、系统框图RGY三、各功能实现原理1.减计数器(1)程序Library ieee;use ieee.std_logic_1164.all; --打开程序包 use ieee.std_logic_unsigned.all; entity jianjishuqi isPort( ld,clk: in std_logic; --,clk 时钟,ld 使能 gg,ss: in std_logic_vector(3 downto 0); --gg 个位,ss 十位co : out std_logic; --进位 g,s : buffer std_logic_vector(3 downto 0) --g个位,s十位 );end jianjishuqi;Architecture a of jianjishuqi isbeginco <='1' when (g = "0000" AND s = "0000") else '0' ; --条件赋值 process( clk,ld ) --计数进程beginif ld = '1' theng <=gg; s<=ss;elsif rising_edge( clk ) then --如果时钟上升沿 falling_edge if(g="000" and s="0000") theng<=gg; s<=ss ;elsif g="0000" then --如果个位等于0 g<="1001"; s<=s-1 ; --个位9,十位减1 else --其它g<=g-1;s<=s; --个位减1,十位不变end if;end if;end process;end a;(2)仿真波形减计数器模块仿真波形(3)模块2.初值选择器(1)程序Library IEEE;Use Ieee.Std_logic_1164.all;use ieee.std_logic_unsigned.all;entity chuzhixuanze isport (sel :in std_logic_vector(1 downto 0);s:out std_logic_vector(3 downto 0);g:out std_logic_vector(3 downto 0));end chuzhixuanze;architecture a of chuzhixuanze isbeginprocess (sel)beginif sel = "01" theng<="0000";s<="0011";elsif sel = "10" theng<="0011"; s<="0000";elsif sel = "11" theng<="0111"; s<="0010";elseg <= "0000"; s<="0000";end if;end process;end a;(2)仿真波形初值选择器模块仿真波形(3)模块3.控制器(1)程序Library IEEE;Use Ieee.Std_logic_1164.all;use ieee.std_logic_unsigned.all;Entity kongzhiqi IsPort ( co ,clk ,rst:In Std_logic;LD:Out Std_logic ;sel:out std_logic_vector(1 downto 0); rgy:out std_logic_vector(0 to 2));end kongzhiqi;Architecture dd Of kongzhiqi IsType state_type Is( taob1 , taob2, taob3 , taob4 , taob5 ,taob6 ) ; Signal state : state_type;Beginchange_State:Process ( clk ,rst , co )BeginIF rst = '1' ThenState <= taob1 ;Elsif rising_edge( clk ) ThenCase state ISWhen taob1 =>state <= taob2 ;When taob2 =>IF co = '1' Thenstate <= taob3 ;Elsestate <= taob2;End if;When taob3 =>state <= taob4 ;When taob4 =>IF co = '1' Thenstate <= taob5 ;Elsestate <= taob4;End if;when taob5 =>state <= taob6 ;when taob6=>if co = '1' Thenstate <= taob1;else state <= taob6;end if;End case;End IF;End Process;Output_Process:Process( state )BeginCase state ISWhen taob1 =>sel<="01"; LD<='1'; rgy<="100";When taob2 =>sel<="00"; LD<='0'; rgy<="100";When taob3 =>sel<="11"; LD<='1'; rgy<="010";When taob4 =>sel<="00"; LD<='0'; rgy<="010";When taob5 =>sel<="10"; LD<='1'; rgy<="001";When taob6 =>sel<="00"; LD<='0'; rgy<="001";end case;end Process;end dd;(2)仿真波形控制器模块仿真波形(3)模块4.译码器(1)程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; --打开程序包USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY disp ISPORT (d:IN STD_LOGIC_VECTOR(3 DOWNTO 0);q:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END disp;ARCHITECTURE a OF disp ISBEGINPROCESS (d) --解碼进程 BEGINCASE d ISWHEN"0000"=>q<="0111111"; --0 WHEN"0001"=>q<="0000110"; --1 WHEN"0010"=>q<="1011011"; --2 WHEN"0011"=>q<="1001111"; --3 WHEN"0100"=>q<="1100110"; --4 WHEN"0101"=>q<="1101101"; --5 WHEN"0110"=>q<="1111101"; --6 WHEN"0111"=>q<="0100111"; --7 WHEN"1000"=>q<="1111111"; --8 WHEN"1001"=>q<="1101111"; --9 WHEN OTHERS=>q<="0000000"; --其它无显示 END CASE;END PROCESS;END a;(2)仿真波形译码器模块仿真波形(3)模块8.总图。
单片机整套实验及程序(交通灯_跑马灯等)
![单片机整套实验及程序(交通灯_跑马灯等)](https://img.taocdn.com/s3/m/913af7b0804d2b160a4ec007.png)
实验1 跑马灯实验一、实验目的●初步学会Proteus ISIS和uVision2单片机集成开发环境的使用;●初步掌握采用汇编语言与C语言开发单片机系统的程序结构;●掌握80C51单片机通用I/O口的使用;●掌握单片机内部定时/计数器的使用及编程方法以及中断处理程序的编写方法。
二、实验设备及器件●硬件:PC机,HNIST-1型单片机实验系统●软件:Proteus ISIS单片机仿真环境,uVision2单片机集成开发环境三、实验内容●编写一段程序,采用P1口作为控制端口,使与P1口相接的四个发光二极管〔D1、D2、D3、D4〕按照一定的方式点亮。
如点亮方式为:先点亮D1,延时一段时间,再顺序点亮D2……D4,然后又是D4……D1,同时只能有一个灯亮;然后每隔一段时间一次使相邻两个灯亮,三个灯亮,四个灯亮,最后闪烁三次,接着循环变化。
●基于Proteus ISIS仿真环境完成上述功能的仿真。
●基于uVision2单片机集成开发环境与硬件平台完成程序的脱机运行。
四、实验原理图图3.1 跑马灯实验电路原理图电路原理图如上图3.1所示,AT89S52的P1.0~P1.3控制4个发光二极管,发光二极管按照一定次序发光,相邻发光二极管的发光时间间隔可以通过定时器控制,还可以通过软件延时实现。
五、软件流程图与参考程序●主程序流程图如下:●参考程序#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar aa,num,speed,flag;uchar code table[]={0x0e,0x0d,0x0b,0x07};uchar code table1[]={0x0a,0x05,0x09,0x06};uchar codetable2[]={0x0c,0x09,0x03,0x08,0x01,0x0e,0x0c,0x08,0x00};void delay(uint z)//延时函数{uint x;uchar y;for(x=z;x>0;x--)for(y=200;y>0;y--);}void init()//条件初始化函数{ flag=0;speed=10;//控制跑马灯流水速度TMOD=0x01;//中断方式TH0=(65535-50000)/256;TL0=(65536-50000)%256;//初值EA=1;//翻开总中断ET0=1;//翻开外中断0TR0=1;}void main(){init();//调用初始化函数while(1){if(flag){delay(2000);//调用延时函数for(num=0;num<4;num++)//从左至右间隔一个依次闪烁{P1=table[num];delay(2000);}for(num=3;num>0;num--)//从左至右间隔一个依次闪烁{P1=table[num];delay(2000);}for(num=0;num<4;num++)//从左至右间隔两个依次闪烁{P1=table1[num];delay(2000);}for(num=3;num>0;num--)//从左至右间隔两个依次闪烁{P1=table1[num];delay(2000);}for(num=0;num<6;num++)//两个,三个,四个跑马灯依次闪烁{P1=table2[num];delay(2000);}for(num=0;num<5;num++)//闪烁5次{P1=0xff;//全暗delay(2000);P1=0X00;//全亮delay(2000);}speed=speed-3;//变速if(speed==4){speed=10;}}}}void timer0() interrupt 1//中断函数{TH0=(65535-50000)/256;TL0=(65536-50000)%256;aa++;if(aa==speed){aa=0;flag=1;}}六、实验思考题●请用汇编指令完本钱实验内容,深刻理解汇编语言程序设计结构。
单片机c语言程序设计---C51-交通灯实验报告
![单片机c语言程序设计---C51-交通灯实验报告](https://img.taocdn.com/s3/m/caca0e3ab6360b4c2e3f5727a5e9856a56122634.png)
单片机c语言程序设计---C51-交通灯实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称: C51-交通灯实验一、实验目的和要求1.熟悉单片机的硬件结构及其工作原理2.掌握单片机的C51编程二、实验内容和原理(1)硬件设计使用P1端口连接VD1、VD2、VD3,模拟路口东面的红、黄、绿灯;P0端口连接VD9、VD10、VD11,模拟路口西面的红、黄、绿灯;P3端口连接VD17、VD18、VD19,模拟路口南面的红、黄、绿灯;P2端口连接VD25、VD26、VD27,模拟路口北面的红、黄、绿灯。
路口红绿灯的显示规律为:①南面和北面显示红灯(即VD17和VD25为红灯)时,东面和西面显示绿灯(即VD3和VD11为绿灯)。
②南面和北面,东面和西面都变成黄灯。
③南面和北面显示绿灯,东面和西面显示红灯④南面和北面,东面和西面都变成黄灯,然后再从①进行循环(需注意:此处设置的黄灯显示时长应短于红灯或绿灯的显示时长)(2)protues仿真通过Keil编译后,利用protues软件进行仿真。
在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
三、主要仪器设备四、操作方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。
2.在keil上进行编译后生成“xxx.hex”文件。
3.编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
五、实验结果与分析void S_N(void){VD1=0;VD9=0;VD19=0;VD27=0;Delay(1000);VD1=1;VD9=1;VD19=1;VD27=1;}int main (void) {while(1){E_W();NOT();S_N();NOT();}}六、讨论和心得。
交通灯设计实验报告
![交通灯设计实验报告](https://img.taocdn.com/s3/m/8e99b8241611cc7931b765ce05087632311274bd.png)
一、实验目的1. 理解交通灯控制系统的基本原理和设计方法。
2. 掌握使用单片机进行交通灯控制系统的设计与实现。
3. 培养动手实践能力和团队协作精神。
二、实验原理交通灯控制系统是城市交通管理的重要组成部分,其主要目的是通过红、黄、绿三种信号灯的变换,实现对车辆和行人的有序通行。
本实验采用单片机作为控制核心,通过编写程序实现对交通灯的控制。
三、实验设备1. 单片机开发板(如51单片机开发板)2. 交通灯模块(红、黄、绿三色LED灯)3. 按键模块4. 数码管模块5. 电阻、电容等电子元器件6. 调试工具(如万用表、示波器等)四、实验步骤1. 系统设计(1)确定交通灯控制系统的功能需求:实现红、黄、绿三色LED灯的交替闪烁,满足交通信号灯的基本要求。
(2)设计系统框图:单片机作为核心控制单元,通过编写程序实现对交通灯的控制。
系统框图如下:```+------------------+ +------------------+ +------------------+| | | | | || 单片机 |-------| 交通灯模块 |-------| 按键模块|| | | | | |+------------------+ +------------------+ +------------------+```(3)编写程序:根据系统需求,编写单片机控制程序,实现红、黄、绿三色LED灯的交替闪烁。
2. 硬件搭建(1)将单片机开发板与交通灯模块、按键模块、数码管模块等连接。
(2)根据电路原理图,连接电阻、电容等电子元器件。
(3)使用万用表测试电路连接是否正确。
3. 软件编程(1)使用C语言编写单片机控制程序。
(2)编译程序,生成可执行文件。
(3)将可执行文件烧录到单片机中。
4. 系统调试(1)使用示波器观察单片机引脚输出波形。
(2)检查交通灯模块是否正常工作。
(3)使用万用表测试按键模块是否正常工作。
(4)根据实际情况调整程序参数,确保系统稳定运行。
交通灯设计-8255-8254(附连线图和源代码)
![交通灯设计-8255-8254(附连线图和源代码)](https://img.taocdn.com/s3/m/80f62d95ba0d4a7302763a7e.png)
西安郵電學院硬件课程设计报告题目:微机原理与接口课程设计;^院系名称:计算机学院专业名称:软件工程班级:软件0802学生姓名:王晶晶学号(8位): 04085047指导教师:刘军设计起止时间:2011年05月23日~2011年05月27日[一、设计目的通过可编程并行接口芯片8255A和可编程定时器/计数器芯片8253/8254以及中断控制器 8259实现十字路口交通灯的模拟控制,进一步掌握并行接口和定时器/计数器及数码管控制的实际应用。
二、设计内容1.用试验台提供的发光二极管(红绿黄各两支,共六支)作为南北路口(红绿黄各一支)和东西路口(红绿黄各一支)的模拟交通灯。
2.用可编程并行接口芯片8255A控制模拟交通灯的亮与灭和数码管的倒计时显示。
3.用可编程定时器/计数器芯片8253实现模拟交通灯亮与灭的时间延迟控制。
4.用数码管作为模拟交通灯亮与灭的时间延迟控制的倒计时显示。
'5.用汇编语言编程使六个灯按交通灯变化规律“亮/灭”。
交通灯变化规律要求:① 南北路口的绿灯,东西路口的红灯同时亮30秒,且数码管30秒倒计时显示。
② 南北路口的黄灯闪烁3秒(三亮三灭),同时东西路口的红灯继续亮,且数码管3秒倒计时显示。
③ 南北路口的红灯,东西路口的绿灯同时亮20秒,且数码管20秒倒计时显示。
④ 南北路口的红灯继续亮,同时东西路口的黄灯闪烁3秒(三亮三灭),且数码管3秒倒计时显示。
⑤ 转①重复⑥按压“东西紧急键”,则东西方向绿灯,南北方向红灯;再次按压“东西紧急键”,解除东西紧急通行状态。
(“东西紧急键”可是键盘键,亦可是逻辑开关键)⑦按压“南北紧急键”,则南北方向绿灯,东西方向红灯;再次按压“南北紧急键”,解除南北紧急通行状态。
(“南北紧急键”可是键盘键,亦可是逻辑开关键)"⑧按 <ESC>键退出程序。
备注:1、按键用 8255A 芯片的 PC 口实现或用键盘模拟实现。
2、8253定时到可以通过8259,用中断的方式实现定时器。
交通灯控制系统设计-实验报告
![交通灯控制系统设计-实验报告](https://img.taocdn.com/s3/m/c4dffc6b76232f60ddccda38376baf1ffc4fe3a0.png)
交通灯控制系统设计-实验报告
实验目的:设计一个交通灯控制系统,实现对交通灯的自动控制。
实验材料:
1. Arduino UNO开发板
2. 红绿黄LED灯各1个
3. 杜邦线若干
实验原理:
交通灯系统的控制主要是通过控制LED灯的亮灭来实现。
红
色LED灯表示停止,绿色LED灯表示通行,黄色LED灯表
示警示。
通过控制不同LED灯的亮灭状态,可以模拟交通灯
的不同信号。
实验步骤:
1. 将红色LED灯连接到Arduino开发板的数字输出引脚13,
绿色LED灯连接到数字输出引脚12,黄色LED灯连接到数
字输出引脚11。
2. 在Arduino开发环境中编写控制交通灯的程序。
3. 将Arduino开发板与计算机连接,将程序上传到Arduino开
发板中。
4. 接通Arduino开发板的电源,观察交通灯的亮灭状态。
实验结果:
根据程序编写的逻辑,交通灯会按照规定的时间间隔进行变换,实现红绿灯的循环。
实验总结:
通过本次实验,我们设计并实现了一个简单的交通灯控制系统。
掌握了Arduino编程和控制LED灯的方法,加深了对控制系
统的理解。
通过实验,我们发现了交通灯控制系统的重要性和意义,为今后的交通控制提供了一种可行的解决方案。
交通灯控制实验报告
![交通灯控制实验报告](https://img.taocdn.com/s3/m/969431d0a1116c175f0e7cd184254b35eefd1afa.png)
一、实验目的1. 理解交通灯控制系统的工作原理和基本组成。
2. 掌握PLC(可编程逻辑控制器)编程和调试方法。
3. 学习交通灯控制系统的硬件连接和电路设计。
4. 提高实际应用中解决复杂问题的能力。
二、实验原理交通灯控制系统是城市交通管理的重要组成部分,其基本原理是通过对交通信号灯进行控制,实现交通流量的有序疏导。
本实验采用PLC作为控制核心,通过编写程序实现对交通灯的定时控制。
三、实验器材1. PLC主机2. 交通灯控制模块3. 电源模块4. 交通灯模型5. 连接线四、实验步骤1. 硬件连接:- 将PLC主机与交通灯控制模块、电源模块和交通灯模型连接。
- 将PLC主机与计算机连接,以便进行程序编写和调试。
2. 程序编写:- 根据交通灯控制要求,编写PLC程序。
- 程序主要包括以下部分:- 启动信号处理:检测启动开关状态,控制交通灯开始工作。
- 定时控制:根据设定的时间,控制交通灯的红、黄、绿灯亮灭。
- 紧急处理:检测紧急处理开关状态,实现交通灯的紧急控制。
3. 程序调试:- 在计算机上运行PLC程序,观察程序运行效果。
- 根据实际情况,对程序进行调试和优化。
4. 实验验证:- 在实际硬件环境中运行程序,观察交通灯控制效果。
- 验证程序是否满足实验要求。
五、实验结果与分析1. 实验结果:- 在实验过程中,成功实现了交通灯的控制,实现了红、黄、绿灯的定时切换。
- 在紧急情况下,能够实现交通灯的紧急控制。
2. 结果分析:- 通过实验,掌握了PLC编程和调试方法,提高了实际应用中解决复杂问题的能力。
- 实验结果表明,所设计的交通灯控制系统具有良好的稳定性和可靠性。
六、实验总结本次实验成功实现了交通灯控制系统的设计与实现,达到了预期目标。
通过实验,我们掌握了以下知识点:1. 交通灯控制系统的工作原理和基本组成。
2. PLC编程和调试方法。
3. 交通灯控制系统的硬件连接和电路设计。
本次实验提高了我们的实际应用能力,为以后从事相关领域工作奠定了基础。
51单片机控制的交通灯系统实验报告
![51单片机控制的交通灯系统实验报告](https://img.taocdn.com/s3/m/52365bc408a1284ac85043e1.png)
系统实验报告——基于51单片机的交通灯设计专业:XX学生姓名:xx XX学号:***********指导教师:wwwwwwwwwww2000年x月x日目录1 设计任务和性能指标 (1)1.1设计任务 (1)1.2性能指标 (1)2 设计方案 (2)2.1任务分析 (2)2.2方案设计 (2)3 系统硬件设计 (3)3.1单片机的最小系统 (3)3.2电源电路 (4)3.3数码管显示时间电路设计 (4)3.4信号灯控制电路设计 (5)4 系统软件设计 (5)4.1主程序设计 (5)5 调试及性能分析 (6)5.1调试分析 (6)5.1.1 软件调试 (6)5.1.2 硬件调试 (6)5.1.3 系统功能调试 (6)6 心得体会 (6)参考文献 (8)附录1 系统原理图 (9)附录3 程序清单 (10)附录3元器件清单 (14)1 设计任务和性能指标1.1设计任务利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
用红、绿、黄发光二极管作信号灯。
如图上图所示。
设东西向为主干道,南北为支干道。
1.2性能指标1. 状态1:仅亮灯,数码管不工作。
按下键4,红/黄/绿三色灯交替亮:红—〉(20秒)黄(闪烁)—〉(5秒)绿—〉(20秒) 黄(闪烁)—〉(5秒)红2. 状态2:灯和数码管相结合,模拟十字路口的交通灯 在以上功能的基础上数码管倒计时显示时间。
南东2 设计方案2.1任务分析模拟交通灯控制器就是使用单片机来控制一些LED 和数码管,模拟真实交通灯的功能。
红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通,计时牌显示路口通行转换剩余时间等2.2方案设计根据设计的要求可知,系统的硬件原理框图如下图所示。
单片机键盘LED 显示三色指示灯系统硬件框图单片机选用A T89S52,它与8051系列单片机全兼容,但其内部带有4KB 的FLASH R OM ,设计时无需外接程序存储器,为设计和调试带来极大的方便。
实验报告交通灯范文
![实验报告交通灯范文](https://img.taocdn.com/s3/m/133a63d3dc88d0d233d4b14e852458fb760b3849.png)
实验报告交通灯范文实验报告:交通灯设计与制作一、实验目的通过设计与制作交通灯,了解交通灯的原理与性能特点,并能够实现其正常运行。
二、实验器材1. ATmega16开发板2.LED灯x33.电阻、电容等电子元件4.连接电线、面包板等实验用具三、实验原理与方法交通灯是一种交通信号设备,用于指示各种交通情况下的行车和行人通行。
本实验通过使用ATmega16开发板控制LED灯的亮灭,实现交通灯的正常运行。
具体的原理与方法如下:1. 硬件部分:使用ATmega16开发板作为主控制器,通过连接LED灯和其他相关电子元件,控制LED灯的亮灭。
通过设置不同的亮灭模式,实现交通灯的切换。
2.软件部分:使用C语言编写程序,通过控制IO口的高低电平,实现对LED灯的控制。
通过循环控制,实现交通灯的切换。
四、实验步骤1. 硬件连接:根据电路原理图连接ATmega16开发板、LED灯、电阻、电容等电子元件。
2.软件编写:通过使用C语言编写程序,实现交通灯的正常运行。
具体的软件编写步骤如下:(1)包含头文件:引入所需的头文件,包括IO口设置、延时、函数等。
(2)定义IO口:通过定义IO口,实现对LED灯的控制。
(3)初始化:初始化相关变量和IO口。
(4)交通灯模式设置:通过设置不同的亮灭模式,实现交通灯的切换。
(5)主循环控制:通过循环控制,实现交通灯的正常运行。
3. 烧录程序:将编写好的程序通过编程器烧录到ATmega16开发板中。
4.实验现象观察:观察LED灯的亮灭情况,验证交通灯的正常运行。
五、实验结果与分析经过实验,我们成功地实现了交通灯的设计与制作,并验证了交通灯的正常运行。
当设置不同的亮灭模式时,LED灯能够按照预定的程序顺序进行亮灭,实现了交通灯的切换。
通过观察LED灯的亮灭情况,我们可以有效地判断交通灯的当前状态,指导车辆和行人的通行。
六、实验总结通过本次实验,我们对交通灯的原理与性能有了更深入的了解,并通过实践掌握了交通灯的设计与制作方法。
交通灯原理图及流程图
![交通灯原理图及流程图](https://img.taocdn.com/s3/m/ec145e76a55177232f60ddccda38376baf1fe00e.png)
交通灯原理图及流程图总线原理图(Multisim软件图)89c52引脚图复位电路(Multisim软件图)晶振电路(Multisim软件图) 按键电路LED数码管显示键盘单复位电路片机晶振电路LED指示灯电源电路硬件设计框图开始初始化初值函数Init ()显示程序Display ()键盘扫描Keys can()Key! =0YTR00, TR10 ,,P0table [9], P20,,YKey=1 NY东西方向 Key=2 Key~=0 NP1,0xde YY南北方向键盘扫描P1,0xf3 Keys can(),t0400 Y,P10xde NY ,P10xdd ,,400t0460N,,Nt0920460 0 ,P10xeb Y,TR01 t1>860 Y ,TR11 ,P10xf3 N 总体程序流程图z,5x,zNx,0Yy,110x,x,1Yy,y,1 y,0N延时delay()temp,P3delay(5) 延时Temp! =0xffNYtemp,P3NTemptemp&0xff ,Temp! =0xffYtemp,P3YTemp! =0 NTemp=0xfeYNNTemp=0xf d Key=1 YTemp=0xfbKey=2 YNKey=0Ytemp,P3Temp! =0xffNTemp,temp&0xff键盘扫描Keys can()NO 0 ,OFF 1 ,建表table[]={ 0x3f,0x06,0x5b,0x4f,0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c,0x39, 0x5e, 0x79, 0x71, 0}用于显示0,1,2,…A,b,…E,F,灭。
G1ON; Y1OFF; R1OFF; G2OFF; Y2OFF; R2ON; ,,,,,,Num20; num123; anum/10; bnum%10; cnum1/10; ,,,,,d num1%10; TMOD0x11; TH0 (65536-50000)/256; ,,,TL0, (65536-50000) %256; TH1, (65536-50000)/256; TL1, (65536-50000) %256; EA,1; ET0,1; ET1,1; TR01;TR11; ,,初始化初值函数init()(65536-50000)/256; TH0,TL0 (65536-50000) %256; ,t0t0+1 ,Nt0%20=0YYN Num-1 Num,,t0400,,t0460 400NNum=0 NumNum-1 ,YY N NN Num3 , ,,t0920 460Num=0G1OFF ,YY1ON ,Y20 Num,R1,OFF Num,23 Num,Num-1 G1ON ,G1,OFF Y1OFF ,Y1,OFF Num=0 R1OFF ,R1,ON YN Yt0=920t0,0 N,,anum/10;bnum%10;timer0() interrupt 1 //定时器0中断TH1 (65536-50000)/256; ,TL1 (65536-50000) %256; ,t1t1+1 ,Nt1%20=0YYN ,t1460 Num1Num1-1 ,,,t1860 460NNum1=0 Num1-1 Num1,Y YN N N Num20 , ,,860t1920 Num1=0 G2ON ,YYOFF ,Y23 Num1, R2OFF Num13 Num1-1 ,,Num1, G2,OFF G2OFF ,Y2,OFF Y2ON ,Num=0 R2,ON R2OFF ,YN Yt1=920t1,0 Nc,num1/10;d,num1%10;timer1() interrupt 3 //定时器1中断P0=table[a]; P2=0xfe;延时delay(1)P2=0xffP0=table[b]; P2=0xfd;延时delay(1)P2=0xffP0=table[c]; P2=0xfb;延时delay(1)P2=0xffP0=table[d]; P2=0xf7;延时delay(1)P2=0xffdisplay() //显示程序。
PLC交通灯实验报告
![PLC交通灯实验报告](https://img.taocdn.com/s3/m/9eaae4c99f3143323968011ca300a6c30d22f14a.png)
实验二十字路口交通灯控制实验1. 实验目的(1)练习定时器、计数器的基本使用方法。
(2)掌握PLC的编程和调试方法。
(3)对应用PLC解决实际问题的全过程有个初步了解。
2. 实验设备(1)编程器1台(PC机)。
(2)实验装置1台(含S7-200 24点CPU)。
(3)交通灯实验模板一块。
(4)导线若干。
图1.12 交通灯模拟控制板3. 控制要求及参考交通路口红、黄、绿灯的基本控制要求如下:路口某方向绿灯显示(另一方向亮红灯)10秒后,黄灯以占空比为50%的一秒周期(0.5秒脉冲宽度)闪烁3次(另一方向亮红灯),然后变为红灯(另一方向绿灯亮、黄灯闪烁),如此循环工作。
PLC I/O端口分配:SB1 I0.0 起动按钮SB2 I0.1 停止按钮HL1(HL7)Q0.0 东西红灯HL2(HL8)Q0.1 东西黄灯HL3(HL9)Q0.2 东西绿灯HL4(HL10)Q0.4 南北红灯HL5(HL11)Q0.5 南北黄灯HL6(HL12)Q0.6 南北绿灯PLC 参考电路:图1.13 红绿灯控制PLC 电气原理图4. 实验内容及要求(1)按参考电路图完成PLC 电路接线(配合通用器件板开关元器件)。
(2)输入参考程序并编辑。
(3)编译、下载、调试应用程序。
功能表图如下:Q0.51L 1M+24V NL12L GND Q0.6SB2SB1Q0.1I0.1Q0.4Q0.2PLCI0.0Q0.0HL5220VACHL6+24VHL2HL4HL3HL1梯形图如下:指令代码程序如下:LD I0.0O M0.0AN I0.1= M0.0LD M0.0LPSAN Q0.3AN T41TON T37 , +250 LRDA T37TON T38 , +250 LRD A T38TON T39 , +30 LRDA T39TON T40 , +20 LRDA T37TON T41 , +300 LRDA T44TON T42 , +20 LRDAN Q0.3AN T37TON T43 , +200 LRDA T43TON T44 , +30 LRDAN T46TON T45 , +5 LRDA T45TON T46 , +5 LRDAN T37AN Q0.3= Q0.2 LRDLD Q0.6 AN T38LD T 38 AN T39A T45 OLDALD= Q0.0 LRD AN T38 AN T40 = Q0.1 LRDLD Q0.2 AN T43 LD T43 AN T44 A T45 OLDALD= Q0.4 LPPLPSA T44 AN T42 = Q0.5 LRDA T37 = Q0.6 LPPA Q0.0 A Q0.4 = Q0.35.思考练习(1)采用经验设计法应该如何实现?、。
单片机交通灯实验报告
![单片机交通灯实验报告](https://img.taocdn.com/s3/m/1eaabf17c950ad02de80d4d8d15abe23482f0339.png)
一、实验目的1. 理解单片机在交通灯控制系统中的应用原理。
2. 掌握单片机编程方法,实现交通灯的自动控制。
3. 学会使用Proteus进行电路仿真和调试。
4. 培养动手实践能力和团队协作精神。
二、实验环境1. 硬件:STC89C52单片机、数码管、LED灯、电阻、电容、按键、三极管等元器件。
2. 软件:Keil C51、Proteus 8.0。
三、实验原理本实验基于STC89C52单片机,通过编程实现交通灯的红、黄、绿三色灯光切换,并利用数码管显示倒计时功能。
系统主要包括以下模块:1. 单片机控制模块:负责控制LED灯的亮灭和数码管的显示。
2. 数码管显示模块:显示交通灯状态和倒计时时间。
3. 按键模块:实现交通灯的紧急停用功能。
四、实验步骤1. 电路连接:根据原理图连接单片机、数码管、LED灯、电阻、电容、按键等元器件。
2. 程序编写:使用Keil C51编写单片机控制程序,实现以下功能:- 初始化单片机I/O端口;- 设置定时器中断,实现倒计时功能;- 编写主循环程序,控制LED灯的亮灭和数码管的显示;- 编写按键中断程序,实现紧急停用功能。
3. 仿真调试:使用Proteus软件对电路进行仿真,观察LED灯和数码管的显示效果,确保程序运行正确。
4. 实物测试:将程序烧录到单片机中,连接实物电路,测试交通灯控制系统是否正常工作。
五、实验结果与分析1. LED灯控制:通过编程实现LED灯的红、黄、绿三色灯光切换,模拟交通灯的运行状态。
2. 数码管显示:数码管显示倒计时时间,方便观察交通灯的运行状态。
3. 按键控制:按下按键,实现交通灯的紧急停用功能。
实验结果表明,本实验成功实现了单片机控制的交通灯系统,达到了预期目标。
六、实验总结1. 通过本次实验,掌握了单片机编程方法,实现了交通灯的自动控制。
2. 学会了使用Proteus进行电路仿真和调试,提高了动手实践能力。
3. 培养了团队协作精神,与同学共同完成了实验任务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交通灯信号灯自动控制系统交通灯原理图一、系统的基本功能要求(1)以秒为计时单位,两位数码管以十进制递减计数形式作定时显示,在递减计数回零瞬间完成换灯操作。
(2)通过键盘红黄绿三色信号灯所亮时间在0~99秒内任意设定。
(3)十字路口的通行起始状态可人工设定,运行中可通过人工干预使十字路口通行状态固定于任何一种工作模式。
硬件设计1.系统总体框图2.电路设计(1)显示模块倒计时与时钟说明:⑴共阴极两位数码管用于倒计时;段选端由锁存器控制,位选端用P3_0与P3_1控制⑵两个四位共阴极数码组成八位数码管用于时钟显示段位选分别由两个锁存器控制(2)红绿灯模块说明:⑴图为两方向的红绿黄灯,分别接在P0口上,由P0口控制⑵51系列单片机的P0口内部没有集成上拉电阻,加上拉就是提高驱动能力,必须要通过上拉电阻接VCC。
上拉电阻一般接1K的。
(3)键盘模块说明⑴P2键控制功能说明:P2^6 key0绿灯位选择P2^5 key1黄灯位选择P2^4 key2 加1操作P2^3 key3 减1操作P2^2 key4 信号灯状态固定P2^1 key5 信号灯状态切换P2^0 key6时钟时分秒设置键⑵键盘加上拉电阻为了提高驱动能力3.复位电路:4.时钟电路:说明:用12M晶振时电容要选择30p软件部分1、主程序流程图2、时钟初值控制子程序3、绿灯,黄灯初值设置子程序4、时钟控制与倒计时控制时钟,倒计时初值通过键盘输入。
倒计时使用52单片机内部定时器1实现计数,时钟控制部分是使用定时、计数器2实现计时,以秒为基本单位在数码管中显示。
时钟部分:当秒的个位计时到了10,则秒个位清0,同时十位进一,以此类推;倒计时部分显示是则递减显示。
此过程通过判断语句实现。
5、.灯状态控制灯的状态通过键盘扫描控制。
状态固定键按下时,关闭定时器1;再次按下此键时,打开定时器。
状态选择键按下时,程序跳至下一个状态的程序控制部分,从而实现状态改变。
基本功能:(1)A B干道分别有两组红黄绿灯,各自的亮灯时间与状态由键盘控制。
(2)两位数码管用于倒计时,记录各个灯的亮灯时间,定时时间由键盘设定。
(3)十字路口通行状态可由键盘切换。
发挥部分功能:(1) 由八位数码管显示,初试时间可由键盘设定,且在05:00~23:00黄灯闪烁显示。
(2) 绿灯倒计时最后三秒和黄灯显示时闪烁显示(频率1HZ)。
(3)人行道的红绿灯配合车辆的红绿灯同时工作。
(1) 共阴数码管10个:8个显示时间,2个显示倒计时时间(2) 红黄绿发光二极管个4个:模拟十字路口信号灯。
令各加1个人行道上的红灯和绿灯(3) 74HC573锁存器2个:段码和位选锁存各一个(4) STC单片机一块按键8个 12M晶振一个排线排针电阻电容若干(1)问题:每次通电后都要在十八、十十九口触发一下才能正常工作。
分析:晶振电路与单片机距离过远,输入噪声很大解决:把晶振电路改在紧挨单片机位置就可排除干扰。
(2) 共阳数码管需要接三极管放大驱动电流,为节约成本选用共阴数码管。
(3) 键盘扫描程序中加了按键前沿消抖延时,但按键不够灵敏加了后延消抖后使得按键足够灵敏。
(4) 在段锁存器给各个数码管送段码时相互之间有影响,在显示函数中加消影程序解决相互之间的影响。
(5) 在第一次焊接时一次性焊接完,调试时无法检查错误,而在第二次焊接时采用边调试边焊接的方法,加快速度,提高了准确度。
(6) 杜邦线数码管、锁存器等接线比较多,用单根导线焊接容易相互连接且不易检查错误,用杜邦线便于检查和模块化调试。
本次设计,我们花了不少时间和精力,但收获很大:(1) 这次设计时间很长,期间,我们自学了单片机教程,keil 2、proteus、protel 99se等软件,自学能力达到很大的提高(2)本次设计过程中,我们充分体会到了团体合作的重要性。
通过我们三个人的合理分工,设计过程完成的比较成功(3)通过本次设计,我们学到了对复杂程序模块化的编程方法和对其进行检查与修改方法。
(4)本次设计过程中,我们的动手能力得到很大的提高,例如说焊接技术、对电路板的总体规划,等等。
<<单片机原理与应用及C51程序设计>>清华大学大学出版社附:软件C程序//********************实验板上完整程序#include"reg52.h"#define uint unsigned int#define uchar unsigned charuchar aa,bb,cc,dd,ee,ff,a1,a3,con32,con31; uchar temp,ye,shi1,ge1,shi2,ge2,shi,ge,flag; int b,c=0,d=0,m=1,t;uint n1,n2;sbit p0_3=P0^3; //A干道黄灯sbit p0_2=P0^2; //A干道红灯sbit p0_4=P0^4; //A干道绿灯sbit p0_6=P0^6; //B干道黄灯sbit p0_7=P0^7; //B干道红灯sbit p0_5=P0^5; //B干道绿灯sbit wela=P3^0;sbit dula=P3^1;sbit p3_2=P3^2;sbit p3_3=P3^3;uchar data timedate1[3]={0x00,0x00,0x00};//显示缓冲区两位数字uchar data timedate2[3]={0x00,0x00,0x00};//显示缓冲区两位数字uchar data timedate3[7]={0x00,0x00,0x00,0x00,0x00,0x00,0x00};//显示缓冲区两位数字char code wei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位扫描sbit key0=P2^6; //绿灯控制键sbit key1=P2^5; //黄灯控制键sbit key2=P2^4; //加一键sbit key3=P2^3; //减一键sbit key4=P2^2; //保存状态sbit key5=P2^1; //状态改变sbit key6=P2^0; //时钟控制键uchar data con3=0x00;uchar data con=0x00;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};void display(uchar shi,uchar ge);void display3(uchar aa,uchar bb,uchar cc,uchar dd,uchar ee,uchar ff);void delay(uint z);void init();keyscan1() ;keyscan2() ;keyscan3() ;void main(){init();//初始化子程序while(1){//*************************键盘扫描控制程序if(con==0&&ye==0)keyscan3();display3(aa,bb,cc,dd,ee,ff);if(con3==0&&ye==0) //调用键盘扫描程序{keyscan1();shi1=n1/10;ge1=n1%10;display(shi1,ge1);}if(con==0&&con3==0){keyscan2();shi2=n2/10;ge2=n2%10;display(shi2,ge2);}if((con>=3&&ye==0)||(ye>=3&&con==0)) d isplay(0,0);P0=0xff;delay(1);// ***************************保存当前状态if(key4==0){delay(12);while(key4==0) ;delay(12);d++;if(d%2)TR0=0;//关闭计数器,下面else if语句不执行,直接到delay()显示语句else TR0=1;}//****************************状态改变,进入下一个状态if(key5==0){delay(12);while(key5==0) ;delay(12);m++;c++;if(c%2) temp=n2;else temp=n1;}//****************************状态选择if(t<5||t>=23){if(a1/10==0){p0_3=0;p0_6=0;}else {p0_3=1;p0_6=1;}delay(1);}else{if(m%4==1){p0_6=1;p0_2=1;if(temp>3)p0_4=0;else{if(a1/10==0)p0_4=0;else p0_4=1;} //A绿灯p0_7=0; //B红灯delay(1);}else if(m%4==2){p0_4=1;if(a1/10==0)p0_3=0; else p0_3=1;//A黄灯p0_7=0; //B红灯delay(1);}else if(m%4==3){p0_3=1;p0_7=1;p0_2=0; //A红灯if(temp>3)p0_5=0;else{if(a1/10==0)p0_5=0;else p0_5=1;} //B绿灯delay(1);}else if(m%4==0){p0_5=1;p0_2=0; //A红灯if(a1/10==0)p0_6=0; else p0_6=1; //B黄灯delay(1);}}//*****************************************倒计时if(con>=3&&ye>=3){TR0=1;if (b!=0) temp=n1; //只有当扫描到有输入时temp才等于n,否则为自减后的值shi=temp/10;ge=temp%10;if(a1==20){ a1=0;temp--;if(temp==-1){ c++; //进入下一个状态,赋倒计时起始值m++; //进入下一个状态,赋灯的状态if(c%2) temp=n2;else temp=n1;}}display(shi,ge);}b=0;}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void display(uchar shi,uchar ge) { P1=0x00;wela=0;p3_2=1;dula=1;P1=table[shi];dula=0;p3_3=0;delay(1);p3_3=1;dula=1;P1=table[ge];dula=0;p3_2=0;delay(1);p3_2=1;}void display3(uchar aa,uchar bb,uchar cc,uchar dd,uchar ee,uchar ff){ p3_2=1;p3_3=1;P1=0xff;wela=1;P1=wei[7];wela=0;P1=0x00;dula=1;P1=table[aa];dula=0;delay(1);dula=1;P1=table[bb];dula=0;P1= 0xff;wela=1;P1=wei[6];wela=0;delay(1);dula=1;P1=table[10];dula=0;P1=0xff;wela=1;P1= wei[5];wela=0;delay(1);dula=1;P1=table[cc];dula=0;P1=0xff;wela=1;P1= wei[4];wela=0;delay(1);P1=table[dd];dula=0;P1= 0xff;wela=1;P1=wei[3];wela=0;delay(1);dula=1;P1=table[10];dula=0;P1=0xff;wela=1;P1= wei[2];wela=0;delay(1);dula=1;P1=table[ee];P1=0xff;wela=1;P1= wei[1];wela=0;delay(1);dula=1;P1=table[ff];dula=0;P1= 0xff;wela=1;P1=wei[0];wela=0;delay(1);}void init(){wela=0;dula=0;TH1=(65536-50000)/256;TL1=(65536-50000)%256;TMOD=0x11; EA=1;ET1=1;TR1=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;TR0=0;}//************************绿灯键盘扫描程序keyscan1(){if(key0==0){//b=0;delay(12);while(key0==0) ;delay(12);con++;//b++;}if(con!=0) //con=1||2时的加一运算 if(key2==0){delay(12);while(key2==0) ;delay(12);timedate1[con]++;if(timedate1[con]>9)timedate1[con]=0;shi1=timedate1[1];ge1=timedate1[2];display(shi1,ge1);n1=10*shi1+ge1;}if(con!=0) //con=1||2时的减一运算if(key3==0){delay(12);while(key3==0) ;delay(12);timedate1[con]--;if(timedate1[con]==255)timedate1[con]=9;shi1=timedate1[1];ge1=timedate1[2];display(shi1,ge1);n1=10*shi1+ge1;}}//*********************黄灯控制键扫描keyscan2(){if(key1==0){b=0;delay(12);while(key1==0) ;delay(12);ye++;b++;}if(ye!=0) //con=1||2时的加一运算if(key2==0){delay(12);while(key2==0) ;delay(12);timedate2[ye]++;if(timedate2[ye]>9)timedate2[ye]=0;shi2=timedate2[1];ge2=timedate2[2];display(shi2,ge2) ;n2=10*shi2+ge2;}if(ye!=0) //con=1||2时的减一运算if(key3==0){delay(12);while(key3==0) ;delay(12);timedate2[ye]--;if(timedate2[ye]==255)timedate2[ye]=9;shi2=timedate2[1];ge2=timedate2[2];display(shi2,ge2);n2=10*shi2+ge2;}}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;a1++;}//******************时钟控制键扫描程序keyscan3(){if(key6==0){delay(12);while(key6==0) ;delay(12);con3++;TR1=0;if(con3==5){TR0=1;con3=0; }}if(con3!=0) //con=1||2时的加一运算if(key2==0){delay(12);while(key2==0) ;delay(12);timedate3[con3]++;if(con3==1)con31=2;else if(con3==2)con31=9;else if(con3==3)con31=5;else if(con3==4)con31=9;if(timedate3[con3]>con31)timedate3[con3]=0;if(timedate3[1]==2&&timedate3[2]==4){timedate3[2]=0;timedate3[1]=0;}}if(con3!=0)if(key3==0){delay(12);while(key3==0) ;delay(12);timedate3[con3]--;}if(con3==1) con32=2;else if(con3==2) con32=9;else if(con3==3) con32=5;else if(con3==4) con32=9;if(timedate3[con3]==255)timedate3[con3]=con32;if(timedate3[1]==2&&timedate3[2]==9)timedate3[2]=3;aa=timedate3[1]; //小时的十是位bb=timedate3[2];cc=timedate3[3];dd=timedate3[4];ee=timedate3[5];ff=timedate3[6];t=10*aa+bb;}void time_intt3(void) interrupt 3{TH0=(65536-50000)/256;TL0=(65536-50000)%256;a3++;if(a3==20){a3=0;timedate3[6]++;if(timedate3[6]==10){timedate3[6]=0;timedate3[5]++;} if(timedate3[5]==6){timedate3[5]=0;timedate3[4]++;} if(timedate3[4]==10){timedate3[4]=0;timedate3[3]++;} if(timedate3[3]==6){timedate3[3]=0;timedate3[2]++;} if(timedate3[2]==10){timedate3[2]=0;timedate3[1]++;} if(timedate3[1]==2&&timedate3[2]==4) {timedate3[1]=0;timedate3[2]=0;} aa=timedate3[1];bb=timedate3[2];cc=timedate3[3];dd=timedate3[4];ee=timedate3[5];ff=timedate3[6];t=10*aa+bb;}}。