pos機按鍵設置,「正點原子FPGA連載」第十章 觸摸按鍵控制LED燈實驗

 新聞資訊  |   2023-05-17 11:19  |  投稿人:pos機之家

網上有很多關于pos機按鍵設置,「正點原子FPGA連載」第十章 觸摸按鍵控制LED燈實驗的知識,也有很多人為大家解答關于pos機按鍵設置的問題,今天pos機之家(m.dsth100338.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、pos機按鍵設置

pos機按鍵設置

1)實驗平臺:正點原子開拓者FPGA開發(fā)板

2)摘自《正點原子開拓者FPGA開發(fā)指南》

關注官方微信號公眾號,獲取更多資料:正點原子

第十章 觸摸按鍵控制led燈實驗

隨著電子技術的不斷發(fā)展,按鍵的應用場景越來越廣泛。觸摸按鍵在穩(wěn)定性、使用壽命、抗干擾能力等方面都優(yōu)于傳統(tǒng)的機械按鍵,被廣泛應用于遙控器,便攜電子設備,樓道電燈開關,各類家電控制面板等方面。本章將介紹觸摸按鍵的控制方法并使用開發(fā)板上的觸摸按鍵控制led的亮滅。

本章分為以下幾個章節(jié):

1

1.1 觸摸按鍵簡介

1.2 實驗任務

1.3 硬件設計

1.4 程序設計

1.5 下載驗證

1.1 觸摸按鍵簡介

觸摸按鍵主要可分為四大類:電阻式、電容式、紅外感應式以及表面聲波式。根據(jù)其屬性的不同,每種觸摸按鍵都有其合適的使用領域。

電阻式觸摸按鍵由多塊導電薄膜按照按鍵的位置印制而成,但由于耐用性較差且維護復雜,目前使用率較低;紅外感應式觸摸按鍵通過紅外掃描來識別按鍵位置,一般在較惡劣的環(huán)境下使用;表面聲波式觸摸按鍵利用聲波掃描來識別是否按下,使用壽命長,較適合公共場所的POS機,無人售貨機等處使用。

電容式觸摸按鍵:這種按鍵的誕生主要是為了克服電阻式按鍵耐用性差的不足所提出的。電容式觸摸按鍵采用電容量為評判標準,其感應區(qū)域可穿透絕緣外殼(玻璃、塑料等)20mm以上。其靈敏度和可靠性不會因環(huán)境條件的改變或長期使用而發(fā)生變化,具有防水、強抗干擾能力強、適應溫度范圍廣以及使用壽命長等優(yōu)點,是現(xiàn)代使用最廣泛,發(fā)展最迅速的一種觸摸按鍵。

接下來,我們具體的了解一下電容觸摸按鍵的構造和工作原理。

電容觸摸按鍵主要由按鍵IC部分和電容部分構成。按鍵IC部分主要由元器件供應商提供,用于將電容的變化轉換為電信號。電容部分指的是由電容極板,地,隔離區(qū)等組成觸摸按鍵的電容環(huán)境。

任何兩個導電的物體之間都存在著感應電容,在周圍環(huán)境不變的情況下,該感應電容值是固定不變的。如圖 10.1.1所示,手指接觸到觸摸按鍵時,按鍵和手指之間產生寄生電容,使按鍵的總容值增加。

圖 10.1.1 觸摸按鍵寄生電容示意圖

觸摸按鍵按下前后,電容的變化如圖 10.1.2所示。電容式觸摸按鍵IC在檢測到按鍵的感應電容值改變,并超過一定的閾值后,將輸出有效信號表示按鍵被按下。

圖 10.1.2 觸摸過程電容變化示意圖

1.2 實驗任務

使用觸摸按鍵控制LED燈亮滅,開發(fā)板上電后LED為點亮狀態(tài),手指觸摸后LED熄滅,再次觸摸,LED點亮。

1.3 硬件設計

