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