單片機(jī)C語言程序設(shè)計(jì)_第1頁
單片機(jī)C語言程序設(shè)計(jì)_第2頁
單片機(jī)C語言程序設(shè)計(jì)_第3頁
單片機(jī)C語言程序設(shè)計(jì)_第4頁
單片機(jī)C語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(必修)電子與信息工程學(xué)院儲(chǔ)茂祥鞏榮芬主編單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書- -、/1-冃IJ吞單片機(jī)體積小,重量輕,具有很強(qiáng)的靈活性,而且價(jià)格不高,越來越得到廣泛的應(yīng)用。而C語言是一種編譯型設(shè)計(jì)語言。它兼顧了多種高級(jí)語言的特點(diǎn),并具備匯編語言的功能。用C語言來編寫目標(biāo)系統(tǒng)軟件,會(huì)大大縮短開發(fā)周期,且明顯的增加軟件的可讀性,便于改進(jìn)和擴(kuò)充,以研制出規(guī)模更大、性能更完備的系統(tǒng)。用C語言進(jìn)行8051單片機(jī)程序設(shè)計(jì)是單片機(jī)開發(fā)與應(yīng)用的必然趨勢(shì)。單片機(jī)的程序設(shè)計(jì)應(yīng)該以C語言為主,以匯編語言為輔。而且釆用C語言也不必對(duì)單片機(jī)和硬件接口的結(jié)構(gòu)有很深入的了解,編譯器可以自動(dòng)完成變

2、量的存儲(chǔ)單元的分配,編程者就可以專注于應(yīng)用軟件部分的設(shè)計(jì),大大加快軟件的開發(fā)速度。釆用C語言可以很容易地進(jìn)行單片機(jī)的程序移植工作,有利于產(chǎn)品中單片機(jī)的重新選型。為此,特開設(shè)了單片機(jī)的C語言應(yīng)用程序設(shè)計(jì)這門選修課。課程的內(nèi)容主要包括了單片機(jī)C語言編程的基本語法和思想,單片機(jī)內(nèi)部資源的C編程,單片機(jī)常見外部擴(kuò)展資源的C編程等?;诒菊n程的特點(diǎn),結(jié)合高等院校要求,為了不斷提高大學(xué)生的實(shí)驗(yàn)研究能力、分析編程能力、總結(jié)歸納能力和解決實(shí)際問題的能力,特意編寫了本實(shí)驗(yàn)指導(dǎo)書,以指導(dǎo)如何利用現(xiàn)有的實(shí)驗(yàn)設(shè)備進(jìn)行單片機(jī)內(nèi)外資源的C編程以及簡(jiǎn)單系統(tǒng)的開發(fā)等。它不僅包括了一系列的驗(yàn)證性實(shí)驗(yàn),而且還包括了綜合性和設(shè)計(jì)性

3、實(shí)驗(yàn)。實(shí)驗(yàn)的開設(shè)有利于培養(yǎng)學(xué)生分析問題和解決問題的能力,以及使抽象的概念和理論形象化、具體化,對(duì)增強(qiáng)學(xué)習(xí)的興趣有極大的好處,做好本課程的實(shí)驗(yàn),是學(xué)好本課程的重要教學(xué)輔助環(huán)節(jié)??傊徽撌球?yàn)證性實(shí)驗(yàn)還是綜合性實(shí)驗(yàn)都會(huì)加深學(xué)生對(duì)基本知識(shí)的理解和滲透,提高他們的動(dòng)手操作能力,以更好的適應(yīng)時(shí)代發(fā)展的需要。本實(shí)驗(yàn)要求同學(xué)在做實(shí)驗(yàn)之前要很好的完成預(yù)習(xí)任務(wù)和調(diào)試程序的編寫;在完成每個(gè)實(shí)驗(yàn)后,要認(rèn)真書寫實(shí)驗(yàn)報(bào)告,對(duì)實(shí)驗(yàn)程序的正確性進(jìn)行分析,并寫出調(diào)試心得和體會(huì)。單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書- -目錄TOC o 1-5 h z前言1 HYPERLINK l bookmark2目錄2 HYPERLINK l b

4、ookmark4實(shí)驗(yàn)一I/O口擴(kuò)展實(shí)驗(yàn)3 HYPERLINK l bookmark20實(shí)驗(yàn)二定時(shí)器及外部中斷實(shí)驗(yàn)8 HYPERLINK l bookmark44實(shí)驗(yàn)三8255擴(kuò)展八段數(shù)碼管實(shí)驗(yàn)12 HYPERLINK l bookmark60實(shí)驗(yàn)四8253多路定時(shí)/計(jì)數(shù)器實(shí)驗(yàn)15 HYPERLINK l bookmark78實(shí)驗(yàn)五8279鍵盤顯示擴(kuò)展實(shí)驗(yàn)(綜合性)18 HYPERLINK l bookmark94實(shí)驗(yàn)六點(diǎn)對(duì)點(diǎn)異步串口通信實(shí)驗(yàn)(設(shè)計(jì)性)21 HYPERLINK l bookmark108參考文獻(xiàn)24單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書- -單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書- -+5V單片

