试验四 数码管控制实验

1,循环显示1-F。

module Seven_LED( 
              clk,
              rst,
              led_out
                );
           
input  clk,rst;
output [11:0] led_out;
reg    [11:0] led_out;
   
reg  [3:0] data;
reg [24:0] Mega_cnt;
wire       slow_clk;

/***********************************/
always @(posedge clk or negedge rst)
begin
if(!rst)
  begin
  Mega_cnt<=0;
  end
else
  begin
  Mega_cnt<=Mega_cnt+1;
  end
end

assign slow_clk = Mega_cnt[24];
/***********************************/

always @ (posedge slow_clk or negedge rst)
   begin
     if(!rst)
        data <= 0;
     else 
        data <= data + 1;
   end


always @ (data)
   case(data)
   4'd0 : led_out = 12'b1111_1100_1111;
   4'd1 : led_out = 12'b0110_0000_1111;
   4'd2 : led_out = 12'b1101_1010_1111;
   4'd3 : led_out = 12'b1111_0010_1111;
   4'd4 : led_out = 12'b0110_0110_1111;
   4'd5 : led_out = 12'b1011_0110_1111;
   4'd6 : led_out = 12'b1011_1110_1111;
   4'd7 : led_out = 12'b1110_0000_1111;
   4'd8 : led_out = 12'b1111_1110_1111;
   4'd9 : led_out = 12'b1111_0110_1111;
   4'd10: led_out = 12'b1110_1110_1111;
   4'd11: led_out = 12'b0011_1110_1111;
   4'd12: led_out = 12'b1001_1100_1111;
   4'd13: led_out = 12'b0111_1010_1111;
   4'd14: led_out = 12'b1001_1110_1111;
   4'd15: led_out = 12'b1000_1110_1111;
endcase

endmodule

 

2,显示1234

module seg_led(clk,rst,
			s0,s1,s2,s3,
			d0,d1,d2,d3,d4,d5,d6,d7
			);

	input      clk,rst       ;
	output     s0,s1,s2,s3   ;
	output     d0,d1,d2,d3,d4,d5,d6,d7 ;

	reg [1 :0 ] state ;
	reg [3 :0 ] sn ;
	reg [7 :0 ] data ;
	reg [15:0 ] cnt ;
	
	wire       s0,s1,s2,s3   ;
	wire       d0,d1,d2,d3,d4,d5,d6,d7 ; 

	assign     {s3,s2,s1,s0} = sn ;
	assign     {d7,d6,d5,d4,d3,d2,d1,d0} = data ;

	always @ ( posedge clk )
		if( !rst )
			cnt<=16'b0;
		else
			cnt<=cnt+16'b1;

	wire clk_slow = cnt[15] ;

	always @ ( posedge clk_slow or negedge rst )
		if( !rst )
			state<=2'b00;
		else
			state<=state+2'b01;

	always @ ( posedge clk_slow or negedge rst )
		if( !rst )
			begin
				sn<=4'b0;
				data<=8'b0;
			end
		else
			case(state)
				2'b00:
					begin
						sn<=4'b0001;
						data<=8'b0110_0000;
					end
				2'b01:
					begin
						sn<=4'b0010;
						data<=8'b1101_1010;
					end
				2'b10:
					begin
						sn<=4'b0100;
						data<=8'b1111_0010;
					end
				2'b11:
					begin
						sn<=4'b1000;
						data<=8'b0110_0110;
					end
			endcase


endmodule

 动态扫描的方法显示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、实验目的   (1)通过实验掌握 LED 的显示控制方法;   (2)巩固实验 4.1 中所掌握的对存储区进行访问的方法;   二、实验设备   硬件: Embest EduKit-III 实验平台, Embest ARM 标准/ 增强型仿真器套件,PC 机   软件:Embest IDE Pro ARM集 成开发环境, Windows 98/2000/NT/XP     三、实验内容   编写程序使实验板上八段数码管循环显示 0 到 9 字符   实验原理   嵌入式系统中,经常使用八段数码管来显示数字或符号,由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。   (1)结构   八段数码管由八个发光二极管组成,其中七个长条形的发光管排列成“日”字形,右下角一个点形的发光管作为显示小数点用,八段数码管能显示所有数字及部份英文字母   (2)工作原理   以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。电平信号按照dp,g,e, a 的顺序组合形成的数据字称为该字符对应的段码,常用字符的段码表   (3)显示方式   八段数码管的显示方式有两种,分别是静态显示和动态显示。静态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管控制信号一直保持有效。动态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管是轮流点亮的,即控制信号按一定周期有效,在轮流点亮的过程中,点亮时间是极为短暂的(约 1ms),由于人的视觉暂留现象及发光二极管的余辉效应,数码管的显示依然是非常稳定的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值