開拓者開發(fā)板上的觸摸按鍵部分的原理圖如圖 10.3.1所示、多功能端口原理圖如圖 10.3.2所示。

圖 10.3.1 觸摸按鍵電路原理圖

圖 10.3.2 多功能端口原理圖

開發(fā)板上所使用的觸摸IC型號為AR101,它可以通過OP1和OP2兩個引腳選擇不同的工作模式:OP1拉低時,OUT引腳輸出信號高電平有效;OP1拉高時,OUT輸出信號低電平有效。

當OP2拉低時,觸摸IC工作在同步模式(類似于非自鎖的輕觸按鍵),即觸摸時輸出有效電平,松開后無有效電平輸出;OP2拉高時觸摸IC工作在保持模式(類似于自鎖按鍵),即檢測到觸摸操作后輸出有效電平,松開后,輸出電平保持不變。當再次檢測到觸摸操作時,輸出電平變化并繼續(xù)保持。

如圖 10.3.1所示,觸摸IC的引腳OP1和OP2均拉低,因此當手指按在觸摸按鍵上時,TOUT管腳輸高電平,松開后輸出低電平。

這里需要注意的是,由圖 10.3.1和圖 10.3.2所可知,TOUT引腳并沒有直接連接到FPGA引腳,而是連接到P4多功能端口上,而P4上的TPAD是和FPGA的引腳相連接的,因此,我們在做觸摸按鍵的實驗時,需要使用跳帽或者杜邦線將P4上的TPAD和TOUT短接在一起。

本實驗中,系統(tǒng)時鐘、復位按鍵、觸摸按鍵和LED燈的管腳分配如下表所示。

表 10.3.1 觸摸按鍵控制LED管腳分配圖

1.4 程序設計

本次設計的模塊端口及信號連接如圖 10.4.1所示。通過對按鍵信號上升沿的識別來進行控制信號的切換,起到控制LED亮滅的效果。

圖 10.4.1 模塊端口及信號連接圖

觸摸按鍵控制led代碼如下:

1 moduletouch_led(

2 //input

3 input sys_clk, //時鐘信號50Mhz

4 input sys_rst_n, //復位信號

5 input touch_key, //按鍵信號

6

7 //output

8 output reg led //LED燈

9 );

10

11 //reg define

12 reg touch_key_d0;

13 reg touch_key_d1;

14

15 //wire define

16 wire touch_en;

17

18 //*****************************************************

19 //** main code

20 //*****************************************************

21

22 //根據(jù)按鍵信號的上升沿判斷按下了按鍵

23 assign touch_en =(~touch_key_d1) & touch_key_d0;

24

25 //對觸摸按鍵端口接收的數(shù)據(jù)延遲兩個周期

26 always@ (posedge sys_clk ornegedge sys_rst_n) begin