5、機(jī)gOg2輸岀口J74LS273,LE1輸入口P00-P07單片機(jī)實(shí)驗(yàn)一I/O口擴(kuò)展實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)在單片機(jī)系統(tǒng)中擴(kuò)展簡(jiǎn)單I/O口的方法。2、學(xué)習(xí)C51語言數(shù)據(jù)輸入,輸出程序的編程方法。二、實(shí)驗(yàn)設(shè)備EL-MUT-III型單片機(jī)實(shí)驗(yàn)箱、8051CPU模塊、PC機(jī)三、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)的原理圖如下圖所示。r-自A該實(shí)驗(yàn)利用單片機(jī)C語言編程,實(shí)現(xiàn)單片機(jī)數(shù)據(jù)口由74LS244讀取八個(gè)開關(guān)的狀態(tài),并將此狀態(tài)由單片機(jī)數(shù)據(jù)口輸出,經(jīng)過74LS273鎖存并驅(qū)動(dòng)發(fā)光二極管顯示。其中74LS244的輸入端口接開關(guān)KIK8,74LS273的輸出端口接發(fā)光二極管。74LS244的片選CS244接CS1,表明74L

6、S244對(duì)于單片機(jī)而言的外部地址為0CFA8H,74LS273的片選CS273接CS2,表明74LS273對(duì)于單片機(jī)而言的外部地址為OCFBOH。四、實(shí)驗(yàn)原理1、I/O接口MCS-51系列單片機(jī)共有4個(gè)I/O口,分別是PO、Pl、P2、P3,此四個(gè)接口都可以單獨(dú)的做輸入或輸出使用。實(shí)際應(yīng)用中,P0口用于輸出外部數(shù)據(jù)存儲(chǔ)器的低8位,并分時(shí)復(fù)用作為與外部連接的數(shù)據(jù)總線口;P2口用于輸出高8位地址;P3口常操作于定義的第二功能;P1口一般為留給用戶使用的基本I/O口。單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書在單片機(jī)C語言中,對(duì)于端口(位)的使用可以使用sbit來定義,如:sbitP10=Pr0定義變量P10指

7、向P1端口的第0位在程序中就可以使用P10變量來訪問P1口的第0位。對(duì)于POD、P2口,一般在訪問外部數(shù)據(jù)空間時(shí)使用,在單片機(jī)C語言中的使用方法可以看下例:includeincludettdefineINPORTXBYTE0XCFA8/定義變量INPORT指向外部空間0XCFA8defineOUTPORTXBYTEOXCFBO/定義變量OUTPORT指向外部空間OXCFBOvoidmain(void)OUTPORT二INPORT;該例實(shí)現(xiàn)了將外部空間OxCFAS的數(shù)據(jù)轉(zhuǎn)存入外部空間OxCFBO的功能,注意的是,在單片機(jī)C語言中,對(duì)于外部空間的使用,需要用XBYTE關(guān)鍵字來定義,而且程序要包含a

8、bsacc.h這一函數(shù)庫。本實(shí)驗(yàn)利用單片機(jī)的外部擴(kuò)展空間,實(shí)現(xiàn)由單片機(jī)數(shù)據(jù)總線口讀取固定地址的外部空間狀態(tài),同時(shí)將狀態(tài)數(shù)據(jù)由單片機(jī)數(shù)據(jù)總線口輸出到另一外部空間顯示。本實(shí)驗(yàn)中擴(kuò)展的芯片可理解為單片機(jī)對(duì)應(yīng)地址的外部空間,對(duì)應(yīng)芯片的外部地址由片選信號(hào)確定,對(duì)于本實(shí)驗(yàn)原理圖,74LS244的片選CS244接CS1,表明74LS244對(duì)于單片機(jī)而言的外部地址為0CFA8H,74LS273的片選CS273接CS2,表明74LS273對(duì)于單片機(jī)而言的外部地址為OCFBOHo因此,可利用POD、P2口實(shí)現(xiàn)外部存儲(chǔ)空間的訪問,方法如上面的例子。如果單片機(jī)外擴(kuò)芯片過多,則MCS-51總線口的負(fù)載過重,74LS24

9、4是一個(gè)擴(kuò)展輸入口,同時(shí)也是一個(gè)單向驅(qū)動(dòng)器,它可以減輕總線口的負(fù)擔(dān)。本實(shí)驗(yàn)程序?yàn)闇p少總線口讀寫的頻繁程度,需要增加一段延時(shí)程序,延時(shí)時(shí)間約為0.01秒,不會(huì)影響顯示的穩(wěn)定。單片機(jī)C語言中延時(shí)的方法可以采用:for循環(huán)、定時(shí)器定時(shí)。2、仿真調(diào)試單片機(jī)C語言的實(shí)驗(yàn)將以EL-ML-T-III型單片機(jī)實(shí)驗(yàn)箱為硬件調(diào)試平臺(tái),以EL型教單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書- -學(xué)實(shí)驗(yàn)環(huán)境軟件為調(diào)試工具,實(shí)現(xiàn)本課程所有實(shí)驗(yàn)的仿真、調(diào)試任務(wù)。首先打開實(shí)驗(yàn)臺(tái)的電源,打開PC機(jī)進(jìn)入桌面。然后點(diǎn)擊桌面快捷圖標(biāo)MCS51,以默認(rèn)的通信方式點(diǎn)擊確定。在點(diǎn)擊確定按鈕的同時(shí),立即打開實(shí)驗(yàn)臺(tái)左上方的POWERSWITCH開關(guān),此時(shí)

