这个其实可以用一个时钟来做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
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
// 设置初始值 else led_set <= {1'b0,led_set[7:1]}; // led 依次移位 endend 下面给一个 led 流水灯的实例:8个LED 从左到右依次点亮 module led ( input wire Clock, input wire RESE
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个流水灯
【程序】 #includereg51.h #define uchar unsigned char #define uint unsigned int uchar code Pattern_P0[]= { 0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x
程序如下:include
可以用for循环试试unsingned char i;for(i=0;i<5;i++)//流水灯闪烁程序。若干个灯泡依次点亮就叫流水灯,它用在夜间建筑物装饰方面。例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。单片机(Single-
51单片机八个灯的流水灯代码:1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。2、#include "reg51.h"首先写出单片机的头函数。3、#include "intrins.h"输入位移函数。4、unsigned int count=0,led;
delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay();P3=0xbf;//第七个灯亮 delay();P3=0x7f;//第八个灯亮 delay();} }
#include,sbitLED1=P1^0;//定义0/1变量,是因为在电路中一般为高电压以及低电压两种,也就是代表者0或1。sbitLED2=P1^1;sbitLED3=P1^2;sbitLED4=P1^3;sbitLED5=P1^4;sbitLED6=P1^5;sbitLED7=P1^6。单片
单片机流水灯程序代码(汇编语言):ORG0000HAJMPMAINORG0030HMAIN:MOVP1,#11111110BACALLDELAY;跳转到子程序MOVP1,#11111101BACALLDELAYMOVP1,#11111011BACALLDELAYMOVP1,#11110111BACALLDELAYMOVP1,#11101111BACALLDELAYMOVP1,
流水灯单片机程序代码
这个其实可以用一个时钟来做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
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
// 设置初始值 else led_set <= {1'b0,led_set[7:1]}; // led 依次移位 endend 下面给一个 led 流水灯的实例:8个LED 从左到右依次点亮 module led ( input wire Clock, input wire RESE
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个流水灯
程序如下:include
1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。2、#include "reg51.h"首先写出单片机的头函数。3、#include "intrins.h"输入位移函数。4、unsigned int count=0,led;定义函数。5、输入主函数,
P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay
void main(void){ uint i;uchar temp;while(1){ temp=0x01;for(i=0;i<8;i++) //8个流水灯逐个闪动 { P1=~temp;delay(100); //调用延时函数 temp<<=1;} temp=0x80;for(i=0;i<8;i++) //8个流水
单片机流水灯程序代码(汇编语言):ORG0000HAJMPMAINORG0030HMAIN:MOVP1,#11111110BACALLDELAY;跳转到子程序MOVP1,#11111101BACALLDELAYMOVP1,#11111011BACALLDELAYMOVP1,#11110111BACALLDELAYMOVP1,#11101111BACALLDELAYMOVP1,
单片机流水灯代码:#include
#include,sbitLED1=P1^0;//定义0/1变量,是因为在电路中一般为高电压以及低电压两种,也就是代表者0或1。sbitLED2=P1^1;sbitLED3=P1^2;sbitLED4=P1^3;sbitLED5=P1^4;sbitLED6=P1^5;sbitLED7=P1^6。单片
单片机流水灯代码怎么写?
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
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
// 设置初始值 else led_set <= {1'b0,led_set[7:1]}; // led 依次移位 endend 下面给一个 led 流水灯的实例:8个LED 从左到右依次点亮 module led ( input wire Clock, input wire RESE
你好,下面是对应的代码,另外时钟的频率不要太高否者实际的那个灯可能会看不来。module show(clk, reset, ledLight)input clk,reset;output [9:0] ledLight;reg [10:0] count ;always @(posdge clk or negedge res
如何用verilog写10个流水灯
先把问题具体化: 假如 LED “1” 为 亮,“0”为灭,需要 LED 每一秒,从左到右点亮,该如何做? 那么这就有二个具体的问题: A、一秒如何产生? 如果你的平台时钟是 50Mhz ,也就 clk = 50Mhz,那么利用分频计数来产生1hz的时钟,也就是 时钟周期为 1秒。实例如下: reg [31:0] cnt;reg clk_1;always@(posedge clk_50M or negedge rst_n) begin if(!rst_n) begin cnt <= 32'd0; clk_1 <= 1'b0; end else begin if(cnt == 32'd50_000_000-1) clk_1 <= ~clk_1; else cnt <= cnt + 1; endend B、如何从左向右点亮? 点亮只需要LED设置为是“1”,从左往右,也就是高位到低位依次为“1”,根据clk_1s 的时钟,对LED进行移位就好了。这里有个问题,当LED移位到为全“0”的时候,则需要将 LED 写成初始值,这样就可以一直 循环点亮 下去。实例如下: always @(posedge Clk_1s or negedge RESET_N) begin if(!RESET_N) begin led_set <= 8'b0000_0000; end else begin if(led_set == 8'b0000_0000) led_set <= 8'b1000_0000; // 设置初始值 else led_set <= {1'b0,led_set[7:1]}; // led 依次移位 endend 下面给一个 led 流水灯的实例: 8个LED 从左到右依次点亮 module led ( input wire Clock, input wire RESET_N, output wire [7:0] LED ); // ---- count 1s ---------reg [27:0] cnt_1s;reg clk_1s_en; always @(posedge Clock or negedge RESET_N)begin if(!RESET_N) begin cnt_1s <= 0; clk_1s_en <= 0; end else begin if(cnt_1s == 'd50_000_000-1) begin cnt_1s <= 0; clk_1s_en <= ~clk_1s_en; end else cnt_1s <= cnt_1s + 1; endend // ----------- led set --------------reg [7:0] led_set; always @(posedge clk_1s_en or negedge RESET_N) begin if(!RESET_N) begin led_set <= 8'b0000_0000; end else begin if(led_set == 8'b0000_0000) led_set <= 8'b1000_0000; else led_set <= {1'b0,led_set[7:1]}; endend assign LED = led_set;endmodulemodule 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 Clock) begin cnt_led <=cnt_led + 1; if(cnt_led == 20000000) begin cnt_led <= 0; led_d <= led_d + 1; 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'b1100_0011; 4'd3: LED_Data_Port[7:0] <= 8'b0000_0010;//8'b1110_0111; 4'd4: LED_Data_Port[7:0] <= 8'b0000_0100;//8'b1111_1111; 4'd5: LED_Data_Port[7:0] <= 8'b0000_1000;//8'b0001_1000; 4'd6: LED_Data_Port[7:0] <= 8'b0001_0000;//8'b0011_1100; 4'd7: LED_Data_Port[7:0] <= 8'b0010_0000;//8'b0111_1110; 4'd8: LED_Data_Port[7:0] <= 8'b0100_0000;//8'b1111_1111; default: LED_Data_Port[7:0] <= 8'b0000_0000;//8'b1111_1111; endcase end endmodule
你好,下面是对应的代码,另外时钟的频率不要太高否者实际的那个灯可能会看不来。 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};
先把问题具体化: 假如 LED “1” 为 亮,“0”为灭,需要 LED 每一秒,从左到右点亮,该如何做? 那么这就有二个具体的问题: A、一秒如何产生? 如果你的平台时钟是 50Mhz ,也就 clk = 50Mhz,那么利用分频计数来产生1hz的时钟,也就是 时钟周期为 1秒。实例如下: reg [31:0] cnt;reg clk_1;always@(posedge clk_50M or negedge rst_n) begin if(!rst_n) begin cnt <= 32'd0; clk_1 <= 1'b0; end else begin if(cnt == 32'd50_000_000-1) clk_1 <= ~clk_1; else cnt <= cnt + 1; endend B、如何从左向右点亮? 点亮只需要LED设置为是“1”,从左往右,也就是高位到低位依次为“1”,根据clk_1s 的时钟,对LED进行移位就好了。这里有个问题,当LED移位到为全“0”的时候,则需要将 LED 写成初始值,这样就可以一直 循环点亮 下去。实例如下: always @(posedge Clk_1s or negedge RESET_N) begin if(!RESET_N) begin led_set <= 8'b0000_0000; end else begin if(led_set == 8'b0000_0000) led_set <= 8'b1000_0000; // 设置初始值 else led_set <= {1'b0,led_set[7:1]}; // led 依次移位 endend 下面给一个 led 流水灯的实例: 8个LED 从左到右依次点亮 module led ( input wire Clock, input wire RESET_N, output wire [7:0] LED ); // ---- count 1s ---------reg [27:0] cnt_1s;reg clk_1s_en; always @(posedge Clock or negedge RESET_N)begin if(!RESET_N) begin cnt_1s <= 0; clk_1s_en <= 0; end else begin if(cnt_1s == 'd50_000_000-1) begin cnt_1s <= 0; clk_1s_en <= ~clk_1s_en; end else cnt_1s <= cnt_1s + 1; endend // ----------- led set --------------reg [7:0] led_set; always @(posedge clk_1s_en or negedge RESET_N) begin if(!RESET_N) begin led_set <= 8'b0000_0000; end else begin if(led_set == 8'b0000_0000) led_set <= 8'b1000_0000; else led_set <= {1'b0,led_set[7:1]}; endend assign LED = led_set;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};