武漢理工大學(xué)《單片機(jī)應(yīng)用實(shí)習(xí)》報(bào)告.doc
《武漢理工大學(xué)《單片機(jī)應(yīng)用實(shí)習(xí)》報(bào)告.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《武漢理工大學(xué)《單片機(jī)應(yīng)用實(shí)習(xí)》報(bào)告.doc(44頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
目錄 摘 要 Ⅰ Abstract Ⅱ 1設(shè)計(jì)任務(wù)及要求 1 2 基本原理 3 2.1基本原理及原理框圖 3 2.2 STC89C52結(jié)構(gòu)功能介紹 3 3 硬件電路原理與設(shè)計(jì) 5 3.1復(fù)位電路 5 3.1.1上電復(fù)位 5 3.1.2按鍵復(fù)位 5 3.2振蕩電路 6 3.3單片機(jī)最小系統(tǒng)單片機(jī) 7 3.4數(shù)碼管顯示電路 7 3.5 矩陣鍵盤電路 9 3.6 串口通信電路 10 3.7 總設(shè)計(jì)電路 11 4 軟件設(shè)計(jì) 12 4.1 軟件介紹 12 4.1.1 設(shè)計(jì)軟件Protel 12 4.1.2 程序編寫軟件Keil 12 4.1.3 仿真軟件Proteus 13 4.2 數(shù)碼管顯示設(shè)計(jì) 13 4.3串行通信接收程序 14 5 仿真結(jié)果與分析 15 5.1 矩陣鍵盤功能仿真 15 5.1.1 數(shù)據(jù)輸入 15 5.1.2 數(shù)據(jù)顯示 15 6 實(shí)物展示 17 7 心得體會(huì) 19 8.參考文獻(xiàn) 20 附錄Ⅰ:元件清單 21 附錄Ⅱ:總程序設(shè)計(jì) 22 附錄Ⅲ:實(shí)習(xí)日記 32 摘 要 單片微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī),又稱為微型控制器,是微型計(jì)算機(jī)的一個(gè)重要分支。隨著電子技術(shù)的發(fā)展,大規(guī)模及超大規(guī)模集成電路和制造工藝的進(jìn)一步提高,單片機(jī)以其高可靠性、高性價(jià)比、低電壓、低功耗等一系列優(yōu)點(diǎn),廣泛應(yīng)用于控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、智能化儀器表等領(lǐng)域。 本次課程設(shè)計(jì)包括單片機(jī)最小系統(tǒng)(包括復(fù)位和時(shí)鐘電路)及供電系統(tǒng)、4*4矩陣鍵盤、獨(dú)立6個(gè)8段LED數(shù)碼管顯示電路。利用Protel電路設(shè)計(jì)軟件進(jìn)行原理圖設(shè)計(jì),利用keil軟件編程以及proteus軟件仿真,借此鞏固單片機(jī)應(yīng)用、模擬電路、數(shù)字電路課程及學(xué)會(huì)各種工程軟件的使用。 關(guān)鍵字:單片機(jī)、數(shù)碼管顯示、矩陣鍵盤掃描 Abstract Single 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 scanning 1設(shè)計(jì)任務(wù)及要求 1)利用上述材料完成包含如下系統(tǒng)功能組件的單片機(jī)最小系統(tǒng)的設(shè)計(jì)、焊接、調(diào)試 (1)鍵盤 一個(gè)4X4的矩陣鍵盤,其中,10個(gè)按鍵是0~9數(shù)字鍵;另外6個(gè)是功能鍵,用于功能選擇和控制,如“數(shù)據(jù)輸入”、“數(shù)據(jù)顯示”、“串行通信”功能選擇鍵,以及“回車”、“清除”、控制鍵。 (2)顯示電路 由6個(gè)7段LED數(shù)碼管組成的顯示電路。 (3)串口串行通信 利用51的串口實(shí)現(xiàn)串行通信接口電路。 2)完成ISP下載電路的設(shè)計(jì)、焊接 3)完成系統(tǒng)軟件的設(shè)計(jì),包括程序結(jié)構(gòu)設(shè)計(jì)、流程圖繪制、程序設(shè)計(jì),實(shí)現(xiàn)如下功能 (1)功能選擇 通過功能選擇鍵,使得單片機(jī)處于不同的工作狀態(tài)并通過LED顯示相應(yīng)的內(nèi)容;可選擇的功能包括:數(shù)據(jù)輸入;數(shù)據(jù)顯示;串口通信 (2)數(shù)據(jù)輸入 通過功能選擇鍵選擇“數(shù)據(jù)輸入”后,可分次輸入10個(gè)4位十進(jìn)制數(shù)據(jù),并將輸入的數(shù)據(jù)保存在內(nèi)部RAM中。數(shù)據(jù)輸入要求: 第一步輸入序號(hào)0~9,表明輸入的是第幾個(gè)4位十進(jìn)制數(shù)據(jù); 第二步按下回車鍵,完成序號(hào)輸入; 第三步輸入最多4位的十進(jìn)制數(shù)據(jù); 第四步按下回車鍵,完成數(shù)據(jù)輸入; 重復(fù)第一步,開始新數(shù)據(jù)的輸入; 輸入數(shù)據(jù)的顯示格式是:最左邊是序號(hào),然后是空格,之后是從右到左的最多4位十進(jìn)制數(shù); 若在輸入過程中(第一步或第三步)出現(xiàn)錯(cuò)誤,按“清除”鍵,重新從第一步開始輸入數(shù)據(jù)。 或者,自己設(shè)計(jì)10個(gè)十進(jìn)制數(shù)的輸入及顯示方式。 (3)數(shù)據(jù)顯示 通過功能選擇鍵選擇“數(shù)據(jù)顯示”后,可顯示之前輸入的10個(gè)4位十進(jìn)制數(shù)據(jù)中的任一個(gè),要求: 第一步輸入序號(hào)0~9,表明顯示的是第幾個(gè)4位十進(jìn)制數(shù)據(jù); 第二步顯示相應(yīng)的數(shù)據(jù); 重復(fù)第一步、第二步,顯示其他的數(shù)據(jù); 數(shù)據(jù)的顯示格式是:最左邊是序號(hào),然后是空格,之后是要顯示的數(shù)據(jù),從右到左最多4位十進(jìn)制數(shù)。 或者,自己設(shè)計(jì)數(shù)據(jù)的顯示方式。 (4)數(shù)據(jù)通信 將兩個(gè)單片機(jī)最小系統(tǒng)通過串口連接起來,其中一個(gè)作為主系統(tǒng),另一個(gè)作為輔系統(tǒng)。當(dāng)通過功能選擇鍵選擇“串行通信”后,當(dāng)在主系統(tǒng)上按下數(shù)字鍵后主系統(tǒng)的LED按從左向右移東的方式顯示按鍵輸入的數(shù)字,同時(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)。對(duì)51系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)該包括:?jiǎn)纹瑱C(jī)、晶振電路、復(fù)位電路。單片機(jī)接口電路主要用來連接計(jì)算機(jī)和其他外部設(shè)備。 本次設(shè)計(jì)主要完成的擴(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存儲(chǔ)空間,支持最大64K外部存儲(chǔ)擴(kuò)展。根據(jù)不同的運(yùn)行速度和功耗的要求,時(shí)鐘頻率可以設(shè)置在0-33M之間。片內(nèi)資源有4組I/O控制端口、3個(gè)定時(shí)器、8個(gè)中斷、軟件設(shè)置低能耗模式、看門狗和斷電保護(hù)??梢栽?V到5.5V寬電壓范圍內(nèi)正常工作。不斷發(fā)展的半導(dǎo)體工藝也讓該單片機(jī)的功耗不斷降低。同時(shí),該單片機(jī)支持計(jì)算機(jī)并口下載,簡(jiǎn)單的數(shù)字芯片就可以制成下載線,僅僅幾塊錢的價(jià)格讓該型號(hào)單片機(jī)暢銷10年不衰。根據(jù)不同場(chǎng)合的要求,這款單片機(jī)提供了多種封裝,本次設(shè)計(jì)根據(jù)最小系統(tǒng)有時(shí)需要更換單片機(jī)的具體情況,使用雙列直插DIP-40的封裝。STC89C52引腳圖如圖2.2: 圖2.2 STC89C52引腳圖 STC89C52芯片共40引腳,各引腳功能如下: VCC(40引腳):電源電壓 VSS(20引腳):接地 RST復(fù)位端 P0端口(P0.0~P0.7,39~32引腳):P0口是一個(gè)漏極開路的8位雙向I/O口。作為輸出端口,每個(gè)引腳能驅(qū)動(dòng)8個(gè)TTL負(fù)載,對(duì)端口P0寫入“1”時(shí),可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。P0端口需要外加上拉電阻。 P1端口(P1.0~P1.7,1~8引腳):P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口。 P2端口(P2.0~P2.7,21~28引腳):P2口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O端口。在訪問外部程序存儲(chǔ)器和16位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行“MOVX @DPTR”指令)時(shí),P2送出高8位地址。 P3端口(P3.0~P3.7,10~17引腳):P3是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O端口。P3的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫入1時(shí),通過內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)可用作輸入口。P3做輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸入一個(gè)電流。P3口除作為一般I/O口外,還有其他一些復(fù)用功能。 3 硬件電路原理與設(shè)計(jì) 硬件電路主要由復(fù)位電路、振蕩電路、數(shù)碼管顯示電路、矩陣鍵盤電路和串口電路等組成。 3.1復(fù)位電路 單片機(jī)的置位和復(fù)位,都是為了把電路初始化到一個(gè)確定的狀態(tài),一般來說,單片機(jī)復(fù)位電路作用是把一個(gè)例如狀態(tài)機(jī)初始化到空狀態(tài),而在單片機(jī)內(nèi)部,復(fù)位的時(shí)候單片機(jī)是把一些寄存器以及存儲(chǔ)設(shè)備裝入廠商預(yù)設(shè)的一個(gè)值。 單片機(jī)復(fù)位電路原理是在單片機(jī)的復(fù)位引腳RST上外接電阻和電容,實(shí)現(xiàn)上電復(fù)位。當(dāng)復(fù)位電平持續(xù)兩個(gè)機(jī)器周期以上時(shí)復(fù)位有效。復(fù)位電平的持續(xù)時(shí)間必須大于單片機(jī)的兩個(gè)機(jī)器周期。具體數(shù)值可以由RC電路計(jì)算出時(shí)間常數(shù)。 復(fù)位電路由按鍵復(fù)位和上電復(fù)位兩部分組成。。 3.1.1上電復(fù)位 STC89系列單片及為高電平復(fù)位,通常在復(fù)位引腳RST上連接一個(gè)電容到VCC,再連接一個(gè)電阻到GND,由此形成一個(gè)RC充放電回路保證單片機(jī)在上電時(shí)RST腳上有足夠時(shí)間的高電平進(jìn)行復(fù)位,隨后回歸到低電平進(jìn)入正常工作狀態(tài),這個(gè)電阻和電容的典型值為10K和10uF。 3.1.2按鍵復(fù)位 按鍵復(fù)位就是在復(fù)位電容上并聯(lián)一個(gè)開關(guān),當(dāng)開關(guān)按下時(shí)電容被放電、RST也被拉到高電平,而且由于電容的充電,會(huì)保持一段時(shí)間的高電平來使單片機(jī)復(fù)位。電路圖如圖3.1。 圖3.1 復(fù)位電路 3.2振蕩電路 單片機(jī)系統(tǒng)里都有晶振在單片機(jī)系統(tǒng)里晶振作用非常大全稱叫晶體振蕩器他結(jié)合單片機(jī)內(nèi)部電路產(chǎn)生單片機(jī)所需的時(shí)鐘頻率單片機(jī)晶振提供的時(shí)鐘頻率越高那么單片機(jī)運(yùn)行速度就越快單片接的一切指令的執(zhí)行都是建立在單片機(jī)晶振提供的時(shí)鐘頻率。 在通常工作條件下普通的晶振頻率絕對(duì)精度可達(dá)百萬分之五十。高級(jí)的精度更高。有些晶振還可以由外加電壓在一定范圍內(nèi)調(diào)整頻率稱為壓控振蕩器VCO。晶振用一種能把電能和機(jī)械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作以提供穩(wěn)定精確的單頻振蕩。 單片機(jī)晶振的作用是為系統(tǒng)提供基本的時(shí)鐘信號(hào)。通常一個(gè)系統(tǒng)共用一個(gè)晶振便于各部分保持同步。有些通訊系統(tǒng)的基頻和射頻使用不同的晶振而通過電子調(diào)整頻率的方法保持同步。 晶振通常與鎖相環(huán)電路配合使用以提供系統(tǒng)所需的時(shí)鐘頻率。如果不同子系統(tǒng)需要不同頻率的時(shí)鐘信號(hào)可以用與同一個(gè)晶振相連的不同鎖相環(huán)來提供。 STC89C51使用11.0592MHz的晶體振蕩器作為振蕩源由于單片機(jī)內(nèi)部帶有振蕩電路所以外部只要連接一個(gè)晶振和兩個(gè)電容即可電容容量一般在15pF至50pF之間。其電路原理圖如3.2所示。 圖3.2 振蕩電路 3.3單片機(jī)最小系統(tǒng)單片機(jī) 最小系統(tǒng)包括晶振時(shí)鐘電路和復(fù)位電路。原理圖如圖 3.3 所示: 圖3.3 單片機(jī)最小系統(tǒng) 圖3-3 單片機(jī)最小系統(tǒng) 在單片機(jī)引腳 XTAL1 和 XTAL2 外接晶體整蕩器或陶瓷振蕩器,就構(gòu)成了內(nèi)部震蕩方式,由于單片機(jī)內(nèi)部有一個(gè)高增益反向放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器,并產(chǎn)生振蕩時(shí)鐘脈沖,晶振通常選擇 6MHz、12MHz 或 24MHz,這里取晶振為12MHz。與晶振連接的電容起穩(wěn)定振蕩頻率、快速起振的作用。電容值一般為 5~30pf。 復(fù)位操作完成單片機(jī)片內(nèi)電路初始化,復(fù)位結(jié)束后,單片機(jī)從一種確定狀態(tài)開始運(yùn)行。當(dāng)單片機(jī)復(fù)位引腳 RST 出現(xiàn) 5ms 以上高電平時(shí),單片機(jī)就完成復(fù)位操作。復(fù)位操作通常有兩種形式:上電復(fù)位和開關(guān)復(fù)位。常用上電開關(guān)復(fù)位電路如上圖所示,上電后,由于電容 C1 充電,時(shí) RST 持續(xù)一段時(shí)間高電平。當(dāng)單片機(jī)已在運(yùn)行中時(shí),按下復(fù)位鍵也能使 RST 持續(xù)一段時(shí)間高電平,從而實(shí)現(xiàn)開關(guān)復(fù)位操作。 3.4數(shù)碼管顯示電路 LED數(shù)碼管顯示是利用半導(dǎo)體發(fā)光制成條形的發(fā)光二極管,封裝在一起組成數(shù)字或其他符號(hào)形狀。數(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個(gè)數(shù)碼管,若單獨(dú)采用數(shù)碼管連線時(shí)比較麻煩,故設(shè)計(jì)采用 6 位一體的共陽極數(shù)碼管,若使 6 個(gè)數(shù)碼管顯示正常時(shí)間,必須采用數(shù)碼管的動(dòng)態(tài)掃描方式,即每一時(shí)刻只有一個(gè)數(shù)碼管點(diǎn)亮,采用軟件延時(shí)和人眼的視覺暫留效果, 使人眼看到的數(shù)碼管是同時(shí)點(diǎn)亮的。因此需要用6個(gè)端口控制數(shù)碼管的位選,即決定哪個(gè)數(shù)碼管點(diǎn)亮。而六個(gè)數(shù)碼管的位選端則分別接到單片機(jī)的P1.0~P1.5口,此位選端用來控制哪個(gè)數(shù)碼管亮。每個(gè)數(shù)碼管的8個(gè)數(shù)據(jù)口控制數(shù)碼管的段選,即決定數(shù)碼管顯示什么字符??紤]到數(shù)碼管采用動(dòng)態(tài)掃描方式,即循環(huán)掃描數(shù)碼管的 6 位,并將顯示字符送入段選位,我們采用P0口控制數(shù)碼管的8個(gè)段選位,并采用 74HC04 實(shí)現(xiàn)數(shù)碼管驅(qū)動(dòng)及數(shù)據(jù)鎖存功能。 Protues上數(shù)碼管顯示電路設(shè)計(jì)如下圖3.4.3所示: 圖3.4.3 數(shù)碼管顯示電路設(shè)計(jì) 3.5 矩陣鍵盤電路 在鍵盤中按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P2口)就可以構(gòu)成4*4=16個(gè)按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時(shí),采用矩陣法來做鍵盤是合理的。 下面介紹一種按鍵被按下的識(shí)別方法——行掃描法。首先將全部行線Y0-Y3置低電平,然后檢測(cè)列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個(gè)按鍵之中。若所有列均為高電平,則鍵盤中無鍵按下。然后判斷閉合鍵所在的位置,在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測(cè)各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。 該系統(tǒng)采用4*4矩陣鍵盤,而且用到了全部按鍵,每個(gè)按鍵都實(shí)現(xiàn)了獨(dú)立的功能, Protues上矩陣鍵盤顯示電路設(shè)計(jì)如下圖3.5所示: 圖3.5 矩陣鍵盤顯示電路設(shè)計(jì) 3.6 串口通信電路 串口是計(jì)算機(jī)上一種非常通用設(shè)備通信的協(xié)議不要與通用串行總線Universal Serial Bus或者USB混淆。大多數(shù)計(jì)算機(jī)包含兩個(gè)基于RS232的串口。串口同時(shí)也是儀器儀表設(shè)備通用的通信協(xié)議很多GPIB兼容的設(shè)備也帶有RS-232口。同時(shí)串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。 串口通信的概念非常簡(jiǎn)單串口按位bit發(fā)送和接收字節(jié)。盡管比按字節(jié)byte的并行通信慢但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。它很簡(jiǎn)單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。比如IEEE488定義并行通行狀態(tài)時(shí)規(guī)定設(shè)備線總常不得超過20米并且任意兩個(gè)設(shè)備間的長(zhǎng)度不得超過2米而對(duì)于串口而言長(zhǎng)度可達(dá)1200米。 典型地串口用于ASCII碼字符的傳輸。通信使用3根線完成1地線2發(fā)送3接收。由于串口通信是異步的端口能夠在一根線上發(fā)送數(shù)據(jù)同時(shí)在另一根線上接收數(shù)據(jù)。其他線用于握手但是不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。 MAX232是電平轉(zhuǎn)換芯片。1970年美國(guó)電氣學(xué)會(huì)規(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ī)可以識(shí)別的。MAX220–MAX249都是電平轉(zhuǎn)換芯片在單片機(jī)最小系統(tǒng)中使用MAX232。Protues上串口通信電路設(shè)計(jì)如下圖3.6所示: 圖3.6 串口通信電路設(shè)計(jì) 3.7 總設(shè)計(jì)電路 圖3.7 總設(shè)計(jì)電路 4 軟件設(shè)計(jì) 4.1 軟件介紹 4.1.1 設(shè)計(jì)軟件Protel PROTEL是Altium公司在80年代末推出的EDA軟件,在電子行業(yè)的CAD軟件中,它當(dāng)之無愧地排在眾多EDA軟件的前面,是電子設(shè)計(jì)者的首選軟件,它較早就在國(guó)內(nèi)開始使用,在國(guó)內(nèi)的普及率也最高,有些高校的電子專業(yè)還專門開設(shè)了課程來學(xué)習(xí)它,幾乎所有的電子公司都要用到它,許多大公司在招聘電子設(shè)計(jì)人才時(shí)在其條件欄上常會(huì)寫著要求會(huì)使用PROTEL。 Protel 99采用全新的管理方式,即數(shù)據(jù)庫(kù)的管理方式。Protel 99 是在桌面環(huán)境下第一個(gè)以獨(dú)特的設(shè)計(jì)管理和團(tuán)隊(duì)合作技術(shù)為核心的全方位的印制板設(shè)計(jì)系統(tǒng)。所有Protel99設(shè)計(jì)文件都被存儲(chǔ)在唯一的綜合設(shè)計(jì)數(shù)據(jù)庫(kù)中,并顯示在唯一的綜合設(shè)計(jì)編輯窗口。 Protel 99軟件沿襲了Protel以前版本方便易學(xué)的特點(diǎn),內(nèi)部界面與Protel 98大體相同,新增加了一些功能模塊。Protel公司引進(jìn)了德國(guó)INCASES公司的先進(jìn)技術(shù),在Protel99中集成了信號(hào)完整性工具,精確的模型和板分析,幫助你在設(shè)計(jì)周期里利用信號(hào)完整性分析可獲得一次性成功和消除盲目性。 本次設(shè)計(jì)采用的是Altium Dsigner進(jìn)行電路原理圖的繪制。 4.1.2 程序編寫軟件Keil Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。本次設(shè)計(jì)編程主要使用Keil軟件進(jìn)行編程。 4.1.3 仿真軟件Proteus Proteus軟件是英國(guó)Labcenter electronics公司出版的EDA工具軟件(該軟件中國(guó)總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國(guó)內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。 使用Proteus軟件進(jìn)行單片機(jī)系統(tǒng)仿真設(shè)計(jì),是虛擬仿真技術(shù)和計(jì)算機(jī)多媒體技術(shù)相結(jié)合的綜合運(yùn)用,有利于培養(yǎng)學(xué)生的電路設(shè)計(jì)能力及仿真軟件的操作能力.實(shí)踐證明,在使用 Proteus 進(jìn)行系統(tǒng)仿真開發(fā)成功之后再進(jìn)行實(shí)際制作,能極大提高單片機(jī)系統(tǒng)設(shè)計(jì)效率。 本次采用的是Proteus進(jìn)行仿真。 4.2 數(shù)碼管顯示設(shè)計(jì) 該程序分為鍵盤掃描和數(shù)碼管顯示兩部分,其程序流程圖如4.1所示: 開始 鍵盤掃描 N Y 是否有鍵按 是否是切換 數(shù)字顯示 返回模式選擇 Y 否 是 是 否 圖4.1數(shù)據(jù)輸入流程圖 4.3串行通信接收程序 由于要實(shí)現(xiàn)兩個(gè)單片機(jī)之間的通信,在接收單片機(jī)上要寫與發(fā)送程序相對(duì)應(yīng)的接收程序,兩者應(yīng)設(shè)定相同的波特率。對(duì)應(yīng)的接收程序流程圖如圖4.2所示。 T1初始化,啟動(dòng)T1工作 設(shè)定串行通信方式 并設(shè)定允許接收 RI=1 接收數(shù)據(jù) 清RI 全部數(shù)據(jù)完全接收完 結(jié)束 圖4.2 接收程序流程圖 5 仿真結(jié)果與分析 5.1 矩陣鍵盤功能仿真 5.1.1 數(shù)據(jù)輸入 根據(jù)實(shí)驗(yàn)任務(wù)可知,需要數(shù)據(jù)輸入10個(gè)四位十進(jìn)制數(shù)。圖5.1(a,b,c,d,e,f)為實(shí)驗(yàn)中輸入序號(hào)為6的4321四位十進(jìn)制數(shù)的過程: 圖5.1(a) 序號(hào)輸入 圖5.1(b) 序號(hào)輸入后按確定鍵 圖5.1(c) 輸入第一個(gè)數(shù)據(jù) 圖5.1(d) 輸入第二個(gè)數(shù)據(jù) 圖5.1(e)輸入第三個(gè)數(shù)據(jù) 圖5.1(f) 輸入第四個(gè)數(shù)據(jù) 5.1.2 數(shù)據(jù)顯示 圖5.2 (a,b)為序號(hào)為6的數(shù)據(jù)顯示過程: 圖5.2(a)選擇數(shù)據(jù)顯示功能鍵 圖5.2(b)按下6鍵和確定鍵后的顯示 仿真結(jié)果分析:從數(shù)據(jù)輸入與數(shù)據(jù)顯示的步驟可知,實(shí)驗(yàn)的設(shè)計(jì)滿足任務(wù)要求的數(shù)據(jù)輸入和數(shù)據(jù)顯示的功能。其余的清除功能,確定功能,功能鍵選擇功能在Protues軟件上都能正確體現(xiàn)。故得出相關(guān)軟件與程序的設(shè)計(jì)是正確的。 6 實(shí)物展示 單片機(jī)上電后,數(shù)碼管的初始顯示狀態(tài)如圖6.1: 圖6.1 實(shí)物數(shù)碼管初始狀態(tài)顯示 鍵盤按下數(shù)據(jù)輸入功能鍵,并輸入序號(hào)與鍵入數(shù)據(jù)后數(shù)碼管的顯示狀態(tài)如圖6.2: 圖6.2 實(shí)物數(shù)碼管數(shù)據(jù)鍵入狀態(tài)顯示 鍵盤按下數(shù)據(jù)顯示功能鍵后,序號(hào)為6的數(shù)據(jù)顯示如下圖6.3: 圖6.3實(shí)物數(shù)碼管數(shù)據(jù)顯示功能展示 整個(gè)實(shí)物完整展示如下圖6.4: 圖6.4 完整實(shí)物展示 7 心得體會(huì) 一轉(zhuǎn)眼間,為期兩周的單片機(jī)實(shí)習(xí)已落下帷幕,在本次實(shí)習(xí)學(xué)到了很多,也有了很多的感觸。 本次實(shí)習(xí)是對(duì)所學(xué)的單片機(jī)知識(shí)的一次綜合運(yùn)用,本次設(shè)計(jì)要求完成鍵盤掃描顯示,數(shù)據(jù)輸入與數(shù)據(jù)顯示,串口通信等內(nèi)容。首先,要求能夠熟練的運(yùn)用Protues進(jìn)行單片機(jī)的仿真,由于以前沒用過這個(gè)軟件,仿真一開始就碰了很多釘子,這對(duì)于沒怎么用過這個(gè)軟件的我來說是一大挑戰(zhàn)。不過,通過一兩天的摸索,總算是把它的一些基本操作弄清楚了,最終也成功繪制出具有基本擴(kuò)展電路的單片機(jī)系統(tǒng)。接下來是在Keil上進(jìn)行程序的編寫,由于本次所要求實(shí)現(xiàn)的功能比較多,涉及到到的內(nèi)容也多,所以對(duì)于程序的編寫有很大的挑戰(zhàn),經(jīng)過兩天的資料查詢和不段的調(diào)試,程序基本編寫完成。但是由于對(duì)單片機(jī)知識(shí)沒有很好的掌握,所以程序的編寫變成了整個(gè)實(shí)習(xí)的難處。所以串口通信部分的程序沒能順利編寫出來,這成了實(shí)習(xí)唯一的遺憾。接下來是在Proteus中仿真,這個(gè)步驟比想象中的順利,下進(jìn)去直接就可以運(yùn)行了。通過仿真的結(jié)果和自己的操作,發(fā)現(xiàn)對(duì)于數(shù)據(jù)的輸入和數(shù)據(jù)的顯示模塊設(shè)計(jì)成功。 在本次實(shí)習(xí)中學(xué)到了很多,首先熟悉了Protues軟件的使用,其次對(duì)于程序的編寫讓我對(duì)單片機(jī)的認(rèn)識(shí)又加深了一步,不切對(duì)與C語言又有了更深一部的學(xué)習(xí)。通過本次實(shí)習(xí)讓我對(duì)以前所學(xué)知識(shí)有了一個(gè)更深刻的認(rèn)識(shí),學(xué)會(huì)了將所學(xué)的知識(shí)運(yùn)用到實(shí)際中去,同時(shí)也讓我意識(shí)到了理論與實(shí)際的差距,在實(shí)習(xí)中遇到了各種各樣的問題,往往看是簡(jiǎn)單的一件事到實(shí)際去做的時(shí)候才發(fā)現(xiàn)有好多的東西沒考慮過。由于實(shí)驗(yàn)中沒能實(shí)現(xiàn)串行通信的功能,讓我認(rèn)識(shí)到自己知識(shí)的薄弱,讓我認(rèn)識(shí)到自己還有很多不足,在以后的學(xué)習(xí)中,我定會(huì)戒躁戒躁,努力學(xué)習(xí),彌補(bǔ)不足,讓自己的編程能力有所提高。 8.參考文獻(xiàn) [1] 尹勇 撒繼銘等,單片計(jì)算機(jī)原理及應(yīng)用(第1版), 科學(xué)出版社, 2013年 [2] 謝自美.電子線路設(shè)計(jì)實(shí)驗(yàn)測(cè)試(第三版).武漢:華中科技大學(xué)出版社 [3] 李群芳. 單片微型計(jì)算機(jī)與接口技術(shù)(第3版).電子工業(yè)出版社,2008 [4] 劉教瑜. 單片機(jī)原理及應(yīng)用.武漢理工大學(xué)出版社,2011 [5] 張東亮. 單片機(jī)原理與應(yīng)用.人民郵電出版社,2009 附錄Ⅰ:元件清單 序 號(hào) 名稱 數(shù)量 1 銅板 1塊 2 單片機(jī)STC89C52 1只 3 晶振12MHz 1只 4 30PF瓷片電容 2只 5 10k/0.25W電阻 1只 6 10uF/16V電解電容 1只 7 2k/0.25W電阻 1只 8 10k/9腳排阻 1只 9 5V/500mA直流電源 1個(gè) 10 排針、按鈕、LED、導(dǎo)線等 若干 11 電烙鐵 1個(gè) 12 MAX232 1片 13 0.1uF瓷片電容 4只 14 DB9插座 1只 15 RS-232C串口電纜(9針) 1根 16 四角開關(guān) 16個(gè) 17 共陽極數(shù)碼管 6個(gè) 附錄Ⅱ:總程序設(shè)計(jì) #include"reg52.h" void 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)入通信模式時(shí)的初始化 只有在通信模式下需要打開中斷 1為中斷已開化 unsigned char temp; //讀按鍵用的測(cè)試變量 unsigned char key; //按鍵序號(hào) unsigned char MODE = 3; //模式選擇,0為輸入模式,1為顯示模式,2為串口通信模式 unsigned char FUNC = 0; //功能選擇,1為回車,2為清除 unsigned char reg[10][4]; //輸入內(nèi)容存放的數(shù)組 unsigned char dis_buf[6]; //顯示緩存 unsigned char inputmode; //通過回車鍵來判斷輸入模式,0為輸入序號(hào),1為輸入4位十進(jìn)制數(shù)據(jù) unsigned char group,datpos; //分別存儲(chǔ)數(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í)函數(shù) { int i,j; for(j=s;j>=0;j--) for(i=125;i>0;i--); } void screen(int smode) //對(duì)數(shù)碼管操作的函數(shù) 1為清空顯示0號(hào)位光標(biāo) 2為移位 { int p; if(smode==1) { for(p=0;p<6;p++) { dis_buf[p] = 0xff; //清屏 } dis_buf[0] = ~0x08; //帶輸入光標(biāo) } else if(smode==2) { for(p=5;p>0;p--) //顯示緩存移位 { dis_buf[p] = dis_buf[p-1]; } } } void keyscan(void) //按鍵掃描函數(shù) { //int p; //for循環(huán)變量 用于置空顯示緩存 P2=0xF0; //低四位輸入行為低電平,高四位為列高電平 temp=P2; //讀P2口 temp=temp&0xF0; temp=~(temp>>4|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ù)序號(hào)開始輸入 key=16; //鍵盤序號(hào)置空 FUNC=0; //功能鍵置空 screen(1); break; case 11: //模式選擇為顯示 MODE = 1; key=16; //鍵盤序號(hào)置空 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) //判斷按鍵是否按下 如果按鈕按下 會(huì)拉低P1其中的一個(gè)端口 { keyscan(); //調(diào)用按鍵掃描程序 } } void input(void) { if(FUNC==1) //回車時(shí) 輸入模式切換 { if(inputmode==1) { screen(1); //清屏并在0號(hào)位輸入光標(biāo) } else dis_buf[2] = ~0x08; //在2號(hào)位輸入光標(biāo) inputmode=1-inputmode; FUNC = 0; //切換完成 功能變量置空 } if(FUNC==2) { inputmode = 0; //重新從數(shù)據(jù)組數(shù)開始輸入 reg[group][0] = 0; //清空已輸入的錯(cuò)誤數(shù)據(jù) reg[group][1] = 0; reg[group][2] = 0; reg[group][3] = 0; screen(1); FUNC = 0; } if(key<10) { if(inputmode==0) { group = key; //序號(hào)確認(rèn) dis_buf[0] = LedNum[group]; datpos = -1; //數(shù)據(jù)鍵入位置歸零 } else if(inputmode==1) //對(duì)應(yīng)組數(shù)據(jù)輸入 { dis_buf[datpos+2] = LedNum[key]; reg[group][datpos] = 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; //定時(shí)器工作方式2 PCON|=0x80; //波特率提高一倍 TH1=0xF3; //波特率4800、數(shù)據(jù)位8、停止位1、效驗(yàn)位無 (12M) TL1=0xF3; while(1) { keydown(); //調(diào)用按鍵判斷檢測(cè)程序 if(MODE==0) //輸入模式 { if(int_on==1) //若中斷未關(guān) { TR1=0; //關(guān)啟定時(shí)器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)啟定時(shí)器1 ES=0; //關(guān)串口中斷 EA=0; //關(guān)總中斷 int_on = 0; //中斷已關(guān)標(biāo)志 } if(key<10) //若輸入的是數(shù)字 { group = key; //選定輸出組數(shù) dis_buf[0] = LedNum[group]; //先顯示數(shù)據(jù)組數(shù) dis_buf[1] = 0xff; //空格 dis_buf[2] = LedNum[reg[group][0]]; //四位十進(jìn)制數(shù) dis_buf[3] = LedNum[reg[group][1]]; dis_buf[4] = LedNum[reg[group][2]]; dis_buf[5] = LedNum[reg[group][3]]; } } else if(MODE==2) //通信模式 { if(int_on==0) //若中斷未開 { TR1=1; //開啟定時(shí)器1 ES=1; //開串口中斷 EA=1; //開總中斷 int_on = 1; //中斷已開標(biāo)志 screen(1); //清屏 } if (key<10) { SBUF = key; //SUBF接受/發(fā)送緩沖器 while(TI==0); //當(dāng)發(fā)送標(biāo)志位為0,即未完成發(fā)送,則一直等待,直到發(fā)送完成 TI=0; //發(fā)送完成之后,將發(fā)送中斷標(biāo)志TI置0 screen(2); //右移 dis_buf[0] = LedNum[key]; //最左為剛輸入的數(shù)字 } } else { if(int_on==1) //若中斷未關(guān) { TR1=0; //關(guān)啟定時(shí)器1 ES=0; //關(guān)串口中斷 EA=0; //關(guān)總中斷 int_on = 0; //中斷已關(guān)標(biāo)志 } dis_buf[0] = ~0x01; dis_buf[1] = ~0x40; dis_buf[2] = ~0x08; dis_buf[3] = ~0x08; dis_buf[4] = ~0x40; dis_buf[5] = ~0x01; } for(roll=0;roll<6;roll++) { P1=LedSele[roll]; //通過循環(huán)使對(duì)應(yīng)選通的數(shù)碼管顯示相應(yīng)的數(shù)值 P0=dis_buf[roll]; //通過循環(huán)逐個(gè)選通數(shù)碼管 delay(1); } } } void ser_int (void) interrupt 4 using 1 { if(RI==1) //若RI接受中斷標(biāo)志為1,即收到數(shù)據(jù) { RI=0; //清除RI接受中斷標(biāo)志 test++; if(test==10) test = 0; dis_buf[5] = LedNum[test]; //screen(2); dis_buf[0] = LedNum[SBUF]; //delay(1); } } 概 況 實(shí)習(xí)單位: 武漢理工大學(xué)信息工程學(xué)院 參觀考察單位: (1) 武漢理工大學(xué)信息工程學(xué)院國(guó)創(chuàng)課題小組 (2) 武漢理工大學(xué)信息工程學(xué)院開放實(shí)驗(yàn)室 (3) 武漢理工大學(xué)電工電子實(shí)習(xí)中心 (4) (5) (6) 實(shí)習(xí)開始時(shí)間:20 13 年 12 月 30 日,實(shí)習(xí)時(shí)間共 14 天。 完成實(shí)習(xí)報(bào)告時(shí)間: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í)成績(jī)表 一、成績(jī)?cè)u(píng)定 所占比例(%) 成 績(jī) 實(shí)習(xí)表現(xiàn) 實(shí)習(xí)報(bào)告質(zhì)量 考試或其他 總成績(jī) 二、對(duì)實(shí)習(xí)表現(xiàn)及實(shí)習(xí)報(bào)告質(zhì)量的綜合評(píng)價(jià)(評(píng)語) 指導(dǎo)老師(簽字): 2013 年 月 日- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 單片機(jī)應(yīng)用實(shí)習(xí) 武漢理工大學(xué) 單片機(jī) 應(yīng)用 實(shí)習(xí) 報(bào)告
鏈接地址:http://m.kudomayuko.com/p-9021894.html