10、,調(diào)試軟件能夠正確地進(jìn)入調(diào)試環(huán)境,如圖1所示。圖1新建C51文件如圖1所示點(diǎn)擊:文件新建C61文件,建立新C51文件,即可進(jìn)入編輯環(huán)境,編輯C51語言代碼,如圖2所示。|IE3II04.ilJ|ttlncludc?svs:/丈彳卡定工阪包吿扌艮第角刮#336)富義ttlncludc?TCPIPfrd.rv*MxK4-ttcloFl.noU16unsl.gnoooltAt:UdoFlnoBOOLtXt:MdoFXnotzrtio1MdoFlnoFlsoOmo1.1displCunslgnodunar*cti);urvsjlgrteUcKofj?t_c|unsignedctiorxdot:t?mp

11、7f:t?npcomfxuFcom*xl*e9!;confxdf?!;Fconfxcl-t?lcom_fxuFFt?f_?confx!-?Fraturnt:omp;mo1.1do1amsar*廣警尹孟黑克*鑒弦盟韶崙鬃撅匿花扛和弊昊就儒據(jù)鬆-嚎片供用嚨X霑花肯1L1J八方貯&12行苗劌辺*I圖2編輯源代碼編輯完成代碼后,可點(diǎn)擊:文件保存,并選擇保存路徑和設(shè)定文件名,就可實(shí)現(xiàn)文件的保存。注意的是,文件保存的路徑不可太深,且不要有中文目錄,文件名也不要太長(zhǎng),可參照下例:D:workexl.c源代碼編輯完成后,進(jìn)行編譯、鏈接調(diào)試,如圖3所示。只要依次點(diǎn)擊:編譯、鏈接按鈕即可,也可以.育接點(diǎn)擊編譯鏈接

12、按鈕。編譯、鏈接按鈕都有快捷鍵方式,可以使用快捷鍵,實(shí)現(xiàn)同樣的功能。圖3編譯、鏈接在編譯、鏈接的過程中,會(huì)彈出對(duì)話框,可觀察源代碼中是否有錯(cuò),如果有錯(cuò),可修改源代碼,重新編譯、鏈接,直至正確為止。上面的過程實(shí)際上是軟件調(diào)試的過程,接下來要進(jìn)行硬件調(diào)試。首先在斷電的情況下將實(shí)驗(yàn)箱對(duì)應(yīng)電路連線,組成需要的硬件電路,然后按上面步驟做好軟件調(diào)試,正確無誤后,開始進(jìn)行硬件調(diào)試。如圖4所示,點(diǎn)擊調(diào)試按鈕,實(shí)現(xiàn)程序的編譯、鏈接代碼HEX文件下載到實(shí)驗(yàn)箱單片機(jī)的程序區(qū)。圖4調(diào)試程序下載完成后,進(jìn)行硬件調(diào)試,實(shí)現(xiàn)程序?qū)?yīng)的功能。如圖5所示,對(duì)應(yīng)一系列的按鈕,完成各種調(diào)試功能,一般情況下如果程序完全正確無誤后,可

13、直接點(diǎn)擊運(yùn)行按鈕,此時(shí),程序以全速的方式運(yùn)行,我們就可以觀察實(shí)驗(yàn)箱的實(shí)驗(yàn)現(xiàn)象。實(shí)驗(yàn)中,我們還要注意的是,如果硬件調(diào)試有問題,經(jīng)過修改程序需要重新硬件調(diào)試的時(shí)候,可以使用如下方法實(shí)現(xiàn)快速的重新調(diào)試:如圖4點(diǎn)擊單片機(jī)復(fù)位按鈕,彈出確定提示框,根據(jù)提示按一下實(shí)驗(yàn)箱左下方的RESET按鈕,并立刻點(diǎn)擊確定按鈕,如果實(shí)驗(yàn)箱上的六個(gè)數(shù)碼管顯示c_,表明復(fù)位且通信良好,此時(shí)就可重新進(jìn)行硬件調(diào)試了,a)如果顯示p_,表示復(fù)位或者通信存在問題,需要重新操作。HELLO.CCopyright:1995-1999Kt?ilScttincluclo健序血伎:Q)G去執(zhí)行Q)跟;空用里縱行到光標(biāo)行加)F4從光保待抄待(Z

14、)Ctrl+F2FftF7P9*/ont*ogistot*doc1t:ionsed801aerXvatLuettinclulot:ionsFor*I/FunctioncWlFdeFMONITORSIcharcode?t-?5rt*urnendlF3Ctrl+B.ngwithNonlt:or-51needsw.一.se?rialinf:t?-ruptif/*StopExectlonwithSerLaXIntr./*Isenabled*/K1.32C8UC61一LHKL.I.OJ立件(E)冊(cè)輻CE)玫石09探H狂PC)販選頊CO)由口爼)簾ftbQP-c5XG1因WIWI.X.GU丄貯IPSShi

15、t4F5MQiwntoo單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書- #-單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書- #-rtiwmdinCFunct:ion-Programoxocut:icnst:art:sh?t-rofst:acli.nit:iili.Zdt:i.n-voidmainvoid)LED5、LED6-東西方向的綠燈、黃燈、紅燈要完成本實(shí)驗(yàn),首先必須了解交通路燈的亮滅規(guī)律,本實(shí)驗(yàn)的亮滅規(guī)律如下:1、初始態(tài)是兩個(gè)方向路口的紅燈全亮。2、東西路口的綠燈亮,南北路口的紅燈亮,東西方向通車。3、延時(shí)一段時(shí)間后,東西路口綠燈滅,黃燈開始閃爍。4、閃爍若干次后,東西路口紅燈亮,同時(shí)南北路口綠燈亮,南北方向開始通

