交通灯(LED灯+数码管)
单片机课程设计交通灯(完整版)

门控串行数据输入
异步中央复位
符合 JEDEC 标准 no.7A
静电放电 (ESD) 保护:
·HBM EIA/JESD22-A114-B 超过 2000 V
·MM EIA/JESD22-A115-A 超过 200 V 。
多种封装形式
额定从-40 °C至 +85 °C和-40 °C至 +125 °C。
设计思想基于完成以上任务分析结合所学有关知识尤其是本学期所学关于单片机的中断系统和定时计数器的相关知识及应用我们知道对于15红绿黄四组各三盏灯的控制可以通过把这十二盏灯分别接到单片机的六个输出引脚若用p1口进行输出则分配如下at89c51l1l2l3l4l5l6东西红东西黄东西绿南北红南北黄南北绿led显示分布1642
亮灯规律:东西绿灯亮25s,南北红灯亮25s
东西绿灯闪5s,南北红灯亮5s
东西黄灯亮2s,南北红灯亮2s
东西红灯亮25s,南北绿灯亮25s
东西红灯亮5s,南北绿灯闪5s
东西红灯亮2s,南北黄灯亮2s
2.2.
(1)加强对单片机和汇编语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。
3.2.LED
3.2.1.七段数码显示器:
七段发光线段分别用a、b、c、d、e、f、g七个小写字母表示。
3.2.2.LED数码管:
半导体数码管又称LED数码管,是一种广泛使用的显示器件。LED有两种:共阳极型和共阴极型。
LED优点:亮度高、字形清晰,工作电压低(1.5~3V)、体积小、可靠性高、寿命长,响应速度极快。
1.引言
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
基于quartusll-交通灯控制系统

一、设计任务要求交通灯控制器:用于十字路口的交通灯控制器.实验要求:1.东西方向各有一组红,黄,绿灯用于指挥交通,红,黄,绿的持续时间分别为25s,5s,20s。
2.当有紧急情况(如消防车)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制器恢复原来状态,正常工作。
3.组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间.二、设计思路及总体结构框图设计思路:1.硬件:由设计任务要求可知,总体输入电路有:(1)在开始计时之前的等待状态,复位键reset接低电位,接通电源后,首先要将它接高电位,表示计时开始。
(2)当按一下(on_off)键,表示紧急情况发生,两个方向均为红灯亮,计时停止,当再次按下(on_off)键时,控制器恢复原来状态,正常工作。
输出电路:(1)由于东西和南北方向都要显示时间,因此需要4个数码管,这样在设计中就需要四条输出线choose4,用来选通指定一个LED七段显示数码管。
(2)显示器的每一位都采用LED七段显示数码管进行显示,每一个LED七段显示数码管都要有七条输出线控制,一共使用4个七段数码管,故输出电路使用四个七位输出信号:showtime1,showtime2,showtime3,showtime4。
(3)东西和南北方向都有交通灯亮的情况,故输出电路中要有两个状态控制信号state1,state2分别控制东西和南北的灯,每个方向上有4个灯(增加了左、右转弯显示控制功能),所以state1,state2的类型应该是4位数组型的。
reset7/2.软件:(1)在VHDL设计描述中,采用自顶向下的设计思路,该思路,首先要描述顶层的接口,上面的描述已经规定了交通灯控制的输入输出信号:输入信号:复位开关信号reset;紧急情况控制信号on_off;外部时钟信号clk。
输出信号:LED七段显示数码管的选通信号choose4(3 downto 0);LED 七段显示数码管的输出信号showtime1(6 downto 0),showntime2(6 downto 0),showtime3(6 downto 0),showtome4(6 downto 0);交通灯状态控制信号state1(3 downto 0),state2(3 downto 0)。
EDA实验课程大作业报告:设计制作一个用于十字路口的交通灯控制器

