北邮数电实验参考 #汽车尾灯自动控制系统

本文分享了一个汽车尾灯自动控制系统的Verilog代码,包括直行、转向灯闪烁、紧急停车和倒车灯控制。代码实现了一个时钟驱动的逻辑,可根据行驶状态控制不同颜色的LED灯,并讨论了扩展功能如彩虹效果和按键控制。
摘要由CSDN通过智能技术生成

各位好我是Toporanger  本人只会写代码 不会教人 毕竟自己的代码也是改来改去最终成功的 如果有不够精简的地方还请见谅 

我会先贴下代码 然后贴上管脚的绑定图  无论是拿来救急还是作为参考都希望帮助到你们

题目:

1. 设计一个汽车尾灯自动控制系统,要求能根据汽车行驶状态自动控制汽车尾灯。直行:尾灯不亮;右转:右侧尾灯亮而且按秒闪烁,左侧尾灯不亮;左转:左侧尾灯亮而且按秒闪烁,右侧尾灯不亮;临时停车或故障:两侧尾灯同时闪烁;倒车显示(可选)

注:用三色LED代表左右汽车尾灯,用拨码开关控制汽车行驶状态,还可以考虑用七段数码管和单色LED显示汽车状态。

2. 实现彩虹效果呼吸灯,拓展功能:用按键控制呼吸频率、单灯或双灯同步等功能。(选做)

比较简单一个模块就成功了

代码:

module hw_12(clk,rst,ledl,ledr,ledb,swl,swr,swb,sww);

input clk,rst;  
input swl,swr,swb,sww;//左舵,右舵,后舵,警报(别问为啥是舵,问就是舰r玩多了)而且用拨码代替方向盘会有奇怪的bug(谁家方向盘能同时左转加右转啊)
output reg ledl,ledr,ledb;//左转,右转,倒车灯

parameter N=26'd5000000;//设一个大常数用来做时钟计数器
reg [25:0]cnt;
reg select;//状态灯,用来控制灯的亮灭使得灯可以闪烁

initial
  begin
         ledl <= 1'b1;
         ledr <= 1'b1;
			ledb <= 1'b1;
			cnt<=26'd0;
			select<=1'b1;
  end

  always@(posedge clk)//时钟计数器,达到【按秒】闪烁的要求
	  begin
         if(cnt!=N)
			  begin
			  cnt<=cnt+1;
			  end
			else
			  begin
			  select<=~select;
			  cnt<=26'd0;
			  end
     end
		  
always@(posedge clk, negedge rst)
  begin
     if(!rst)
       begin
		   ledl <= 1'b1;//这一段好像有点意义不明,但是我都写rst了还是顺手加上吧
         ledr <= 1'b1;
			ledb <= 1'b1;
       end
     else
       begin
         if(sww==1'b1)
			   begin
				  ledl<=select;//在紧急停车时左右灯同时随select一同上下翻转实现闪烁
				  ledr<=select;
				  ledb<=1'b1;//关掉倒车灯防bug
				end
				
			else if(sww==1'b0&swb==1'b1)
			   begin
				  ledb<=1'b0;//倒车常亮倒车灯
				  ledl<=1'b1;
				  ledr<=1'b1;
				end
			
			else if(sww==1'b0&swb==1'b0&swl==1'b1)//同上,左转灯随select上下翻转实现闪烁
			 begin
				  ledb<=1'b1;
				  ledl<=select;
				  ledr<=1'b1;
				end
				
			else if(sww==1'b0&swb==1'b0&swr==1'b1)
			 begin
				  ledb<=1'b1;
				  ledl<=1'b1;
				  ledr<=select;
				end
				
			else
			  begin//防止有搞事的人同时把左右转拨码拨上去
			     ledb<=1'b1;
				  ledl<=1'b1;
				  ledr<=1'b1;
			  end
       end
  end
  
endmodule

                                                                      管脚图 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值