數字電子技術基礎實驗報告
——出租車計價器的設計
目錄
一、 實驗要求 - 1 -
1. 基礎功能部分 - 1 -
2. 進階功能部分 - 1 -
3. 發散功能部分 - 1 -
二、 實驗分析 - 2 -
1. 電路實現要求分析 - 2 -
2. 仿真說明 - 4 -
1) 開關功能介紹 - 4 -
2) 程序啟動介紹 - 5 -
3) 程序顯示介紹 - 5 -
三、 電路設計和分析 - 7 -
1. 行駛時間模塊設計 - 7 -
2. 行駛里程模塊設計 - 7 -
3. 低速行駛費模塊 - 8 -
1) 控制部分 - 8 -
2) 計數部分 - 8 -
3) 十進制加法器 - 9 -
4. 普通行駛費用模塊 - 10 -
1) 3公里以內控制模塊 - 10 -
2) 起步價控制模塊 - 11 -
5. 總行駛費用模塊 - 12 -
四、 實驗總結 - 14 -
五、 附錄 - 16 -
1. 元器件數目 - 16 -
2. 程序圖 - 16 -
一、實驗要求1.基礎功能部分
1) 該實驗的行車部分要求實現顯示時間、里程數、價格三方面。
2) 能夠區分普通搭乘,預約搭乘,合乘等不同情況。
3) 行車結束后顯示總價。
2.進階功能部分
1) 增加顯示表,顯示高峰期低速行駛費用。
2) 增加顯示表,顯示普通時段低速行駛費用。
3) 增加顯示表,顯示低速行駛總費用。
3.發散功能部分
二、實驗分析1.電路實現要求分析
根據Project里面關于計程車花費的明細,我們組首先列出了一張表,代表出租車不同時段的起步價。
同時,為了簡便計數,我們將出租車的行駛簡化成了脈沖的輸入,一個脈沖的輸入代表出租車行駛500m,同時一公里的價格改成2元,即每個脈沖增加1元。 我們用開關來模擬是否高峰期和低速行駛。 普通時段低速行駛每5分鐘加收2元,高峰期低速行駛每5分鐘加收5元,下面是收費的明細表。 下面是關于電路的整體模塊劃分:
1) 行駛時間模塊
該部分我們采用6塊74160芯片組成一個時、分、秒的時間顯示器,對于分和秒,我們都用2塊74160組成一個60進制的計數器,用來顯示時間。
2) 行駛里程模塊
里程部分我們記單位為km,便于顯示和統計。
我們采用2塊74160進行顯示,對于每一個脈沖,我們記為500m,即每2個脈沖計數加1。
3) 低速形式費用模塊
該部分我們采用開關來控制是否是低速行駛階段。
同時來判斷是高峰期低速行駛還是普通時段,對于高峰期時段和普通時段,我們分別采用一個74160來計數,同時將計數顯示出來。將顯示時間部分的分鐘部分的進位來當作這部分的CLOCK,當計數到5,即5分鐘的時候,計數加5,通過一個74283加法器來實現。同時這部分的顯示,各位采用了74175的鎖存器,因為這部分是進行跳變的,十位部分我采用了一個74160進行計數,每2個CLOCK計數加1,同時對鎖存器清零。這樣就達到了顯示非連續數字的目的。
4) 行駛總費用模塊
該部分費用其實就是低速行駛費加上普通行駛費,所以我采用了74283的加法器來對這兩部分進行相加同時輸出。
2.仿真說明1) 開關功能介紹
各開關功能介紹表
表示含義
D閉合,出租車低速行駛。
D打開,出租車正常行駛。
E開關打到上面,表示出租車處于高峰期。此時的費用為每5分鐘多收5元。(如左圖)
E開關打到下面,表示出租車處于普通時段。此時的費用為每5分鐘多收2元。(如左圖)
開關S,設置起步價初始值的十位。
開關K,控制出租車是否行駛,同時控制初始值。
開關A,B,C,設置起步價。
A設置起步價13。
B設置起步價18。
C設置起步價19。(左圖為開關B)
2) 程序啟動介紹
在運行程序之前,首先選擇起步價,即13(開關A),18(開關B),19(開關C),注意每次只能選擇一個起步價,否則程序將無法運行。然后運行程序,先按一下開關K,迅速按下開關S,以設置起步價初始值,此時顯示的價格是初始設置的價格,當里程數大于3時,該價格開始增加。
運行過程中,按下開關E,來切換低速行駛時的時間段,一共有2種,一種是高峰期的計數,一種是普通時段的計數。具體情況請見上表。
3) 程序顯示介紹
該程序一共有6大顯示模塊,請見下圖。
注:由于低速行駛分為兩個時間段,所以顯示部分(右上角)也分為2部分,左邊部分為高峰期時低速行駛費用,右邊部分為普通時間段時低速行駛費用。
三、電路設計和分析1. 行駛時間模塊設計
該部分接500kHz的脈沖,同時采用6塊74160進行顯示,對于分鐘和秒鐘,我們將它接成一個60進制的計數器,即十位的進位到6即清零,將秒鐘十位的進位信號接到分鐘個位的CLOCK上,將分鐘同秒鐘一樣處理,即可得到顯示行駛時間的功能。
(時間顯示模塊)
2.行駛里程模塊設計
該部分接500kHz的脈沖作為輸入,由于已經做過簡化,模擬一個脈沖等于500m,同時里程計數我們只記錄km數,所以對于每2個脈沖,我們計數加1。該部分實現簡單,故不詳細敘述了。
(行駛里程計數)
3.低速行駛費模塊1) 控制部分
對于低速行駛的控制部分,我們采用了開關來控制,用開關D來控制是否是低速行駛,當開關D閉合時,則表示出租車處于低速行駛的范圍,同時判斷E開關的位置來判斷是否是高峰期。
具體開關情況請看上表。
2) 計數部分
該部分我們采用了總時間的分鐘脈沖作為輸入的CLOCK,當脈沖輸入達到5時,此時我們對于2種不同的時段,我們采用不同的處理方法。
① 高峰期時段
對于高峰期,當達到5分鐘的時候,我們給74175鎖存器一個脈沖,然后執行74283加法器,將該數加5,然后由74175鎖存器鎖存住該數,然后輸出。當計數到達10的時候,我們給鎖存器的CLR一個脈沖,讓鎖存器清零,給當前時間計數器清零,同時給作為十位的74160一個脈沖,即實現了5->10的跳變。
② 普通時段
對于普通時段,同樣的,當打到5分鐘的時間時,我們給74175鎖存器一個脈沖,加法器加2,然后74175所存住該數,但是由于每次只執行加2,需要5次才能達到10位進位,所以這里多用了一個74160計數器,用來計數達到5分鐘時間的脈沖,當計數打到5的時候,輸出一個脈沖給作為十位的74160,同時將當前計數器和鎖存器都清零。即實現了8->10的跳變。
3) 十進制加法器
該模塊主要是為了實現低速行駛費的相加,由于低速行駛分為普通時段和高峰期,所以最后計數的時候需要對這部分費用進行相加,所以設計了一個十進制加法器的模塊。
十進制加法器主要利用74283芯片進行,下面簡要說明一下個位相加的情況,十位百位同理。
我們這里只模擬個位相加,首先取兩個數的個位的4位2進制碼,接到74283芯片的8個輸入管腳,然后將輸出接到7485的比較器上,判斷輸出的數字是否大于等于10,如果輸出為1(代表相加的數字大于等于10),則給十位數字一個脈沖,使十位的數加1,同時將輸出的數字再接到一個74283上,另外4個管腳接 ,即10的補碼。此時個位輸出的結果就是該數減去10的結果。
(10進制加法器)
4.普通行駛費用模塊
該模塊分為2部分,一部分是3公里以內時時,費用都為起步價,另一部分為大于3公里時,此時每公里費用加2元,由于在里程模塊,我們模擬一個脈沖為500m,即2個脈沖為一公里,即2個脈沖加2元,那么相對于這個計價模塊,在里程數大于3公里時,每個脈沖計價加1元即可。
1) 3公里以內控制模塊
對于3公里以內的計價,我們采用的是一個7485比較器來比較個位的數字,首先判斷個位數字是否大于3,然后判斷十位數字是否全為0,因為如果有一個為1那么肯定已經進位,這個數字一定大于3。然后由兩者的與門輸出給計價器的load位,假設當前里程小于3,那么load位會一直置位,而置位的結果就是起步價。所以該方法可以控制3公里以內一直為起步價。
(判斷是否3公里以內)
2) 起步價控制模塊
由于起步價分為3個檔次,所以這里由3種開關來控制,分別為開關A,B,C。
控制起步價的原理就是,給控制個位和十位費用的74160芯片一個clock單脈沖,讓它置位,這樣就可以達到設置初始值的效果了。對于單脈沖,我這里是用一個VCC和Ground通過開關控制起來的
如圖,當開關K向下閉合的時候,就產生了一個下降沿脈沖,此時74160置位,即顯示起步價。
對于置位的數字,我們將它分為2個部分,一個是十位,由于起步價的十位都是1,所以十位我們只需要置位為1即可。
對于個位,我們有3種選擇,3,8,9,對于每一種初始值,我們都采用了4個開關,分別控制4位2進制的0和1,這樣就可以通過控制不同的開關來選擇不同的起步價了。
5.總行駛費用模塊
該部分主要是將普通行駛費用和低速行駛費用相加,當然采用上述的程序十進制加法器即可完成,只是這里做的有點略微麻煩,因為總費用有3位,所以個位,十位,百位都有用到加法器,實現起來相當麻煩,整個程序看起來有點亂的原因也是這個。
(總費用相加模塊)
四、實驗總結
說實話,這個實驗做的很累,就拿現在說,2014年1月2日 03:47:22,真是不可思議。
但是當真正做下去的時候,就會很有感覺,怎么說呢,就像退役之前晚上11點30做比賽,一直到凌晨2點,那種廢寢忘食的感覺,遇到一道題不把他解出來就睡不著覺。我非常慶幸自己還沒有遺忘掉這種死磕一道題的感覺,就像這次的數電實驗。
說起來有點坑隊友,由于之前一直忙于比賽,其實一直到上周六我才算正式忙完今年比賽的事情,之前雖然幫忙干了一些活,但是大部分還是隊友做的,我也很感激,但愿下次別再坑別人了。
這次數電實驗,可以說收獲還是蠻大的吧,至少我覺得期末復習可以跳過第六章了,因為說實話這段時間,這些時序邏輯電路已經玩的很熟了。其次,我覺得更重要的是,讓我懂得了數電和平時生活的聯系,我可以用數電的知識去做一個生活中很常見的東西了,雖然不是一個很大不了的東西,但是我覺得這才是學以致用的學習方法,學了一學期的東西,連學的東西干嘛用的都不知道,那是多么sad的一件事。
不過,我還是來說以下本次實驗的不足之處吧。
1.總體上看,程序太亂了,可以說開始之前沒有一個很好的排版吧,導致最后處理的結果非常亂。
2.起步價控制那里略麻煩,這里其實已經修改過很多次了,這已經是其中算簡潔的方案了,但是還是有12個開關。而且控制初值那里又要按兩個開關,可以這么說,啟動非常麻煩。
3.總價輸出部分,那里也是改了很多次,一開始我是想直接把低速行駛部分的費用直接加到普通行駛費用那邊,這樣就不用多引出3個顯示來顯示加起來之后的總價了,但是由于普通行駛費那邊使用的是74160,我還沒弄清楚怎么在這個個位加上一個5,所以就作罷,只能采取那種非常麻煩的方式。
4.沒有去發掘發散功能部分。
總的來說,這次數電實驗還是很鍛煉人的,不僅僅是書本上的東西,更多的是團隊之間的合作,兩個人的分工,如果分工不當就很容易造成我現在一樣大半夜還在碼字。當然這也很鍛煉人。
五、附錄1.元器件數目
|