交通灯控制器设计一.系统功能设计要求设计制作一个用于十字路口的交通灯控制器,要求如下:(1)南北和东西方向各有一组红、绿、黄灯来指挥交通,持续时间分别为25S,20S,和5S。
(2)当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止。
(3)当特殊情况结束后,控制器恢复原来状态,继续正常运行。
(4)用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间。
二.设计原理1.交通灯控制器的状态转换根据题目要求将将红绿灯的状态转换列成如下表:2.设计方案1)由于交通灯需要使用2位7段LED数码管指示通行剩余时间,故采用LED动态扫描方式显示当前时间。
频率设定CLK1k对应的频率为50MHZ。
2)控制模块是交通灯的核心,主要控制交通灯按工作顺序自动变换,同时控制倒计时模块工作,每当倒计时回零时,控制模块接收到一个计时信号,从而控制交通灯进入下一个工作状态。
3)每个方向有一组2位倒计时器模块,用以显示该方向交通灯剩余的点亮时间。
4)显示模块由两部分组成,一是由七段数码管组成的倒计时显示器,每个方向两个七段数码管;二是由发光二极管代替的交通灯,每个方向3个发光二极管。
三.变量符号说明其中,CLK1K为系统时钟信号输入端,SN为禁止通行信号输入通行信号输入端,light0为东西红灯信号输出端,light1为东西黄灯信号输出端,light2为东西绿灯信号输出端,light3为南北红灯信号输出端,light4为南北黄灯信号输出端,light5为南北绿灯信号输出端,led1、led2、led3、led4为数码管地址选择信号输出端。
四.代码说明library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Hongld ISport (clk1k,SN:in std_logic; --SN紧急情况led1, led2, led3, led4 :out std_logic_vector (6 downto 0);--显示管显示时间用light:out std_logic_vector (5 downto 0)); --红绿黄灯end Hongld;architecture traffic1 of Hongld ISsignal S:std_logic_vector (1 downto 0); --状态signal DXT:std_logic_vector(7 downto 0):=X"01"; --东西方向时间signal NBX:std_logic_vector(7 downto 0):=X"01"; --南北方向时间signal ART,AGT,AYT,BRT,BGT,BYT: std_logic_vector(7 downto 0); --红绿黄灯信号signal temp: integer range 0 to 49999999; --产生1s计数器时计数signal clk: std_logic;beginART<="00100101";AGT<="00100000";AYT<="00000100";BRT<="00100101";BGT<="00100000";BYT<="00000100";process(clk1k) -- 选频率为50MHZ beginif (clk1k'event and clk1k='1') thenif temp=49999999 thentemp<=0;clk<='1';elsetemp<=temp+1;clk<='0';end if;end if;end process;process(clk,DXT,NBX) --状态转换进程beginif clk'event and clk ='1' thenif(DXT ="00000001")OR (NBX = "00000001") then S<=S+1;else S<=S;end if; --状态转换结束end if;end process;process (clk,SN,S) --倒计时模块beginif SN = '1' then DXT<=DXT; NBX<=NBX;elseif clk'event and clk='1' thenif (DXT="0000000") OR (NBX="00000000") thencase S ISwhen "00"=>DXT<=ART; NBX<=BGT; --南北红灯、东西绿灯when "01"=>NBX<=BYT; --南北红灯、东西黄灯when "10"=>DXT<=AGT; NBX<=BRT; --南北绿灯、东西红灯when "11"=>DXT<=AYT; --南北黄灯、东西红灯when others=>NULL;end case;end if;if DXT/="00000000" thenif DXT(3 downto 0)= "0000" thenDXT(3 downto 0)<="1001";DXT(7 downto 4)<=DXT(7 downto 4)-1;else DXT(3 downto 0)<=DXT(3 downto 0)-1;DXT(7 downto 4)<=DXT(7 downto 4);end if;end if;if NBX/="00000000" thenif NBX(3 downto 0)="0000" thenNBX(3 downto 0)<="1001";NBX(7 downto 4)<=NBX(7 downto 4)-1;else NBX(3 downto 0)<=NBX(3 downto 0)-1;NBX(7 downto 4)<=NBX(7 downto 4);end if;end if;end if;end if;end process; --倒计时模块结束process(DXT,NBX,S,SN) --显示模块begincase NBX(3 downto 0) iswhen "0000"=>led1<="1000000";when "0010"=>led1<="0100100"; when "0011"=>led1<="0110000"; when "0100"=>led1<="0011001"; when "0101"=>led1<="0010010"; when "0110"=>led1<="0000010"; when "0111"=>led1<="1111000"; when "1000"=>led1<="0000000"; when "1001"=>led1<="0010000"; when others=>led1<="1111111"; end case;case NBX(7 downto 4) iswhen "0000"=>led2<="1000000"; when "0001"=>led2<="1111001"; when "0010"=>led2<="0100100"; when "0011"=>led2<="0110000"; when "0100"=>led2<="0011001"; when "0101"=>led2<="0010010"; when "0110"=>led2<="0000010"; when "0111"=>led2<="1111000"; when "1000"=>led2<="0000000"; when "1001"=>led2<="0010000"; when others=>led2<="1111111"; end case;case DXT(3 downto 0) iswhen "0000"=>led3<="1000000"; when "0001"=>led3<="1111001"; when "0010"=>led3<="0100100"; when "0011"=>led3<="0110000"; when "0100"=>led3<="0011001"; when "0101"=>led3<="0010010"; when "0110"=>led3<="0000010"; when "0111"=>led3<="1111000"; when "1000"=>led3<="0000000"; when "1001"=>led3<="0010000"; when others=>led3<="1111111"; end case;case DXT(7 downto 4) iswhen "0000"=>led4<="1000000"; when "0001"=>led4<="1111001"; when "0010"=>led4<="0100100";when "0100"=>led4<="0011001";when "0101"=>led4<="0010010";when "0110"=>led4<="0000010";when "0111"=>led4<="1111000";when "1000"=>led4<="0000000";when "1001"=>led4<="0010000";when others=>led4<="1111111";end case;if SN ='1' then light<="001001";elsecase S ISwhen "00"=>light<="010001";when "01"=> light <="100001";when "10"=> light <="001010";when "11"=> light <="001100";when others=>NULL;end case;end if;end process;end traffic1;五.仿真波形图仿真时序波形图。
VHDL编程实现交通灯控制(数电实验)解析

•
emergencykey:in std_logic; --紧急开关
•
time_h,time_l:out std_logic_vector(3 downto 0); ; --定时
•
red,green,yellow:out std_logic_vector(3 downto 0) ; --红黄绿灯
•
);
描述状态机的进程
状态机的描述方式: 三进程、二进程、单进程(本实验采用)
一般采用三个进程来描述状态机 描述状态机寄存器的时序进程 描述次态产生逻辑的组合逻辑进程 描述输出组合逻辑进程
状态机寄存器的时序进程
process(reset,clk)
begin
if reset='1' then
current_state<=初始状态;
在进程中利用自定义数据类型定义交通灯的4个状态, 根据东西、南北方向的时间计数器的计数结果利用CASE 语句实现4个状态的转换,在每一个状态中利用内部信号 传递实现对红黄绿灯的显示控制。
FSM设计方法
• 分析控制器设计指标, 建立系统算法模型, 即状态转换图;
• 分析被控对象的时序, 确定控制器的有限 状态机的各个状态及输入、输出条件;
end if;
•
);
• end scandisplay;
• architecture behav of scandisplay is
• end if; •end process;
• signal num_in: std_logic_vector(3 downto 0); • signal counter:integer range 0 to 1; • signal led_chioce:std_logic; • Begin
数字电路 交通灯

