當前位置:首頁 » 課程大全 » 三位計數器課程設計

三位計數器課程設計

發布時間: 2021-02-16 08:49:13

① 請用D觸發器構成一個三位二進制減法計數器,寫出實驗原理。(可以畫出電路圖)

按照邏輯電路設計可以弄出來,三位二進制可以設為001、010、011,或其他情況,這三個D觸發器的回輸答出可以設為Q1、Q2、Q3,設一個A的數據輸入端,

一個輸出量Y,畫出狀態圖、真值表、再根據卡羅圖求出Q1、Q2、Q3的輸出表達式,再根據D的特徵方程Q(n+1)=D化簡,一步步來就可以得出原理表達式,有了表達式就可以畫出原理圖。

3個D觸發器可以構成3位二進制計數器,計數范圍0~7,因此其模為8。

(1)三位計數器課程設計擴展閱讀:

D觸發器(data flip-flop或delay flip-flop)由4個與非門組成,其中G1和G2構成基本RS觸發器。電平觸發的主從觸發器工作時,必須在正跳沿前加入輸入信號。如果在CP高電平期間輸入端出現干擾信號,那麼就有可能使觸發器的狀態出錯。

而邊沿觸發器允許在CP觸發沿來到前一瞬間加入輸入信號。這樣,輸入端受干擾的時間大大縮短,受干擾的可能性就降低了。邊沿D觸發器也稱為維持-阻塞邊沿D觸發器。

② 課程設計題目:電子計數器

單片機C51計數器要求:編寫一個計數器程序,將T0作為計數器來使用,對外部信號計數,將所計數字顯示在數碼管上。
該部分的硬體電路如圖所示,U1的P0口和P2口的部份引腳構成了6位LED數碼管驅動電路,數碼管採用共陽型,使用PNP型三極體作為片選端的驅動,所有三極體的發射極連在一起,接到正電源端,它們的基極則分別連到P2.0…P2.5,當P2.0…P2.5中某引腳輸是低電平時,三極體導通,給相應的數碼管供電,該位數碼管點亮哪些筆段,則取決於筆段引腳是高或低電平。圖中看出,所有6位數碼管的筆段連在一起,通過限流電阻後接到P0口,因此,哪些筆段亮就取決於P0口的8根線的狀態。
編寫程序時,首先根據硬體連線寫出LED數碼管的字形碼、位驅動碼,然後編寫程序如下:
#include "reg51.h"#define uchar unsigned char#define uint unsigned int uchar code BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};//位驅動碼uchar code DispTab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};//字形碼uchar DispBuf[6]; //顯示緩沖區 void Timer1() interrupt 3{ uchar tmp;uchar Count; //計數器,顯示程序通過它得知現正顯示哪個數碼管TH1=(65536-3000)/256;TL1=(65536-3000)%256; //重置初值tmp=BitTab[Count]; //取位值P2=P2|0xfc; //P2與11111100B相或P2=P2&tmp; //P2與取出的位值相與tmp=DispBuf[Count];//取出待顯示的數 tmp=DispTab[tmp]; //取字形碼P0=tmp;Count++;if(Count==6)Count=0; }void main(){ uint tmp;P1=0xff;P0=0xff;TMOD=0x15; //定時器0工作於計數方式1,定時器1工作於定時方式1TH1=(65536-3000)/256;TL1=(65536-3000)%256; //定時時間為3000個周期TR0=1; //計數器0開始運行TR1=1;EA=1;ET1=1;for(;;){ tmp=TL0|(TH0<<8);//取T0中的數值DispBuf[5]=tmp%10;tmp/=10;DispBuf[4]=tmp%10; tmp/=10;DispBuf[3]=tmp%10;tmp/=10;DispBuf[2]=tmp%10;DispBuf[1]=tmp/10;DispBuf[0]=0;}} 這個程序中用到了一個新的知識點,即數組,首先作一個介紹。 數組是C51的一種構造數據類型,數組必須由具有相同數據類型的元素構成,這些數據的類型就是數組的基本類型,如:數組中的所有元素都是整型,則該數組稱為整型數組,如所有元素都是字元型,則該數組稱為字元型數組。 數組必須要先定義,後使用,這里僅介紹一維數組的定義,其方式為: 類型說明符數組名[整型表達式] 定義好數組後,可以通過:數組名[整型表達式]來使用數組元素。 在定義數組時,可以對數組進行初始化,即給其賦予初值,這可用以下的一些方法實現:
1.在定義數組時對數組的全部元素賦予初值:例:int a[5]={1,2,3,4,5};
2.只對數組的部分元素初始化;例:int a[5]={1,2}; 上面定義的a數組共有5個元素,但只對前兩個賦初值,因此a[0]和a[1]的值是1、2,而後面3個元素的值全是0。
3.在定義數組時對數組元素的全部元素不賦初值,則數組元素值均被初始化為0
4.可以在定義時不指明數組元素的個數,而根據賦值部分由編譯器自動確定例:uchar BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};則相當於定義了一個BitTab[6]這樣一個數組。
5.可以為數組指定存儲空間,這個例子中,未指定空間時,將數組定義在內部RAM中,可以用code關鍵字將數組元素定義在ROM空間中。uchar code BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB}; 用這兩種定義分別編譯,可以看出使用了code關鍵字後系統佔用的RAM數減少了,這種方式用於編程中不需要改變內容的場合,如顯示數碼管的字形碼等是很合適的。
6.C語言並不對越界使用數組進行檢測,例如上例中數組的長度是6,其元素應該是從BitTab[0]~BitTab[5],但是如果你在程序中寫上BitTab[6],編譯器並不會認為這有語法錯誤,也不會給出警告(其他語言如BASCI等則有嚴格的規定,這種情況將視為語法錯誤),因此,編程者必須自己小心確認這是否是你需要的結果。
程序分析:程序中將定時器T1用作數碼管顯示,通過interrupt 3關鍵字定義函數Timer1()為定時器1中斷服務程序,在這個中斷服務程序中,使用 TH1=(65536-3000)/256;TL1=(65536-3000)%256;
來重置定時器初值,這其中3000即為定時周期,這樣的寫法可以直觀地看到定時周期數,是常用的一種寫法。其餘程序段分別完成取位碼以選擇數碼管、從顯示緩沖區獲得待顯示數值、根據該數值取段碼以點亮相應筆段等任務。其中使用了一個計數器,該計數器的值從0~5對應第1到第6位的數碼管。
主程序的第一部分是做一些初始化的操作,設置定時器工作模式、開啟定時器T1、開啟計數器T0、開啟T1中斷及總中斷,隨後進入主循環,主循環首先用unsigned int型變數tmp取出T0中的數值,這里使用了「tmp=TL0|(TH0<<8);」這樣的形式,這相當於tmp=TH0*256+TL0,但比之於後一種形式,該方式可以得到更高的效,其後就是將tmp值不斷地除10取整,這樣將int型數據的各位分離並送入相應的顯示緩沖區