16、車。5、延時(shí)一段時(shí)間后,南北路口的綠燈滅,黃燈開始閃爍。閃爍若干次后,再切換到東西路口方向,如此反復(fù)下去。本實(shí)驗(yàn)以單脈沖為中斷申請(qǐng),表示有急救車通過。特別注意的是中斷現(xiàn)場(chǎng)的保護(hù)。要求用軟件或者定時(shí)器來完成延時(shí)。2、實(shí)驗(yàn)說明本實(shí)驗(yàn)74LS273芯片對(duì)于單片機(jī)而言,為外擴(kuò)的外部資源,其對(duì)應(yīng)的地址由片選信號(hào)CS273控制,本實(shí)驗(yàn)74LS273的片選CS273接片選信號(hào)CSO,則74LS273項(xiàng)對(duì)于單片機(jī)的外部空間抵制為OxCFBO,C51語言定義如下:defineOUTPORTXBYTEOxCFBO因此交通燈(發(fā)光二極管)的顯示數(shù)據(jù)可以賦給OUTPORT變量,實(shí)現(xiàn)結(jié)果的輸出。本實(shí)驗(yàn)中還要注意的是,交

17、通燈的每一種狀態(tài)的顯示,都需要延時(shí)一段時(shí)間再切換到另一種狀態(tài),從而實(shí)現(xiàn)每一種狀態(tài)的穩(wěn)定顯示。其C51語言的實(shí)現(xiàn)方法如下:OUTPORT二x;/顯示交通燈某一狀態(tài)數(shù)據(jù)x單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書- -Delay(1);/延時(shí)1msOUTPORT二y;顯示交通燈另一狀態(tài)數(shù)據(jù)yDelay(1);/延時(shí)1ms實(shí)驗(yàn)中涉及到急救午通過,要求使用外部中斷的方式實(shí)現(xiàn)。在本實(shí)驗(yàn)中我們可以利用單片機(jī)的外部中斷INTO實(shí)現(xiàn)。也就是說,急救午通過時(shí),首先利用INTO外部中斷給單片機(jī)發(fā)脈沖,告知單片機(jī),急救車要求通過,然后單片機(jī)接收到脈沖,并做出判斷并使東西和南北方向上的紅燈亮,同時(shí)延時(shí)10秒,10秒后表明急救車已

18、經(jīng)通過,此時(shí)單片機(jī)恢復(fù)原狀態(tài)。利用C51語言可定義外部中斷如下:voidRescure_bus()interrupt0EA二0;/關(guān)閉中斷,即不允許其它中斷OUTPORT二0 x11;/0 x11為東西和南北方向上紅燈亮的狀態(tài)數(shù)據(jù)Delay(10000);/延時(shí)10sEA二1;/開啟中斷在調(diào)用外部中斷0時(shí),一定要注意的是中斷現(xiàn)場(chǎng)的保護(hù),要就是說,中斷完成后,一定能夠恢復(fù)中斷前的狀態(tài),那么在中斷程序中使用的變量、外部端口、內(nèi)部資源,如果在中斷前正在使用,那么在中斷開始前一定要保護(hù),中斷后一定要恢復(fù)。同時(shí),注意的是由于在實(shí)驗(yàn)中使用到單片機(jī)資源外部中斷0,需要對(duì)對(duì)應(yīng)的特殊寄存器作一定的配置。首先需要

19、定義特殊寄存器變量:sfrIE=0 xA8;sbitEA=IE7;sbitEXO二IE0;當(dāng)然,這些特殊寄存器的定義實(shí)際上在reg51.h庫中定義了,因此在C51編程時(shí),只要包含上reg51.h即可,如下所示:include本實(shí)驗(yàn)需要使用到這些特殊寄存器,就是在程序初始化時(shí)需要對(duì)這些寄存器賦初值,才可保證對(duì)應(yīng)的INTO中斷正常工作。本實(shí)驗(yàn)賦初值如下:ITO=1;EXO=1;EA=1;本實(shí)驗(yàn)可以根據(jù)實(shí)際實(shí)驗(yàn)箱的配置來選擇以上方案中的任意一種。本實(shí)驗(yàn)按照方案二來設(shè)計(jì),選用實(shí)驗(yàn)箱上八個(gè)發(fā)光二極管中的六個(gè),即紅、黃、綠各兩個(gè)。例如將L1(紅)、L2(綠)、L3(黃)作為東西方向的指示燈,將L5(紅)、

