Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 6913|回復: 1
打印 上一主題 下一主題

[問題求助] 此VHDL程式中的TACT SW要如何加才能防止開關彈跳

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-1-18 22:06:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
此程式為一個每按一次TACT SW就會進行累加1的程式,並且LED亮度會每累加一次, V, n- l; r. `! O- o: ^1 ~9 R
就會增加,共8段亮度(0~7),此程式這些功能都可以了,但是會有開關彈跳的問題,, }2 r7 l4 Y7 d
希望能有高手幫我解決此問題2 M3 }# E; F) H- [# L* n" M
# H# a. a7 U, ^; J4 r2 S- r% ?

, x/ I1 l0 w7 I3 v& O+ H( @library ieee;. W( J* J4 g% j2 V; c
use ieee.std_logic_1164.all;2 ~! O7 A' U6 l; ^+ o9 ]
use ieee.std_logic_arith.all;
6 L; ]) p  m$ H7 H& A9 M2 V9 V& ]2 tuse ieee.std_logic_unsigned.all;
2 [: P9 J0 e& o  \# U3 S
) l6 N: k6 c6 D$ k) s$ v2 _entity pwm8 is Port (
+ ]' F7 g1 H6 x+ J    CLK : in std_logic;--clock 1KHZ
  y& m4 r' l, \    RST : in std_logic;--reset
% e5 Q, w2 L/ p$ R    SW  : in std_logic;--switch in' Q, ~% ~3 ?" L# o4 |. k
    SEG7 : out std_logic_vector(6 downto 0));--2 J& e! j! h6 C/ h5 C! J5 P
end pwm8;0 `; ^! Q+ v2 Y' ]; ^) Z" O
6 ^; v  w& l" C( j8 p3 L, l
architecture arch of pwm8 is" b% E* e# Y2 V) T* P

* @- @0 K, }" d. P9 esignal  SWCNT : std_logic_vector(2 downto 0);
- S$ Q9 j, i. a* R- Q* Nsignal  PWMCNT : std_logic_vector(2 downto 0);& h* Z) k0 E! G, K( _5 m: x6 _* A
signal  DISP : std_logic;1 r- z: W7 D) r5 _+ ]
  C3 \8 s  M4 i
begin
! R+ E/ q, Q/ v1 B1 z
' P& L/ t0 ~* e. p$ g( g) [3 O( l* k--toggle switch input counter' A" B; G: m$ `4 M
process(RST,SW)1 S* q$ W8 c! q, l) \8 c8 W. k
begin
% e; y5 U; R4 ^" W/ ]% O; s    if RST='1' then
( n" t$ x% }3 z$ V; Q        SWCNT<="000";
4 O. y3 H$ h0 L    elsif rising_edge(SW) then
6 x# j7 T' S! S' u! `' R- n        SWCNT<=SWCNT+'1';- V& k5 Z& L0 q: K2 q
    end if;
& \5 L: {% P3 S8 Tend process;
7 U  {; w2 \" j7 O% |4 i9 h7 ]$ ~: k
0 A7 k" m4 o) X, E% I--pwm counter
/ |1 V( f4 v) I/ O( @process(RST,CLK)" Z% l( K6 S4 s+ a/ W; n# x
begin
2 O5 q$ h3 H1 S9 \/ a+ ^2 z' T) D    if RST='1' then% b/ _/ I4 B  q' \* j1 h4 p) e
        PWMCNT<="000";
% E' w6 c4 J7 A9 ?/ @5 h+ V3 H; o        DISP<='0';
! x  O5 X1 X; V) W    elsif rising_edge(CLK) then
4 W( |: J( X3 s; h! ?        PWMCNT<=PWMCNT+'1';9 D/ p: R! ^8 r
        if (PWMCNT="111") then7 F3 X2 J; y7 v7 K  J' D, X* O
            DISP<='1';
( Q! ^. K  s" g" J! b2 v        elsif (PWMCNT=SWCNT) then
6 Y8 L8 W6 V- |; g9 _1 i            DISP<='0';# _, D( o8 d8 h7 a8 i+ n  J
        end if;
1 {! c6 V7 a. l! ^- Q    end if;' D( G7 v" i. q) u/ k* V; Q
end process;
5 M+ J0 e5 b0 m( `3 B$ P$ J/ r2 V8 C0 [2 O4 C" r. w
--7-segment display decoder
5 a. j' G/ E; ^$ g, nprocess(DISP,SWCNT)& A1 @/ J; |& o# T6 E3 P0 h0 F
variable DISPEN : std_logic_vector(3 downto 0);+ F$ m8 t3 }$ L6 l' [% b
begin3 S3 g. Q3 f! p  K8 p
    DISPEN := DISP SWCNT;
2 `8 `' O/ M. k0 x& @    case DISPEN is --SEG7<="abcdefg"
% y6 \% V0 V% k        when "1000"=>SEG7<="1111110";
' m. S+ U- F! [& w3 p9 q        when "1001"=>SEG7<="0110000";4 |% V$ X; O9 U( }- V
        when "1010"=>SEG7<="1101101";( d* R; |0 L+ ~! b7 i
        when "1011"=>SEG7<="1111001";
% r: h/ z" a) `( G$ m- t2 Q) r2 y        when "1100"=>SEG7<="0110011";. x! E% o0 c8 U7 T# @& w2 W4 p) W# q
        when "1101"=>SEG7<="1011011";& P! n; b' U/ x0 Q2 {5 {6 Y* U
        when "1110"=>SEG7<="1011111";3 f, O: L+ \, f6 J) m5 `8 q) @; z/ W8 M
        when "1111"=>SEG7<="1110000";$ c! I1 N8 @( o. ~" k
        when others=>SEG7<="0000000";. P7 A: P3 V! Z5 K5 Y$ l
    end case;
6 B4 n, U: F) o4 S% Fend process;
) E( G( N8 h% ?end arch;
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2009-2-2 13:02:01 | 只看該作者
process(RST,SW)
. b$ ^! U7 k7 f$ W" B/ x/ rbegin8 A! t* _- [. ]& Q
    if RST='1' then" e! h% n8 f" R9 g* }
        SWCNT<="000";
' r0 Q, E; L* w5 d' F& i* G, Y& L# R    elsif rising_edge(SW) then
; V7 h. T0 n+ F$ T' E5 v        SWCNT<=SWCNT+'1';: R# S" U8 I# h! E1 {
    end if;& y; K$ C' f; H1 f: J6 C# @
end process;- Z2 [" T. G, S" a
將 SW 以 數ms~數十ms 的取樣率取到穩定的 High/Low 才當成上述的 clock 信號就可以解決
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-4-29 03:05 PM , Processed in 0.105006 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表