eda課程設(shè)計---出租車計費器設(shè)計_第1頁
已閱讀1頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  EDA基礎(chǔ)課程設(shè)計</b></p><p>  題目: 出租車計費器設(shè)計</p><p>  學(xué)生姓名: *</p><p>  學(xué) 號: 2009*******</p><p>  班 級: 電子信息工程09-02班</p

2、><p>  專 業(yè): 電子信息工程</p><p>  所在院系: 電氣與信息工程學(xué)院 </p><p>  指導(dǎo)教師: ***** </p><p>  起止日期:2012年5月28日至2012年6月8日</p><p><b>  出租車計費器設(shè)

3、計</b></p><p><b>  摘要</b></p><p>  隨著我國社會經(jīng)濟的全面發(fā)展,各大中小城市的出租車營運事業(yè)發(fā)展迅速,出租車已經(jīng)成為人們?nèi)粘3鲂羞x擇較為普遍的交通工具。出租車計費器是出租車營運收費的專用智能化儀表,是出租車市場規(guī)范化 、標(biāo)準(zhǔn)化以及減少司機與乘客之間發(fā)生糾紛的重要設(shè)備。一種功能完備、簡單易用、計量準(zhǔn)確的出租車計費器是加強

4、出租車行業(yè)管理、提高服務(wù)質(zhì)量的必備品。</p><p>  本文介紹了出租車計費器系統(tǒng)在實際生產(chǎn)生活中的重要性,根據(jù)預(yù)定的設(shè)計要求和設(shè)計思路,采用VHDL硬件描述語言作為設(shè)計手段,采用自頂向下的設(shè)計思路設(shè)計了一個實際的基于EP3C80F780C8N芯片的出租車計費系統(tǒng),通過在QuartusⅡ8.1軟件下進行模擬仿真,并進行相應(yīng)的硬件下載調(diào)試,證明該出租車計費系統(tǒng)具有實用出租車計費器的基本功能,各技術(shù)指標(biāo)符合預(yù)定標(biāo)

5、準(zhǔn),如能進一步完善,將可以實用化和市場化,具有一定實用性。</p><p>  關(guān)鍵詞:出租車計費器;現(xiàn)場可編程門陣列;仿真 </p><p><b>  目 錄</b></p><p><b>  1 設(shè)計目的1</b></p><p><b>  2 設(shè)計指標(biāo)2</b>

6、;</p><p><b>  2.1 課題2</b></p><p><b>  2.2技術(shù)指標(biāo)2</b></p><p>  3 VHDL簡介2</p><p>  4 出租車計費器功能設(shè)計4</p><p>  4.1出租車計費器功能設(shè)計4</p>

7、<p>  4.2出租車計費器原理5</p><p><b>  4.3模塊設(shè)計5</b></p><p>  4.3.1點陣動態(tài)顯示模塊5</p><p>  4.3.2里程動態(tài)顯示模塊6</p><p>  4.3.3計費動態(tài)顯示模塊6</p><p>  5 出租車計

8、費器的實現(xiàn)6</p><p>  5.1出租車計費器功能設(shè)計6</p><p>  5.2出租車計費器原理7</p><p>  5.3模塊設(shè)計10</p><p>  6 出租車計費器的仿真結(jié)果18</p><p>  6.1管腳分配18</p><p>  6.2顯示模塊仿真結(jié)果

9、19</p><p><b>  7 設(shè)計總結(jié)21</b></p><p><b>  參考文獻22</b></p><p>  附錄 出租車計費器VHDL源程序23</p><p><b>  1 設(shè)計目的</b></p><p>  隨著我國

10、社會經(jīng)濟的全面發(fā)展,各大中小城市的出租車營運事業(yè)發(fā)展迅速,出租車已經(jīng)成為人們?nèi)粘3鲂羞x擇較為普遍的交通工具。出租車計費器是出租車營運收費的專用智能化儀表,是出租車市場規(guī)范化 、標(biāo)準(zhǔn)化以及減少司機與乘客之間發(fā)生糾紛的重要設(shè)備。一種功能完備、簡單易用、計量準(zhǔn)確的出租車計費器是加強出租車行業(yè)管理、提高服務(wù)質(zhì)量的必備品。本文介紹了出租車計費器系統(tǒng)在實際生產(chǎn)生活中的重要性,根據(jù)預(yù)定的設(shè)計要求和設(shè)計思路,采用VHDL硬件描述語言作為設(shè)計手段,采用自

