單片機矩陣鍵盤,數(shù)碼管,雙機通信完美版_第1頁
單片機矩陣鍵盤,數(shù)碼管,雙機通信完美版_第2頁
單片機矩陣鍵盤,數(shù)碼管,雙機通信完美版_第3頁
單片機矩陣鍵盤,數(shù)碼管,雙機通信完美版_第4頁
單片機矩陣鍵盤,數(shù)碼管,雙機通信完美版_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學(xué)單片機實習(xí)應(yīng)用課程設(shè)計說明書學(xué)生實習(xí)報告學(xué)生姓名: 王耀輝 專業(yè)班級: 通信1304 指導(dǎo)教師: 撒繼銘 工作單位: 信息工程學(xué)院 題 目: 單片機原理與應(yīng)用 初始條件: 單片機最小系統(tǒng)、下載電路、擴展電路、軟件(PROTEUS等)、萬用表、電烙鐵等工具完成的主要任務(wù): 1)利用PROTEL等軟件進行硬件設(shè)計;2)利用Keil uV2軟件完成應(yīng)用系統(tǒng)軟件設(shè)計;3)利用stc-isp軟件完成在系統(tǒng)編程、下載,并完成系統(tǒng)軟件調(diào)試;4)題目由指導(dǎo)教師提供;5)要求每個學(xué)生單獨完成硬件軟件設(shè)計、仿真、焊接、調(diào)試任務(wù);6)寫出實習(xí)報告,實習(xí)報告主要包括以下內(nèi)容:目錄、摘要、關(guān)鍵詞、基本原理、

2、方案論證、硬件設(shè)計、軟件設(shè)計(帶流程圖、程序清單)、仿真結(jié)果、實物運行結(jié)果照片、結(jié)論、參考文獻等;7)實習(xí)完成后通過答辯;8)答辯時交實習(xí)報告電子文檔,通過答辯后根據(jù)修改意見修改并打印、裝訂成冊。實習(xí)時間安排:序號階段內(nèi)容所需時間1方案設(shè)計1天2硬件設(shè)計2天3軟件設(shè)計2天4系統(tǒng)仿真1天5電路板焊接2天6系統(tǒng)調(diào)試1天7答辯1天合 計10天指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日目錄摘 要IAbstractII1設(shè)計任務(wù)及要求12 基本原理32.1基本原理及原理框圖32.2 STC89C52結(jié)構(gòu)功能介紹33 硬件電路原理與設(shè)計63.1復(fù)位電路63.2振蕩電路73.3單片機最

3、小系統(tǒng)83.4數(shù)碼管顯示電路93.4.1 數(shù)碼管選擇93.4.2 LED芯片7SEG-MPX6-CA93.4.3 數(shù)碼管電路設(shè)計103.5 矩陣鍵盤電路113.6串口通信電路123.7 總設(shè)計電路134 軟件設(shè)計144.1軟件介紹144.1.1程序編寫軟件Keil144.1.2仿真軟件Proteus144.2數(shù)碼管顯示設(shè)計144.3串行通信接收程序155 仿真結(jié)果與分析175.1 數(shù)據(jù)輸入175.2 數(shù)據(jù)顯示185.3 實現(xiàn)串口通信196實物展示207心得體會22參考文獻23附錄:元件清單24附錄:總程序設(shè)計25 摘 要單片機最小系統(tǒng),無論對單片機初學(xué)人員還是開發(fā)人員都具有十分重要的意義,可以

4、利用最小系統(tǒng)進行編程實現(xiàn)工業(yè)控制。單片機最小系統(tǒng)電路板在單片機開發(fā)市場和大學(xué)生電子設(shè)計方面十分流行。本次課程設(shè)計包括STC89C52單片機最小系統(tǒng)包括復(fù)位和時鐘電路及供電系統(tǒng)、4×4矩陣鍵盤、獨立6個8段LED數(shù)碼管顯示電路。利用相關(guān)設(shè)計軟件進行原理圖設(shè)計利用Keil軟件編程以及Proteus軟件仿真借此鞏固單片機應(yīng)用、模擬電路、數(shù)字電路課程及學(xué)會各種工程軟件的使用。 關(guān)鍵字:單片機 最小系統(tǒng) 矩陣鍵盤 Protues keil AbstractMCU minimum system, regardless of the singlechip novice staff or staff

