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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

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

10、,調(diào)試軟件能夠正確地進入調(diào)試環(huán)境,如圖1所示。圖1新建C51文件如圖1所示點擊:文件新建C61文件,建立新C51文件,即可進入編輯環(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編輯源代碼編輯完成代碼后,可點擊:文件保存,并選擇保存路徑和設定文件名,就可實現(xiàn)文件的保存。注意的是,文件保存的路徑不可太深,且不要有中文目錄,文件名也不要太長,可參照下例:D:workexl.c源代碼編輯完成后,進行編譯、鏈接調(diào)試,如圖3所示。只要依次點擊:編譯、鏈接按鈕即可,也可以.育接點擊編譯鏈接

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

13、直接點擊運行按鈕,此時,程序以全速的方式運行,我們就可以觀察實驗箱的實驗現(xiàn)象。實驗中,我們還要注意的是,如果硬件調(diào)試有問題,經(jīng)過修改程序需要重新硬件調(diào)試的時候,可以使用如下方法實現(xiàn)快速的重新調(diào)試:如圖4點擊單片機復位按鈕,彈出確定提示框,根據(jù)提示按一下實驗箱左下方的RESET按鈕,并立刻點擊確定按鈕,如果實驗箱上的六個數(shù)碼管顯示c_,表明復位且通信良好,此時就可重新進行硬件調(diào)試了,a)如果顯示p_,表示復位或者通信存在問題,需要重新操作。HELLO.CCopyright:1995-1999Kt?ilScttincluclo健序血伎:Q)G去執(zhí)行Q)跟;空用里縱行到光標行加)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)冊輻CE)玫石09探H狂PC)販選頊CO)由口爼)簾ftbQP-c5XG1因WIWI.X.GU丄貯IPSShi

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

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

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

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

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

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

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

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

23、CFA2、0 xCFA3,其對應C51定義可如下例:ttdefinePAXBYTEOxCFAOttdefinePBXBYTEOxCFAlttdefinePCXBYTE0 xCFA2ttdefinePCTLXBYTE0 xCFA3對于八段數(shù)碼管,顯示數(shù)據(jù)時需要同時送入段碼和位碼,位碼就是選擇哪一個數(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ù)。當需要顯示某一個字符時,只要査詢tabled數(shù)組即可,如:顯示A字符,直接調(diào)用table10即可。對于單片機控制8255,實現(xiàn)依次點亮數(shù)碼管的方法,可參照下例程序:mainm=l;PCTL=0 x80;/設置PA、PB的工作方式while(l)保證0-5字符能夠穩(wěn)定顯示在數(shù)碼管上for(i=0;i=5;i+)PA=tablei;/六個數(shù)碼管依次點亮0-5PB=255-(mi);/選通對應的數(shù)碼管,如:0字符由數(shù)碼管1點亮Delay(1);/延時1ms對于8255芯片的控制字的各個位含義以

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

最新文檔

評論

0/150

提交評論