11、頂向下的設(shè)計思路設(shè)計了一個實際的基于AheraFPGA芯片的出租車計費系統(tǒng),通過在QuartusⅡ8.1軟件下進行模擬仿真,并進行相應(yīng)的硬件下載調(diào)試,證明該出租車計費系統(tǒng)具有實用出租車計費器的基本功能,各技術(shù)指標(biāo)符合預(yù)定標(biāo)準(zhǔn),如能進一步完善,將可以實用化和市場化,具有一定實用性。</p><p>  傳統(tǒng)出租車計費器多數(shù)由單片機實現(xiàn),可擴展的資源有限,硬件電路復(fù)雜,不利于系統(tǒng)功能升級,容易在運營過程中產(chǎn)生干擾,影

12、響系統(tǒng)的使用。并且由于分立器件多,造成電源功耗大,影響芯片的使用壽命。而基于FPGA的出租車計費器可以解決電子系統(tǒng)小型化、低功耗、高可靠性等問題,具有非常重要的實際意義。</p><p><b>  2 設(shè)計指標(biāo)</b></p><p><b>  2.1 課題</b></p><p><b>  出租車計費器設(shè)

13、計</b></p><p><b>  2.2技術(shù)指標(biāo)</b></p><p>  1.用直流電動機模擬出租車輪子,通過8個七段碼管的前四個顯示里程,后四個顯示費用。</p><p>  2.利用16*16點陣顯示每公里費用。</p><p>  3.白天黑夜出租車不同費用價格。</p><

14、;p>  4.計算超出一定里程的返程費用。</p><p><b>  3 VHDL簡介</b></p><p>  VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,翻譯成中文就是超高速集成電路硬件描述語言,因此它的應(yīng)用主要是應(yīng)用在數(shù)字電路的設(shè)計中。1987年底

15、,VHDL被IEEE和美國國防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語言。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076(簡稱87版)之后,各EDA公司相繼推出了自己的VHDL設(shè)計環(huán)境,或宣布自己的設(shè)計工具可以和VHDL接口。</p><p>  此后VHDL在電子設(shè)計領(lǐng)域得到了廣泛的認(rèn)可,并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語言。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴展VHDL的內(nèi)容,

16、公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本,(簡稱93版)?,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實上的通用硬件描述語言。有專家認(rèn)為,在新的世紀(jì)中,VHDL與Verilog語言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計任務(wù)。VHDL語言是一種用于電路設(shè)計的高級語言。它在80年代的后期出現(xiàn)。最初是由美國國防部開發(fā)出來供美軍用來提高設(shè)計的可靠性和縮減開發(fā)周

17、期的一種使用范圍較小的設(shè)計語言 。  </p><p>  VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式、描述風(fēng)格以及語法是十分類似于一般的計算機高級語言。VHDL的程序結(jié)構(gòu)特點是將一項工程設(shè)計,或稱設(shè)計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實體的內(nèi)部功能和算法完成部分。在對一個設(shè)

18、計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就可以直接調(diào)用這個實體。這種將設(shè)計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計的基本點。</p><p>  由于VHDL已經(jīng)成為IEEE標(biāo)準(zhǔn)所規(guī)范的硬件描述語言,目前大多數(shù)EDA工具幾乎都支持VHDL,這為VHDL的進一步推廣和廣泛應(yīng)用奠定了基礎(chǔ)。在硬件電路設(shè)計過程中,主要的設(shè)計文件是用VHDL編寫的源代碼,因為VHDL易讀和結(jié)構(gòu)化,所以易于修改設(shè)計。<

19、/p><p>  VHDL具有多層次的設(shè)計描述功能,既可以描述系統(tǒng)級電路,又可以描述門級電路。而描述既可以采用行為描述、寄存器傳輸描述或結(jié)構(gòu)描述,也可以采用三者混合的混合級描述。另外,VHDL支持慣性延遲和傳輸延遲,還可以準(zhǔn)確地建立硬件電路模型。VHDL支持預(yù)定義的和自定義的數(shù)據(jù)類型,給硬件描述帶來較大的自由度,使設(shè)計人員能夠方便地創(chuàng)建高層次的系統(tǒng)模型。</p><p><b>  

20、4 設(shè)計過程</b></p><p>  4.1 出租車計費器功能設(shè)計</p><p>  該系統(tǒng)的設(shè)計可以采用分立元件來搭建,也可以通過單片機來設(shè)計,而使用可編程FPGA來設(shè)計,具有設(shè)計周期短、易于修改等明顯特點,而且隨著可編程邏輯器件和EDA軟件的飛速發(fā)展,越來越多的電子系統(tǒng)采用FPGA來設(shè)計,一旦該系統(tǒng)達到一定的量產(chǎn)規(guī)模,也比較容易轉(zhuǎn)化為ASIC芯片設(shè)計。因此,基于FPG

