數(shù)字邏輯電路教學(xué)中的C語言描述和應(yīng)用
摘要:為了改進數(shù)字邏輯電路教學(xué)方法以適應(yīng)電子技術(shù)迅猛發(fā)展的需要,我們探索和實踐了數(shù)字邏輯電路教學(xué)的新方法,這就是基于計算機高級語言(C語言)的數(shù)字邏輯電路課堂教學(xué)和實驗教學(xué)方法,本文重點介紹了本教學(xué)方法的特點以及實現(xiàn)方法。
關(guān)鍵詞:教學(xué)改革;數(shù)字邏輯電路;C語言
中圖分類號:G642 文獻標(biāo)識碼:B
文章編號:1672-5913(2007)10-0090-03
引言
數(shù)字邏輯電路課是高等學(xué)校計算機科學(xué)技術(shù)專業(yè)的一門必修基礎(chǔ)課。在計算機專業(yè)基礎(chǔ)課程中,它是微機原理與應(yīng)用、微機接口技術(shù)、計算機組成與系統(tǒng)結(jié)構(gòu)等課程的前導(dǎo)課程,有著承上啟下的重要地位。該課程從電子計算機的基本硬件組成及數(shù)字電子技術(shù)著手,對計算機的組成部件的基本電路工作原理展開討論,使學(xué)生掌握有關(guān)計算機硬件方面的基礎(chǔ)知識,尤其是各數(shù)字邏輯電路的基本功能,構(gòu)成整機數(shù)字系統(tǒng)的技術(shù),為培養(yǎng)學(xué)生對硬件系統(tǒng)的分析、設(shè)計、開發(fā)和使用能力打下最基本的基礎(chǔ)知識。
數(shù)字邏輯電路這門課程學(xué)習(xí)結(jié)果的好壞將對計算機專業(yè)的后續(xù)課程的學(xué)習(xí)產(chǎn)生很大的影響。數(shù)字邏輯電路是學(xué)好計算機專業(yè)基礎(chǔ)課的必要途徑,因此應(yīng)該重視這門課程教學(xué)方法的改進。為了改革目前的數(shù)字邏輯電路課教學(xué)方法,我們探索了新的數(shù)字邏輯電路教學(xué)方法,即基于計算機高級語言的數(shù)字邏輯電路教學(xué)方法。本數(shù)字邏輯電路教學(xué)方法的特點是用計算機高級語言C語言對數(shù)字邏輯電路的基本功能進行描述和實驗,也就是用計算機高級語言對我們在數(shù)字邏輯電路課程中講解的全部基本數(shù)字邏輯電路進行表示。本方法特別適合與計算機專業(yè)的學(xué)生,因為計算機專業(yè)的學(xué)生在學(xué)習(xí)數(shù)字邏輯電路課程之前都學(xué)習(xí)過了計算機高級語言C語言。這使得他們能夠較好的理解數(shù)字邏輯電路的這種表示方式,同時也能夠使他們在學(xué)習(xí)數(shù)字邏輯電路的這種表示方式中復(fù)習(xí)計算機的高級語言,并且可以擴展學(xué)生的知識面,培養(yǎng)和訓(xùn)練學(xué)生的創(chuàng)新能力。它不但能夠進行數(shù)字邏輯電路的基本教學(xué),還可以用于數(shù)字邏輯電路的實驗教學(xué)和課程設(shè)計。
1 數(shù)字邏輯電路的C語言描述
C語言功能豐富,表達能力強,使用靈活方便,目標(biāo)程序效率高,可移植性好,適合編寫各種軟件,尤其是系統(tǒng)軟件,所以C語言已在諸多領(lǐng)域得到廣泛的應(yīng)用。目前許多高等院校,都在計算機專業(yè)開設(shè)了C語言課程。利用C語言可以編寫出簡潔、緊湊、高效的程序。C51是在完全支持標(biāo)準(zhǔn)C全部指令的基礎(chǔ)上添加了許多用來優(yōu)化8051指令結(jié)構(gòu)的C的擴展指令而形成的,其程序結(jié)構(gòu)也類似于標(biāo)準(zhǔn)C程序的編寫。隨著嵌入式技術(shù)的不斷發(fā)展以及C語言在嵌入式應(yīng)用中的不斷普及,C程序設(shè)計技術(shù)在嵌入式系統(tǒng)中將得到廣泛的應(yīng)用。
數(shù)字邏輯電路通常分為組合數(shù)字邏輯電路和時序數(shù)字邏輯電路兩大類,組合數(shù)字邏輯電路常用的描述方法是邏輯圖、邏輯代數(shù)式、真值表和卡諾圖,它們均可對同一個組合邏輯問題進行描述,知道其中的任何一個,就可以推出其余的三個。隨著EDA技術(shù)的發(fā)展,目前又出現(xiàn)了硬件描述語言的數(shù)字邏輯電路描述法。與用硬件描述語言類似的方法,本文探索了在微控制器中的C51程序描述法。例如對一個三變量的一致電路的描述:
三變量的一致電路就是當(dāng)A、B、C三個變量一致時,電路輸出高電平;當(dāng)三個變量不一致時,電路輸出低電平。
用邏輯代數(shù)式表示為:F=ABC+
用C51語言描述為:
Main()
{ sbit a=P1.0; // 定義布爾輸入變量a是微控制器的P1.0口
sbit b=P1.1; // 定義布爾輸入變量b是微控制器的P1.1口
sbit c=P1.2; // 定義布爾輸入變量c是微控制器的P1.2口
sbit f=P2.0; // 定義布爾輸出變量f是微控制器的P2.0口
while(1){ // 無限循環(huán)
P1=0xff;
if (a==b==c)
f==1;
elsl f==0;
}
} // P1為輸入口,P2為輸出口
從以上的C51程序可以看出,這樣的數(shù)字邏輯電路描述方法,對于計算機專業(yè)的學(xué)生,只要學(xué)習(xí)過C語言是非常容易理解的,而且用該方法描述的數(shù)字邏輯電路也容易用下面介紹的實驗方法中得到驗證。
[!--empirenews.page--]
2 在教學(xué)中的應(yīng)用原則
2.1教學(xué)重點
筆者認(rèn)為對于計算機專業(yè)的數(shù)字邏輯電路課,教學(xué)重點在于讓學(xué)生能夠很好地理解常用數(shù)字邏輯電路的邏輯功能,至于這些數(shù)字邏輯電路的實現(xiàn)方法有一些概念就可以了,沒有必要掌握數(shù)字邏輯電路的中小規(guī)模集成電路實現(xiàn)方法。而這些中小規(guī)模集成電路實現(xiàn)的數(shù)字邏輯電路在我們目前所用的教材中往往是重點講解的,這點對于計算機專業(yè)的學(xué)生就不是很合適。事實上,本文探索的用C51程序描述數(shù)字邏輯電路,就是基于微控制器的用軟件實現(xiàn)的數(shù)字邏輯電路。這就是說數(shù)字邏輯電路課程的重點內(nèi)容是理解數(shù)字邏輯電路的邏輯功能。而具體用什么方法實現(xiàn)這個邏輯功能就不是太重要了。用中小規(guī)模集成電路、可編程邏輯電路和軟件來實現(xiàn)都是可以的。2.2應(yīng)用實例
根據(jù)筆者的多年教學(xué)實踐經(jīng)驗,在計算機專業(yè)的數(shù)字邏輯電路課程教學(xué)中,靈活運用本文論述的C51程序描述法,結(jié)合傳統(tǒng)的數(shù)字邏輯電路的描述方法,取得到了較好的教學(xué)效果。
如:對于在計算機專業(yè)中用到的較多的邏輯電路“譯碼器”。用邏輯代數(shù)描述為:
用C51程序可以描述為:
main()
{ sbit a=P1.0; // 定義布爾輸入變量a,b,c為微控制器的P1口
sbit b=P1.1;
sbit c=P1.2;
sbit y0=P2.0; // 定義布爾輸出變量y0~y7是微控制器的P2口
sbit y1=P2.1;
sbit y2=P2.2;
sbit y3=P2.3;
sbit y4=P2.4;
sbit y5=P2.5;
sbit y6=P2.6;
sbit y7=P2.7;
while(1){ // 無限循環(huán)
P1=0xff;
y0=y1=y2=y3=y4=y5=y6=y7=0;
if (a==0&&b==0&&c==0) y0=1;
if (a==0&&b==0&&c==1) y1=1;
if (a==0&&b==1&&c==0) y2=1;
if (a==0&&b==1&&c==1) y3=1;
if (a==1&&b==0&&c==0) y4=1;
if (a==1&&b==0&&c==1) y5=1;
if (a==1&&b==1&&c==0) y6=1;
if (a==1&&b==1&&c==1) y7=1;
}
}
因此,在數(shù)字邏輯電路課程中,讓學(xué)生懂得作為計算機專業(yè)的學(xué)生,單單學(xué)會數(shù)字邏輯電路的硬件實現(xiàn)方法是不夠的,還應(yīng)當(dāng)讓學(xué)生從一開始就重視學(xué)習(xí)計算機軟硬件的相互關(guān)系。如果教師在數(shù)字邏輯電路課程的教學(xué)中運用本文論述的方法,引導(dǎo)學(xué)生從計算機軟件和硬件層次上去認(rèn)識數(shù)字邏輯電路知識,對學(xué)生學(xué)好后續(xù)專業(yè)課程有著積極的促進意義。
3 實驗教學(xué)方法
3.1硬件結(jié)構(gòu)
本實驗方法的硬件部分主要由PC機以及微控制器電路和多個LED電路組成。微控制器選用Philips公司生產(chǎn)的P89C51RD2BN。該芯片內(nèi)部集成了多種功能部件,如四個8位的數(shù)字I/O口,8路A/D轉(zhuǎn)換接口、UART、定時器、看門狗定時器和FLASH存儲器等。微控制器的主要功能是:用戶輸入輸出端口狀態(tài)掃描輸入,用戶輸入輸出端口信號輸入和數(shù)字信號顯示等。實驗硬件組成框圖如圖1所示。
圖1 實驗硬件組成框圖
3.2ISP實現(xiàn)原理
本實驗方法的關(guān)鍵是ISP技術(shù)。P89C51RD2BN的系統(tǒng)編程是通過標(biāo)準(zhǔn)RS232串口來完成的,它是一種內(nèi)嵌的在線可編程。內(nèi)部有一系列的硬件資源,當(dāng)微控制器對自身的Flash存儲器進行編程時,所有底層操作都由這些內(nèi)部資源來完成。ISP編程不需要將微控制器從系統(tǒng)中取出,只要用一個開關(guān)將PSEN強行拉低,ALE管腳懸空,系統(tǒng)便在上電復(fù)位后進入ISP狀態(tài)。通過免費的編程軟件Flashmagic下載二進制文件到微控制器,就可以運行程序了。
3.3實驗方法
如圖1所示,實驗時先把ISP控制開關(guān)放置在ISP位置上,在PC機上輸入需要實現(xiàn)的數(shù)字邏輯電路的C51程序,然后經(jīng)過C51編譯器編譯,生成二進制文件形式的目標(biāo)程序文件,然后使用Flashmagic軟件把目標(biāo)程序下載到微控制器中,再把ISP控制開關(guān)放置到微控制器的正常工作狀態(tài),按動復(fù)位按鈕,微控制器中的程序就可以正常運行了。這時可以在輸入撥位開關(guān)上輸入數(shù)字信號,在LED上可以觀察到這個實驗數(shù)字邏輯電路的邏輯功能的實現(xiàn)結(jié)果。改變輸入撥位開關(guān)上輸入的數(shù)字信號,可以得到不同的數(shù)字信號輸入,在LED中可以觀察分析實驗數(shù)字邏輯電路的全部邏輯功能。
運用本實驗方法進行的數(shù)字邏輯電路實驗,由于實驗所用到的硬件設(shè)備,除PC機以外的成本是極低的,可以實現(xiàn)把實驗帶回家的實驗理念。在家里進行各種有創(chuàng)造性的實驗。讓學(xué)生真正成為實驗學(xué)習(xí)的主人。
4 結(jié)束語
本文論述的數(shù)字邏輯電路C語言描述方法具有易懂、直觀、有創(chuàng)新性的特點。用該教學(xué)方法的實驗裝置結(jié)構(gòu)簡單、成本較低、維護方便、性能可靠。可以進行簡單的組合數(shù)字邏輯電路實驗,也可以進行時序邏輯電路的實驗,能夠搭建多種趣味電路。能滿足基本教學(xué)的需要,也可以進行綜合性、設(shè)計性實驗。