20、L6(綠)、L7(黃)作為南北方向的指示燈,同學(xué)們還可以用別的設(shè)計(jì)方法。各發(fā)光二極管的陽極通過保護(hù)電阻接到+5V的電源上,陰極接到輸入端上,因此使其點(diǎn)亮應(yīng)使相應(yīng)輸入端為低電平。五、實(shí)驗(yàn)步驟1、將74LS273的輸出0007接發(fā)光二極管L1L8,74LS273的片選CS273接片選信號(hào)CSO,此時(shí)74LS273的片選地址為CFAOH。2、脈沖輸入端P_接8051CPU模塊上的INTO,用來表示救護(hù)車的急救信號(hào)。3、按實(shí)驗(yàn)內(nèi)容以及方案二編寫程序。4、仿真調(diào)試,觀察LED顯示情況是否與實(shí)驗(yàn)內(nèi)容相符。六、實(shí)驗(yàn)報(bào)告要求1、寫出實(shí)驗(yàn)?zāi)康?、?shí)驗(yàn)設(shè)備、實(shí)驗(yàn)內(nèi)容,分析實(shí)驗(yàn)原理,總結(jié)實(shí)驗(yàn)步驟。2、畫出流程圖,并寫

21、出實(shí)驗(yàn)仿真調(diào)試后正確的程序。3、對(duì)實(shí)驗(yàn)思考題加以分析,按照要求做出回答,并作實(shí)驗(yàn)總結(jié)。七、實(shí)驗(yàn)思考題1、本實(shí)驗(yàn)作了哪些中斷現(xiàn)場(chǎng)保護(hù),并解釋其保護(hù)的過程?2、實(shí)驗(yàn)總結(jié)(實(shí)驗(yàn)調(diào)試過程中的問題和調(diào)試體會(huì))。預(yù)習(xí)任務(wù):1、按照指導(dǎo)書提供的方案畫出程序?qū)崿F(xiàn)的流程框圖。2、編寫實(shí)驗(yàn)程序來模擬有急救車的交通燈控制。3、用軟件延時(shí)或者定時(shí)器延時(shí)來完成延時(shí)函數(shù)的書寫。實(shí)驗(yàn)三8255擴(kuò)展八段數(shù)碼管實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)8255芯片的結(jié)構(gòu)及編程方法。2、掌握八段數(shù)碼管的使用方法,及動(dòng)態(tài)顯示的編程方法。二、實(shí)驗(yàn)設(shè)備EL-MUT-III型單片機(jī)實(shí)驗(yàn)箱、8051CPU模塊、PC機(jī)三、實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)的原理圖如下所示:08段

22、碼v位碼&本實(shí)驗(yàn)通過單片機(jī)控制8255芯片,利用8255的PA口輸出數(shù)碼管的段碼,PB口輸出數(shù)碼管的位碼。編寫C51程序?qū)崿F(xiàn)六個(gè)數(shù)碼管以固定時(shí)間間隔交替動(dòng)態(tài)顯示“012345”和“ABCDEF”。四、實(shí)驗(yàn)原理8255芯片是單片機(jī)通用的并行接口擴(kuò)展芯片,可擴(kuò)展PA、PB、PC三個(gè)8位并行口。對(duì)于單片機(jī)而言,如果外接8255芯片,那么8255所對(duì)應(yīng)的外部空間地址不再是固定為一個(gè)值了。本實(shí)驗(yàn)8255的片選信號(hào)接CS0,則表明8255相對(duì)于單片機(jī)的外部地址范圍是0 xCFA0-0 xCFA7,此時(shí)8255的PA口、PB口、PC口、控制字寄存器對(duì)應(yīng)于單片機(jī)的外部地址為:OxCFAO、OxCFAl、0 x

23、CFA2、0 xCFA3,其對(duì)應(yīng)C51定義可如下例:ttdefinePAXBYTEOxCFAOttdefinePBXBYTEOxCFAlttdefinePCXBYTE0 xCFA2ttdefinePCTLXBYTE0 xCFA3對(duì)于八段數(shù)碼管,顯示數(shù)據(jù)時(shí)需要同時(shí)送入段碼和位碼,位碼就是選擇哪一個(gè)數(shù)碼管接收段碼數(shù)據(jù),段碼就是需要顯示的字符的編碼。在C51中段碼可定義如下:unsignedcharcodetable17=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7f,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,

24、0 x71,0 x00;上面定義的是字符0-9.A-F以及黑屏的段碼數(shù)據(jù),而且是共陰極八段數(shù)碼管的段碼數(shù)據(jù)。當(dāng)需要顯示某一個(gè)字符時(shí),只要査詢tabled數(shù)組即可,如:顯示A字符,直接調(diào)用table10即可。對(duì)于單片機(jī)控制8255,實(shí)現(xiàn)依次點(diǎn)亮數(shù)碼管的方法,可參照下例程序:mainm=l;PCTL=0 x80;/設(shè)置PA、PB的工作方式while(l)保證0-5字符能夠穩(wěn)定顯示在數(shù)碼管上for(i=0;i=5;i+)PA=tablei;/六個(gè)數(shù)碼管依次點(diǎn)亮0-5PB=255-(mi);/選通對(duì)應(yīng)的數(shù)碼管,如:0字符由數(shù)碼管1點(diǎn)亮Delay(1);/延時(shí)1ms對(duì)于8255芯片的控制字的各個(gè)位含義以