27 if(sys_rst_n ==1\'b0)begin

28 touch_key_d0 <= 1\'b0;

29 touch_key_d1 <= 1\'b0;

30 end

31 elsebegin

32 touch_key_d0 <= touch_key;

33 touch_key_d1 <= touch_key_d0;

34 end

35 end

36

37 //根據(jù)上升沿使能信號切換led狀態(tài)

38 always@ (posedge sys_clk ornegedge sys_rst_n) begin

39 if(sys_rst_n ==1\'b0)

40 led <=1\'b1;

41 elseif (touch_en)

42 led <=~led;

43 end

44

45 endmodule

第23行至35代碼為一個經典的邊沿檢測電路,通過檢測touch_key的上升沿來捕獲按鍵按下的信號,一旦檢測到按鍵按下,輸出一個時鐘周期的脈沖touch_en。每當檢測到touch_en為高電平,led取反一次。

為了驗證我們的程序,我們在modelsim內對代碼進行仿真。

Test bench模塊代碼如下:

1 `timescale 1ns/1ns

2 module tb_touch_led();

3

4 //parameter define

5 parameter T =20 ; //時鐘周期

6

7 //reg define

8 regsys_clk;

9 regsys_rst_n;

10 regtouch_key;

11

12 //wire define

13 wire led;

14

15 //*****************************************************

16 //** main code

17 //*****************************************************

18

19 //給輸入信號初始值

20 initial begin

21 sys_clk <=1\'b0; //時鐘信號初始狀態(tài)為0

22 sys_rst_n <=1\'b0; //復位信號初始狀態(tài)為0

23 touch_key <=1\'b0; //觸摸按鍵信號初始狀態(tài)為0

24 #20 sys_rst_n <=1\'b1; //10ns時,將復位信號拉高

25 #20 touch_key <=1\'b1; //20ns后觸摸按鍵信號拉高

26 #30 touch_key <=1\'b0; //30ns后觸摸按鍵信號拉低

27 #110 touch_key <=1\'b1; //110ns后觸摸按鍵信號拉高

28 #30 touch_key <=1\'b0; //30ns后觸摸按鍵信號拉低

29 end

30

31 //50Mhz的時鐘,周期則為1/50Mhz=20ns,所以每10ns,電平取反一次

32 always # (T/2) sys_clk <= ~sys_clk;

33

34 touch_led u0(

35 .sys_clk(sys_clk),

36 .sys_rst_n(sys_rst_n),

37 .touch_key(touch_key),

38 .led(led)

39 );

40 endmodule

仿真波形如圖 10.4.2所示。

圖 10.4.2 仿真波形圖

測試代碼中,第20至29行為信號的激勵,起始時sys_clk、sys_rst_n、touch_key為低電平,20ns時將復位信號拉高,10ns后將touch_key拉高并保持30ns,模擬第一次按鍵觸摸操作,110ns后再將touch_key拉高并保持30ns,模擬第二次按鍵觸摸操作。從圖 10.4.2仿真波形圖可以看出,在第一次按下按鍵后led由高電平變?yōu)榈碗娖剑俅伟聪潞?,led電平再次發(fā)生改變。

1.5 下載驗證

首先我們打開touch_led工程,在工程所在的路徑下打開touch_led/par文件夾,在里面找到“touch_led.qpf”并雙擊打開。注意工程所在的路徑名只能由字母、數(shù)字以及下劃線組成,不能出現(xiàn)中文、空格以及特殊字符等。touch_led工程打開后如圖 10.5.1所示。

圖 10.5.1 打開觸摸按鍵控制led工程

將USB-Blaster下載器一端連接電腦,另一端與開發(fā)板上的JTAG下載口相連,并確保跳帽已經連接,如圖 10.5.2所示。然后連接電源線并打開電源開關。

圖 10.5.2 開拓者開發(fā)板實物圖

硬件連接完成后通過點擊工具欄中的“Programmer”圖標(圖 10.5.1中紅框位置)打開下載界面。

開發(fā)板電源打開后,在程序下載界面點擊“Hardware Setup”,在彈出的對話框中選擇當前的硬件連接為“USB-Blaster”。然后點擊“Start”將工程編譯完成后得到的sof文件下載到開發(fā)板中。

圖 10.5.3 下載界面

下載界面如圖 10.5.3所示,查看圖中紅色矩形框中是否已經加載下載文件(sof文件)。如果沒有,則需要通過點擊“Add File”按鈕添加流水燈工程中touch_led/par/output_files目錄下的“touch_led.sof”文件。

下載完成后,就可以在板卡上測試觸摸按鍵控制led的亮滅了,如圖 10.5.2所示。

以上就是關于pos機按鍵設置,「正點原子FPGA連載」第十章 觸摸按鍵控制LED燈實驗的知識,后面我們會繼續(xù)為大家整理關于pos機按鍵設置的知識,希望能夠幫助到大家!

轉發(fā)請帶上網址:http://m.dsth100338.com/news/45952.html

你可能會喜歡:

版權聲明:本文內容由互聯(lián)網用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權/違法違規(guī)的內容, 請發(fā)送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。