21、A來設(shè)計一個出租車的計費器。本系統(tǒng)在EDA工具軟件QuartusⅡ8.1中,采用硬件描述語言和原理圖設(shè)計相結(jié)合的方法,進行各個模塊的設(shè)計,最終將各個模塊組成整個系統(tǒng)。</p><p>  FPGA設(shè)計劃分為以下幾個功能模塊,它們分別是:點陣顯示模塊、計程模塊、輸出數(shù)據(jù)顯示模塊,將每個模塊的功能實現(xiàn)后,通過合理連接和協(xié)調(diào)各相關(guān)端口,得到整個電路系統(tǒng)。下面分別是各主要模塊的簡單描述。</p><p

22、> ?、冱c陣顯示模塊:采用一種16路動態(tài)分時掃描技術(shù)來實現(xiàn)16*16點陣動態(tài)顯示白天和夜間不同的每公里費用。具體方法是,將16×16數(shù)組的顯示模塊的行輸入端與FPGA內(nèi)的只讀存儲器ROM的16位數(shù)據(jù)輸出端口相連,16個列控制端與一個4-16譯碼器的輸出相連,而譯碼器的輸入端和片選信號又與FPGA內(nèi)的列掃描控制模塊的輸出端口相連。</p><p> ?、谟嫵棠K:出租車能夠顯示行駛的里程,可以通過直

23、流電動機的轉(zhuǎn)動產(chǎn)生脈沖,然后通過計數(shù)器對脈沖進行計數(shù)來實現(xiàn)。本次設(shè)計中里程數(shù)精確到O.1 km,也就是100m,由電動機給出的脈沖信號作為里程計數(shù)器的時鐘信號,里程計數(shù)器每計數(shù)1 km還會周期性地輸出一個脈沖信號,稱為1 km脈沖信號,可以通過一定的組合電路來實現(xiàn)。里程計數(shù)器可以用一個四位BCD碼計數(shù)器來實現(xiàn),最大能顯示到9999,根據(jù)設(shè)計的要求和條件限制,這里前三位為整數(shù)部分,最后一位為小數(shù)部分,即最大能顯示里程999.9 km。&l

24、t;/p><p> ?、蹟?shù)據(jù)顯示模塊:系統(tǒng)最核心的部分就是計費如何實現(xiàn)。這里就需要設(shè)計一個BCD碼的加法器,在起步價的基礎(chǔ)上,根據(jù)行駛里程的不同,依據(jù)計費標(biāo)準(zhǔn),每增加1 km加上一個單價。系統(tǒng)中用到了四位BCD碼加法器,可以實現(xiàn)四位十進制數(shù)的加法運算。加法器輸出的結(jié)果就是乘客應(yīng)付的費用,這里以元為單位,最大能顯示9999元。四位BCD碼加法器由四個一位BCD碼加法器級聯(lián)而成。四位BCD碼加法器輸出的結(jié)果通過緩沖器以后

25、,反饋到輸入端重新作為一個加數(shù),在脈沖信號的作用下,每來一個脈沖就和單價相加,形成連續(xù)累加的功能。</p><p>  4.2 出租車計費器原理</p><p>  圖1 出租車計費器原理框圖</p><p><b>  4.3 模塊設(shè)計</b></p><p>  4.3.1 點陣動態(tài)顯示模塊</p>

26、<p>  當(dāng)白天、夜間轉(zhuǎn)換開關(guān)K1置于關(guān)狀態(tài)(低電平)時,16*16點陣顯示文字“白天每公里2元”,文字逐個顯示,不斷循環(huán)以告知乘客出租價格;當(dāng)K1置于開狀態(tài)(高電平)時,顯示“夜間每公里3元”。其原理結(jié)構(gòu)圖如下:</p><p>  圖2 點陣顯示原理結(jié)構(gòu)圖</p><p>  4.3.2 里程動態(tài)顯示模塊</p><p>  其包括直流電動機發(fā)出的

27、脈沖以及將計數(shù)顯示動態(tài)顯示在前四個七段數(shù)碼管,每來一個脈沖里程值加0.1(控制器每發(fā)一個脈沖代表運行了0.1公里)。當(dāng)S1按鍵按下進行復(fù)位后數(shù)值歸零,重新開始計數(shù)。</p><p>  4.3.3 計費動態(tài)顯示模塊</p><p>  其初值為6元,當(dāng)里程超過2公里后才接受直流電動機發(fā)出的脈沖的驅(qū)動,并且計數(shù)顯示動態(tài)顯示出來,白天期間每來10個脈沖(代表運行了1公里)其數(shù)值加2元,當(dāng)里程超