5、 development ,who can use minimum system program for industrial control,has very important sense. MCU minimum system board in the MCU develop market and college students electronic design is very popular. The curriculum design, including STC89S52MCU minimum system ( including a reset and clock circu

6、it and power supply system ),4 x4 matrix keyboard, the independent 6 LED digital tube display circuit and a DS18B20 temperature sensor. Using circuit design software schematic design, using Keil software and Protues software simulation, we consolidate the MCU application, analog circuit, digital cir

7、cuit course and learn all kinds of engineering software use. Key Words:MCU minimum system matrix keyboard Keil Protues1設(shè)計任務(wù)及要求1)鍵盤一個4X4的矩陣鍵盤,其中,10個按鍵是09數(shù)字鍵;另外6個是功能鍵,用于功能選擇和控制,如“數(shù)據(jù)輸入”、“數(shù)據(jù)顯示”、“串行通信”功能選擇鍵,以及“回車”、“清除”、控制鍵。(2)顯示電路由6個7段LED數(shù)碼管組成的顯示電路。(3)串口串行通信利用51的串口實現(xiàn)串行通信接口電路。完成ISP下載電路的設(shè)計、焊接 完成系統(tǒng)軟件的設(shè)計,包括程

8、序結(jié)構(gòu)設(shè)計、流程圖繪制、程序設(shè)計,實現(xiàn)如下功能(1)功能選擇通過功能選擇鍵,使得單片機處于不同的工作狀態(tài)并通過LED顯示相應(yīng)的內(nèi)容;可選擇的功能包括:數(shù)據(jù)輸入;數(shù)據(jù)顯示;串口通信(2)數(shù)據(jù)輸入通過功能選擇鍵選擇“數(shù)據(jù)輸入”后,可分次輸入10個4位十進制數(shù)據(jù),并將輸入的數(shù)據(jù)保存在內(nèi)部RAM中。數(shù)據(jù)輸入要求:第一步輸入序號09,表明輸入的是第幾個4位十進制數(shù)據(jù);第二步按下回車鍵,完成序號輸入;第三步輸入最多4位的十進制數(shù)據(jù);第四步按下回車鍵,完成數(shù)據(jù)輸入;重復(fù)第一步,開始新數(shù)據(jù)的輸入;輸入數(shù)據(jù)的顯示格式是:最左邊是序號,然后是空格,之后是從右到左的最多4位十進制數(shù);若在輸入過程中(第一步或第三步)

9、出現(xiàn)錯誤,按“清除”鍵,重新從第一步開始輸入數(shù)據(jù)?;蛘撸约涸O(shè)計10個十進制數(shù)的輸入及顯示方式。(3)數(shù)據(jù)顯示通過功能選擇鍵選擇“數(shù)據(jù)顯示”后,可顯示之前輸入的10個4位十進制數(shù)據(jù)中的任一個,要求:第一步輸入序號09,表明顯示的是第幾個4位十進制數(shù)據(jù);第二步顯示相應(yīng)的數(shù)據(jù);重復(fù)第一步、第二步,顯示其他的數(shù)據(jù);數(shù)據(jù)的顯示格式是:最左邊是序號,然后是空格,之后是要顯示的數(shù)據(jù),從右到左最多4位十進制數(shù)。或者,自己設(shè)計數(shù)據(jù)的顯示方式。(4)數(shù)據(jù)通信將兩個單片機最小系統(tǒng)通過串口連接起來,其中一個作為主系統(tǒng),另一個作為輔系統(tǒng)。當(dāng)通過功能選擇鍵選擇“串行通信”后,當(dāng)在主系統(tǒng)上按下數(shù)字鍵后主系統(tǒng)的LED按從左

10、向右移東的方式顯示按鍵輸入的數(shù)字,同時輔系統(tǒng)的LED上顯示與主系統(tǒng)同樣的內(nèi)容。(5)利用仿真軟件完成系統(tǒng)仿真工作(6)在單片機最小系統(tǒng)硬件上實現(xiàn)任務(wù)3中規(guī)定的功能2 基本原理2.1基本原理及原理框圖單片機最小系統(tǒng),是指用最小的元件組成的單片機可以工作的系統(tǒng)。對51系列單片機來說,最小系統(tǒng)一般應(yīng)該包括:單片機、晶振電路、復(fù)位電路。單片機接口電路主要用來連接計算機和其他外部設(shè)備。本次設(shè)計主要完成的擴展電路包括鍵盤電路、數(shù)碼管顯示、串行通信三大模塊。其原理框圖如下圖2.1所示: 圖2.1總原理框圖2.2 STC89C52結(jié)構(gòu)功能介紹STC89C52是一種帶8K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓、