25、及對(duì)應(yīng)的方式可査閱8255芯片的資料。五、實(shí)驗(yàn)步1、實(shí)驗(yàn)連線:PA0PA7接LED-ALED-DP,PB0PB5接LED1LED6,8255cs接片選信號(hào)CSO,LEDJUMP的帽全部去掉。2、按實(shí)驗(yàn)內(nèi)容編寫程序,實(shí)現(xiàn)八位數(shù)碼管交替動(dòng)態(tài)顯示“012345”和“ABCDEF”。3、仿真調(diào)試,觀察數(shù)碼管的顯示情況。六、實(shí)驗(yàn)報(bào)告要求1、寫出實(shí)驗(yàn)?zāi)康?、?shí)驗(yàn)設(shè)備、實(shí)驗(yàn)內(nèi)容,分析實(shí)驗(yàn)原理,總結(jié)實(shí)驗(yàn)步驟。2、畫出流程圖,并寫出實(shí)驗(yàn)仿真調(diào)試后正確的程序。3、對(duì)實(shí)驗(yàn)思考題加以分析,按照要求做出回答,并作實(shí)驗(yàn)總結(jié)。七、實(shí)驗(yàn)思考題1、本實(shí)驗(yàn)如果實(shí)現(xiàn)“012345”從右向左依次進(jìn)入六個(gè)數(shù)碼管動(dòng)態(tài)顯示,該如何完成?請(qǐng)畫

26、出流程圖。2、實(shí)驗(yàn)總結(jié)(實(shí)驗(yàn)調(diào)試過程中的問題和調(diào)試體會(huì))。預(yù)習(xí)任務(wù):1、按照上述要求畫出只動(dòng)態(tài)顯示“012345”的程序流程框圖,并編寫相應(yīng)的程序。2、按照上述要求畫出只動(dòng)態(tài)顯示“ABCDEF”的程序流程框圖,并編寫相應(yīng)的程序。3、用定時(shí)器延時(shí)和軟件延時(shí)兩種方法來完成延時(shí)函數(shù)的書寫。單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書- -單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書- -實(shí)驗(yàn)8253多路定時(shí)/計(jì)數(shù)器實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)8253擴(kuò)展定時(shí)器的工作原理。2、學(xué)習(xí)8253擴(kuò)展定時(shí)器的使用方法。3、繼續(xù)熟練掌握數(shù)碼管的顯示。二、實(shí)驗(yàn)設(shè)備EL-MUT-III型單片機(jī)實(shí)驗(yàn)箱、8051CPU模塊、PC機(jī)三、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)的

27、原理圖如下所示:LED-ALED-DPP單片機(jī)且CS1、27310007)4也數(shù)碼管P0PIOP13TLED1LED4TOC o 1-5 h z打825314分別與八段數(shù)碼管的LED1LED4相連。3、將8253的8253CLK0與CLK1相連,將8253的GATEO與P17相連,將CS8253與CSO相連。4、按實(shí)驗(yàn)內(nèi)容編寫程序,實(shí)現(xiàn)四位數(shù)碼管上顯丞8253定時(shí)/計(jì)數(shù)器0對(duì)輸入脈沖的計(jì)數(shù)值,即閂鎖數(shù)值5、仿真調(diào)試,觀察數(shù)碼管的顯示情況。六、實(shí)驗(yàn)報(bào)告要求1、寫出實(shí)驗(yàn)?zāi)康摹?shí)驗(yàn)設(shè)備、實(shí)驗(yàn)內(nèi)容,分析實(shí)驗(yàn)原理,總結(jié)實(shí)驗(yàn)步驟。2、畫出流程圖,并寫出實(shí)驗(yàn)仿真調(diào)試后正確的程序。3、對(duì)實(shí)驗(yàn)思考題加以分析,按

28、照要求做出回答,并作實(shí)驗(yàn)總結(jié)。七、實(shí)驗(yàn)思考丿1、理論計(jì)算本實(shí)驗(yàn)計(jì)數(shù)器0的閂鎖數(shù)值,與實(shí)驗(yàn)得到的顯示結(jié)果進(jìn)行比較。2、假定8253的三個(gè)計(jì)數(shù)器對(duì)同一輸入信號(hào)計(jì)數(shù),在三個(gè)輸出端分別作2分頻、4分頻、8分頻,畫出實(shí)現(xiàn)該功能的流程圖,并寫出對(duì)應(yīng)的控制字。3、實(shí)驗(yàn)總結(jié)(實(shí)驗(yàn)調(diào)試過程中的問題和調(diào)試體會(huì))。預(yù)習(xí)任務(wù):1、預(yù)習(xí)8253的控制字的格式、8253的工作方式以及8253的操作過程。2、通過理論計(jì)算得到閂鎖數(shù)值,然后與實(shí)驗(yàn)得到的顯示結(jié)果進(jìn)行比較。實(shí)驗(yàn)五8279鍵盤顯示擴(kuò)展實(shí)驗(yàn)(綜合性)一、實(shí)驗(yàn)?zāi)康?、了解8279鍵盤/顯示控制器的匸作原理,掌握其編程方法。2、了解鍵盤電路工作原理及編程方法。3、熟悉L

29、ED顯示接口電路及】作原理和編程方法。二、實(shí)驗(yàn)設(shè)備EL-MUT-III型單片機(jī)實(shí)驗(yàn)箱、8051CPU模塊、PC機(jī)三、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)的原理圖如下所示:Q/T2LTTaILTTX1OLTTYovre-iaurrc-iUTC-1coSLba.i2LLZL1xldIXHd113LIXLBE-八Tzt-xt11/qap0CITZCC5八T-BfiZCzbx1XOID/S$CLLRQSQTRLOHLIHL1.HL1HLLOE1LHC1SLODIa-112T?in*rLcntRLTSHIFTc-?-cruS單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書- #-ra-=r單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書- #-單片機(jī)C語言程序

