武漢理工大學(xué)《單片機(jī)應(yīng)用實(shí)習(xí)》報告.doc
《武漢理工大學(xué)《單片機(jī)應(yīng)用實(shí)習(xí)》報告.doc》由會員分享,可在線閱讀,更多相關(guān)《武漢理工大學(xué)《單片機(jī)應(yīng)用實(shí)習(xí)》報告.doc(44頁珍藏版)》請在裝配圖網(wǎng)上搜索。
目錄摘 要Abstract1設(shè)計任務(wù)及要求12 基本原理32.1基本原理及原理框圖32.2 STC89C52結(jié)構(gòu)功能介紹33 硬件電路原理與設(shè)計53.1復(fù)位電路53.1.1上電復(fù)位53.1.2按鍵復(fù)位53.2振蕩電路63.3單片機(jī)最小系統(tǒng)單片機(jī)73.4數(shù)碼管顯示電路73.5 矩陣鍵盤電路93.6 串口通信電路103.7 總設(shè)計電路114 軟件設(shè)計124.1 軟件介紹124.1.1 設(shè)計軟件Protel124.1.2 程序編寫軟件Keil124.1.3 仿真軟件Proteus134.2 數(shù)碼管顯示設(shè)計134.3串行通信接收程序145 仿真結(jié)果與分析155.1 矩陣鍵盤功能仿真155.1.1 數(shù)據(jù)輸入155.1.2 數(shù)據(jù)顯示156 實(shí)物展示177 心得體會198.參考文獻(xiàn)20附錄:元件清單21附錄:總程序設(shè)計22附錄:實(shí)習(xí)日記32摘 要單片微型計算機(jī)簡稱單片機(jī),又稱為微型控制器,是微型計算機(jī)的一個重要分支。隨著電子技術(shù)的發(fā)展,大規(guī)模及超大規(guī)模集成電路和制造工藝的進(jìn)一步提高,單片機(jī)以其高可靠性、高性價比、低電壓、低功耗等一系列優(yōu)點(diǎn),廣泛應(yīng)用于控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、智能化儀器表等領(lǐng)域。本次課程設(shè)計包括單片機(jī)最小系統(tǒng)(包括復(fù)位和時鐘電路)及供電系統(tǒng)、4*4矩陣鍵盤、獨(dú)立6個8段LED數(shù)碼管顯示電路。利用Protel電路設(shè)計軟件進(jìn)行原理圖設(shè)計,利用keil軟件編程以及proteus軟件仿真,借此鞏固單片機(jī)應(yīng)用、模擬電路、數(shù)字電路課程及學(xué)會各種工程軟件的使用。關(guān)鍵字:單片機(jī)、數(shù)碼管顯示、矩陣鍵盤掃描AbstractSingle chip microcomputer short chip, also known as the micro controller, is a microcomputer is an important branch of. With the development of electronic technology, large-scale and ultra large scale integrated circuit and manufacturing process to further improve, chip for its high reliability, high cost, low voltage, low power consumption and a series of advantages, widely used in control system, data acquisition system, intelligent instrument and meter etc.The curriculum design, including the smallest single-chip system ( including a reset and clock circuit and power supply system ), 4*4 matrix keyboard, the independent 6 8 LED digital tube display circuit . Using Protel circuit design software schematic design, using keil software and Proteus Software simulation, to consolidate the SCM application, analog circuit, digital circuit course and learn all kinds of engineering software use.Keyword: microcontroller, digital display, matrix keyboard scanning1設(shè)計任務(wù)及要求1)利用上述材料完成包含如下系統(tǒng)功能組件的單片機(jī)最小系統(tǒng)的設(shè)計、焊接、調(diào)試(1)鍵盤一個4X4的矩陣鍵盤,其中,10個按鍵是09數(shù)字鍵;另外6個是功能鍵,用于功能選擇和控制,如“數(shù)據(jù)輸入”、“數(shù)據(jù)顯示”、“串行通信”功能選擇鍵,以及“回車”、“清除”、控制鍵。(2)顯示電路由6個7段LED數(shù)碼管組成的顯示電路。(3)串口串行通信利用51的串口實(shí)現(xiàn)串行通信接口電路。2)完成ISP下載電路的設(shè)計、焊接3)完成系統(tǒng)軟件的設(shè)計,包括程序結(jié)構(gòu)設(shè)計、流程圖繪制、程序設(shè)計,實(shí)現(xiàn)如下功能(1)功能選擇通過功能選擇鍵,使得單片機(jī)處于不同的工作狀態(tài)并通過LED顯示相應(yīng)的內(nèi)容;可選擇的功能包括:數(shù)據(jù)輸入;數(shù)據(jù)顯示;串口通信(2)數(shù)據(jù)輸入通過功能選擇鍵選擇“數(shù)據(jù)輸入”后,可分次輸入10個4位十進(jìn)制數(shù)據(jù),并將輸入的數(shù)據(jù)保存在內(nèi)部RAM中。數(shù)據(jù)輸入要求:第一步輸入序號09,表明輸入的是第幾個4位十進(jìn)制數(shù)據(jù);第二步按下回車鍵,完成序號輸入;第三步輸入最多4位的十進(jìn)制數(shù)據(jù);第四步按下回車鍵,完成數(shù)據(jù)輸入;重復(fù)第一步,開始新數(shù)據(jù)的輸入;輸入數(shù)據(jù)的顯示格式是:最左邊是序號,然后是空格,之后是從右到左的最多4位十進(jìn)制數(shù);若在輸入過程中(第一步或第三步)出現(xiàn)錯誤,按“清除”鍵,重新從第一步開始輸入數(shù)據(jù)?;蛘?,自己設(shè)計10個十進(jìn)制數(shù)的輸入及顯示方式。(3)數(shù)據(jù)顯示通過功能選擇鍵選擇“數(shù)據(jù)顯示”后,可顯示之前輸入的10個4位十進(jìn)制數(shù)據(jù)中的任一個,要求:第一步輸入序號09,表明顯示的是第幾個4位十進(jìn)制數(shù)據(jù);第二步顯示相應(yīng)的數(shù)據(jù);重復(fù)第一步、第二步,顯示其他的數(shù)據(jù);數(shù)據(jù)的顯示格式是:最左邊是序號,然后是空格,之后是要顯示的數(shù)據(jù),從右到左最多4位十進(jìn)制數(shù)?;蛘?,自己設(shè)計數(shù)據(jù)的顯示方式。(4)數(shù)據(jù)通信將兩個單片機(jī)最小系統(tǒng)通過串口連接起來,其中一個作為主系統(tǒng),另一個作為輔系統(tǒng)。當(dāng)通過功能選擇鍵選擇“串行通信”后,當(dāng)在主系統(tǒng)上按下數(shù)字鍵后主系統(tǒng)的LED按從左向右移東的方式顯示按鍵輸入的數(shù)字,同時輔系統(tǒng)的LED上顯示與主系統(tǒng)同樣的內(nèi)容。4)利用仿真軟件完成系統(tǒng)仿真工作5)在單片機(jī)最小系統(tǒng)硬件上實(shí)現(xiàn)任務(wù)3中規(guī)定的功能2 基本原理2.1基本原理及原理框圖單片機(jī)最小系統(tǒng),是指用最小的元件組成的單片機(jī)可以工作的系統(tǒng)。對51系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)該包括:單片機(jī)、晶振電路、復(fù)位電路。單片機(jī)接口電路主要用來連接計算機(jī)和其他外部設(shè)備。本次設(shè)計主要完成的擴(kuò)展電路包括鍵盤電路、數(shù)碼管顯示、串行通信三大模塊。其原理框圖如下圖2.1所示:數(shù)碼管顯示顯示顯示STC89C52震蕩電路路復(fù)位電路路數(shù)據(jù)通信矩陣鍵盤 圖2.1總原理框圖2.2 STC89C52結(jié)構(gòu)功能介紹STC89C52片內(nèi)集成256字節(jié)程序運(yùn)行空間、8K字節(jié)Flash存儲空間,支持最大64K外部存儲擴(kuò)展。根據(jù)不同的運(yùn)行速度和功耗的要求,時鐘頻率可以設(shè)置在0-33M之間。片內(nèi)資源有4組I/O控制端口、3個定時器、8個中斷、軟件設(shè)置低能耗模式、看門狗和斷電保護(hù)??梢栽?V到5.5V寬電壓范圍內(nèi)正常工作。不斷發(fā)展的半導(dǎo)體工藝也讓該單片機(jī)的功耗不斷降低。同時,該單片機(jī)支持計算機(jī)并口下載,簡單的數(shù)字芯片就可以制成下載線,僅僅幾塊錢的價格讓該型號單片機(jī)暢銷10年不衰。根據(jù)不同場合的要求,這款單片機(jī)提供了多種封裝,本次設(shè)計根據(jù)最小系統(tǒng)有時需要更換單片機(jī)的具體情況,使用雙列直插DIP-40的封裝。STC89C52引腳圖如圖2.2: 圖2.2 STC89C52引腳圖STC89C52芯片共40引腳,各引腳功能如下:VCC(40引腳):電源電壓VSS(20引腳):接地RST復(fù)位端P0端口(P0.0P0.7,3932引腳):P0口是一個漏極開路的8位雙向I/O口。作為輸出端口,每個引腳能驅(qū)動8個TTL負(fù)載,對端口P0寫入“1”時,可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時,P0口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。P0端口需要外加上拉電阻。P1端口(P1.0P1.7,18引腳):P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O口。P2端口(P2.0P2.7,2128引腳):P2口是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。在訪問外部程序存儲器和16位地址的外部數(shù)據(jù)存儲器(如執(zhí)行“MOVX DPTR”指令)時,P2送出高8位地址。P3端口(P3.0P3.7,1017引腳):P3是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。P3的輸出緩沖器可驅(qū)動(吸收或輸出電流方式)4個TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這時可用作輸入口。P3做輸入口使用時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸入一個電流。P3口除作為一般I/O口外,還有其他一些復(fù)用功能。3 硬件電路原理與設(shè)計硬件電路主要由復(fù)位電路、振蕩電路、數(shù)碼管顯示電路、矩陣鍵盤電路和串口電路等組成。3.1復(fù)位電路單片機(jī)的置位和復(fù)位,都是為了把電路初始化到一個確定的狀態(tài),一般來說,單片機(jī)復(fù)位電路作用是把一個例如狀態(tài)機(jī)初始化到空狀態(tài),而在單片機(jī)內(nèi)部,復(fù)位的時候單片機(jī)是把一些寄存器以及存儲設(shè)備裝入廠商預(yù)設(shè)的一個值。單片機(jī)復(fù)位電路原理是在單片機(jī)的復(fù)位引腳RST上外接電阻和電容,實(shí)現(xiàn)上電復(fù)位。當(dāng)復(fù)位電平持續(xù)兩個機(jī)器周期以上時復(fù)位有效。復(fù)位電平的持續(xù)時間必須大于單片機(jī)的兩個機(jī)器周期。具體數(shù)值可以由RC電路計算出時間常數(shù)。復(fù)位電路由按鍵復(fù)位和上電復(fù)位兩部分組成。3.1.1上電復(fù)位STC89系列單片及為高電平復(fù)位,通常在復(fù)位引腳RST上連接一個電容到VCC,再連接一個電阻到GND,由此形成一個RC充放電回路保證單片機(jī)在上電時RST腳上有足夠時間的高電平進(jìn)行復(fù)位,隨后回歸到低電平進(jìn)入正常工作狀態(tài),這個電阻和電容的典型值為10K和10uF。3.1.2按鍵復(fù)位按鍵復(fù)位就是在復(fù)位電容上并聯(lián)一個開關(guān),當(dāng)開關(guān)按下時電容被放電、RST也被拉到高電平,而且由于電容的充電,會保持一段時間的高電平來使單片機(jī)復(fù)位。電路圖如圖3.1。 圖3.1 復(fù)位電路3.2振蕩電路單片機(jī)系統(tǒng)里都有晶振在單片機(jī)系統(tǒng)里晶振作用非常大全稱叫晶體振蕩器他結(jié)合單片機(jī)內(nèi)部電路產(chǎn)生單片機(jī)所需的時鐘頻率單片機(jī)晶振提供的時鐘頻率越高那么單片機(jī)運(yùn)行速度就越快單片接的一切指令的執(zhí)行都是建立在單片機(jī)晶振提供的時鐘頻率。 在通常工作條件下普通的晶振頻率絕對精度可達(dá)百萬分之五十。高級的精度更高。有些晶振還可以由外加電壓在一定范圍內(nèi)調(diào)整頻率稱為壓控振蕩器VCO。晶振用一種能把電能和機(jī)械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作以提供穩(wěn)定精確的單頻振蕩。 單片機(jī)晶振的作用是為系統(tǒng)提供基本的時鐘信號。通常一個系統(tǒng)共用一個晶振便于各部分保持同步。有些通訊系統(tǒng)的基頻和射頻使用不同的晶振而通過電子調(diào)整頻率的方法保持同步。 晶振通常與鎖相環(huán)電路配合使用以提供系統(tǒng)所需的時鐘頻率。如果不同子系統(tǒng)需要不同頻率的時鐘信號可以用與同一個晶振相連的不同鎖相環(huán)來提供。 STC89C51使用11.0592MHz的晶體振蕩器作為振蕩源由于單片機(jī)內(nèi)部帶有振蕩電路所以外部只要連接一個晶振和兩個電容即可電容容量一般在15pF至50pF之間。其電路原理圖如3.2所示。圖3.2 振蕩電路3.3單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng)包括晶振時鐘電路和復(fù)位電路。原理圖如圖 3.3 所示:圖3.3 單片機(jī)最小系統(tǒng)圖3-3 單片機(jī)最小系統(tǒng) 在單片機(jī)引腳 XTAL1 和 XTAL2 外接晶體整蕩器或陶瓷振蕩器,就構(gòu)成了內(nèi)部震蕩方式,由于單片機(jī)內(nèi)部有一個高增益反向放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器,并產(chǎn)生振蕩時鐘脈沖,晶振通常選擇 6MHz、12MHz 或 24MHz,這里取晶振為12MHz。與晶振連接的電容起穩(wěn)定振蕩頻率、快速起振的作用。電容值一般為 530pf。 復(fù)位操作完成單片機(jī)片內(nèi)電路初始化,復(fù)位結(jié)束后,單片機(jī)從一種確定狀態(tài)開始運(yùn)行。當(dāng)單片機(jī)復(fù)位引腳 RST 出現(xiàn) 5ms 以上高電平時,單片機(jī)就完成復(fù)位操作。復(fù)位操作通常有兩種形式:上電復(fù)位和開關(guān)復(fù)位。常用上電開關(guān)復(fù)位電路如上圖所示,上電后,由于電容 C1 充電,時 RST 持續(xù)一段時間高電平。當(dāng)單片機(jī)已在運(yùn)行中時,按下復(fù)位鍵也能使 RST 持續(xù)一段時間高電平,從而實(shí)現(xiàn)開關(guān)復(fù)位操作。3.4數(shù)碼管顯示電路LED數(shù)碼管顯示是利用半導(dǎo)體發(fā)光制成條形的發(fā)光二極管,封裝在一起組成數(shù)字或其他符號形狀。數(shù)碼管根據(jù)公共端不同,分為共陰極和共陽極兩種形式。圖3.4.1為共陰極數(shù)碼管內(nèi)部電路,圖3.4.2為共陽極數(shù)碼管內(nèi)部電路。圖3.4.1為共陰極數(shù)碼管內(nèi)部電路 圖3.4.2為共陽極數(shù)碼管內(nèi)部電路。本次需要采用6個數(shù)碼管,若單獨(dú)采用數(shù)碼管連線時比較麻煩,故設(shè)計采用 6 位一體的共陽極數(shù)碼管,若使 6 個數(shù)碼管顯示正常時間,必須采用數(shù)碼管的動態(tài)掃描方式,即每一時刻只有一個數(shù)碼管點(diǎn)亮,采用軟件延時和人眼的視覺暫留效果, 使人眼看到的數(shù)碼管是同時點(diǎn)亮的。因此需要用6個端口控制數(shù)碼管的位選,即決定哪個數(shù)碼管點(diǎn)亮。而六個數(shù)碼管的位選端則分別接到單片機(jī)的P1.0P1.5口,此位選端用來控制哪個數(shù)碼管亮。每個數(shù)碼管的8個數(shù)據(jù)口控制數(shù)碼管的段選,即決定數(shù)碼管顯示什么字符。考慮到數(shù)碼管采用動態(tài)掃描方式,即循環(huán)掃描數(shù)碼管的 6 位,并將顯示字符送入段選位,我們采用P0口控制數(shù)碼管的8個段選位,并采用 74HC04 實(shí)現(xiàn)數(shù)碼管驅(qū)動及數(shù)據(jù)鎖存功能。Protues上數(shù)碼管顯示電路設(shè)計如下圖3.4.3所示:圖3.4.3 數(shù)碼管顯示電路設(shè)計3.5 矩陣鍵盤電路在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P2口)就可以構(gòu)成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是合理的。下面介紹一種按鍵被按下的識別方法行掃描法。首先將全部行線Y0-Y3置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列均為高電平,則鍵盤中無鍵按下。然后判斷閉合鍵所在的位置,在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。該系統(tǒng)采用4*4矩陣鍵盤,而且用到了全部按鍵,每個按鍵都實(shí)現(xiàn)了獨(dú)立的功能, Protues上矩陣鍵盤顯示電路設(shè)計如下圖3.5所示:圖3.5 矩陣鍵盤顯示電路設(shè)計3.6 串口通信電路串口是計算機(jī)上一種非常通用設(shè)備通信的協(xié)議不要與通用串行總線Universal Serial Bus或者USB混淆。大多數(shù)計算機(jī)包含兩個基于RS232的串口。串口同時也是儀器儀表設(shè)備通用的通信協(xié)議很多GPIB兼容的設(shè)備也帶有RS-232口。同時串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。 串口通信的概念非常簡單串口按位bit發(fā)送和接收字節(jié)。盡管比按字節(jié)byte的并行通信慢但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù)。它很簡單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。比如IEEE488定義并行通行狀態(tài)時規(guī)定設(shè)備線總常不得超過20米并且任意兩個設(shè)備間的長度不得超過2米而對于串口而言長度可達(dá)1200米。 典型地串口用于ASCII碼字符的傳輸。通信使用3根線完成1地線2發(fā)送3接收。由于串口通信是異步的端口能夠在一根線上發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù)。其他線用于握手但是不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗。 MAX232是電平轉(zhuǎn)換芯片。1970年美國電氣學(xué)會規(guī)定“RS232”串口通信協(xié)議。規(guī)定邏輯“1”-5 -15V邏輯“0”5 15V 。噪聲容限為2V。要實(shí)現(xiàn)利用串口與單片機(jī)進(jìn)行通信就要進(jìn)行電平轉(zhuǎn)換把標(biāo)準(zhǔn)轉(zhuǎn)化成單片機(jī)可以識別的。MAX220MAX249都是電平轉(zhuǎn)換芯片在單片機(jī)最小系統(tǒng)中使用MAX232。Protues上串口通信電路設(shè)計如下圖3.6所示:圖3.6 串口通信電路設(shè)計3.7 總設(shè)計電路圖3.7 總設(shè)計電路4 軟件設(shè)計4.1 軟件介紹4.1.1 設(shè)計軟件ProtelPROTEL是Altium公司在80年代末推出的EDA軟件,在電子行業(yè)的CAD軟件中,它當(dāng)之無愧地排在眾多EDA軟件的前面,是電子設(shè)計者的首選軟件,它較早就在國內(nèi)開始使用,在國內(nèi)的普及率也最高,有些高校的電子專業(yè)還專門開設(shè)了課程來學(xué)習(xí)它,幾乎所有的電子公司都要用到它,許多大公司在招聘電子設(shè)計人才時在其條件欄上常會寫著要求會使用PROTEL。Protel 99采用全新的管理方式,即數(shù)據(jù)庫的管理方式。Protel 99 是在桌面環(huán)境下第一個以獨(dú)特的設(shè)計管理和團(tuán)隊合作技術(shù)為核心的全方位的印制板設(shè)計系統(tǒng)。所有Protel99設(shè)計文件都被存儲在唯一的綜合設(shè)計數(shù)據(jù)庫中,并顯示在唯一的綜合設(shè)計編輯窗口。Protel 99軟件沿襲了Protel以前版本方便易學(xué)的特點(diǎn),內(nèi)部界面與Protel 98大體相同,新增加了一些功能模塊。Protel公司引進(jìn)了德國INCASES公司的先進(jìn)技術(shù),在Protel99中集成了信號完整性工具,精確的模型和板分析,幫助你在設(shè)計周期里利用信號完整性分析可獲得一次性成功和消除盲目性。本次設(shè)計采用的是Altium Dsigner進(jìn)行電路原理圖的繪制。4.1.2 程序編寫軟件KeilKeil C51是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。本次設(shè)計編程主要使用Keil軟件進(jìn)行編程。4.1.3 仿真軟件ProteusProteus軟件是英國Labcenter electronics公司出版的EDA工具軟件(該軟件中國總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。使用Proteus軟件進(jìn)行單片機(jī)系統(tǒng)仿真設(shè)計,是虛擬仿真技術(shù)和計算機(jī)多媒體技術(shù)相結(jié)合的綜合運(yùn)用,有利于培養(yǎng)學(xué)生的電路設(shè)計能力及仿真軟件的操作能力.實(shí)踐證明,在使用 Proteus 進(jìn)行系統(tǒng)仿真開發(fā)成功之后再進(jìn)行實(shí)際制作,能極大提高單片機(jī)系統(tǒng)設(shè)計效率。本次采用的是Proteus進(jìn)行仿真。4.2 數(shù)碼管顯示設(shè)計該程序分為鍵盤掃描和數(shù)碼管顯示兩部分,其程序流程圖如4.1所示:開始鍵盤掃描 NY是否有鍵按是否是切換數(shù)字顯示返回模式選擇Y 否 是 是 否圖4.1數(shù)據(jù)輸入流程圖4.3串行通信接收程序由于要實(shí)現(xiàn)兩個單片機(jī)之間的通信,在接收單片機(jī)上要寫與發(fā)送程序相對應(yīng)的接收程序,兩者應(yīng)設(shè)定相同的波特率。對應(yīng)的接收程序流程圖如圖4.2所示。T1初始化,啟動T1工作設(shè)定串行通信方式并設(shè)定允許接收RI=1接收數(shù)據(jù)清RI全部數(shù)據(jù)完全接收完結(jié)束圖4.2 接收程序流程圖5 仿真結(jié)果與分析5.1 矩陣鍵盤功能仿真5.1.1 數(shù)據(jù)輸入根據(jù)實(shí)驗任務(wù)可知,需要數(shù)據(jù)輸入10個四位十進(jìn)制數(shù)。圖5.1(a,b,c,d,e,f)為實(shí)驗中輸入序號為6的4321四位十進(jìn)制數(shù)的過程: 圖5.1(a) 序號輸入 圖5.1(b) 序號輸入后按確定鍵圖5.1(c) 輸入第一個數(shù)據(jù) 圖5.1(d) 輸入第二個數(shù)據(jù)圖5.1(e)輸入第三個數(shù)據(jù) 圖5.1(f) 輸入第四個數(shù)據(jù)5.1.2 數(shù)據(jù)顯示圖5.2 (a,b)為序號為6的數(shù)據(jù)顯示過程: 圖5.2(a)選擇數(shù)據(jù)顯示功能鍵 圖5.2(b)按下6鍵和確定鍵后的顯示仿真結(jié)果分析:從數(shù)據(jù)輸入與數(shù)據(jù)顯示的步驟可知,實(shí)驗的設(shè)計滿足任務(wù)要求的數(shù)據(jù)輸入和數(shù)據(jù)顯示的功能。其余的清除功能,確定功能,功能鍵選擇功能在Protues軟件上都能正確體現(xiàn)。故得出相關(guān)軟件與程序的設(shè)計是正確的。6 實(shí)物展示 單片機(jī)上電后,數(shù)碼管的初始顯示狀態(tài)如圖6.1:圖6.1 實(shí)物數(shù)碼管初始狀態(tài)顯示 鍵盤按下數(shù)據(jù)輸入功能鍵,并輸入序號與鍵入數(shù)據(jù)后數(shù)碼管的顯示狀態(tài)如圖6.2: 圖6.2 實(shí)物數(shù)碼管數(shù)據(jù)鍵入狀態(tài)顯示鍵盤按下數(shù)據(jù)顯示功能鍵后,序號為6的數(shù)據(jù)顯示如下圖6.3:圖6.3實(shí)物數(shù)碼管數(shù)據(jù)顯示功能展示整個實(shí)物完整展示如下圖6.4:圖6.4 完整實(shí)物展示7 心得體會一轉(zhuǎn)眼間,為期兩周的單片機(jī)實(shí)習(xí)已落下帷幕,在本次實(shí)習(xí)學(xué)到了很多,也有了很多的感觸。本次實(shí)習(xí)是對所學(xué)的單片機(jī)知識的一次綜合運(yùn)用,本次設(shè)計要求完成鍵盤掃描顯示,數(shù)據(jù)輸入與數(shù)據(jù)顯示,串口通信等內(nèi)容。首先,要求能夠熟練的運(yùn)用Protues進(jìn)行單片機(jī)的仿真,由于以前沒用過這個軟件,仿真一開始就碰了很多釘子,這對于沒怎么用過這個軟件的我來說是一大挑戰(zhàn)。不過,通過一兩天的摸索,總算是把它的一些基本操作弄清楚了,最終也成功繪制出具有基本擴(kuò)展電路的單片機(jī)系統(tǒng)。接下來是在Keil上進(jìn)行程序的編寫,由于本次所要求實(shí)現(xiàn)的功能比較多,涉及到到的內(nèi)容也多,所以對于程序的編寫有很大的挑戰(zhàn),經(jīng)過兩天的資料查詢和不段的調(diào)試,程序基本編寫完成。但是由于對單片機(jī)知識沒有很好的掌握,所以程序的編寫變成了整個實(shí)習(xí)的難處。所以串口通信部分的程序沒能順利編寫出來,這成了實(shí)習(xí)唯一的遺憾。接下來是在Proteus中仿真,這個步驟比想象中的順利,下進(jìn)去直接就可以運(yùn)行了。通過仿真的結(jié)果和自己的操作,發(fā)現(xiàn)對于數(shù)據(jù)的輸入和數(shù)據(jù)的顯示模塊設(shè)計成功。在本次實(shí)習(xí)中學(xué)到了很多,首先熟悉了Protues軟件的使用,其次對于程序的編寫讓我對單片機(jī)的認(rèn)識又加深了一步,不切對與C語言又有了更深一部的學(xué)習(xí)。通過本次實(shí)習(xí)讓我對以前所學(xué)知識有了一個更深刻的認(rèn)識,學(xué)會了將所學(xué)的知識運(yùn)用到實(shí)際中去,同時也讓我意識到了理論與實(shí)際的差距,在實(shí)習(xí)中遇到了各種各樣的問題,往往看是簡單的一件事到實(shí)際去做的時候才發(fā)現(xiàn)有好多的東西沒考慮過。由于實(shí)驗中沒能實(shí)現(xiàn)串行通信的功能,讓我認(rèn)識到自己知識的薄弱,讓我認(rèn)識到自己還有很多不足,在以后的學(xué)習(xí)中,我定會戒躁戒躁,努力學(xué)習(xí),彌補(bǔ)不足,讓自己的編程能力有所提高。8.參考文獻(xiàn)1 尹勇 撒繼銘等,單片計算機(jī)原理及應(yīng)用(第1版), 科學(xué)出版社, 2013年2 謝自美.電子線路設(shè)計實(shí)驗測試(第三版).武漢:華中科技大學(xué)出版社3 李群芳. 單片微型計算機(jī)與接口技術(shù)(第3版).電子工業(yè)出版社,20084 劉教瑜. 單片機(jī)原理及應(yīng)用.武漢理工大學(xué)出版社,20115 張東亮. 單片機(jī)原理與應(yīng)用.人民郵電出版社,2009附錄:元件清單序號名稱數(shù)量1銅板 1塊2單片機(jī)STC89C521只3晶振12MHz1只430PF瓷片電容2只510k/0.25W電阻1只610uF/16V電解電容1只72k/0.25W電阻1只810k/9腳排阻1只95V/500mA直流電源1個10排針、按鈕、LED、導(dǎo)線等若干11電烙鐵1個12MAX232 1片130.1uF瓷片電容 4只14DB9插座 1只15RS-232C串口電纜(9針)1根16四角開關(guān)16個17共陽極數(shù)碼管6個附錄:總程序設(shè)計#includereg52.hvoid delay(unsigned char s);void keyscan(void);void keydown(void);void input(void);void screen(int smode);int test = 0;unsigned char int_on = 0; /用于剛進(jìn)入通信模式時的初始化 只有在通信模式下需要打開中斷1為中斷已開化unsigned char temp; /讀按鍵用的測試變量 unsigned char key;/按鍵序號 unsigned char MODE = 3; /模式選擇,0為輸入模式,1為顯示模式,2為串口通信模式 unsigned char FUNC = 0;/功能選擇,1為回車,2為清除 unsigned char reg104; /輸入內(nèi)容存放的數(shù)組 unsigned char dis_buf6;/顯示緩存 unsigned char inputmode;/通過回車鍵來判斷輸入模式,0為輸入序號,1為輸入4位十進(jìn)制數(shù)據(jù) unsigned char group,datpos;/分別存儲數(shù)據(jù)的組數(shù)和十進(jìn)制數(shù)據(jù)位數(shù) unsignedcharLedNum=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x84 ;void delay(unsigned char s) /延時函數(shù) int i,j;for(j=s;j=0;j-)for(i=125;i0;i-);void screen(int smode) /對數(shù)碼管操作的函數(shù) 1為清空顯示0號位光標(biāo) 2為移位 int p; if(smode=1)for(p=0;p0;p-)/顯示緩存移位 dis_bufp = dis_bufp-1;void keyscan(void)/按鍵掃描函數(shù) /int p;/for循環(huán)變量 用于置空顯示緩存 P2=0xF0; /低四位輸入行為低電平,高四位為列高電平 temp=P2; /讀P2口 temp=temp&0xF0;temp=(temp4|0xF0);switch(temp)case 1: key = 0; break; / p1.4 被拉低 case 2: key = 1; break; / p1.5 被拉低 case 4: key = 2; break; / p1.6 被拉低 case 8: key = 3; break; / p1.7 被拉低 default: key = 16;temp = 0;P2=0x0F; /高四位輸入行為高電平列為低電平 /delay(1);temp=P2; /讀P1口 temp=temp&0x0F; /屏蔽低四位temp=(temp|0xF0);switch(temp)case 1:break; / p1.0 被拉低 case 2:key = key+4; break; / p1.1被拉低 case 4:key = key+8; break; /p1.2 被拉低 case 8:key = key+12;break; / p1.3 被拉低 default:key = 16;switch(key)case 10: /模式選擇為輸入 MODE = 0;inputmode=0; /從數(shù)據(jù)序號開始輸入 key=16; /鍵盤序號置空 FUNC=0; /功能鍵置空 screen(1);break; case 11: /模式選擇為顯示 MODE = 1;key=16; /鍵盤序號置空 screen(1);break;case 12: MODE = 2;break;case 13: FUNC = 1;break;/按鍵功能選擇 case 14: FUNC = 2;break;case 15: MODE = 3;break; /模式3為空余模式,可自定義或歡迎界面 default: datpos+; /存數(shù)位數(shù)加一 if(datpos=4) datpos = 0; P2 = 0x0f;while(P2!=0x0f); /保證按鍵彈起后再跳出程序 void keydown(void) P2=0x0F;/delay(1);if(P2!=0x0F) /判斷按鍵是否按下 如果按鈕按下 會拉低P1其中的一個端口 keyscan(); /調(diào)用按鍵掃描程序 void input(void) if(FUNC=1) /回車時 輸入模式切換 if(inputmode=1)screen(1);/清屏并在0號位輸入光標(biāo)else dis_buf2 = 0x08;/在2號位輸入光標(biāo) inputmode=1-inputmode;FUNC = 0; /切換完成 功能變量置空 if(FUNC=2) inputmode = 0; /重新從數(shù)據(jù)組數(shù)開始輸入 reggroup0 = 0; /清空已輸入的錯誤數(shù)據(jù) reggroup1 = 0;reggroup2 = 0;reggroup3 = 0;screen(1);FUNC = 0; if(key10) if(inputmode=0) group = key;/序號確認(rèn) dis_buf0 = LedNumgroup;datpos = -1;/數(shù)據(jù)鍵入位置歸零 else if(inputmode=1) /對應(yīng)組數(shù)據(jù)輸入 dis_bufdatpos+2 = LedNumkey; reggroupdatpos = key; delay(1); void main()unsigned char LedSele=0x01,0x02,0x04,0x08,0x10,0x20;unsigned char roll;SCON =0x50; /REN=1允許串行接受狀態(tài),串口工作模式2 TMOD|=0x20; /定時器工作方式2 PCON|=0x80; /波特率提高一倍 TH1=0xF3; /波特率4800、數(shù)據(jù)位8、停止位1、效驗位無 (12M)TL1=0xF3;while(1) keydown(); /調(diào)用按鍵判斷檢測程序if(MODE=0) /輸入模式 if(int_on=1) /若中斷未關(guān)TR1=0; /關(guān)啟定時器1 ES=0; /關(guān)串口中斷 EA=0; /關(guān)總中斷 int_on = 0; /中斷已關(guān)標(biāo)志 input(); /開始數(shù)據(jù)輸入程序 else if(MODE=1) /顯示模式 if(int_on=1) /若中斷未關(guān)TR1=0; /關(guān)啟定時器1 ES=0; /關(guān)串口中斷 EA=0; /關(guān)總中斷 int_on = 0; /中斷已關(guān)標(biāo)志 if(key10) /若輸入的是數(shù)字 group = key; /選定輸出組數(shù) dis_buf0 = LedNumgroup;/先顯示數(shù)據(jù)組數(shù) dis_buf1 = 0xff; /空格 dis_buf2 = LedNumreggroup0; /四位十進(jìn)制數(shù) dis_buf3 = LedNumreggroup1;dis_buf4 = LedNumreggroup2;dis_buf5 = LedNumreggroup3;else if(MODE=2) /通信模式 if(int_on=0) /若中斷未開 TR1=1; /開啟定時器1 ES=1; /開串口中斷 EA=1; /開總中斷 int_on = 1; /中斷已開標(biāo)志 screen(1);/清屏 if (key10)SBUF = key; /SUBF接受/發(fā)送緩沖器 while(TI=0); /當(dāng)發(fā)送標(biāo)志位為0,即未完成發(fā)送,則一直等待,直到發(fā)送完成 TI=0; /發(fā)送完成之后,將發(fā)送中斷標(biāo)志TI置0screen(2); /右移 dis_buf0 = LedNumkey;/最左為剛輸入的數(shù)字 elseif(int_on=1) /若中斷未關(guān)TR1=0; /關(guān)啟定時器1 ES=0; /關(guān)串口中斷 EA=0; /關(guān)總中斷 int_on = 0; /中斷已關(guān)標(biāo)志 dis_buf0 = 0x01;dis_buf1 = 0x40;dis_buf2 = 0x08;dis_buf3 = 0x08;dis_buf4 = 0x40;dis_buf5 = 0x01;for(roll=0;roll6;roll+)P1=LedSeleroll; /通過循環(huán)使對應(yīng)選通的數(shù)碼管顯示相應(yīng)的數(shù)值 P0=dis_bufroll; /通過循環(huán)逐個選通數(shù)碼管 delay(1); void ser_int (void) interrupt 4 using 1if(RI=1) /若RI接受中斷標(biāo)志為1,即收到數(shù)據(jù) RI=0; /清除RI接受中斷標(biāo)志test+;if(test=10)test = 0;dis_buf5 = LedNumtest;/screen(2);dis_buf0 = LedNumSBUF; /delay(1);概 況實(shí)習(xí)單位: 武漢理工大學(xué)信息工程學(xué)院 參觀考察單位:(1)武漢理工大學(xué)信息工程學(xué)院國創(chuàng)課題小組 (2) 武漢理工大學(xué)信息工程學(xué)院開放實(shí)驗室 (3) 武漢理工大學(xué)電工電子實(shí)習(xí)中心 (4) (5) (6) 實(shí)習(xí)開始時間:20 13 年 12 月 30 日,實(shí)習(xí)時間共 14 天。 完成實(shí)習(xí)報告時間:20 14 年 1 月 日。附錄:實(shí)習(xí)日記實(shí) 習(xí) 日 記 年 月 日實(shí) 習(xí) 日 記 年 月 日實(shí) 習(xí) 日 記 年 月 日實(shí) 習(xí) 日 記 年 月 日實(shí) 習(xí) 日 記 年 月 日實(shí) 習(xí) 日 記 年 月 日實(shí) 習(xí) 日 記 年 月 日實(shí) 習(xí) 日 記 年 月 日實(shí) 習(xí) 日 記 年 月 日實(shí) 習(xí) 日 記 年 月 日實(shí) 習(xí) 日 記 年 月 日實(shí) 習(xí) 日 記 年 月 日實(shí) 習(xí) 日 記 年 月 日實(shí) 習(xí) 日 記 年 月 日 實(shí)習(xí)成績表一、成績評定所占比例(%)成 績實(shí)習(xí)表現(xiàn)實(shí)習(xí)報告質(zhì)量考試或其他總成績二、對實(shí)習(xí)表現(xiàn)及實(shí)習(xí)報告質(zhì)量的綜合評價(評語) 指導(dǎo)老師(簽字): 2013 年 月 日- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 單片機(jī)應(yīng)用實(shí)習(xí) 武漢理工大學(xué) 單片機(jī) 應(yīng)用 實(shí)習(xí) 報告
鏈接地址:http://m.appdesigncorp.com/p-9021894.html