11、高性能COMOS8位微處理器,又稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。STC89C52具有8K在系統(tǒng)可編程存儲器。具有以下配置:8KFlash,512字節(jié)RAM,32I/O口線,定時器,內(nèi)置4KBROM,三個16位定時器、計數(shù)器,一個6向量2級中斷結(jié)構(gòu),雙全工串行口。STC89C52引腳圖如圖2.2所示。 圖2.2 STC89C52引腳圖TC89C52芯片共40引腳,各引腳功能如下:VCC(40引腳):電源電壓VSS(20引腳):接地RST復(fù)位端P0端口(P0.0P0.7,3932引腳):P0口是一個漏極開路的8位雙向I/

12、O口。作為輸出端口,每個引腳能驅(qū)動8個TTL負(fù)載,對端口P0寫入“1”時,可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時,P0口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。此時,P0口內(nèi)部上拉電阻有效。在Flash ROM編程時,P0端口接收指令字節(jié);而在校驗程序時,則輸出指令字節(jié)。驗證時,要求外接上拉電阻。P1端口(P1.0P1.7,18引腳):P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅(qū)動(吸收或者輸出電流方式)4個TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時,因為有內(nèi)部上拉電阻,那些被外部拉低的引腳會輸出一個

13、電流P2端口(P2.0P2.7,2128引腳):P2口是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可以驅(qū)動(吸收或輸出電流方式)4個TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電平,這時可用作輸入口。P2作為輸入口使用時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸出一個電流。在訪問外部程序存儲器和16位地址的外部數(shù)據(jù)存儲器(如執(zhí)行“MOVX DPTR”指令)時,P2送出高8位地址。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行“MOVX R1”指令)時,P2口引腳上的內(nèi)容(就是專用寄存器(SFR)區(qū)中的P2寄存器的內(nèi)容),在整個訪問期間不會改變。P3端口(P3.0P

14、3.7,1017引腳):P3是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。P3的輸出緩沖器可驅(qū)動(吸收或輸出電流方式)4個TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這時可用作輸入口。P3做輸入口使用時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸入一個電流。P3口除作為一般I/O口外,還有其他一些復(fù)用功能。3 硬件電路原理與設(shè)計3.1復(fù)位電路單片機的置位和復(fù)位,都是為了把電路初始化到一個確定的狀態(tài),一般來說,單片機復(fù)位電路作用是把一個例如狀態(tài)機初始化到空狀態(tài),而在單片機內(nèi)部,復(fù)位的時候單片機是把一些寄存器以及存儲設(shè)備裝入廠商預(yù)設(shè)的一個值。單片機復(fù)位電路原理是在單片機的復(fù)

15、位引腳RST上外接電阻和電容,實現(xiàn)上電復(fù)位。當(dāng)復(fù)位電平持續(xù)兩個機器周期以上時復(fù)位有效。復(fù)位電平的持續(xù)時間必須大于單片機的兩個機器周期。具體數(shù)值可以由RC電路計算出時間常數(shù)。復(fù)位電路由按鍵復(fù)位和上電復(fù)位兩部分組成。上電復(fù)位 STC89系列單片及為高電平復(fù)位,通常在復(fù)位引腳RST上連接一個電容到VCC,再連接一個電阻到GND,由此形成一個RC充放電回路保證單片機在上電時RST腳上有足夠時間的高電平進行復(fù)位,隨后回歸到低電平進入正常工作狀態(tài),這個電阻和電容的典型值為10K和10uF。按鍵復(fù)位按鍵復(fù)位就是在復(fù)位電容上并聯(lián)一個開關(guān),當(dāng)開關(guān)按下時電容被放電、RST也被拉到高電平,而且由于電容的充電,會保持