③ 設計一個3位的十進制加法計數器。要求能夠從0計數到999。從999歸零時產生一個高電平的報警信號。

40110 為十進制可逆計數器/鎖存器/解碼器/驅動器,具有加減計數,計數器狀回
態鎖存,七段顯示解碼輸答出等功能。
40110 有2 個計數時鍾輸入端CPU 和CPD 分別用作加計數時鍾輸入和減計數時
鍾輸入。由於電路內部有一個時鍾信號預處理邏輯,因此當一個時鍾輸入端計數工
作時,另一個時鍾輸入端可以是任意狀態。
40110 的進位輸出CO 和借位輸出BO 一般為高電平,當計數器從0~9 時,
BO 輸出負脈沖;從9~0 時CO 輸出負脈沖。在多片級聯時,只需要將CO 和BO
分別接至下級40110 的CPU 和CPD 端,就可組成多位計數器。
引出端符號:
BO 借位輸出端
CO 進位輸出端
CPD 減計數器時鍾輸入端
CPU 加計數器時鍾輸入端
CR 清除端
/CT 計數允許端
/LE 鎖存器預置端
VDD 正電源
Vss 地
Ya~6g 鎖存解碼輸出端

④ 求:數電實驗 三位二進制同步加法計數器設計方案

一、 二進制計數器1. 非同步遞增二進制計數器遞增計數器就是每輸入一個脈沖就進行一次加1運算,而二進制計數是輸入脈沖個數與自然二進制數有對應關系。非同步計數器是在做加1計數時是採取從低位到高位逐位進位的方式工作的。因此其中的各個觸發器不是同步翻轉的。按照二進制加法計數規則,每一位如果已經是1,則再計入1時應變為0,同時向高位發出進位信號,使高位翻轉。若使用下降沿動作的觸發器(此時該觸發器應接成計數狀態,例如JK觸發器使J=K=1)組成計數器,只要將低位觸發器的Q端接到高位觸發器的時鍾輸入端即可。當低位由 時,Q端的下降沿正好可以作為高位的時鍾信號CP。那麼一個四位非同步遞增二進制計數器就如下圖:JK觸發器非同步4位二進制加法計數器分析:(1)J、K接1,即四個觸發器均處在計數狀態(2)清零端給一個負脈沖,進行總清,防止過去狀態干擾輸出(3)畫波形圖JK觸發器非同步4位二進制加法計數器時序圖從以上分析可以看出,各觸發器的變化是依次逐個進行的,而每個觸發器的變化都需要一定的延遲時間,尤其計數器位數教多時,累計延遲時間就教長,所以非同步計數器比同步計數器的速度低。要可以用一個Z表示進位輸出,也就是記滿1111後次態為0000此時不同於總清的0000。從波形上可以看出,每經一級觸發器輸出的脈沖的周期就增加一倍,即頻率降低一倍,因此一位二進制計數器就是一個二分頻器。非同步4位二進制加法計數器狀態轉移表當觸發器的個數為N時,最後一個觸發器輸出的頻率將降為輸入脈沖頻率的1/2N,它能累計的最大脈沖個數為2N-1。例如我們前面畫的圖N=4,它就能累計15個脈沖而Q3輸出1/16分頻。如果使用上升沿觸發器構成非同步二進制遞增計數器,其邏輯圖:D觸發器非同步4位二進制加法計數器D觸發器非同步4位二進制加法計數器波形圖綜上所述,對一個二進制遞增計數器歸納如下:u 計數器由若干個工作在計數狀態時的觸發器構成。如用負跳變觸發器則進位信號從 端引出;用正跳變觸發器構成則進位信號則從 端引出u N個觸發器具有 個狀態,稱為以 為模的計數器(或模 計數器),其中計數容量為 -1u 由於非同步計數器進位信號象波浪一樣推進,因此又稱為紋波計數器2. 非同步二進制遞減計數器按照二進制減法計數規則,遞減計數器規律:若低位觸發器已經為0,則再輸入一個減計數脈沖後應翻轉成1,同時向高位發出借位信號,使高位翻轉。CP數如果用下降沿觸發的JK觸發器構成非同步二進制減法計數器,則:下降沿動作的非同步二進制減法計數器將非同步二進制減法計數器與非同步加法計數器比較可以看出,它們都是將低位觸發器的一個輸出端接到高位觸發器的時鍾輸入端而組成的。在採用下降沿觸發的計數器時,加計數以 端為輸出端,而減法計數以 端為輸出端。可以推導,若採用上升沿計數器則情況相反。3. 同步二進制遞增計數器非同步計數器工作速度較低,常常又被稱為串列計數器。為了提高計數述速度,可採用同步計數器,其特點是計數脈沖同時接於各位觸發器的時鍾脈沖輸入端,當計數脈沖到來時,應該翻轉的觸發器同時翻轉,沒有各級延遲時間的積累問題。同步計數器又稱並行計數器。假設要組成四位二進制(M=16)的同步遞增計數器,首先根據計數規律得到狀態表:CP序號Q3Q2Q1Q0等效十進制數分析狀態表,可以得到各觸發器的翻轉條件u 最低位觸發器FF0每輸入一個脈沖翻轉一次u 其它各觸發器都是在所有低位觸發器的輸出端全為1時,在下一個CP有效沿到來時狀態改變一次。由於同步計數器中各觸發器的CP端輸入同一時鍾脈沖,因此觸發器的翻轉狀態就由它們的輸入信號狀態決定。例如JK觸發器狀態就由J、K端的狀態決定。組成同步計數器的關鍵就是根據翻轉條件,確定各觸發器輸入端的邏輯表達式。如果用下降沿觸發的JK觸發器組成上述計數器,根據JK觸發器的邏輯功能和上述兩個條件,可列出四位同步二進制遞增計數器各觸發器之間的連接邏輯關系: 觸發器翻轉條件J、K端的邏輯關系驅動(激勵)方程FF0每輸入一個脈沖翻轉一次J0=J0=1FF1Q0=1J1=K1=Q0FF2Q0=Q1=1J2=K2=Q0Q1FF3Q0=Q1=Q2=1J3=K3=Q0Q1Q2根據這些方程可以畫出同步二進制遞增計數器的邏輯電路圖:同步4位二進制加法計數器對於同步二進制遞增計數器也可以用狀態圖描述或工作波形(時序圖)描述。4位二進制加法計數器狀態圖4位二進制加法計數器時序圖4. 二進制遞減計數器對於同步二進制遞減計數器,首先要列寫狀態表,下面以4位二進制遞減計數器為例CP序號Q3Q2Q1Q0輸出分析狀態可以總結:u 低位觸發器FF0每輸入一個脈沖翻轉一次u 其它各觸發器都是在所有低位觸發器的輸出為0時變化仿效遞增計數器,可得四位同步二進制遞減計數器級間連接的邏輯關系: 觸發器翻轉條件J、K端的邏輯關系FF0每輸入一個脈沖翻轉一次J0=J0=1FF1Q0=0J1=K1= FF2Q0=Q1=0J2=K2= FF3Q0=Q1=Q2=0J3=K3= 根據邏輯表達式可以畫出邏輯圖: 同步4位二進制減法計數器當然也可以用狀態圖和時序圖描述該電路。從上面分析可以發現,對於同步二進制計數器,遞增和遞減的區別在於J、K端來自低位觸發器的輸出為1還是0,那麼通過一個控制端就可以實現可逆計數。二、 8421BCD碼十進制計數器二進制計數器,雖然它的袋內陸結構簡單,運算方便,但是當二進制數的位數較多時,要很快地讀出來就比較困難,因此有討論十進制計數器的必要。所謂十進制就是「逢十進一」。前面討論四位二進制計數器的計數狀態是從0000~1111共16個狀態。要表示十進制的十個狀態,就要去掉其中6個狀態,至於去掉哪些可以有不同的安排,如果考慮BCD編碼,即去掉1010~1111這6個狀態。下面給出用JK觸發器組成的一位非同步十進制遞增計數器邏輯圖非同步8421BCD十進制加法計數器分析計數原理:代入JK觸發器的特性方程 可以寫出畫出時序圖:非同步8421BCD十進制加法計數器時序圖按照同樣的道理,可以分析8421BCD碼同步十進制遞減計數器。

