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