16、一段時間的高電平來使單片機復(fù)位。電路圖如圖3.1所示 圖3.1復(fù)位電路圖3.2振蕩電路單片機系統(tǒng)里都有晶振,在單片機系統(tǒng)里晶振作用非常大,全稱叫晶體振蕩器,它結(jié)合單片機內(nèi)部電路產(chǎn)生單片機所需的時鐘頻率,單片機晶振提供的時鐘頻率越高,那么單片機運行速度就越快,單片接的一切指令的執(zhí)行都是建立在單片機晶振提供的時鐘頻率。在通常工作條件下,普通的晶振頻率絕對精度可達百萬分之五十。高級的精度更高。有些晶振還可以由外加電壓在一定范圍內(nèi)調(diào)整頻率,稱為壓控振蕩器(VCO)。晶振用一種能把電能和機械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作,以提供穩(wěn)定,精確的單頻振蕩。單片機晶振的作用是為系統(tǒng)提供基本的時鐘信號。通常一

17、個系統(tǒng)共用一個晶振,便于各部分保持同步。有些通訊系統(tǒng)的基頻和射頻使用不同的晶振,而通過電子調(diào)整頻率的方法保持同步。晶振通常與鎖相環(huán)電路配合使用,以提供系統(tǒng)所需的時鐘頻率。如果不同子系統(tǒng)需要不同頻率的時鐘信號,可以用與同一個晶振相連的不同鎖相環(huán)來提供。STC89C51使用11.0592MHz的晶體振蕩器作為振蕩源,由于單片機內(nèi)部帶有振蕩電路,所以外部只要連接一個晶振和兩個電容即可,電容容量一般在15pF至50pF之間。其電路原理圖如圖3.2所示。 圖3.2 振蕩電路3.3單片機最小系統(tǒng)最小系統(tǒng)包括晶振時鐘電路和復(fù)位電路。原理圖如圖3.3所示: 圖3.3單片機最小系統(tǒng)在單片機引腳 XTAL1 和

18、XTAL2 外接晶體整蕩器或陶瓷振蕩器,就構(gòu)成了內(nèi)部震蕩方式,由于單片機內(nèi)部有一個高增益反向放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器,并產(chǎn)生振蕩時鐘脈沖,晶振通常選擇 6MHz、12MHz 或 24MHz,這里取晶振為12MHz。與晶振連接的電容起穩(wěn)定振蕩頻率、快速起振的作用。電容值一般為 530pf。 復(fù)位操作完成單片機片內(nèi)電路初始化,復(fù)位結(jié)束后,單片機從一種確定狀態(tài)開始運行。當(dāng)單片機復(fù)位引腳 RST 出現(xiàn) 5ms 以上高電平時,單片機就完成復(fù)位操作。復(fù)位操作通常有兩種形式:上電復(fù)位和開關(guān)復(fù)位。常用上電開關(guān)復(fù)位電路如上圖所示,上電后,由于電容 C3 充電,時 RST 持續(xù)一段時間高電平。當(dāng)單

19、片機已在運行中時,按下復(fù)位鍵也能使 RST 持續(xù)一段時間高電平,從而實現(xiàn)開關(guān)復(fù)位操作。3.4數(shù)碼管顯示電路3.4.1 數(shù)碼管選擇本系統(tǒng)輸出結(jié)果選用六個共陽數(shù)碼管顯示。數(shù)碼管有共陰共陽之分,如下圖3.4,圖3.5,圖3.6分別為數(shù)碼管符號引腳,共陽數(shù)碼管,共陰數(shù)碼管: 圖3.4數(shù)碼管符號引腳 圖3.5共陽數(shù)碼管 圖3.6共陰數(shù)碼管3.4.2 LED芯片7SEG-MPX6-CA如下圖3.7為7SEG-MPX6-CA的引腳圖: 圖3.7 7SEG-MPX6-CA的引腳圖該芯片實現(xiàn)6個數(shù)碼管合在一起,123456是位碼輸入,abcdefg dp就是數(shù)碼管的段碼輸入 。如果使用共陰數(shù)碼管通過單片機控制時

20、,單片機上電和復(fù)位后所有的I/O口都是高電位,這樣只要單片機一上電,電流經(jīng)過數(shù)碼管的位流向共陰至地,數(shù)碼管就會亮,耗電大,不節(jié)能,所以又每次編程序時都得把位控制端賦予低電平,太過麻煩。因而選用共陽數(shù)碼管即7SEG-MPX6-CA。3.4.3 數(shù)碼管電路設(shè)計由于使用的是六位數(shù)碼管合一芯片7SEG-MPX6-CA,電平有IO口提供,其電路設(shè)計圖如下圖3.8 數(shù)碼管電路模塊所示: 圖3.8數(shù)碼管電路模塊3.5 矩陣鍵盤電路矩陣鍵盤檢測的原理和方法:矩陣鍵盤每個按鍵兩端都與單片機I/O口相連,因此在檢測時需人為通過單片機I/O口送出低電平。檢測時,先送一列為低電平,其余幾列全為高電平(此時確定了列數(shù))