摘要 ----------------------------------------------------------------------------------------------------------------------- 2 正文 ----------------------------------------------------------------------------------------------------------------------- 3 1.十字路口交通管理控制器的设计 ----------------------------------------------------------------------------- 31.2设计要求: ------------------------------------------------------------------------------------------------- 31.3应满足的工作时序---------------------------------------------------------------------------------------- 42. 设计方案 ------------------------------------------------------------------------------------------------------------ 42.1 设计思路---------------------------------------------------------------------------------------------------- 42.2信号灯变化情况: ----------------------------------------------------------------------------------------- 52.3 器件清单---------------------------------------------------------------------------------------------------- 63.脉冲信号的设计---------------------------------------------------------------------------------------------------- 63.1 555 VIRTUAL time--------------------------------------------------------------------------------------- 63.2 555定时器芯片工作原理,功能及应用 ------------------------------------------------------------ 73.3 555定时器 ------------------------------------------------------------------------------------------------- 73.4 555 芯片的充放电实现的秒信号脉冲 ------------------------------------------------------------- 84. 74LS00芯片的介绍和运用 ------------------------------------------------------------------------------------ 84.1 HD74LS00P的介绍: ------------------------------------------------------------------------------------ 84.2 HD74LS00P的运用: ------------------------------------------------------------------------------------ 95. HD74LS20P的介绍---------------------------------------------------------------------------------------------- 105.1 HD74LS20P的运用: ---------------------------------------------------------------------------------- 106. 74LS90芯片的介绍和运用 ---------------------------------------------------------------------------------- 116.1 HD74LS90P的介绍: ---------------------------------------------------------------------------------- 116.2 HD74LS90P的运用: ---------------------------------------------------------------------------------- 117. 74LS48芯片和数码管的使用 ------------------------------------------------------------------------------- 128. 发光二极管的介绍 --------------------------------------------------------------------------------------------- 128.1 基本介绍-------------------------------------------------------------------------------------------------- 128.2二极管作用简介 ----------------------------------------------------------------------------------------- 139. 交通信号灯使用说明------------------------------------------------------------------------------------------ 149.1 实物展示-------------------------------------------------------------------------------------------------- 149.2 注意事项-------------------------------------------------------------------------------------------------- 149.3 基本功能-------------------------------------------------------------------------------------------------- 159.4系统常见故障分析-------------------------------------------------------------------------------------- 1510. 心得体会 -------------------------------------------------------------------------------------------------------- 15 参考文献--------------------------------------------------------------------------------------------------------------- 16交通信号灯是交通信号中的重要组成部分,是道路交通的基本语言。
简易交通灯控制电路的设计

