PLD的PROTEUS電路仿真
圖4 16V8元件屬性由前面PLD的設(shè)計可得3-8譯碼器的真值表:輸入信號輸出信號I3 I2 I1 IO7 IO6 IO5 IO4 IO3 IO2 IO1 IO0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1表1 3-8譯碼器真值表為了觀察16V8的輸入與輸出的對應(yīng)關(guān)系,我們在AT89C52的程序(程序見附錄)中將與I3、I2、I1相連的P2_2、P2_1、P2_0三個端口按真值表中的順序依次改變,觀察LED燈是否由IO0至IO7依附點亮。
將單片機的程序加入AT89C52后,在Proteus中點擊Play鍵觀看電路仿真結(jié)果:當輸入端的I1、I2、I3值按程序設(shè)定按真值表中的000—111依附改變時,輸出端對應(yīng)LED燈按真值表中的對應(yīng)關(guān)系由IO0至IO7依次點亮,如下圖。說明PLD器件16V8設(shè)計的三八譯碼器譯碼正確。
圖5譯碼電路對應(yīng)輸入/輸出截圖
4.結(jié)語
單片機與PLD的結(jié)合是當前嵌入式設(shè)計經(jīng)常采用一的種方式。但如果要進行硬件電路測試和系統(tǒng)調(diào)試則比較麻煩,因為要進行這兩個過程必須在電路板制作完成、元器件焊接完畢之后進行。而電路板的制作、元器件的安裝、焊接是費時費力的,如果采用作為單片機系統(tǒng)的仿真工具PROTEUS進行單片機和PLD的仿真,則不用制作具體的電路板也能夠完成以上工作。在使用PROTEUS運行系統(tǒng)虛擬開發(fā)成功之后再進行實際制作,可以直觀得觀察電路的運行情況,提前發(fā)現(xiàn)設(shè)計的錯誤,可以極大的提高開發(fā)效率、降低開發(fā)成本、提高開發(fā)速度。
程序附錄:
#include sbit P2_0=P2^0;sbit P2_1=P2^1;sbit P2_2=P2^2;
void delaytime(int count);void main(void)
{ while(1)
{ P2_2=0;P2_1=0;P2_0=0;delaytime(500);P2_2=0;P2_1=0;P2_0=1;delaytime(500);P2_2=0;P2_1=1;P2_0=0;delaytime(500);P2_2=0;P2_1=1;P2_0=1;delaytime(500);P2_2=1;P2_1=0;P2_0=0;delaytime(500);P2_2=1;P2_1=0;P2_0=1;delaytime(500);P2_2=1;P2_1=1;P2_0=0;delaytime(500);P2_2=1;P2_1=1;P2_0=1;delaytime(500);
}
void delaytime(int count)
{
int j,k;
while(count-- !=0)
{
for(j=0;j10;j++)
for(k=0;k72;k++)
;
}
}
評論