21、,然后立即輪流檢測一次各行是否有低電平,若檢測到某一行為低電平(這是有確定了行數(shù)),則便可以確認(rèn)當(dāng)前被按下的鍵是哪一列哪一行,用同樣方法輪流送各列一次低電平,再輪流檢測一次各行是否變?yōu)榈碗娖剑@樣既可檢測完所有的按鍵,當(dāng)有鍵按下時便可判斷出按下的是哪一個鍵。其工作原理是從0列開始順序行掃描即該行輸出為0。每掃描一行讀入列線數(shù)據(jù)從0開始列檢查找該行輸出為0的列若無則順序掃描下一行并檢查其各列若找到某列線為0則該列與檢查行交叉的按鍵為被按下的鍵。從0行0列開始順序?qū)存I編號就可以按掃描的值得到按鍵的值。本設(shè)計使用的是4個獨立按鍵其功能設(shè)置為時間的顯示、時間的設(shè)置、溫度的顯示和數(shù)字頻率的顯示。本設(shè)計

22、中主要使用了獨立鍵盤,故電路圖中簡要的畫出了4*4的矩陣鍵盤,其電路原理圖如圖3.9所示 圖3.9矩陣鍵盤顯示電路設(shè)計3.6串口通信電路 串口是計算機上一種非常通用設(shè)備通信的協(xié)議(不要與通用串行總線Universal Serial Bus或者USB混淆)。大多數(shù)計算機包含兩個基于RS232的串口。串口同時也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS-232口。同時,串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。串口通信的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù)。它很簡單并且

23、能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。比如IEEE488定義并行通行狀態(tài)時,規(guī)定設(shè)備線總常不得超過20米,并且任意兩個設(shè)備間的長度不得超過2米;而對于串口而言,長度可達1200米。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗。單片機使用的是TTL電平,而計算機使用的是RS-232電平,要實現(xiàn)把電腦中的程序能下載到單片機上,就需要實現(xiàn)RS-232電平與TTL電平之間的轉(zhuǎn)換。MAX232是電平轉(zhuǎn)換芯片。1970年,美國電氣學(xué)會規(guī)定“RS232”串口通信協(xié)議。規(guī)定邏輯“1”,-5 -15V;邏輯“0”,+5 +15V 。噪聲容限為2V。要實現(xiàn)利用串口與單片機進行通信,就要進行電平轉(zhuǎn)換,把標(biāo)準(zhǔn)轉(zhuǎn)化成單片機可以

24、識別的。MAX232電路原理圖如圖3.10所示。圖3.10 串口電路圖在本設(shè)計中,兩個主機和副機之間進行通信時,由于距離近,因此直接將兩個單片機串行口線RxD和TxD相互交叉連接、GND相連即可,如圖3.11所示。 圖3.11單片機近距離通信示意圖3.7 總設(shè)計電路 圖3.12總電路設(shè)計圖4 軟件設(shè)計4.1軟件介紹4.1.1程序編寫軟件Keil Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試

25、器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。本次設(shè)計編程主要使用Keil軟件進行編程。4.1.2仿真軟件ProteusProtues軟件是英國Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機愛好者、從事單片機教學(xué)的教師、致力于單片機開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計,真正實現(xiàn)了