简易交通灯控制电路的设计交通灯控制电路是现代城市交通管理的重要组成部分,其设计方案的合理性和可靠性对保障人民出行的安全和畅通至关重要。
在本文中,我将介绍一个简单的交通灯控制电路的设计方案,涉及到所需材料、电路设计、电路连接和电路测试等方面,旨在提供一种可行的设计思路及实现方法。
一、所需材料1. PCB板2. AT89C2051单片机3. LCD12864液晶显示屏4. DS1302时钟模块5. 7段LED数码管6. 红绿黄LED发光二极管7. 继电器8. 12V电源适配器9. 74HC595芯片10. 电容、电阻、连接线等二、电路设计本次交通灯控制电路采用单片机AT89C2051作为控制核心,通过LCD12864液晶显示屏展示交通灯状态,并且控制红绿黄三色LED灯。
还采用DS1302时钟模块来实现交通灯的定时控制,以确保交通灯的安全和准确性。
具体的电路设计如下:1.电源模块本电路采用12V电源适配器作为供电来源,将电源接入100uf电解电容并接入AT89C2051芯片VCC引脚,以确保芯片工作电压稳定。
2.时钟模块DS1302时钟模块通过连接到P1.0、P1.1和P1.2引脚来实现对交通灯的定时控制。
还需将时钟模块的CLK、DIO和RST引脚分别连接到AT89C2051芯片的P1.4、P1.5和P1.6引脚来实现数据传输和控制信号输出。
3.LCD显示模块将LCD显示屏的RS、RW和E引脚连接到AT89C2051芯片的P3.0、P3.2和P3.1引脚,将LCD数据引脚DB0-DB7连接到AT89C2051芯片的P2.0-P2.7引脚,以在交通灯控制过程中显示交通灯状态。
4.7段LED数码管模块将74HC595芯片、CD4511译码器和7段LED数码管连接在一起,将74HC595芯片的SER、SRCLK和RCLK引脚连接到AT89C2051芯片的P1.7、P1.5和P1.6,将CD4511译码器的A、B、C、D和O引脚分别连接到74HC595芯片的Q0-Q3和74HC595芯片的Q4引脚,将7段LED数码管的公阴极连接到CD4511译码器的O引脚,在交通灯控制过程中实现倒计时显示。
《EDA技术及应用》交通灯控制电路的设计

