这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » anmko的进程贴:综合实验-基于DS1302的万年历LCD1602显示(最终版

共223条 4/23 |‹ 2 3 4 5 6 7 ›| 跳转至
工程师
2012-09-26 16:01:52     打赏
31楼
  一定努力,

高工
2012-09-26 16:29:05     打赏
32楼

5、按键防抖控制LED
(这个只是个实例,效果不是很好,改进的请进http://forum.eepw.com.cn/thread/221172/15#147

按键S1、S2、S3、S4,控制电平翻转进而控制LED1、LED2、LED3、LED4的亮灭,按键S8为复位键。


module key_debounce(rst_n,clk,keyin,ledout);

 input rst_n;
 input clk;
 input[3:0] keyin;

 output[3:0] ledout;
 
 reg[19:0] cnt;
 
 always @(posedge clk or negedge rst_n)
 begin
  if (!rst_n)
   cnt <= 20'd0;
  else
   cnt <= cnt + 1'b1;
 end
 
 wire sample_pulse = cnt == 20'hF4240;

 
 wire led0_out;
 key0 U1
 (
  .en(sample_pulse),
  .rst_n(rst_n),
  .clk(clk),
  .key(keyin[0]),
  .ledout(led0_out)
 );
 
 wire led1_out;
 key1 U2
 (
  .en(sample_pulse),
  .rst_n(rst_n),
  .clk(clk),
  .key(keyin[1]),
  .ledout(led1_out)
 );
 
 wire led2_out;

 key2 U3
 (
  .en(sample_pulse),
  .rst_n(rst_n),
  .clk(clk),
  .key(keyin[2]),
  .ledout(led2_out)
 );
 
 wire led3_out;
 key3 U4
 (
  .en(sample_pulse),
  .rst_n(rst_n),
  .clk(clk),
  .key(keyin[3]),
  .ledout(led3_out)
 );
 
 assign ledout = {led3_out,led2_out,led1_out,led0_out};

endmodule

//-----------------------key0----------------------- 
module key0(en,rst_n,clk,key,ledout);

 input clk;
 input rst_n;
 input en;
 input key;
 output ledout;

 reg low_sw;
 always @(posedge clk or negedge rst_n)
 begin
  if (!rst_n)
   low_sw <= 1'b1;
  else if(en)
   low_sw <= key;
 end
 
 reg low_sw_r;
 
 always @(posedge clk )
  low_sw_r <= low_sw;
  
 wire led_ctrl = low_sw_r & (!low_sw);
 
 reg ledout_r;
 always @(posedge clk or negedge rst_n)
 begin
  if (!rst_n)
   ledout_r <= 1'b0;
  else if(led_ctrl)
   ledout_r <= ~ledout_r;
 end 

 assign ledout = ledout_r;
 
endmodule

//-----------------------key1----------------------- 
module key1(en,rst_n,clk,key,ledout);

 input clk;
 input rst_n;
 input en;
 input key;
 output ledout;

 reg low_sw;
 always @(posedge clk )
 begin
  if (!rst_n)
   low_sw <= 1'b1;
  else if(en)
   low_sw <= key;
 end
 reg low_sw_r;
 always @(posedge clk )
  low_sw_r <= low_sw;
  
 wire led_ctrl = low_sw_r & (!low_sw);
 
 reg ledout_r;
 
 always @(posedge clk or negedge rst_n)
 begin
  if (!rst_n)
   ledout_r <= 1'b0;
  else if(led_ctrl)
   ledout_r <= ~ledout_r;

 end 

 assign ledout = ledout_r;
 
endmodule

//-----------------------key2----------------------- 
module key2(en,rst_n,clk,key,ledout);

 input clk;
 input rst_n;
 input en;
 input key;
 output ledout;

 reg low_sw;
 always @(posedge clk or negedge rst_n)
 begin
  if (!rst_n)
   low_sw <= 1'b1;
  else if(en)
   low_sw <= key;
 end
 reg low_sw_r;
 always @(posedge clk )
  low_sw_r <= low_sw;
  
 wire led_ctrl = low_sw_r & (!low_sw);
 
 reg ledout_r;
 
 always @(posedge clk or negedge rst_n)
 begin
  if (!rst_n)
   ledout_r <= 1'b0;
  else if(led_ctrl)
   ledout_r <= ~ledout_r;
 end 

 assign ledout = ledout_r;
 
endmodule

//-----------------------key3----------------------- 
module key3(en,rst_n,clk,key,ledout);

 input clk;
 input rst_n;
 input en;
 input key;
 output ledout;

 reg low_sw;
 always @(posedge clk or negedge rst_n)
 begin
  if (!rst_n)
   low_sw <= 1'b1;
  else if(en)
   low_sw <= key;
 end
 reg low_sw_r;
 always @(posedge clk )
  low_sw_r <= low_sw;
  
 wire led_ctrl = low_sw_r & (!low_sw);
 
 reg ledout_r;
 
 always @(posedge clk or negedge rst_n)
 begin
  if (!rst_n)
   ledout_r <= 1'b0;
  else if(led_ctrl)
   ledout_r <= ~ledout_r;
 end 

 assign ledout = ledout_r;
 
endmodule


高工
2012-09-26 16:33:25     打赏
33楼

我也是新手,以后大家多讨论讨论


高工
2012-09-26 19:03:19     打赏
34楼
楼主下手够快的

高工
2012-09-26 20:28:58     打赏
35楼
,下回泡妞的时候下手也得快啦

高工
2012-09-26 20:30:39     打赏
36楼
这速度。。。。。。。。。

工程师
2012-09-26 21:49:55     打赏
37楼
看了一下 有个问题MAX232的供电多少vote的?会不会有问题啊?为什么不用3232呢?

院士
2012-09-26 22:15:17     打赏
38楼
LZ,看到我给你的站短了吗?

助工
2012-09-26 22:21:11     打赏
39楼
楼主速度威猛啊···

高工
2012-09-26 22:21:43     打赏
40楼

刚刚看见了,我就给你传


共223条 4/23 |‹ 2 3 4 5 6 7 ›| 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]