26、從概念到產(chǎn)品的完整設(shè)計。是目前世界上唯一將電路仿真軟件、PCB設(shè)計軟件和虛擬模型仿真軟件三合一的設(shè)計平臺,在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯。本次設(shè)計采用的是Proteus進行仿真。4.2數(shù)碼管顯示設(shè)計該程序分為鍵盤掃描和數(shù)碼管顯示兩部分,其程序流程圖如4.1所示: 圖4.1數(shù)據(jù)輸入流程圖4.3串行通信接收程序由于要實現(xiàn)兩個單片機之間的通信,在接收單片機上要寫與發(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

27、仿真結(jié)果與分析5.1 數(shù)據(jù)輸入根據(jù)實驗任務(wù)可知,需要數(shù)據(jù)輸入10個四位十進制數(shù)。圖5.1(a,b,c)為實驗中輸入序號為6的6233四位十進制數(shù)的過程: 圖5.1(a) 序號輸入 圖5.1(b) 序號輸入后按確定鍵 圖5.1(c) 完成四位數(shù)據(jù)的輸入5.2 數(shù)據(jù)顯示圖5.2 (a,b)為序號為6的數(shù)據(jù)顯示過程: 圖5.2(a)選擇數(shù)據(jù)顯示功能鍵 圖5.2(b)按下6鍵后的顯示5.3 實現(xiàn)串口通信 串口通信電路的仿真結(jié)果如圖5.3所示: 圖5.3串口通信仿真結(jié)果圖仿真結(jié)果分析:從數(shù)據(jù)輸入與數(shù)據(jù)顯示的步驟可知,實驗的設(shè)計滿足任務(wù)要求的數(shù)據(jù)輸入和數(shù)據(jù)顯示的功能。其余的清除功能,確定功能,功能鍵選擇功

28、能在Protues軟件上都能正確體現(xiàn)。故得出相關(guān)軟件與程序的設(shè)計是正確的。6實物展示 圖6.1全元件圖 圖6.2 數(shù)據(jù)顯示圖 圖6.3主機通信圖7心得體會通過此次課程設(shè)計,使我更加扎實的掌握了有關(guān)單片機方面的知識,在設(shè)計過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經(jīng)驗不足。通過親自動手制作,使我們掌握的知識不再是紙上談兵?;仡櫰鸫苏n程設(shè)計,至今我仍感慨頗多,從理論到實踐,在這段日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次

29、課程設(shè)計使我懂得了理論與實際相結(jié)合只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,但可喜的是最終都得到了解決。我認(rèn)為,在這學(xué)期的實驗中,不僅培養(yǎng)了獨立思考、動手操作的能力,在各種其它能力上也都有了提高。更重要的是,在實驗課上,我們學(xué)會了很多學(xué)習(xí)的方法。而這是日后最實用的,真的是受益匪淺。要面對社會的挑戰(zhàn),只有不斷的學(xué)習(xí)、實踐,再學(xué)習(xí)、再實踐。這對于我們的將來也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂,找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。就像中

30、國提倡的艱苦奮斗一樣,我們都可以在實驗結(jié)束之后變的更加成熟,會面對需要面對的事情。不管怎樣,這些都是一種鍛煉,一種知識的積累,能力的提高。完全可以把這個當(dāng)作基礎(chǔ)東西,只有掌握了這些最基礎(chǔ)的,才可以更進一步,取得更好的成績。很少有人會一步登天,永不言棄才是最重要的。而且,這對于我們的將來也有很大的幫助。參考文獻1 陳國先. 語音芯片與PIC單片機的應(yīng)用接口J. 福建信息技術(shù)教育,2005.2 何立民. 單片機高級教程.北京:北京航空航天大學(xué)出版社,2001.3 李廣第單片機基礎(chǔ)北京:北京航空航天大學(xué)出版社,1999.4 李群芳. 單片微型計算機與接口技術(shù)(第3版).電子工業(yè)出版社,20085 劉

31、教瑜. 單片機原理及應(yīng)用.武漢理工大學(xué)出版社,20116 張東亮. 單片機原理與應(yīng)用.人民郵電出版社,200940附錄:元件清單序號名稱數(shù)量1電路板2塊2單片機最小系統(tǒng)1只3晶振12MHz1只430PF瓷片電容2只5100uF/25V電解電容1只61k電阻9只710k/9腳排阻1只 8排針、按鈕、LED、導(dǎo)線等若干 9電烙鐵1個100.1uF瓷片電容 4只11RS-232C串口電纜1根12四角開關(guān)16個136位共陽極數(shù)碼管2個附錄:總程序設(shè)計主系統(tǒng)程序:#include"reg52.h"void delay(unsigned char s);void keyscan(voi

32、d);void keydown(void);void input(void);void screen(int smode);int test = 0;unsigned char int_on = 0; /用于剛進入通信模式時的初始化 只有在通信模式下需要打開中斷1為中斷已開化unsigned char temp; /讀按鍵用的測試變量 unsigned char key;/按鍵序號 unsigned char MODE = 3; /模式選擇,0為輸入模式,1為顯示模式,2為串口通信模式 unsigned char FUNC = 0;/功能選擇,1為回車,2為清除 unsigned char r