30、設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書- -8279與一個(gè)16個(gè)鍵的小鍵盤相連,16鍵的編碼為0、1、2、3、4、5、6、7、8、9、A、B、C、D實(shí)驗(yàn)要求和內(nèi)容如下:1、如果按下的是數(shù)字鍵,則在顯示器上將該數(shù)字依次顯示。2、如果按下的是“C”鍵,則顯示器全滅。本實(shí)驗(yàn)中各個(gè)按鍵還可以實(shí)現(xiàn)其它的功能,可以自行設(shè)計(jì)安排,并編程實(shí)現(xiàn)。四、實(shí)驗(yàn)原理8279是一種可編程鍵盤/顯示器接口芯片,利用它的掃描傳感器陣列方式,可實(shí)現(xiàn)多路開關(guān)變位信號(hào)采集及處理,然后將處理結(jié)果送到CPU,這樣可節(jié)省CPU資源。其功能有:接收來自鍵盤的輸入數(shù)據(jù),并作預(yù)處理;數(shù)據(jù)顯示的管理和數(shù)據(jù)顯示器的控制等。8279的引腳功能、控制字以及對(duì)應(yīng)的工作方式可査

31、閱8279芯片的資料。本實(shí)驗(yàn)中已經(jīng)將鍵盤控制芯片8279的地址固定為OxCFES、0 xCFE9,即8279的數(shù)據(jù)端口地址對(duì)應(yīng)OxCFES,8279的命令字和狀態(tài)字的地址為0 xCFE9。可定義如下:ttdefinecomXBYTE0 xCFE9ttdefinedataportXBYTEOxCFES實(shí)驗(yàn)中鍵盤接口與8279的回復(fù)線RLORL7、掃描線SLOSL2相連,組成鍵盤輸入電路,六個(gè)數(shù)碼管與8279的OUTAOOUTA3、OUTBOOUTB3以及驅(qū)動(dòng)電路組成顯示回路。8279芯片在C51編程中是較為復(fù)朵的,因?yàn)樗休^多的控制命令字和狀態(tài)字,學(xué)會(huì)使用這些命令字是很重要的例如,8279初始化

32、時(shí)首先需要執(zhí)行清除命令:com=0 xdl;/總清除命令doACC=com;/讀取8279狀態(tài)while(ACCA7=l)/等待清除結(jié)束同時(shí),需要設(shè)置鍵盤工作方式、顯示方式、時(shí)鐘分頻等命令字,使8279工作在要求的方式中:com=0 x00;/8個(gè)字符顯爾,左入口;編碼掃描鍵盤,雙鍵鎖定com=0 x2a;/10分頻鍵盤有無鍵按下的判斷可以如下判斷:k二com;/讀取狀態(tài)字while(k&Of)=O);/判斷是否為0:二0等待;H0有鍵按下,往下執(zhí)行實(shí)現(xiàn)讀取鍵盤值的命令可參照如下例程:com=0 x40;/讀FIFORAM命令,地址0 x0000i二dataport;/讀取一個(gè)鍵盤數(shù)據(jù)i=i&

33、0 x3f;/取低6位為鍵盤值8279的顯示功能的實(shí)現(xiàn)可借鑒如下程序:for(i=0;i8;i+)com=i+80;/寫顯RAM命令,顯示區(qū)地址由i控制dataport=tablei;/顯爾的字符編碼輸出到數(shù)據(jù)端口本實(shí)驗(yàn),是上面各種命令字的一種綜合應(yīng)用的實(shí)例,大家可以査閱8279芯片資料,學(xué)會(huì)使用各種具體的命令,從而完成對(duì)應(yīng)的任務(wù)。五、實(shí)驗(yàn)步驟1、將鍵盤KA10KA12接8279的KA0KA2;RL10RL17接8279的RL0RL7。2、按實(shí)驗(yàn)內(nèi)容編寫程序,實(shí)現(xiàn)按下數(shù)字鍵,則在顯示器上將該數(shù)字依次顯示,按下“C”鍵,則顯示器全滅。3、仿真調(diào)試,按動(dòng)鍵盤,觀察顯不的鍵值與給定鍵值是否相符。六、

34、實(shí)驗(yàn)報(bào)告要求1、寫出實(shí)驗(yàn)?zāi)康?、?shí)驗(yàn)設(shè)備、實(shí)驗(yàn)內(nèi)容,分析實(shí)驗(yàn)原理,總結(jié)實(shí)驗(yàn)步驟。2、畫出流程圖,并寫出實(shí)驗(yàn)仿真調(diào)試后正確的程序。3、對(duì)實(shí)驗(yàn)思考題加以分析,按照要求做出回答,并作實(shí)驗(yàn)總結(jié)。七、實(shí)驗(yàn)思考題1、假定實(shí)現(xiàn)按下“D”鍵,6個(gè)LED顯示123456的功能,請(qǐng)畫出其流程圖。2、實(shí)驗(yàn)總結(jié)(實(shí)驗(yàn)調(diào)試過程中的問題和調(diào)試體會(huì))。預(yù)習(xí)任務(wù):1、査閱并熟悉8279芯片資料。2、自己査閱八段數(shù)碼管LED顯示器。3、按照實(shí)驗(yàn)內(nèi)容,編寫相應(yīng)的程序?qū)崿F(xiàn)各個(gè)功能。單片機(jī)C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書- -實(shí)驗(yàn)六點(diǎn)對(duì)點(diǎn)異步串口通信實(shí)驗(yàn)(設(shè)計(jì)性)一、實(shí)驗(yàn)?zāi)康?、掌握串行口工作方式的程序設(shè)計(jì),掌握單片機(jī)通訊程序的編制。2、了解

