久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5854|回復: 0
打印 上一主題 下一主題
收起左側

vhdl實現按鍵掃描+消抖+led指示

[復制鏈接]
跳轉到指定樓層
樓主
ID:57234 發表于 2013-12-7 03:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
*********************************************
功能:按鍵掃描+led顯
by:lsy512
當有按鍵按下時,由于按鍵的物理性質會造成
按鍵輸出電平抖動,因此需要延時20ms,檢測按
鍵思路是:當有按鍵按下時,延時20ms,然后再
檢測是否有鍵按下,若是,則有按鍵按下,若無
則可能是不確定因素造成按鍵端有信號輸入,
在這里用了key_rst;key_rst_r;low_sw;
low_sw_r;幾個寄存器來輔助檢測是否有鍵按下,
**********************************************
module key_check(key_one,clk,rst,led_l);
input   wire [7:0] key_one;
input   wire       clk;
input   wire       rst;
output  wire  [7:0] led_l;
reg [7:0] key_rst;
always@(posedge clk or negedge rst)
begin
if(!rst) key_rst <= 8'b11111111;
else key_rst <= key_one;
end
reg [7:0] key_rst_r;
always@(posedge clk or negedge rst)
begin
if(!rst) key_rst_r <= 8'd11111111;
else key_rst_r <= key_rst;
end
wire [7:0] key_an = key_rst & (~key_rst_r);
**************************************************
實現本次檢測到的按鍵信息與上一次的按鍵信息進行與運算
如果按鍵電平有變化,也就是說有抖動,key_an變不會為0,
會一直在下面這個ALWAYS中一直清0,從而達到抖動延時的
作用
**************************************************
reg [19:0] cnt;
always@(posedge clk or negedge rst)
begin
if(!rst) cnt <= 20'd0;
else if(key_an) cnt <= 20'd0;
else cnt <= cnt + 1'b1;
end

reg [7:0] low_sw;
always@(posedge clk or negedge rst)
begin
if(!rst) low_sw <= 8'b11_11_11_11;
else if(cnt == 20'hfffff)
  low_sw <= key_one;
end

reg [7:0] low_sw_r;
always@(posedge clk or negedge rst)
begin
if(!rst) low_sw_r <= 8'b11_11_11_11;
else low_sw_r <= low_sw;
end
wire [7:0] led  = low_sw_r[7:0] & (~low_sw[7:0]);
*************************************************
以上原理與按鍵延時相同,
*************************************************
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
        下為LED顯示代碼作為按鍵驗證
reg [7:0] d;

always@(posedge clk or negedge rst)
begin
if(!rst)
  d<=8'b11_11_11_11;
else
begin
  if( led[0] ) d[0] <= ~d[0];
  if( led[1] ) d[1] <= ~d[1];
  if( led[2] ) d[2] <= ~d[2];
  if( led[3] ) d[3] <= ~d[3];
  if( led[4] ) d[4] <= ~d[4];
  if( led[5] ) d[5] <= ~d[5];
  if( led[6] ) d[6] <= ~d[6];
  if( led[7] ) d[7] <= ~d[7];
end

end
assign led_l[0] = d[0] ? 1'b1 : 1'b0;
assign led_l[1] = d[1] ? 1'b1 : 1'b0;
assign led_l[2] = d[2] ? 1'b1 : 1'b0;
assign led_l[3] = d[3] ? 1'b1 : 1'b0;
assign led_l[4] = d[4] ? 1'b1 : 1'b0;
assign led_l[5] = d[5] ? 1'b1 : 1'b0;
assign led_l[6] = d[6] ? 1'b1 : 1'b0;
assign led_l[7] = d[7] ? 1'b1 : 1'b0;

endmodule


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人精品一区二区男人看 | 伊人99 | 日日夜夜av| h视频在线播放 | 秋霞在线一区二区 | 午夜视频免费在线观看 | 久久久久中文字幕 | 国产精品久久久久久久久 | 99久久久久久99国产精品免 | 欧美影院 | 影音先锋中文字幕在线观看 | av一二三四 | 日韩av一区二区在线观看 | 韩国毛片一区二区三区 | 欧美亚洲第一区 | 欧美日韩亚洲国产 | 午夜看电影在线观看 | 久久久久久免费精品一区二区三区 | 亚洲 精品 综合 精品 自拍 | 日本在线播放一区二区 | 欧美多人在线 | 久久在线免费 | 久久青青 | 国产第一页在线观看 | 国产精品久久久久一区二区三区 | 日韩一区中文字幕 | 日韩在线视频播放 | 99re在线| 男女网站免费 | 欧美精品一区二区三区在线播放 | 午夜国产一级 | 成人在线国产 | 亚洲精选久久 | 丁香色婷婷 | 欧美精品国产精品 | 国产永久免费 | 亚洲精品国产a久久久久久 午夜影院网站 | 成人国产在线视频 | 亚洲大片在线观看 | 日韩中文一区二区三区 | 成人亚洲一区 |