⑤ 產品成品計數器課程設計

你不會也是銅陵學院的吧?

⑥ 用D觸發器設計一個三位的計數器,有效計算狀態為110-101-011-110,如果有掛起,則消除之

第一步:確定觸發器個數,這里題目要求是3位,那麼就至少有3種獨立的標志,因此至少專需要3個觸發器屬。

第二步:畫出狀態轉移表:

太晚了,就做這么多了吧,有問題有時間可以繼續討論。

⑦ 如何用非門和與非門設計一個3位計數器 電路圖

你做的這東西是三位幾進制的計數器呢?是否可逆計數?是否要求鎖存?都木說呵。

用門搭建十進制計數器比較麻煩,三位十進計數器如4553者,已經屬於中規模集成電路了,不建議自己搭建。

用門電路搭建二進制計數器比較容易,就你說的那樣,級聯D觸發器,然後讓它們進行與運算即可。另外,無論是4000系列還是74/54系列,都有專用的「除頻器」可供選擇。印象中應用較多的是2的十四次方,2的十五次方,2的十七次方這三款晶元,具體型號你自己查查吧。

用門電路搭建三位任意進制計數器也比較繁瑣,推薦級聯4017來解決這個問題。

⑧ 用74LS00做三位計數器

http://210.43.0.21/jxwz/shiyanshi/shynr/shu/dgdz.pdf