35、實(shí)現(xiàn)串行通訊的硬件環(huán)境,數(shù)據(jù)格式、數(shù)據(jù)交換的協(xié)議。3、掌握串行通訊中波特率的設(shè)置。4、在給定通訊波特率的情況下,會(huì)計(jì)算定時(shí)時(shí)間常數(shù)。二、實(shí)驗(yàn)設(shè)備EL-MUT-III型單片機(jī)實(shí)驗(yàn)箱、8051CPU模塊、PC機(jī)三、實(shí)驗(yàn)原理MCS-51單片機(jī)串行通訊的波特率隨串行口工作方式選擇的不同而不同,它除了與系統(tǒng)的振蕩頻率f,電源控制寄存器PCON的SMOD位有關(guān)外,還與定時(shí)器T1的設(shè)置有關(guān)。1)在工作方式0時(shí),波特率固定不變,僅與系統(tǒng)振蕩頻率有關(guān),其大小為f/12。2)在工作方式2時(shí),波特率也只固定為兩種情況:當(dāng)SMOD=1時(shí),波特率=f/32當(dāng)SMOD=O時(shí),波特率=f/643)在工作方式1和3時(shí),波特率

36、是可變的:當(dāng)SMOD=1時(shí),波特率二定時(shí)器T1的溢出率/16當(dāng)SMOD=O時(shí),波特率二定時(shí)器T1的溢出率/32其中,定時(shí)器T1的溢出率=f/(12*(256-N),N為T1的定時(shí)時(shí)間常數(shù)。在實(shí)際應(yīng)用中,往往是給定通訊波特率,而后去確定時(shí)間常數(shù)。例如:f=6.144MHZ,波特率等于1200,SM0D=0時(shí),則1200=6144000/(12*32*(256-N),計(jì)算得N二F2H。編程時(shí)注意兩點(diǎn):一是初始化,設(shè)置波特率和數(shù)據(jù)格式,二是確定數(shù)據(jù)傳送方式。數(shù)據(jù)傳送方式有兩種:查詢方式和中斷方式。在雙機(jī)通信實(shí)驗(yàn)時(shí),為確保通訊成功,甲機(jī)和乙機(jī)必須有一個(gè)一致的通訊協(xié)議,同學(xué)們可以自行設(shè)定,也可按照我們?cè)O(shè)

37、計(jì)的通信協(xié)議來做,我們提供的通信協(xié)議如下:通訊雙方均采用2400波特的速率傳送,甲機(jī)發(fā)送數(shù)據(jù),乙機(jī)接收數(shù)據(jù)。雙機(jī)開始通訊時(shí),甲機(jī)發(fā)送一個(gè)呼叫信號(hào)“06”,詢問乙機(jī)是否可以接收數(shù)據(jù);乙機(jī)收到呼叫信號(hào)后,若同意接收數(shù)據(jù)則發(fā)回“00”作為應(yīng)答,否則發(fā)“15”表示暫不能接收數(shù)據(jù);甲機(jī)只有收到乙機(jī)的應(yīng)答信號(hào)“00”后才可把要發(fā)送的數(shù)據(jù)發(fā)送給乙機(jī),否則繼續(xù)向乙機(jī)呼叫,直到乙機(jī)同意接收。其發(fā)送數(shù)據(jù)格式為:字節(jié)數(shù)n數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)3數(shù)據(jù)n累加校驗(yàn)和字節(jié)數(shù)n:甲機(jī)將向乙機(jī)發(fā)送的數(shù)據(jù)個(gè)數(shù)數(shù)據(jù)1數(shù)據(jù)n:甲機(jī)將向乙機(jī)發(fā)送的n個(gè)數(shù)據(jù)累加校驗(yàn)和:字節(jié)數(shù)n,數(shù)據(jù)1,,數(shù)據(jù)n這(n+1)個(gè)字節(jié)內(nèi)容的算術(shù)累加和。乙機(jī)根據(jù)接收到的“校驗(yàn)和”判斷已接收到的數(shù)據(jù)是否正確。若接收正確,向甲機(jī)回發(fā)“OF”信號(hào),否則回發(fā)“F0”信號(hào)給甲機(jī)。甲機(jī)只有接到信號(hào)“OF”才算完成發(fā)送任務(wù),否則繼續(xù)呼叫,重發(fā)數(shù)據(jù)。在串行通信的C51編程當(dāng)中,將會(huì)涉及到一系列的特殊寄存器的使用,如:TMOD.PCON、SCON、SBUF、TI、RI、TH、TL1、TR1等。它們的使用方法如下:PCON=OxOO;/SMOD=O,串行波特率未加倍SC0N=0 x50;/方式1;接收允許TMOD二0 x20;/定時(shí)器1方式2TLl=0 xF2;/初始值,用于計(jì)算波特率THl=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論