28、過20km時加收50%的返程費,即數(shù)值加3元;夜間20km以內(nèi)單價3元,當(dāng)超過20km時加收返程費。當(dāng)S1按鍵按下進行復(fù)位后數(shù)值歸零,重新開始計費。</p><p>  5 出租車計費器的實現(xiàn)</p><p>  5.1 計程模塊程序設(shè)計</p><p>  計程模塊的VHDL源程序如下:</p><p>  process(Motor,Rs

29、t) --計里程</p><p><b>  begin</b></p><p>  if(Rst='0') then</p><p>  Meter1<=0;</p><p>  Meter10<=0;</p><p>  Meter100<=0;</

30、p><p>  Meter1K<=0;</p><p>  elsif(Motor'event and Motor='1') then</p><p>  if(Meter1=9) then Meter1<=0;</p><p>  if(Meter10=9) then Meter10<=

31、0;</p><p>  if(Meter100=9) then Meter100<=0;</p><p>  if(Meter1K=9) then Meter1K<=0;</p><p><b>  else </b></p><p>  Meter1K<=Meter1K+1;<

32、;/p><p><b>  end if;</b></p><p><b>  else</b></p><p>  Meter100<=Meter100+1;</p><p><b>  end if;</b></p><p><b>  

33、else</b></p><p>  Meter10<=Meter10+1;</p><p><b>  end if;</b></p><p><b>  else </b></p><p>  Meter1<=Meter1+1;</p><p>&

34、lt;b>  end if;</b></p><p><b>  end if; </b></p><p>  end process;</p><p>  出租車能夠顯示行駛的里程,可以通過直流電動機的轉(zhuǎn)動產(chǎn)生脈沖,然后通過計數(shù)器對脈沖進行計數(shù)來實現(xiàn)。本次設(shè)計中里程數(shù)精確到O.1 km,也就是100m,由電動機給出的脈沖信號

35、作為里程計數(shù)器的時鐘信號,里程計數(shù)器每計數(shù)1 km還會周期性地輸出一個脈沖信號,稱為1 km脈沖信號,可以通過一定的組合電路來實現(xiàn)。里程計數(shù)器可以用一個四位BCD碼計數(shù)器來實現(xiàn),最大能顯示到9999,根據(jù)設(shè)計的要求和條件限制,這里前三位為整數(shù)部分,最后一位為小數(shù)部分,即最大能顯示里程999.9 km。</p><p>  5.1 計費模塊程序設(shè)計</p><p>  計費模塊的VHDL源程

36、序如下:</p><p>  process(Clk,Rst,dn) --計費模塊</p><p><b>  begin</b></p><p>  if(Rst='0') then</p><p>  Money1<=0;</p><p>  Money10<

37、=0;</p><p>  Money100<=0;</p><p>  elsif(Motor'event and Motor='1') then</p><p>  if( Meter10<2 and Meter100<1 and Meter1k<1) then --里程小于2Km時顯示起步價</p&g

38、t;<p>  Money100<=0;</p><p>  Money10<=0; </p><p>  Money1<=6; --起步價6元</p><p>  Old_Money1<=0;</p><p><b>  else</b></p>&l

39、t;p>  if (dn='0' and Meter100<2 and Meter1k<0) then</p><p>  if (Old_Money1=9) then Old_Money1<=0; ---白天</p><p>  if (Money1=9) then Money1<=0;</p&g

40、t;<p>  if(Money10=9) then Money10<=0;</p><p>  if(Money100=9) then Money100<=0;</p><p>  else Money100<=Money100+1;</p><p><b>  end if;</b><

41、/p><p>  else Money10<=Money10 +1;</p><p><b>  end if;</b></p><p>  else Money1<=Money1 +1;</p><p>  end if; </p><p><b>  else &l

42、t;/b></p><p>  Old_Money1<= Old_Money1 +2; --- 續(xù)程單價每公里2元</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  if (dn=’0’ and (Meter1

43、00>1 or Meter1k>0)) then ---白天超過20km加收返程費</p><p>  if (Old_Money1=9) then Old_Money1<=0; </p><p>  if (Money1=9) then Money1<=0;</p><p>  if(Money10=9) the

44、n Money10<=0;</p><p>  if(Money100=9) then Money100<=0;</p><p>  else Money100<=Money100+1;</p><p><b>  end if;</b></p><p>  else Money10&l

45、t;=Money10 +1;</p><p><b>  end if;</b></p><p>  else Money1<=Money1 +1;</p><p>  end if; </p><p><b>  else </b></p><p>  Old

46、_Money1<= Old_Money1 +3; ---加收返程費</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  if (dn='1' and Meter100<2 and Meter1k<0) t

47、hen</p><p>  if (Old_Money1=9) then Old_Money1<=0; ---夜間</p><p>  if (Money1=9) then Money1<=0;</p><p>  if(Money10=9) then Money10<=0;</p>&

48、lt;p>  if(Money100=9) then Money100<=0;</p><p>  else Money100<=Money100+1;</p><p><b>  end if;</b></p><p>  else Money10<=Money10 +1;</p><p&g

49、t;<b>  end if;</b></p><p>  else Money1<=Money1 +1;</p><p>  end if; </p><p><b>  else </b></p><p>  Old_Money1<= Old_Money1 +3; ---

50、 續(xù)程單價每公里3元</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  if (dn='1' and (Meter100>1 or Meter1k>0)) then ---夜間超過20km加收返程費</p>

51、<p>  if (Old_Money1=9) then Old_Money1<=0; </p><p>  if (Money1=9) then Money1<=0;</p><p>  if(Money10=9) then Money10<=0;</p><p>  if(Money100=9)

52、 then Money100<=0;</p><p>  else Money100<=Money100+1;</p><p><b>  end if;</b></p><p>  else Money10<=Money10 +1;</p><p><b>  end if;<

53、/b></p><p>  else Money1<=Money1 +1;</p><p>  end if; </p><p><b>  else </b></p><p>  Old_Money1<= Old_Money1 +4; ---加收的返程費</p><

54、;p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;<

55、/p><p>  process(SEG_SEL) --- 顯示 </p><p><b>  begin</b></p><p>  case (SEG_SEL+1) is</p><p>  when "000"=>Disp_Temp<=Meter1K;</p>&l

56、t;p>  when "001"=>Disp_Temp<=Meter100;</p><p>  when "010"=>Disp_Temp<=Meter10;</p><p>  when "011"=>Disp_Temp<=Meter1;</p><p>  w

57、hen "100"=>Disp_Temp<=10;</p><p>  when "101"=>Disp_Temp<=Money100;</p><p>  when "110"=>Disp_Temp<=Money10;</p><p>  when "111&

58、quot;=>Disp_Temp<=Money1;</p><p>  end case; </p><p>  end process;</p><p>  process(Clk)</p><p><b>  begin</b></p><p>  if(Clk'even

59、t and Clk='1') then --掃描累加 </p><p>  SEG_SEL<=SEG_SEL+1;</p><p>  if(SEG_SEL=3) then</p><p>  Display<=Disp_Decode or "1000000";</p><p><b

60、>  else </b></p><p>  Display<=Disp_Decode;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p&g

61、t;  process(Disp_Temp) --顯示轉(zhuǎn)換</p><p><b>  begin</b></p><p>  case Disp_Temp is</p><p>  when 0=>Disp_Decode<="00111111"; --0</p><p> 

62、 when 1=>Disp_Decode<="00000110"; --1</p><p>  when 2=>Disp_Decode<="01011011"; --2</p><p>  when 3=>Disp_Decode<="01001111"; --3</p>

63、<p>  when 4=>Disp_Decode<="01100110"; --4</p><p>  when 5=>Disp_Decode<="01101101"; --5</p><p>  when 6=>Disp_Decode<="01111101"; --6

64、</p><p>  when 7=>Disp_Decode<="00000111"; --7</p><p>  when 8=>Disp_Decode<="01111111"; --8</p><p>  when 9=>Disp_Decode<="01101111&q

65、uot;; --9</p><p>  when 10=>Disp_Decode<="01000000"; </p><p>  when others=>Disp_Decode<="00000000"; --全滅</p><p><b>  end case;</b>

66、</p><p>  end process; </p><p>  在起步價的基礎(chǔ)上,根據(jù)行駛里程的不同,依據(jù)計費標(biāo)準(zhǔn),每增加1 km加上一個單價。系統(tǒng)中用到了四位BCD碼加法器,可以實現(xiàn)四位十進制數(shù)的加法運算。加法器輸出的結(jié)果就是乘客應(yīng)付的費用,這里以元為單位,最大能顯示9999元。四位BCD碼加法器由四個一位BCD碼加法器級聯(lián)而成。四位BCD碼加法器輸出的結(jié)果通過緩沖器以后,反饋

67、到輸入端重新作為一個加數(shù),在脈沖信號的作用下,每來一個脈沖就和單價相加,形成連續(xù)累加的功能。此設(shè)計中2km以內(nèi)起步價為6元,白天續(xù)程單價2元,超過20km為3元;夜間續(xù)程單價3元,超過20km為4元。</p><p>  5.3 點陣顯示模塊程序</p><p>  點陣顯示模塊的VHDL源程序如下:</p><p>  process(clk)

68、 ---顯示時序控制 </p><p><b>  begin</b></p><p>  if clk'event and clk='1' then</p><p>  dount<=dount+1;</p><p>  if dount=255 then<

69、/p><p>  if S=15 then</p><p>  S<="0000";</p><p><b>  else</b></p><p><b>  s<=S+1;</b></p><p><b>  end if;<

70、;/b></p><p><b>  s<=s+1;</b></p><p><b>  else</b></p><p><b>  s<=S;</b></p><p><b>  end if;</b></p><

71、;p>  if cdount<15 then</p><p>  cdount<=cdount+1;</p><p><b>  else</b></p><p>  cdount<="0000";</p><p><b>  end if;</b>

72、;</p><p><b>  end if;</b></p><p>  keyc<=cdount;</p><p>  end process;</p><p>  process(cdount,s,dn)</p><p><b>  begin</b><

73、/p><p>  if(dn='0') then</p><p>  if s="0000" then</p><p>  case cdount is</p><p>  when "0000"=>keyr<="1111111111111111"; --

74、點陣顯示 白 </p><p>  when "0001"=>keyr<="1111111111111111";</p><p>  when "0010"=>keyr<="1100000000000111";</p><p>  when "001

75、1"=>keyr<="1101111011110111";</p><p>  when "0100"=>keyr<="1101111011110011";</p><p>  when "0101"=>keyr<="1101111011110101&qu

76、ot;;</p><p>  when "0110"=>keyr<="1101111011110110";</p><p>  when "0111"=>keyr<="1101111011110111";</p><p>  when "1000&quo

77、t;=>keyr<="1101111011110111";</p><p>  when "1001"=>keyr<="1101111011110111";</p><p>  when "1010"=>keyr<="1101111011110111";&

78、lt;/p><p>  when "1011"=>keyr<="1101111011110111";</p><p>  when "1100"=>keyr<="1110111011101001";</p><p>  when "1101"=&g

79、t;keyr<="1100000000000111";</p><p>  when "1110"=>keyr<="1111111111111111";</p><p>  when "1111"=>keyr<="1111111111111111";</p

80、><p>  when others=>keyr<="1111111111111111";</p><p>  end case; </p><p>  elsif s="0001" then </p><p>  case cdount is</p><p>  

81、when "0000"=>keyr<="0111111110111111"; --點陣顯示 天</p><p>  when "0001"=>keyr<="0111111110111101";</p><p>  when "0010"=>keyr<=&q

82、uot;1011111110111101";</p><p>  when "0011"=>keyr<="1101111110111101";</p><p>  when "0100"=>keyr<="1110111110111101";</p><p&g

83、t;  when "0101"=>keyr<="1111001110111101";</p><p>  when "0110"=>keyr<="1111110010111101";</p><p>  when "0111"=>keyr<="1

84、111111100000001";</p><p>  when "1000"=>keyr<="1111110010111101";</p><p>  when "1001"=>keyr<="1111001110111101";</p><p>  w

85、hen "1010"=>keyr<="1110111110111101";</p><p>  when "1011"=>keyr<="1101111110111101";</p><p>  when "1100"=>keyr<="101111

86、1110111100";</p><p>  when "1101"=>keyr<="0011111110011101";</p><p>  when "1110"=>keyr<="1011111110111111";</p><p>  when &

87、quot;1111"=>keyr<="1111111111111111";</p><p>  when others=>keyr<="1111111111111111";</p><p><b>  end case;</b></p><p>  elsif s=&q

88、uot;0010" then </p><p>  case cdount is</p><p>  when "0000"=>keyr<="1111111011111111"; --點陣顯示 每</p><p>  when "0001"=>keyr<="1

89、111111011101111";</p><p>  when "0010"=>keyr<="1110001011110111";</p><p>  when "0011"=>keyr<="1110110000001000";</p><p>  w

90、hen "0100"=>keyr<="1110111011101011";</p><p>  when "0101"=>keyr<="1110111011101011";</p><p>  when "0110"=>keyr<="111011

91、0011001011";</p><p>  when "0111"=>keyr<="1110101010101011";</p><p>  when "1000"=>keyr<="1010111011101011";</p><p>  when &

92、quot;1001"=>keyr<="0110111011101011";</p><p>  when "1010"=>keyr<="1000111011101011";</p><p>  when "1011"=>keyr<="11100000000

93、00011";</p><p>  when "1100"=>keyr<="1110111011101001";</p><p>  when "1101"=>keyr<="1111111001111011";</p><p>  when "

94、1110"=>keyr<="1111111011111111";</p><p>  when "1111"=>keyr<="1111111111111111";</p><p>  when others=>keyr<="1111111111111111";<

95、;/p><p>  end case; </p><p>  elsif s="0011" then </p><p>  case cdount is</p><p>  when "0000"=>keyr<="1111111011111111"; --點陣顯示 公&

96、lt;/p><p>  when "0001"=>keyr<="1111111011111111";</p><p>  when "0010"=>keyr<="1111111101111111";</p><p>  when "0011"=&g

97、t;keyr<="1100111110111111";</p><p>  when "0100"=>keyr<="1101011111001111";</p><p>  when "0101"=>keyr<="1101101111110011";</p

98、><p>  when "0110"=>keyr<="1101110011111111";</p><p>  when "0111"=>keyr<="1101111100111111";</p><p>  when "1000"=>key

99、r<="1101111111111001";</p><p>  when "1001"=>keyr<="1101111111111001";</p><p>  when "1010"=>keyr<="1100011111100111";</p>

100、<p>  when "1011"=>keyr<="1100111111011111";</p><p>  when "1100"=>keyr<="1001111110111111";</p><p>  when "1101"=>keyr<

101、="1111111101111111";</p><p>  when "1110"=>keyr<="1111111001111111";</p><p>  when "1111"=>keyr<="1111111101111111";</p><

102、p>  when others=>keyr<="1111111111111111";</p><p><b>  end case;</b></p><p>  elsif s="0100" then</p><p>  case cdount is</p><p

103、>  when "0000"=>keyr<="1011111111111111"; --點陣顯示 里</p><p>  when "0001"=>keyr<="1011111111111111";</p><p>  when "0010"=>keyr&

104、lt;="1011011000000001";</p><p>  when "0011"=>keyr<="1011011011101101";</p><p>  when "0100"=>keyr<="1011011011101101";</p>&

105、lt;p>  when "0101"=>keyr<="1011011011101101";</p><p>  when "0110"=>keyr<="1011011011101101";</p><p>  when "0111"=>keyr<=&

106、quot;1000000000000001";</p><p>  when "1000"=>keyr<="1011011011101101";</p><p>  when "1001"=>keyr<="1011011011101101";</p><p&

107、gt;  when "1010"=>keyr<="1011011011101101";</p><p>  when "1011"=>keyr<="1011011011101101";</p><p>  when "1100"=>keyr<="

108、1011011000000001";</p><p>  when "1101"=>keyr<="1011111111111111";</p><p>  when "1110"=>keyr<="1011111111111111";</p><p>  

109、when "1111"=>keyr<="1111111111111111";</p><p>  when others=>keyr<="1111111111111111";</p><p><b>  end case;</b></p><p>  elsif

110、 s="0101" then</p><p>  case cdount is</p><p>  when "0000"=>eyr<="1111111111111111"; --點陣顯示 2</p><p>  when "0001"=>keyr<=&qu

111、ot;1111111111111111";</p><p>  when "0010"=>keyr<="1100111110011111";</p><p>  when "0011"=>keyr<="1100111110001111";</p><p>

112、;  when "0100"=>keyr<="1100011110000111";</p><p>  when "0101"=>keyr<="1100001111110011";</p><p>  when "0110"=>keyr<="11

113、00101111110011";</p><p>  when "0111"=>keyr<="1100100111110011";</p><p>  when "1000"=>keyr<="1100110111110011";</p><p>  wh

114、en "1001"=>keyr<="1100110011110011";</p><p>  when "1010"=>keyr<="1100111001110011";</p><p>  when "1011"=>keyr<="1100111

115、000000111";</p><p>  when "1100"=>keyr<="1100111100001111";</p><p>  when "1101"=>keyr<="1100011110011111";</p><p>  when &q

116、uot;1110"=>keyr<="1111111111111111";</p><p>  when "1111"=>keyr<="1111111111111111";</p><p>  when others=>keyr<="1111111111111111"

117、;</p><p><b>  end case;</b></p><p>  elsif s>5 then</p><p>  case cdount is</p><p>  when "0000"=>keyr<="0111111111011111";

118、--點陣顯示 元</p><p>  when "0001"=>keyr<="0111111111011111";</p><p>  when "0010"=>keyr<="1011111111011101";</p><p>  when "0011

119、"=>keyr<="1101111111011101";</p><p>  when "0100"=>keyr<="1110011111011101";</p><p>  when "0101"=>keyr<="1111100000011101&quo

120、t;;</p><p>  when "0110"=>keyr<="1111111111011101";</p><p>  when "0111"=>keyr<="1111111111011101";</p><p>  when "1000"

121、;=>keyr<="1111111111011101";</p><p>  when "1001"=>keyr<="1100000000011101";</p><p>  when "1010"=>keyr<="1011111111011101";&l

122、t;/p><p>  when "1011"=>keyr<="1011111111011101";</p><p>  when "1100"=>keyr<="1011111111011101";</p><p>  when "1101"=>

123、;keyr<="1011111111011101";</p><p>  when "1110"=>keyr<="1011111111011111";</p><p>  when "1111"=>keyr<="1000111111111111";</p&

124、gt;<p>  when others=>keyr<="1111111111111111";</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p><b>  elsif</b><

125、;/p><p>  s="0000" then</p><p>  case cdount is</p><p>  when "0000"=>keyr<="1111110111111011"; --點陣顯示 夜</p><p>  when "0001"

126、;=>keyr<="1111111011111011";</p><p>  when "0010"=>keyr<="1111111101111011";</p><p>  when "0011"=>keyr<="0000000000011011";&l

127、t;/p><p>  when "0100"=>keyr<="0111110111100011";</p><p>  when "0101"=>keyr<="0111111011111011";</p><p>  when "0110"=>

128、;keyr<="1011111001111010";</p><p>  when "0111"=>keyr<="1101110110111001";</p><p>  when "1000"=>keyr<="1110101101000011";</p&

129、gt;<p>  when "1001"=>keyr<="1111011011011011";</p><p>  when "1010"=>keyr<="1110101111011011";</p><p>  when "1011"=>keyr

130、<="1101110011011011";</p><p>  when "1100"=>keyr<="1011111100011011";</p><p>  when "1101"=>keyr<="0011111111111001";</p>

131、<p>  when "1110"=>keyr<="1011111111111011";</p><p>  when "1111"=>keyr<="1111111111111111";</p><p>  when others=>keyr<="1111

132、111111111111";</p><p>  end case; </p><p>  elsif s="0001" then </p><p>  case cdount is</p><p>  when "0000"=>keyr<="11111111111

133、11111"; --點陣顯示 間</p><p>  when "0001"=>keyr<="0000000000000111";</p><p>  when "0010"=>keyr<="1111111111111110";</p><p>  wh

134、en "0011"=>keyr<="1111111111111101";</p><p>  when "0100"=>keyr<="1100000000001001";</p><p>  when "0101"=>keyr<="1110111

135、011101111";</p><p>  when "0110"=>keyr<="1110111011101101";</p><p>  when "0111"=>keyr<="1110111011101101";</p><p>  when &q

136、uot;1000"=>keyr<="1110111011101101";</p><p>  when "1001"=>keyr<="1110111011101101";</p><p>  when "1010"=>keyr<="110000000000

137、0101";</p><p>  when "1011"=>keyr<="1011111111101101";</p><p>  when "1100"=>keyr<="0111111111111101";</p><p>  when "1

138、101"=>keyr<="1000000000000000";</p><p>  when "1110"=>keyr<="1111111111111101";</p><p>  when "1111"=>keyr<="1111111111111111&

139、quot;;</p><p>  when others=>keyr<="1111111111111111";</p><p><b>  end case;</b></p><p>  elsif s="0010" then </p><p>  case cd

140、ount is</p><p>  when "0000"=>keyr<="1111111011111111"; --點陣顯示 每</p><p>  when "0001"=>keyr<="1111111011101111";</p><p>  when &q

141、uot;0010"=>keyr<="1110001011110111";</p><p>  when "0011"=>keyr<="1110110000001000";</p><p>  when "0100"=>keyr<="111011101110

142、1011";</p><p>  when "0101"=>keyr<="1110111011101011";</p><p>  when "0110"=>keyr<="1110110011001011";</p><p>  when "0

143、111"=>keyr<="1110101010101011";</p><p>  when "1000"=>keyr<="1010111011101011";</p><p>  when "1001"=>keyr<="0110111011101011&

144、quot;;</p><p>  when "1010"=>keyr<="1000111011101011";</p><p>  when "1011"=>keyr<="1110000000000011";</p><p>  when "1100&q

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論