main(){ unsigned char i;LED = 0xfe;while (1){ for (i = 0; i < 7; i++){ delay(100);LED = (LED << 1) | 0X01;} for (i = 0; i < 7; i++){ delay(100);LED = (LED >> 1) |
仅供参考
写个控制程序进去,由集成IC控制
如图所示,望采纳。。。
令clk为led流水灯(共计12个LED灯)的驱动时钟【要求低频,如1Hz】,rst为上升沿复位信号(异步)。则所实现的Verilog HDL代码部分如下:module led_run(clk,led,rst);input clk;//clk with low frequency like 1Hz input
include
你应该把led[7:0] = {led[6:0],led[7]};//left shift 这个语句换成非阻塞赋值试试,我感觉你的应该是这里出了问题,在一个always中即用阻塞赋值又用非阻塞赋值是不好的,最好是赋值方式相同,若有问题再追问。
verilog跑马灯修改实现奇数灯循环亮 偶数灯一直灭
这个d是你用parameter定义的一个常数。假设parameter d=2 。那你的程序就是延时2ns。wave=0 。再延时4ns。wave =1。相关定义 Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以
电子线路设计与测试实验报告一、实验名称多功能数字钟设计二、实验目的1.掌握可编程逻辑器件的应用开发技术——设计输入、编译、仿真和器件编程;2.熟悉一种EDA软件使用;3.掌握Verilog设计方法;4.掌握分模块分层次的设计方法
进行了等效分频计数,其一个完整的计数周期即为1s,对应产生的使能信号en 频率即为1Hz,但我们在此不能直接使用en 的信号,因为其占空比只有 1/20000000,肉眼无法看到其闪烁的效果。为得到占空比为50%的1Hz信号,我 们可以
led <= 1'b1;else led <= 1'b0;end assign CLK_1M_W = CLK_1M;assign led_w = led;endmodule //rst复位信号一般是需要的,从外部来,你仿真的时候也需要在inital里写一个,1M的低频时钟和 //LED的状态输出我
verilog语言写模块的LED秒闪烁占空比为3/2:3/1
程序如下:ORG 0000H;程序开始 AJMP MAIN;跳转到主程序MAIN ORG 0030H;主程序从030H开始 ;以下是主程序 MAIN: MOV P0,#0FEH;P0.0灯亮 ACALL DELAY_05s;延时0.5s MOV P0,#0FDH;P0.1灯亮 A
这个其实可以用一个时钟来做8bit的计数器,8个bit的输出结果就是的8路流水灯。module ex(input clk , output reg [7:0]cnt ,input rst );always (posedge clk or neg edge rst )if (!rst )cnt <=0;else c
// 设置初始值 else led_set <= {1'b0,led_set[7:1]}; // led 依次移位 endend 下面给一个 led 流水灯的实例:8个LED 从左到右依次点亮 module led ( input wire Clock, input wire RESE
module LED_Module(Clock,LED_Data_Port);input Clock;output LED_Data_Port;reg [7:0] LED_Data_Port; //LED数据口 reg [3:0] led_d; //LED显示数据 //=== integer cnt_led;//=== always @(posedge
reg [24:0] count;//计数器 reg [24:0] speed;//速度 reg [3:0] state;//状态,[3]=1:正转;[3]=0:翻转;{2,0}速度 always @(posedge clk or negedge rst)//自动变频流水灯 if (!rst)begin statelt;
如何用verilog写8个流水灯
module ledwater(clk,led,s) input clk; input[1:0]s; output[7:0]led; reg [7:0] led=0; reg [1:0] olds=0; always@(posedge clk) olds<=s; always@(posedge clk) if (olds
input clk,rst,en;output wei;output[7:0] shu,led;reg[7:0] shu_out,led_Out;reg[25:0] led_out;reg[3:0] display0;reg wei_out;initial led_out=0;always @(posedge clk)begin led_out=led_out+1;if
if(led_d == 8)led_d <= 0;end end always @( led_d ) begin case (led_d)4'd1:LED_Data_Port[7:0] <= 8'b1000_0000;//8'b1000_0001;4'd2:LED_Data_Port[7:0] <= 8'b0000_0001;//8'b1
reg [7:0] led;reg [24:0] count;//计数器 reg [24:0] speed;//速度 reg [3:0] state;//状态,[3]=1:正转;[3]=0:翻转;{2,0}速度 always @(posedge clk or negedge rst)//自动变频流水灯 if (!r
led默认状态是 全亮 5'b10000:从左到右每两个LED逐渐点亮 5'b01000:从右到左每两个LED逐渐点亮5'b00100:从左到右一个LED跳跃式点 5'b00010:从右到左一个LED跳跃式点亮 module led (input wireClock,input wi
控制8个LED进行显示,每种显示模式中包含四种变化方式。用verilog语言写。
我觉得你在开发包里仔细地看一下,一搬二次开发包都会提供各种语言的实例程序还有每个语言所支持的类库文件以及库里的各属性和方法的说明文档。今天做回好人,闲着给你写一个做参考。 按键按一次LED灯灭,在按一次按键LED灯亮。 程序如下: /************************************************************************************************************* #include "REG52.H" sbit LED1_01 = P1^1; //LED灯 sbit KEY0_01 = P1^2; //按键 void Delay_1ms(unsigned int Time) { unsigned int x, y; for(x = Time; x > 0; x--) for(y = 120; y > 0; y--); } int main(void) { LED1_01 = 1; //打开LED灯点亮 while(1) { if(KEY0_01 == 0) //检测按键是否按下 { Delay_1ms(10); //延时去抖动 if(KEY0_01 == 0) //确定按键按下 { LED1_01 = ~ LED1_01; //取反LED灯 [ 亮 . 灭 ] } while(KEY0_01 == 0); //检测松手 } } } *****************************************************************************************************************/
你好,下面是对应的代码,另外时钟的频率不要太高否者实际的那个灯可能会看不来。 module show(clk, reset, ledLight) input clk,reset; output [9:0] ledLight; reg [10:0] count ; always @(posdge clk or negedge reset) if (!reset) count =0; else if (count ==10) count =1; else count = count +1 assign ledLight[0] = (count ==1)? 1 :0; assign ledLight[1] = (count ==2)? 1 :0; assign ledLight[2] = (count ==3)? 1 :0; assign ledLight[3] = (count ==4)? 1 :0; assign ledLight[4] = (count ==5)? 1 :0; assign ledLight[5] = (count ==6)? 1 :0; assign ledLight[6] = (count ==7)? 1 :0; assign ledLight[7] = (count ==8)? 1 :0; assign ledLight[8] = (count ==9)? 1 :0; assign ledLight[9] = (count ==10)? 1 :0; endmodule
module ledwater(clk,led,s) input clk; input[1:0]s; output[7:0]led; reg [7:0] led=0; reg [1:0] olds=0; always@(posedge clk) olds<=s; always@(posedge clk) if (olds^s) case (s) 2'b00: led<=1; //*a 2'b01: led<=1; 2'b10: led<=8'b1010_1010; 2'b11: led<=8'b0000_0111; endcase else case (s) 2'b00: led<={led[6:0],led[7]};//*b 2'b01: led<={led[0], led[7:1]}; 2'b10: led<=~led; 2'b11: led<={led[6:0],led[7]}; endcaseendmodule//第一种:一个灯亮,从右往左逐个移动,并循环//第二种:一个灯亮,从左往右逐个移动,并循环//第三种:一个间一个灯亮,并交替循环//第四种:三个灯亮,从右往左逐个移动,并循环//当然可以再多一些花样://如:灯从右往左逐步点亮// *a改为: led<=1;// *b改为: led<= (&led)? 1: {led[6:0],1'b1};
buffer<=buffer+1'b1;这是一个阻塞式语句 一般用于时序逻辑中 有一个时钟的延时 该句等效于C语言的 buffer++;
我想一下 ======================================================================= module div3(clk,clk_3); input clk; output clk_3; reg [1:0] countp; reg [1:0] countn; reg clk_3p; reg clk_3n; always@(posedge clk) begin if(countp<=2'd1) begin clk_3p<=1'b1; countp<=countp+2'd1; end else if(countp==2'd2) begin clk_3p<=1'b0; countp<=2'd0; end end always@(negedge clk) begin if(countn<=2'd1) begin clk_3n<=1'b1; countn<=countn+2'd1; end else if(countn==2'd2) begin clk_3n<=1'b0; countn<=2'd0; end end assign clk_3=(clk_3p&&clk_3n)?1'b1:1'b0; endmodule ====================================================================== 我已经测试了 如果还有问题 可以qq 692894423
看来你在这块是搞研发的,我们有这块的资深研发,作品灯丝灯方案做成的流水灯就可以达到这样的控制,奇数偶数分类、更有精确控制到具体的灯丝灯上面,给与非常不一样的体验!
程序就是