版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 電子技術</b></p><p><b> 課程設計報告</b></p><p> 第一部分 設計題目及要求</p><p> 本次課程設計的題目及要求如下:</p><p><b> 一、設計題目</b></p><
2、p><b> 紅外線遙控接收器</b></p><p><b> 二、設計步驟</b></p><p> 1、EDA實驗板組裝調試</p><p> 參照提供的EDA實驗板電路原理圖、PCB圖以及元器件清單進行電路板的組裝。電路板組裝完成后,編寫三個小程序進行電路板測試。</p><p&g
3、t; 2、紅外遙控系統(tǒng)的設計</p><p><b> ?。?)發(fā)射編碼部分</b></p><p> 使用指定的元器件在萬用板上完成紅外遙控器的制作。</p><p><b> ?。?)接收解碼部分</b></p><p> 接收解碼用VHDL語言編寫程序,在EDA實驗板上實現(xiàn)解碼。<
4、/p><p><b> 二、功能要求</b></p><p> 1、將一體化紅外接收解調器的輸出信號解碼(12個單擊鍵、6個連續(xù)鍵,單擊鍵編號為7-18,連續(xù)鍵編碼為1-6),在EDA實驗板上用七段數碼管顯示出來。</p><p> 2、當按下遙控器1—6號連續(xù)鍵時,在EDA實驗板上用發(fā)光二極管點亮作為連續(xù)鍵按下的指示,要求遙控器上連續(xù)鍵接下
5、時指示燈點亮,直到松開按鍵時才熄滅,用于區(qū)別單擊鍵。</p><p> 3、EDA實驗板上設置四個按鍵,其功能等同于遙控器上的1—4號按鍵,當按下此四個按鍵時七段數碼管分別對應顯示“1”、“2”、“3”、“4”。</p><p> 4、每當接收到有效按鍵時,蜂鳴器會發(fā)出提示音。</p><p> 第二部分 設計分析</p><p>
6、 本次課程設計包括兩大部分,一是電路設計及電路焊接,二是程序的設計及編寫。</p><p> 電路部分,根據題目要求,要做到紅外發(fā)送,顯然整個電路系統(tǒng)要分為紅外發(fā)射和紅外接收兩個電路,分別做到紅外的編碼發(fā)射和譯碼接受,再在接收板上顯示接受到的紅外信號。另外還包括一個從電腦下載程序到芯片上的下載線電路。</p><p><b> 紅外發(fā)射電路</b></p&
7、gt;<p> 本次課程設計的紅外遙控器由紅外遙控專用芯片PT2248作為編碼及發(fā)送部分,PT2248最大可用作18路紅外遙控系統(tǒng)的編碼,其內部己集成了38kHz的紅外載波振蕩及相應的數字脈碼調制電路,只需外接3×6的矩陣式按鍵、紅外發(fā)光二極管及其驅動電路等少量元器件便可完成編碼發(fā)送的功能。</p><p> 由PT2248和少量外圍元件組成的紅外遙控發(fā)射電路如下圖所示</p&g
8、t;<p> 芯片的發(fā)送指令由12位碼組成,其中C1~C3是用戶碼,可用來確定不同的模式。用戶碼設定是以列線內接入二極管為界線,當T1~T3與CODE之間分別接入二極管時,用戶碼(C1~C3)為“1”;當T1~T3引腳不接二極管時,用戶碼為“0”。如果該芯片與BL9150相結合,則C3引腳必須接入二極管;如果該芯片與BL9149相結合,則C2必須接二極管,H、S1和S2是代表連續(xù)發(fā)送或單次發(fā)送的碼,且分別與T1、T2和T
9、3列的鍵對應。D4~D6是發(fā)送的數據碼(也是鍵輸入碼)</p><p> 上圖中3V電源電壓一方面為芯片提供推薦工作電壓并加到引腳16,另一方面作為信號輸出指示復合管的工作電壓。為了使振蕩頻率為455kHz,特采用外接晶振,并外接兩個電容120pF旁路到地。圖7中三列T1、T2、T3和CODE分別接一個二極管,目的是為了使用戶碼(C1、C2、C3)為“1”。</p><p><b&
10、gt; 紅外接受部分 </b></p><p> 本次課程設計的紅外接受部分采用EDA實驗板,EDA實驗板的頂層PCB圖如下:</p><p><b> . </b></p><p><b> 硬件部分的設計:</b></p><p> 板的中心部件采用的是max7000系列C
11、PLD,另外采用4M晶振以及紅外接收管(38K接收頭)直接在邏輯箱制作紅外接收解碼電路。紅外接收管有3個管腳,自左至右分別是信號輸出端,地端,電源端,分別接到邏輯箱的相應管腳上;同時,為了得到更加穩(wěn)定的信號,在信號輸出端與地端加入一濾波電容。</p><p><b> 三,下載線電路</b></p><p> 本次課程設計采用的下載線把電腦的打印機口和實驗板的數據
12、口連接起來,從而把程序從電腦下載到實驗板的芯片里,</p><p> 第三部分 系統(tǒng)模塊的劃分以及各模塊的功能描述</p><p> 在這一部分,我將對系統(tǒng)功能進行模塊化劃分,對各模塊功能作詳細闡述。</p><p><b> 發(fā)射板部分</b></p><p> 發(fā)射板主要由紅外線編碼芯片PT2248 構成紅
13、外編碼這個模塊。</p><p> PT2248的管腳圖如下圖所示:</p><p> 其各個管腳的功能如下表:</p><p> PT2248組成的十八路遙控發(fā)送器其編碼規(guī)則如下:</p><p> ?。?)設a為一個時間單位,時間長度是38kHz的16個時鐘周期,即</p><p> a=1÷38
14、kHz×16=0.421ms</p><p> 編碼是以串行形式發(fā)送的,在接收端(38kHz一體化紅外接收解調器)接收到如下形式的1位的編碼時分別表示“0”和“1”:</p><p> 1個a的低電平,3個a的高電平表示編碼“0”</p><p> 3個a的低電平,1個a的高電平表示編碼“1”</p><p> 編碼以串行形
15、式發(fā)送,接收端的一體化紅外接收解調器輸出波形如下圖所示:</p><p> 此外,由于發(fā)射器發(fā)送的時候,有兩個信號,一種是表示單擊的,一種則是表示連續(xù)的,這兩種不同的信號,其自身都有自己的特點:</p><p> ?。?)遙控器的每個按鍵編碼由12位按以上編碼規(guī)則所代表的“0”、“1”組成,時間長度為48a,當按下遙控器的7到18號單擊按鍵,則以12位為一組(48a)發(fā)送兩次編碼,<
16、;/p><p> 60a為自按下按鍵到發(fā)送編碼的等待時間,80a是前后兩次發(fā)送12位48a編碼的高電平時間間隔。7到18號單擊按鍵無論發(fā)送端按鍵時間持續(xù)多長只發(fā)送一次這樣形式的兩組相同的12位編碼。</p><p> (3)當按下1到6號連續(xù)按鍵時,編碼按如下格式連續(xù)發(fā)送:</p><p> ,兩種信號的巨大差別,可是在程序的編寫過程中,這種差別卻沒有什么很大的作
17、用,因為兩種信號在譯碼上的區(qū)別也是相當明顯的,故為了簡化程序,直接由譯碼來區(qū)別連續(xù)單擊比利用上圖的效果更好,具體見程序。</p><p> ?。?)芯片的發(fā)送指令由12位碼組成,如下所列。其中C1~C3是用戶碼,可用來確定不同的模式。用戶碼設定是以列線內接入二極管為界線,當T1~T3與CODE之間分別接入二極管時,用戶碼(C1~C3)為“1”;當T1~T3引腳不接二極管時,用戶碼為“0”。</p>
18、<p> 具體每個12位的串行編碼規(guī)則如下:</p><p> C1、C2、C3為用戶可通過在遙控器發(fā)射電路中是否接入IN4148二極管決定其為“0”或“1”,這里取“111”,H、S1、S2為單擊連續(xù)按鍵的標志位,相當于列坐標,D1至D6為按鍵輸入碼,相當于行坐標,低9位的按鍵編碼如下表所示:</p><p><b> 續(xù)上表:</b></p&
19、gt;<p><b> 二,接收部分</b></p><p> 接收部分電路主要可分為紅外接受模塊,譯碼電路模塊,小鍵盤模塊和數碼管顯示模塊幾個部分,紅外信號的編碼從發(fā)射板發(fā)射到接收板上的紅外信號接收頭后 ,譯碼電路把紅外編碼翻譯后送到數碼管顯示,小鍵盤輸入的代碼也經譯碼電路在數碼管上顯示對應的按鍵信息。</p><p> ?。ㄒ唬?紅外信號接受&l
20、t;/p><p> 本課程設計的紅外接受頭采用一體化紅外接收解調器,如下圖:</p><p><b> 其引腳圖如下:</b></p><p> 一體化紅外接收解調器的內部電路如下圖:</p><p> 上面詳述的紅外信號發(fā)射電路把發(fā)射板上的按鍵信息編成編碼以紅外信號的形式發(fā)射到接收板,該一體化紅外接收解調器接收到紅
21、外信息后,把其包含的編碼信息傳到下一級譯碼電路,從而完成紅外信號的接收。</p><p> 當紅外接收頭接收到遙控器發(fā)出的信號時,邏輯箱上的蜂鳴器需發(fā)出提示聲。因設計時只考慮譯碼器具有最簡單的譯碼功能,這樣就要求前面的編碼電路在每發(fā)出一串12位編碼的同時發(fā)出一個脈沖給計數器,使計數器輸出為高電平,同時開始計數,直至計數到規(guī)定值后又回到低電平,完成響鈴提示。(二)紅外編碼譯碼電路</p><
22、p> 根據芯片介紹可知,紅外接收頭接收到的編碼,每一幀完整的串行數據有十二位,而每一位的BIT‘0’、BIT‘1’是占空比不同的矩形方波,要完成以后的功能,就需要一個編碼器將其編成邏輯器件能識別的普通邏輯電平‘0’、‘1’。</p><p> 紅外接收頭接收負責接收38k載波的紅外光,解調得到脈沖,輸出至譯碼電路。接收頭接收到的脈沖如圖(與發(fā)射波形剛好互為反碼): (a為38kHz時鐘的16個周期)&l
23、t;/p><p> 每個按鍵的值由12bit組成:</p><p><b> 按鍵編碼格式:</b></p><p> 譯碼電路有把對應的譯碼程序下載后的CPLD構成,CPLD的外圍電路如下圖:</p><p> 一體化紅外接收解調器接收到紅外信息后,將紅外編碼通過73HC4040傳到CPLD進行譯碼。</p&
24、gt;<p> ?。ㄈ┘t外編碼顯示電路</p><p> 這部分電路將譯碼后得到的十二位普通高低電平‘0、’‘1’編碼譯成相應的壓縮BCD碼1~18,應十位僅有0、1兩種可能,將譯得的BCD碼直接接芯片4511的輸入引腳,4511的譯碼輸出并接到4位LED數碼顯示管,再在程序中寫入十位和個位選擇的進程,即可得到相應1~18數字顯示輸出。</p><p> 顯示部分電路由
25、芯片CD4511BC構成,譯碼后的高低電平從CPLD的44,45,46,48,49管腳傳輸到CD4511BC,進行譯碼,這部份電路如下:</p><p> CPLD的33——41角分別接到三級管(8050)Q2——Q9,通過段路線,選擇兩個四位LED數碼顯示管里的共八位顯示中的哪一位或哪幾位顯示,沒有接段路線的那些位的顯示管將不亮</p><p> 其真值表及對應的LED數碼顯示管顯示
26、如下:</p><p><b> ?。ㄋ模┬℃I盤電路</b></p><p> EDA實驗板上有個4*4 的按鍵矩陣,當按鍵被按下時,其輸出引腳為低電平,而其余時間內均為高電平。當按下每一行的四個鍵時,七段碼顯示管應顯示1—4,必須將四個按鍵并行輸入的按鍵編碼轉換成1—4的BCD碼才能輸出顯示。按鍵輸入與遙控輸入應共用兩個七段碼顯示管輸出,這樣就需要在程序中將輸入的
27、遙控信號與按鍵信號先進行選擇再輸出。</p><p> 這部分電路如下圖所示:</p><p> 第四部分 程序設計及帶注釋源程序</p><p> 一、本次課程設計的程序設計的ASM圖如下:</p><p> 二、程序設計時的主要部分以及遇到的問題及解決方案:</p><p> 1、頻率的同步問題:<
28、;/p><p> 這是本程序的一個關卡,由于信號的載波是16k,而晶振的頻率采用了4M,就是說無論怎么分頻,邏輯箱出來的頻率都不可能得到載波信號的頻率,所以有可能經過幾次解碼之后便出現(xiàn)誤碼。</p><p> 本設計具體采用的處理措施如下:4M的2的7次方分頻(沒有安裝word的公式,請見諒哦),所得到一個信號(即4個a)為14倍clk,這里用到一個cnt1,每個時鐘上升沿計數一次,計數到
29、第7個時鐘上升沿時,便進行讀數,根據0和1波形的特點,可知在此時輸入信號infared_in與其真正表示的值相反,故有:</p><p> if cnt1=7 then reg2<=reg2(7 downto 0) & not txout;</p><p><b> end if;</b></p><p> 在第14個clk
30、后,剩下的0.2個clk將產生誤碼,故采取以下措施:</p><p> when T1=> </p><p> if cnt1=50 then</p><p><b> cnt1<=0;</b></p><p> state<=T0;</p><p><b>
31、 else</b></p><p> cnt1<=cnt1+1;</p><p><b> end if; </b></p><p> 計到第14個clk時(由于其中經過兩個狀態(tài),所以計數只計到12),又回到T0,重新檢測infared_in=‘0’后回到T1狀態(tài),從而取出那0.2個clk的影響。</p>
32、<p> 2)如何判斷接收到一串完整的12位數據問題:</p><p> 如果采用cnt1計數來控制的話,會導致cnt1的取值過大,而且會出現(xiàn)誤差時間的積累,故本程序用到的第二個計數器cnt2,其作用也不容小視,在每一次cnt1=7時,都會將cnt2自加,如下:</p><p> If cnt1=7 then </p><p> cnt2<
33、=cnt2+1; </p><p> reg<=reg (7 downto 0) & not infared_in; </p><p> end if; </p><p> if cnt2=12 then </p><p><b> cnt2
34、<=0;</b></p><p> speaker<='1';</p><p><b> end if; </b></p><p> 這是用來記錄移入寄存器reg的次數,計到12時,說明已經接收了1個完整的信號了,此時把cnt2清零,以便下一次接收信號時使用。</p><p>
35、; 3) 指示燈跟蜂鳴器的問題:</p><p> 當接收一個完整的信號之后,當讓就是對這存在reg中的一串01代碼進行譯碼了,同時根據題目要求,蜂鳴器要相應的響一聲。故當cnt2=12時sound賦為高電平,并啟用第三個計數器cnt3,cnt3在下一個時鐘上升沿開始自加,加至16000,即延時16000/16k=1秒后停止,后將sound從新賦0。具體實現(xiàn)如下:</p><p>
36、if cnt2=12 then</p><p><b> cnt2<=0;</b></p><p> speaker<='1';</p><p><b> end if;</b></p><p> if speaker='1' then </
37、p><p> cnt3<=cnt3+1;</p><p> if cnt3=16000 then</p><p><b> cnt3<=0;</b></p><p> speaker<='0';</p><p><b> end if;</b
38、></p><p><b> end if;</b></p><p> 4、EDA板上的按鍵問題:EDA試驗板的按鍵的每一行的四個按鍵分別對應B1 ,B2,B3,B4,具體實現(xiàn)只是在時鐘上升沿下加入一下程序段即可。</p><p> if B1='0' then </p><p> reg&
39、lt;="100100000";</p><p><b> end if;</b></p><p> if B2='0' then </p><p> reg<="100010000";</p><p><b> end if;</b&
40、gt;</p><p> if B3='0' then</p><p> reg<="100001000";</p><p><b> end if;</b></p><p> if B4='0' then </p><p> r
41、eg<="100000100";</p><p><b> end if;</b></p><p><b> 源程序</b></p><p> 綜合上面所討論的幾點,可的得到本次課程設計的源程序(帶注釋)</p><p> library ieee;</p&g
42、t;<p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity infared is</p><p> port (clk,infared_in,B1,B2,B3,B4,reset:in std_logic; </p
43、><p> --B1.B2.B3.B4為實驗版上4*4鍵盤每一行對應的4個按鍵</p><p> --infared_in為紅外接收頭接收并解碼輸出的信號</p><p> BCD_out : out std_logic_vector(3 downto 0); </p><p> --芯片輸出到4511的經紅外編碼后的12位按鍵碼
44、對應的4位代碼</p><p> selet: out std_logic_vector(1 downto 0); </p><p> --數碼顯示管十位和個位的選擇信號</p><p> led,speaker : buffer std_logic); </p><p> --連續(xù)鍵的
45、指示燈信號,按鍵按下即蜂鳴器信號</p><p> end infared;</p><p> architecture behav of infared is</p><p> type state_type is (s0,s1,s2);</p><p> signal state : state_type;</p>
46、<p> signal reg : std_logic_vector(8 downto 0);</p><p> signal cnt1 : integer range 0 to 14;</p><p> --0, 1解碼計數器。對0的個數的計數,遇到0則開始計數,遇到1就停止,以區(qū)別0和1的編碼</p><p> signal cnt2 : in
47、teger range 0 to 12;</p><p> --輸入的編碼位數計數器,計數到到12就把編碼輸出到infared_in</p><p> signal cnt3 : integer range 0 to 16000;</p><p> --蜂鳴器延時計數器</p><p> signal cnt4 : integer r
48、ange 0 to 1;</p><p> --個位十位選擇計數器,為0時數碼管顯示個位,為1顯示十位</p><p><b> begin</b></p><p> judge:process (clk,infared_in,cnt1) </p><p> --進程1,判斷是否接受到低電平,紅外接受低電平有
49、效,infared_in=0時表示有編碼輸入</p><p> begin </p><p> if clk'event and clk='1' then</p><p> case state is</p><p> when s0=> if infared_in='0'
50、 then </p><p> state<=s1;</p><p><b> else </b></p><p> state<=s0; </p><p> --檢測輸入信號,如果是高電平則繼續(xù)檢測;如果為低電平則進入狀態(tài)s1</p><p>
51、<b> end if; </b></p><p> when s1=> if cnt1=12 then </p><p><b> cnt1<=0;</b></p><p> state<=s2;</p><p> else cnt1<=cnt1+1;
52、 </p><p> --計數到12時,跳到s2狀態(tài),繼續(xù)檢測低電平</p><p><b> end if;</b></p><p> when s2=> </p><p> if infared_in='1' then </p><
53、p> --若出現(xiàn)高電平則跳回s0狀態(tài) </p><p> state<=s0;</p><p><b> else </b></p><p> state<=s2;</p><p><b> end if;</b></p><p><b>
54、; end case;</b></p><p> end if; </p><p> --當計數到7時,自動跳到進程com2,每接收完一個完整的0或1信號后,自動接收下一個信號,自身不停地在兩個狀態(tài)中輪換。</p><p> end process judge;<
55、;/p><p> coding:process(clk,cnt1,cnt2,cnt3,B1,B2,B3,B4) </p><p><b> --編碼譯碼進程</b></p><p><b> begin</b></p><p> if clk'event and clk=
56、39;1' then</p><p> if B1='0' then </p><p> reg<="100100000"; </p><p> --B1按下,寄存器儲存表示00000001的代碼。</p><p><b> end if; </b&g
57、t;</p><p> if B2='0' then </p><p> reg<="100010000"; </p><p> --B2按下,寄存器儲存表示00000010的代碼。</p><p><b> end if;</b></p>
58、<p> if B3='0' then </p><p> reg<="100001000"; </p><p> --B3按下,寄存器儲存表示00000011的代碼。</p><p><b> end if;</b></p><p>
59、 if B4='0' then </p><p> reg<="100000100"; </p><p> --B4按下,寄存器儲存表示00000100的代碼。</p><p><b> end if;</b></p><p> if cnt1=7 t
60、hen </p><p> cnt2<=cnt2+1; </p><p> --cnt2加1,表示移入一位數據</p><p> reg<=reg (7 downto 0) & not infared_in; </p>
61、<p> end if; </p><p> --當計數到7時,將接收到的infared_in的相反值移入寄存器。</p><p> if cnt2=12 then </p><p> --當cnt2計數到12時,表示接收到了完整
62、的一串數據,自身清零并開啟蜂鳴器</p><p><b> cnt2<=0;</b></p><p> speaker<='1';</p><p><b> end if;</b></p><p> if speaker='1' then <
63、/p><p> cnt3<=cnt3+1;</p><p> if cnt3=16000 then</p><p><b> cnt3<=0;</b></p><p> speaker<='0'; </p><p&
64、gt; --計數cnt3計到16000時賦0,蜂鳴器停止,即蜂鳴器鳴響時間持續(xù)16000/16k=1秒后停止</p><p><b> end if;</b></p><p><b> end if; </b></p><p><b> end if;</b></p><p
65、> end process coding;</p><p> display:process(clk,reg,reset) </p><p> --顯示進程。低9位編碼轉換成對應的BCD輸出,1-6連續(xù)按鍵燈亮,7-18單擊鍵燈滅, </p><p><b> begin</b>
66、</p><p> if(reset='1') then --高電平復位</p><p> BCD_out<="0000";</p><p> selet<="11";</p><p> led<
67、='1'; </p><p> --若按下復位鍵,十位個位同時顯示0,指示燈亮</p><p> elsif (clk'event and clk='1') then</p><p> led<='1';
68、 </p><p> case reg is</p><p> when "100100000" => BCD_out<="0001"; --顯示1</p><p> selet<="01";</p>
69、<p><b> led<='0';</b></p><p> when "100010000" =>BCD_out<="0010"; --顯示2</p><p> selet<="01";</p><p&
70、gt;<b> led<='0';</b></p><p> when "100001000" => BCD_out<="0011"; --顯示3</p><p> selet<="01";</p><p><
71、;b> led<='0';</b></p><p> when "100000100" => BCD_out<="0100"; --顯示4</p><p> selet<="01";</p><p><b>
72、 led<='0';</b></p><p> when "100000010" => BCD_out<="0101"; --顯示5</p><p> selet<="01";</p><p><b> led&
73、lt;='0';</b></p><p> when "100000001" => BCD_out<="0110"; --顯示6</p><p> selet<="01"; </p><p><b> led<
74、;='0';</b></p><p> when "010100000" => BCD_out<="0111"; --顯示7</p><p> selet<="01"; </p><p><b> led<=
75、9;1';</b></p><p> when "010010000" => BCD_out<="1000"; --顯示8</p><p> selet<="01";</p><p><b> led<='1
76、9;;</b></p><p> when "010001000" => BCD_out<="1001"; --顯示9</p><p> selet<="01";</p><p> led<='1';
77、 </p><p> --連續(xù)鍵時led賦為高電平,燈亮;sel賦值''01''表示采用個位顯示</p><p> when "010000100" =>if (cnt4=0) then</p><p> cnt4<=cnt4+1;</p><p>
78、BCD_out<="0000"; --個位顯示0</p><p> selet<="01";</p><p> else cnt4<=0;</p><p> BCD_out<="0001"; --十位顯示1</p>
79、<p> selet<="10";</p><p> end if; </p><p> --兩位數利用計數器cnt4實現(xiàn)個、十位輪流顯示。</p><p> when "010000010" =>if (cnt4=0) then</p>
80、<p> cnt4<=cnt4+1;</p><p> BCD_out<="0001"; --個位顯示1</p><p> selet<="01"; </p><p> else cnt4<=0;</p><p> BCD_out&
81、lt;="0001"; --十位顯示1</p><p> selet<="10"; </p><p> end if; </p><p> when "010000001" => if (cnt4=0) then</p><p>
82、; cnt4<=cnt4+1;</p><p> BCD_out<="0010"; --個位顯示2</p><p> selet<="01";</p><p> else cnt4<=0;</p><p> BCD_out<="000
83、1"; --十位顯示1</p><p> selet<="10";</p><p><b> end if;</b></p><p> when "001100000" => if (cnt4=0) then</p><p> cn
84、t4<=cnt4+1;</p><p> BCD_out<="0011"; --個位顯示3</p><p> selet<="01";</p><p> else cnt4<=0;</p><p> BCD_out<="0001&quo
85、t;; --十位顯示1</p><p> selet<="10";</p><p><b> end if; </b></p><p> when "001010000" => if (cnt4=0) then</p><p> cnt4&l
86、t;=cnt4+1;</p><p> BCD_out<="0100"; --個位顯示4</p><p> selet<="01";</p><p> else cnt4<=0;</p><p> BCD_out<="0001";
87、 --十位顯示1</p><p> selet<="10";</p><p><b> end if;</b></p><p> when "001001000" =>if (cnt4=0) then</p><p> cnt4<=
88、cnt4+1;</p><p> BCD_out<="0101"; --個位顯示5</p><p> selet<="01";</p><p> else cnt4<=0;</p><p> BCD_out<="0001";
89、 --十位顯示1</p><p> selet<="10";</p><p><b> end if;</b></p><p> when "001000100" => if (cnt4=0) then</p><p> cnt4<=c
90、nt4+1;</p><p> BCD_out<="0110"; --個位顯示6</p><p> selet<="01";</p><p> else cnt4<=0;</p><p> BCD_out<="0001";
91、 --十位顯示1</p><p> selet<="10";</p><p><b> end if;</b></p><p><b> led<='1';</b></p><p> when "001000010&
92、quot; => if (cnt4=0) then</p><p> cnt4<=cnt4+1;</p><p> BCD_out<="0111"; --個位顯示7</p><p> selet<="01";</p><p> else cnt4&
93、lt;=0;</p><p> BCD_out<="0001"; --十位顯示1</p><p> selet<="10";</p><p><b> end if;</b></p><p> when "001000001&q
94、uot; =>if (cnt4=0) then</p><p> cnt4<=cnt4+1;</p><p> BCD_out<="1000"; --個位顯示8</p><p> selet<="01";</p><p> else cnt4<
95、;=0;</p><p> BCD_out<="0001"; --十位顯示1</p><p> selet<="10";</p><p><b> end if;</b></p><p> when others => led<
96、;='1';</p><p> selet<="00"; </p><p> --其他數碼無顯示,指示燈亮</p><p><b> end case;</b></p><p><b> end if;<
97、;/b></p><p> end process display;</p><p> end behav;</p><p> 第五部分 程序仿真</p><p> 該波形圖可分為兩部分,第一部分是EDA板對紅外發(fā)射所發(fā)射的信號進行譯碼 ,并輸出BCD碼,即其他輸出的部分,第二部分是對EDA試驗板的鍵盤矩陣輸入信號的譯碼BCD
98、碼輸出。</p><p><b> 一、紅外譯碼部分</b></p><p> 在B2的低電平脈沖輸入前的部分屬于剛才講的第一部分,即紅外譯碼部分,此時EDA試驗板上的按鍵均沒有按下,所也B1,B2,B3,B4都把保持高電平。</p><p> 這部分波形圖示仿真紅外發(fā)射器的按鍵1按下是的情況。根據紅外編碼芯片PT2248的編碼規(guī)則,按鍵
99、1按下是的編碼應該是“100100000”,上面也提到,每個代碼‘0’或‘1’的波形包括4個時鐘周期:‘0’是1個時鐘周期的低電平加3個時鐘周期的高電平;‘1’是3個時鐘周期的低電平加1個時鐘周期的高電平。所以“100100000”的波形應該如下圖所示:</p><p> 當9位編碼“100100000”全部接收完后,CPLD的BCD碼輸出為“0001”,即數碼管顯示1,</p><p>
100、; 二 、EDA板上的按鍵編碼及BCD碼輸出</p><p> EDA板上的按鍵按下時,紅外發(fā)射板的信號不能被EDA板接收,故CPLD是對EDA板上的按鍵信號進行譯碼的。</p><p> 這部分波形從B2低電平脈沖,即B2按下開始,B1,B2,B3,B4分別是4*4鍵盤的右數第一,二,三,四列的任何一個按鍵,隨后是B3,B1,B4的低電平脈沖,如下圖:</p><
101、;p> 先后輸出的BCD碼為“0010”,“0011”,“0001”,“0100”,</p><p> 即B2按下時數碼管顯示2,B3按下時數碼管顯示3,B1按下時數碼管顯示1,B4按下時數碼管顯示4,仿真無誤。</p><p> 第六部分 設計體會及心得</p><p> 一、設計過程中遇到的問題及解決方法</p><p>
102、 上面已經提過,本次課程設計的設計分為兩個方面:電路板和程序。</p><p> 程序設計遇到的問題的解決方案及解決方法幾經在第四部分闡述,這部分主要討論電路板設計,焊接及調試遇到的問題和解決方法。</p><p> EDA試驗板和數據線電路板</p><p> 這兩塊板發(fā)下來時電路已經設計好,主要出現(xiàn)的問題在焊接上。</p><p>
103、; 在焊接前先觀察這兩塊板,看清哪面是元件面,哪面是焊接面,畫有元件圖案的那面是元件面,焊接是要把元放在這一面上。</p><p> 在焊接過程中最容易犯的錯誤就是把IC,晶振,三級管,穩(wěn)壓器,紅外接收器,排阻,二極管等元件的管腳焊錯。</p><p> IC中管角最多的就是CPLD的IC座了,要是焊錯了,這個83個腳的元件拆下來的困難程度將是很難想象的。其實把它含對不難,在IC座內
104、部的IC槽有一個是缺腳的,而實驗板元件面上畫圖案也是有一個缺角的,只要把位置對好,先把IC座的兩個對角的管腳焊好,再焊其他腳就可以順利焊好它了。其他IC都有一個缺口,只要把缺口和板上畫的缺口對齊,同樣把對角的兩個管腳焊好再焊其他腳,就行了,IC上有一個管腳的旁邊有一個圓形的凹陷,板上和這個角對應的焊盤是方行的,根據這個規(guī)則也可以可方便的把IC焊好。</p><p> 焊晶振,三級管,穩(wěn)壓器,紅外接收器時,只要把
105、元件和板上畫的圖案對齊,就可以焊好。比如:晶振的四個角只有一個角是直角,其他三個角都是圓角,板上畫的圖案也是這樣,只要把直角對齊,就可以焊好了。</p><p> 普通二極管有一頭印有一個黑色的環(huán),試驗板上普通二級管的圖案也是有一頭是有黑色(或白色)的,對其再焊就可以把二極管的正負極焊對。發(fā)光二級管的兩個管腳是一長一短的,長的那根是正極,試驗板已經把發(fā)光二極管的正負極標上去,真樣也很容易就把放光二極管焊好。&l
106、t;/p><p> 在焊接過程中遇到的另一個問題就是焊電阻等比較矮的元件時,焊好后發(fā)現(xiàn)元件沒有緊貼在板上,這是就要把焊錫熔調,調整元件的位置,有時候在熔焊錫時,會把焊盤弄調,這時可以在元件面上焊,應為試驗板元件面和焊接面都有焊盤的。另外,焊接元件時一定要記住先焊矮的元件,再焊高的,這樣就方便把元件緊貼在板上。</p><p> 焊接結束后,把測數碼管的程序下載到CPLD里,發(fā)現(xiàn)有一個數碼管
107、的亮得不正常,程序寫的是8為數碼管從右向左依次顯示0——9,發(fā)現(xiàn)左數第四位的二級管是在其他管亮過一編后再閃一下,懷疑是于這為數碼管連接的三極管壞了,根據電路圖,找到和這為數碼管相連的三級管是Q6,把這個三極管換掉后,數碼管就正常顯示了。</p><p><b> 2.發(fā)射板部分</b></p><p> 發(fā)射板是采用面包板,根據PT2248和少量外圍元件組成的紅外
108、遙控發(fā)射電路設計成的,焊接部分遇到的問題和EDA板焊接遇到的問題類似,只不過,發(fā)射板的電路顯得比較擁擠,焊盤挨得比較緊,很容易造成短路,焊接時要十分小心,發(fā)現(xiàn)兩個焊盤有可能短路時馬上用萬用表的歐姆檔檢測。</p><p> 發(fā)射板焊接電路最復雜的就是3*6鍵盤矩陣的焊接電路??紤]到按鍵的四個管角中,在同一測的兩個角是不導通的,而不再同一側的相對的兩隊管腳是內部導通的,當按鍵按下時,四個管角全部連通,開關就相當于
109、一個節(jié)點,把18個按鍵豎著排列在板上,同一側的管角處于上下位置,把每個同側管角的右邊那個和它正上方(或下方)的按鍵的管腳焊在一起,這樣6根豎線就形成了。在三行按鍵之間和最下面那行按鍵的下方固定一條導線,把三行按鍵下方同測管腳的左邊那個通過導線連起來,這樣三條橫線也形成了。到此,3*6的鍵盤矩陣電路就焊接完畢,再把這3根橫線和6根豎線根據電路圖接到芯片上,再焊其他元件,發(fā)射板電路就完成了。</p><p> 在設
110、計發(fā)射板電路時,我在紅外發(fā)射二極管的旁邊串連了一個發(fā)光二級管,這樣有按鍵按下時,發(fā)光二級光就會亮。這樣就能檢測發(fā)射板是否有信號發(fā)出,也可以檢測發(fā)射板是工作正常。</p><p><b> 二、心得體會</b></p><p> 歷經快學期的兩周的數字系統(tǒng)設計在我把我親手做的EDA試驗板和紅外發(fā)射板,還有CPLD里面的程序交到老師手中并通過驗收的那一克結束了??吹阶?/p>
111、己的作品,雖然不管從外表還是實現(xiàn)的功能都和其他同學的相差無幾,但心里有一股很強的成就感,也有如釋重負的輕快。</p><p> 短短兩周的時間很可能是我走向社會,走向工作的一個縮影,遇到難題,積極求證,分析問題,解決問題…一系列的過程不僅讓我體會到了面對問題無從下手的尷尬,也讓我體味到問題迎刃而解的喜悅。這次課程設計使我學到了許多東西,不僅理論知識,實踐能力得到了很大的提高,也鍛煉了自己的意志。</p&g
112、t;<p> 無可非議,數字系統(tǒng)設計時四門課程設計中設計面最廣,科技含量最大,難度最大,立時最久的一門課程設計。程序方面,設計的程序比微機課程設計的復雜;焊板方面,工作量比高頻課程設計的大;實現(xiàn)的功能方面,比模電課程設計的更前衛(wèi),這些因素時使這次課程設計給我留下了及其極其深刻的印象,也使我學到許多課堂上,課本里根本就學不到的東西。</p><p> 數字系統(tǒng)是現(xiàn)在社會上的熱門話題,這方面的人才的
113、社會需求量也是相當大的。這方面的知識也是很有趣的,特別是程序下載,通過編程可以使實驗板有自己想要的功能,這是一件很有趣的事情。</p><p> 這次課程設計加深了我對FPGA/CPLD的認識,也是我鞏固可VHDL語言的知識,還鍛煉了動手能力,可以說是受益匪淺。我在這方面的知識還是比較薄弱的,但我對這方面的知識很感興趣,這次課程設計給了我一個很好的機會學習數字系統(tǒng)的實踐知識的機會。</p><
114、;p> 這次課程設計也是我學會了不輕言放棄,不怕困難,不怕麻煩,在做實驗的過程中,會重復不斷的遇到一些相同的問題,特別是程序和電路的調試時,往往要經過很多次反復的檢查、測量才能找到問題的所在,要使不能靜下心來,仔細研究,完成課程設計時不可能的。</p><p> 這次的課程設計給了我又一次認識自我的機會,讓我學會了從更多角度分析解決問題,設計的過程中也積攢了一些相關的項目經驗,我想對我以后的實際操作肯定
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 紅外遙控汽車設計畢業(yè)論文
- 紅外遙控系統(tǒng)畢業(yè)論文外文翻譯
- 畢業(yè)論文——單片機紅外遙控系統(tǒng)設計
- 紅外遙控電路設計畢業(yè)論文
- 紅外遙控電路設計畢業(yè)論文
- 紅外遙控裝置的設計畢業(yè)論文
- 紅外遙控開關的硬件設計畢業(yè)論文
- 紅外遙控節(jié)能智能插座設計畢業(yè)論文
- 紅外遙控賽車軟件算法設計畢業(yè)論文
- 紅外遙控賽車軟件算法設計畢業(yè)論文
- 畢業(yè)論文范文——單片機紅外遙控系統(tǒng)設計
- 基于fpga的紅外遙控器設計【畢業(yè)論文】
- 畢業(yè)設計(論文)紅外遙控開關
- 基于單片機的紅外遙控密碼鎖設計-紅外遙控密碼鎖畢業(yè)論文
- 機械電子工程畢業(yè)論文-智能紅外電風扇遙控系統(tǒng)設計
- 基于51單片機的紅外遙控電機系統(tǒng)設計畢業(yè)論文
- 智能遙控窗簾系統(tǒng)設計【畢業(yè)論文】
- 基于單片機的紅外遙控器設計【畢業(yè)論文】
- 測控技術與儀器 畢業(yè)論文范文——紅外遙控溫度監(jiān)測系統(tǒng)的設計
- 遠紅外遙控電子密碼鎖畢業(yè)論文
評論
0/150
提交評論