《EDA技术及应用》交通灯控制电路的设计1 系统设计1.1 设计要求1.1.1 设计任务1、用4个八段数码管分别显示道路东西和南北通行和禁止的倒计时时间。
2、能设置道路东西和南北两侧通行和禁止的倒计时时间,最大设置时间为99秒,最小设置时间为1秒。
3、交通灯用红、绿、黄三种发光二极管(LED)显示控制的结果。
4、红、绿、黄灯显示的次序应符合实际交通道路控制的要求。
5、其它功能。
1.1.2性能指标要求设计一个交通控制器,用LED 显示灯表示交通状态,并以8 段数码显示器显示当前状态剩余秒数南北方向绿灯亮时,东西方向红灯亮;反之亦然,二者交替允许通行,南北方向每次放行99s,东西方向每次放行99s,南北红绿灯始终比东西红绿灯快3s。
每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为3s。
因为开发板没有绿黄灯,所以用两组三个led灯替代显示红黄绿灯。
南北方向与东西方向各用两个8位数码管显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。
1.2 设计思路及设计框图1.2.1设计思路本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。
设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下两个方向的都为红灯亮启,进入正常工作状态后,当南北方向红绿灯上绿灯亮时,东西方向红绿灯上红灯亮,各方向最后倒计时3s时,南北方向红绿灯和东西方向红绿灯上的代表黄灯的led灯亮启,持续3S后,南北方向红绿灯上红灯亮启,东西方向红绿灯上绿灯亮启持续99s,之后南北方向和东西方向上的黄灯都亮启3s,一个循环完成,循环往复的直行这个过程。
1.2.2总体设计框图根据任务需求,总体设计有:分频器模块、控制器模块、倒计时模块、红绿灯显示模块、码模块和译码显示模块如下图所示:2 各个模块程序的设计led红绿灯显示:module led(clk,led,N,D,cout,zt);input clk;input [6:0] N;input [6:0] D;output reg [5:0] led;output reg [1:0] zt;output reg [6:0] cout;always@(posedge clk)begincout=cout+1;if(cout<N-3)led=6'b100001;//南北绿灯,东西红灯else if(cout>N-3&&cout<N)led=6'b100010;//南北黄灯,东西红灯else if(cout>N&&cout<D+N-3)led=6'b001100;//南北红灯,东西绿灯else if(cout>N+D-3&&cout<N+D)led=6'b010100;//南北红灯,东西黄灯else if(cout==N+D)cout=0;if(cout<N-4)zt=0;else if(cout>N-4&&cout<N-1)zt=1;else if(cout>N-1&&cout<D+N-4)zt=2;else if(cout>D+N-4&&cout<N+D-1)zt=3;endEndmodule分频器:module div(clk,clkout);input clk;output reg clkout;Parameter CNT_MAX =50_000_000;//1s->1hz(50_000_000/1),0.5s->2hz(50_000_000/2=25_000_000) //parameter CNT_MAX = 1; //for simulationreg [25:0] cnt;always @ (posedge clk)if (cnt < CNT_MAX - 1'b1)cnt <= cnt + 1'b1;elsecnt <= 26'd0;always @(posedge clk)if(cnt == CNT_MAX - 1'b1)clkout=1'b1;elseclkout=1'b0; Endmodule调时控制:module ts(s,N,D,mode);input [1:0] s;input mode;output [6:0] N;output [6:0] D;j u1(.s(s[0]),.q(N),.mode(mode));j u2(.s(s[1]),.q(D),.mode(mode));Endmodule倒计时计数:module seg(clk,N,D,cout,zt,fs1,fs2); input clk;input [6:0] N;input [6:0] D;input [6:0] cout;input [1:0] zt;output reg [6:0] fs1;output reg [6:0] fs2;always@(posedge clk)case(zt)2'b00:begin fs1=N-cout-4; fs2=N-cout-1;end2'b01:begin fs1=N+D-cout-1; fs2=N-cout-1;end2'b10:begin fs1=N+D-cout-1; fs2=N+D-4-cout;end2'b11:begin fs1=N+D-cout-1; fs2=2*N+D-cout-1;endendcaseEndmodule计时输出:module j(s,q,mode);input s,mode;output reg [6:0] q;initialq=15;//初始从15开始启动always@(posedge s)if(mode)q=q+1;elseq=q-1;Endmodule数码管调用:// Module Function:数码管的译码模块初始化module segment7 (seg_datin,seg_led,en);input [3:0] seg_datin; //数码管需要显示0~f共16个数字,所以需要4位数据输入端 input en; //数码管使能端output [7:0] seg_led; //在DE10-Standard上控制一个数码管需要7个信号MSB~LSB=DP、G、F、E、D、C、B、Areg [7:0] seg [15:0]; //定义了一个reg型的数组变量,相当于一个16*8的存储器,存储器一共有16个数,每个数有8位宽initial //在过程块中只能给reg型变量赋值,Verilog中有两种过程块always和initial//initial和always不同,其中语句只执行一次beginseg[0] = ~(8'h3f) ; //对存储器中第一个数赋值8'b0011_1111,7段显示数字 0 seg[1] = ~(8'h06); //7段显示数字 1seg[2] = ~(8'h5b); //7段显示数字 2seg[3] = ~(8'h4f); //7段显示数字 3seg[4] = ~(8'h66); //7段显示数字 4seg[5] = ~(8'h6d); //7段显示数字 5seg[6] = ~(8'h7d); //7段显示数字 6seg[7] = ~(8'h07); //7段显示数字 7seg[8] = ~(8'h7f); //7段显示数字 8seg[9] = ~(8'h6f); //7段显示数字 9seg[10] = ~(8'h77); //7段显示数字 aseg[11] = ~(8'h7c); //7段显示数字 bseg[12] = ~(8'h39); //7段显示数字 cseg[13] = ~(8'h5e); //7段显示数字 dseg[14] = ~(8'h79); //7段显示数字 eseg[15] = ~(8'h71); //7段显示数字 fendassign seg_led = en?seg[seg_datin]:8'hff; //连续赋值,输入不同四位数,输出对于译码的8位输出,共阴数码管取反。
交通灯实验报告

