module ps2/************************/( /*系統訊號*******/
input clk,
input rst_n,
/**ps2訊號************/
input data_in,
input clk_in,
/*測試訊號*******/
output reg done_flag,
output reg[3:0] led
);
reg r1,r2;
reg[7:0] ps2_data;
reg[4:0] i;//狀態
wire ps2_clk_n;
/************************/
//clk_in下降沿檢測
/*************************/
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
r1 <= 1』b0;
r2 <= 1』b0;
end
else
begin
r1 <= clk_in;
r2 <= r1;
end
end
assign ps2_clk_n = r2&(!r1);
/***************************/
//獲取ps2鍵值
/***************************/
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
i<= 『d0;
done_flag <= 1』b0;
ps2_data <= 8』b0;
end
else case(i)
『d0:
begin
if(ps2_clk_n)
i <= i + 1』b1;
else i <= i;
end
『d1,』d2,』d3,』d4,』d5,』d6,』d7,』d8:
begin
if(ps2_clk_n)
begin
i <= i + 1』b1;
ps2_data[i-1] <= data_in;
end
else i <= i;
end
『d9,』d10:
begin
if(ps2_clk_n)
i <= i + 1』b1;
else
i <= i;
end
『d11://判斷通斷碼,為f0則是斷碼
begin
if(ps2_data==8』hf0)
i <= 『d12;
else
i <= 『d23;
end
『d12,』d13,』d14,』d15,』d16,』d17,』d18,』d19,』d20,』d21,』d22:
begin
if(ps2_clk_n)
i <= i + 1』b1;
else
i <= i;
end
『d23:
begin
i <= i + 1』b1;
done_flag <= 1』b1;
end
『d24:
begin
i <= 『d0;
done_flag <= 1』b0;
end
default:i <= 『d0;
endcase
end
/*****************************/
//輸出控制led,z鍵左移;y鍵右移;ctrl切換
/****************************/
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
led <= 4』b1110;
else if(done_flag)
case(ps2_data)
8』h1a://字母z
begin
led <= ;//左移
end
8』h35://字母y
begin
led <= ;//右移
end
8』h14:
begin
led <= ;
end
default:;
endcase
end
endmodule
首先進行ps/2時鐘下降沿檢測,然後接受鍵盤過來的鍵值(即按鍵的編碼,比如z鍵接收到的就是0x1a),通過對按鍵編碼的判斷來控制led的左右移動和切換。
這是最簡單的ps/2操作,如果要做更複雜處理,同樣可以按照這個思路擴充套件,以支援不同操作。
PS 2鍵盤原理
11.4 鍵盤原理 早期的鍵盤實際上是一種5pin的鍵盤,稱作at鍵盤,是1984年ibm pc的標準鍵盤。在1987年ibm進行了改進,從而變成了現在的ps 2鍵盤。當按下乙個鍵或釋放乙個鍵,鍵盤都會傳送鍵盤掃瞄碼到主機。比如按下a,鍵盤就會傳送0x1c到主機。如果持續按a,當經過乙個給定時間後,...
PS2鍵盤第二套鍵盤掃瞄碼學習發現
ps2鍵盤中第二套鍵盤掃瞄碼使用最廣泛。但是每個按鍵的鍵值,大多數是乙個位元組。有少量的兩個位元組 小鍵盤enter 鍵 e0 5a 右ctrl e0 14 右gui e0 27 左gui e0 1f 右alt e0 11 fn e0 2f 小鍵盤 e0 4a 這些按鍵一般在鍵盤上能找到另乙個相同功...
50元製作PS2鍵盤無線監控裝置
0 00 什麼是arduino arduino實際上就是一種開發板,將微控制器和必需的元件整合在一塊電路板上,擴充套件出完善的介面和針腳,就可以接上各種各樣的感測器,完成你心中的設計,你也可以把它理解成一種電子積木,因為它不需要焊接,也不需要高深的無線電知識,只需要程式設計基礎和基本的電路知識即可。...