33、eg104; /輸入內(nèi)容存放的數(shù)組 unsigned char dis_buf6;/顯示緩存 unsigned char inputmode;/通過回車鍵來判斷輸入模式,0為輸入序號,1為輸入4位十進制數(shù)據(jù) unsigned char group,datpos;/分別存儲數(shù)據(jù)的組數(shù)和十進制數(shù)據(jù)位數(shù) unsigned char LedNum=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

34、;j>=0;j-)for(i=125;i>0;i-);void screen(int smode) /對數(shù)碼管操作的函數(shù) 1為清空顯示0號位光標(biāo) 2為移位 int p; if(smode=1)for(p=0;p<6;p+) dis_bufp = 0xff; /清屏 dis_buf0 = 0xf7;/帶輸入光標(biāo) else if(smode=2)for(p=5;p>0;p-)/顯示緩存移位 dis_bufp = dis_bufp-1;void keyscan(void)/按鍵掃描函數(shù) P2=0x0F; /低四位輸入列為高電平行為低電平 temp=P2; /讀P2口 temp

35、=temp&0x0F;temp=(temp|0xF0);switch(temp)case 1: key = 0; break; / p2.0 被拉低 case 2: key = 1; break; / p2.1 被拉低 case 4: key = 2; break; / p2.2 被拉低 case 8: key = 3; break; / p2.3 被拉低 default: key = 16;temp = 0;P2=0xF0; /高四位輸入行為高電平列為低電平 /delay(1);temp=P2; /讀P2口 temp=temp&0xF0; /屏蔽低四位temp=(temp&g

36、t;>4)|0xF0);switch(temp)case 1:break; / p2.4 被拉低 case 2:key = key+4; break; / p2.5被拉低 case 4:key = key+8; break; /p2.6 被拉低 case 8:key = key+12;break; / p2.7 被拉低 default:key = 16;switch(key)case 3: /模式選擇為輸入 MODE = 0;inputmode=0; /從數(shù)據(jù)序號開始輸入 key=16; /鍵盤序號置空 FUNC=0; /功能鍵置空 screen(1);break; case 7: /模

37、式選擇為顯示 MODE = 1;key=16; /鍵盤序號置空 screen(1);break;case 11: MODE = 2;break;case 14: FUNC = 1;break;/按鍵功能選擇 case 15: FUNC = 2;break;case 12: MODE = 3;break; /模式3為空余模式,可自定義或歡迎界面 default: switch(key) case 0:case 1:case 2: key+=7; break;case 8:case 9:case 10:key-=7; break;case 13:key=0;datpos+; /存數(shù)位數(shù)加一 if(

38、datpos=4) datpos = 0; P2 = 0xf0;while(P2!=0xf0); /保證按鍵彈起后再跳出程序 void keydown(void) P2=0xF0;/delay(1);if(P2!=0xF0) /判斷按鍵是否按下 如果按鈕按下 會拉低P2其中的一個端口 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 =

39、 0; /切換完成 功能變量置空 if(FUNC=2) inputmode = 0; /重新從數(shù)據(jù)組數(shù)開始輸入 reggroup0 = 0; /清空已輸入的錯誤數(shù)據(jù) reggroup1 = 0;reggroup2 = 0;reggroup3 = 0;screen(1);FUNC = 0; if(key<10) 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; reg

40、groupdatpos = key; delay(1); void main()unsigned char LedSele=0x01,0x02,0x04,0x08,0x10,0x20;unsigned char roll;/if(P20&P27=1) MODE = 2;/電路中輔系統(tǒng)的P2.0和P2.7置一, 區(qū)別于主系統(tǒng)。輔系統(tǒng)保持在通信模式 SCON =0x50; /REN=1允許串行接受狀態(tài),串口工作模式2 TMOD|=0x20; /定時器工作方式2 PCON|=0x80; /波特率提高一倍 TH1=0xF3; /波特率4800、數(shù)據(jù)位8、停止位1、效驗位無 (12M)TL1=0

41、xF3;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(key<10) /若輸入的是數(shù)字 group = key; /選定輸出組數(shù) dis_

42、buf0 = LedNumgroup;/先顯示數(shù)據(jù)組數(shù) dis_buf1 = 0x00; /空格 dis_buf2 = LedNumreggroup0; /四位十進制數(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 (key<10)SBUF

43、 = 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ù)字 key = 16;/*在按下的數(shù)字發(fā)送后將key置空,防止該數(shù)多次發(fā)送 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;roll<6;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;di

溫馨提示

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

最新文檔

評論

0/150

提交評論