微机原理课程设计报告新疆农业大学计算机与信息工程学院课程题目:微机原理与几口技术班级:电科112指导老师:张婧婧姓名:刘建国学号:114633222基于8086的交通信号控制器的设计报告摘要:这次课程设计,我们的任务是:基于8086的交通信号控制器的设计。
8086系统是我们这个学期学习的主线方向,我们将在8086系统的基础上完成交通信号控制器的设计,其具体功能是:1.显示十字路口东西、南北2个方向的红、黄、绿的指示状态。
2.实现正常的倒计时功能。
用2组数码管作为东西和南北方向的倒计时显示,显示时间为红灯30s,绿灯50s,黄灯5s。
3.按S1键能实现特殊的功能,显示倒计时的2组数码管闪烁,计数器停止计数并保持在原来的状态;东西、南北路口均显示红灯状态;特殊状态解除后能继续计数。
4.按S2键实现总体清零功能。
计数器由初始状态计数,对应的指示灯亮。
关键词:8086系统 74154 74HC373 8255A LED交通灯(一)1) 设计目的交通信号控制灯是日常交通不可缺少的工具,涉及到人们的人生和财产安全,在道路行驶上起了相当关键的作用,因而设计交通信号控制灯是非常有意义的。
同时我们这次设计的课题就是“基于8086交通信号控制器的设计”,基于以上目的,我利用一周时间精心设计出课题要求的交通灯。
2) 设计思想在此次设计过程中,我们选择了数码管、发光二极管、74LS138、74LS373、8255A和8086来控制实现交通灯按设计要求工作。
3)硬件部分1、LED设计说明:用LED作为倒计时时间的显示器,LED在亮度、功耗、可视角度和刷新速率等方面,都更具优势。
LED与LCD的功耗比大约为10:1,利用LED技术,可以制造出比LCD更薄、更亮、更清晰的显示器,LED是发光二极管属于二极管的一种,LCD是液晶显示器,两者相差太多.但是用LED的点阵也能组成显示器,适用于户外大屏幕显示,分辨率较低,LED与LCD具体比较如下图表1-1:LCD与LED的比较2、8255设计说明:用8255A可编程并行接口芯片的A、B、C三口作为红、绿、黄交通灯的控制输入口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
晶振:11.0592
******************************************************/
uchar flag;//定义0.5秒记一次数的标志位
uchar ds;//定义1秒记一次数的标志位
uchar shi1,ge1,shi2,ge2;//定义主通道、次通道的显示位
uchar num1,num2;
void delay_xms(uint);//申明延时函数
void display(uchar,uchar,uchar,uchar);//申明数码显示函数
for(j=110;j>0;j--);
}
{
P1通道黄灯亮三次,每次0.5秒。次通道亮红灯
Y1=0;
R2=0;
}
else if(flag==25||flag==27||flag==29)
{
P1=0XFF;//主通道黄灯灭三次,每次0.5秒。次通道亮红灯
Y1=1;
R2=0;
}
else if(flag>30&&flag<=40)
ge2=num2%10;
num1--;
num2--;
}
}
}
void display(uchar shi1,uchar ge1,uchar shi2,uchar ge2)
{
P0=duantable[shi1];
P2=0x01;
delay_xms(1);
P0=duantable[ge1];
P2=0x02;
delay_xms(1);
P0=duantable[shi2];
P2=0x10;
delay_xms(1);
P0=duantable[ge2];
P2=0x20;
delay_xms(1);
}
void delay_xms(uint xms)//延时xms毫秒
{
uint i,j;
for(i=xms;i>0;i--)
/*****************************************************
程序名称:交通灯(LED灯+数码管)
作者:陈善平
指导老师:王韧
时间:2014/7/17
功能:主通道首先放行,绿灯亮10秒后,黄灯开始亮2秒,接着黄灯闪烁3次,每次一秒,接着红灯亮,主通道停止放行;次通道开始放行,绿灯亮5秒后,黄灯开始亮2秒,接着黄灯闪烁3次,每次一秒,次通道停止放行;依次循环。
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
/*定义P1.0~P01.2为主通道,分别为红、黄、绿。定义P1.5~P1.7为次通道,分别为红、黄、绿。*/
sbit R1=P1^0;
sbit R2=P1^5;
else if(ds>10&&ds<=15)
{
if(num1==0)
num1=5;
shi1=num1/10;
ge1=num1%10 ;
shi2=num2/10;
ge2=num2%10;
num1--;
num2--;
}
else if(ds>15&&ds<=20)
{
if(num1==0)
num1=10;
if(num2==0)
num2=5;
shi1=num1/10;
ge1=num1%10 ;
shi2=num2/10;
ge2=num2%10;
num1--;
num2--;
}
else if(ds>20&&ds<=25)
{
if(num2==0)
num2=5;
shi1=num1/10;
ge1=num1%10 ;
shi2=num2/10;
main()
{
EA=1; //开总中断
ET0=1; //定时器T0中断允许
TMOD=0x01; //使用定时器T0的模式2
TH0=(65536-46083)/256; //定时器T0的高8位赋初值
TL0=(65536-46083)%256; //定时器T0的高8位赋初值
TR0=1; //启动定时器T0
函数功能:定时器T0的中断服务程序
“interrupt”声明函数为中断服务函数
其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器
**************************************************************/
void Time0(void) interrupt 1 using 0
sbit Y1=P1^1;
sbit Y2=P1^6;
sbit G1=P1^2;
sbit G2=P1^7;
uchar code duantable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极0~9编码所对应的段
uchar code weitable[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//共阳极1~8对应的位
while(1)//无限循环等待中断
{
display(shi1,ge1,shi2,ge2);
if(flag<=20)//主通道绿灯亮10s,次通道亮红灯
{
P1=0XFF;
G1=0;
R2=0;
}
else if((flag>20&&flag<=24)||flag==26||flag==28||flag==30)
{
uchar i,j;
i++;
j++;
TH0=(65536-46083)/256; //定时器T0的高8位重新赋初值
TL0=(65536-46083)%256; //定时器T0的高8位重新赋初值
if(i==10)
{
flag++;
i=0;
if(flag==50)//0.5秒记一次数,共25秒
flag=0;
}
if(j==20)
{
j=0;
ds++;
if(ds==25)
ds=0;
if(ds<=10)
{
if(num1==0)
num1=10;
if(num2==0)
num2=15;
shi1=num1/10;
ge1=num1%10 ;
shi2=num2/10;
ge2=num2%10;
num1--;
num2--;
}
Y2=0;
}
else if(flag==45||flag==47||flag==49)
{
P1=0XFF;//主通道亮红灯、次通道黄灯灭三次,每次0.5秒。
R1=0;
Y2=1;
}
}
}
/**************************************************************
{
P1=0XFF;//主通道红灯亮、次通道绿灯亮5S
R1=0;
G2=0;
}
else if((flag>40&&flag<=44)||flag==46||flag==48||flag==50)
{
P1=0XFF;//主通道红灯亮、次通道黄灯亮2s
R1=0;//主通道亮红灯、次通道黄灯亮三次,每次0.5秒。