⑨ 用jk觸發器設計一個三進制計數器,詳細點,謝謝

用jk觸發器設計一個三進制計數器,計數是00,01,10,這三個數,所以,只需兩個回JK觸發器就行,不需答要3,用了3個,也有一個觸發器的狀態始終0,也沒有用。

首先,把2個JK觸發器接成同步加法計數器(是4進制的),再改成3進制就行了。當計數為3時,輸出狀態為11,就利用11狀態產生一個復位信號,使兩個觸發器復位回0,就不會出現計數的3了,最大數是2,就是要求的3進制計數器了。

邏輯圖如下(也是模擬圖),JK觸發器是74LS112。

⑩ VHDL 設計一個3位的十進制加法計數器。要求能夠從0計數到999。

--VHDL程序如下:

LIBRARYieee;

UsEieee.std_logic_1164.all;

ENTITYcnt1000Is

PORT

(

:IN STD_LOGIC;

clr :IN STD_LOGIC;

en :IN STD_LOGIC;

count :OUT INTEGERRANGE0TO999;

co :OUT STD_LOGIC);

ENDcnt1000;

ARCHITECTUREaOFcnt1000Is

SIGNAL s :INTEGERRANGE0TO999;

BEGIN

PROCESS(clk,clr)

BEGIN

IFclr='0'THEN

s<=0;

ELSIF(clk'EVENTANDclk='1')THEN

IFen='1'THEN

IFs<999THEN

s<=s+1;

ELSEs<=0;

ENDIF;

ELSE

s<=s;

ENDIF;

IFs=999THEN co<='1';

ELSEco<='0';

ENDIF;

ENDIF;

ENDPROCESS;

count<=s;

ENDa;

--波形模擬如下:

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919