下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、單片機與 pc 機軟件開發(fā)1.1 設計內(nèi)容和要求(1) 課程設計內(nèi)容利用南京偉福公司的LAB8000來開發(fā)單片機與PC機串行通訊系統(tǒng),實現(xiàn)單片機與PC機的通訊。要求實現(xiàn)數(shù)據(jù)收發(fā)功能。具體要求內(nèi)容如下:通過LAB8000的小鍵盤選擇功能; 功能1接受PC機發(fā)送的數(shù)據(jù),并將其回發(fā)給 PC機; 功能2:從LAB8000的小鍵盤輸入數(shù)據(jù),發(fā)送給 PC機。(2) 課程設計要求:認真完成課程設計任務; 通過老師現(xiàn)場驗收; 交出完整的課程設計報告。1.2 課程題目分析題目背景:串行口在計算機中有重要的作用,MCS51 單片機內(nèi)部有一個功能強的全雙工的異步通信串行口,就是指雙機之間的串行接收、發(fā)送數(shù)據(jù)可同時進
2、行。要傳送的串行數(shù)據(jù)在發(fā)方是以數(shù)據(jù)幀形式一幀一幀地發(fā)送,通過傳輸線由收方一幀一幀地接收。本次課設要求完成從PC機發(fā)送數(shù)據(jù),將其傳入單片機,并 將其發(fā)回給PC機。然后再從LAB8000的小鍵盤輸入數(shù)據(jù),將其發(fā)送給PC機。本次課程設計由于要完成功能的選擇, 所以要用鍵盤掃描程序。通過鍵盤掃描程序來判斷按下來的是哪一個按鍵,實現(xiàn)功能選擇。當掃描到用戶按LAB8000上面的小鍵盤1時,實現(xiàn)功能1的選擇,這時候從PC機的鍵盤輸入數(shù)據(jù),就可以使之發(fā)送出去,傳送到單片機然后后傳回 PC機,這里面需要一個SBUF緩沖區(qū)來緩沖存儲數(shù)據(jù),當把數(shù)據(jù)往單片機里面發(fā)送時,數(shù)據(jù)需要先發(fā)送到SBUFS沖區(qū)里 面,然后再往單
3、片機里面發(fā)送,當單片機往PC機發(fā)送數(shù)據(jù)時,數(shù)據(jù)也需要先送到SBUF里面,然后在往外發(fā)送,當掃描到輸入的值是1時,結(jié)束功能1,停止發(fā)送。當掃描到用戶按LAB8000上面的按鍵2時,通過鍵盤掃描程序進入功能 2,功能二要求從LAb8000小鍵盤輸入數(shù)據(jù),然后傳給 PC機。當掃描到按NEXT鍵時,停止發(fā)送。要實現(xiàn)單片機與PC機的串行通信,要用到MAX232來實現(xiàn)電平轉(zhuǎn)換。串行通 信時選擇串行口工作在方式一,定時器工作時選擇工作在方式二。經(jīng)過計算,設 置通信時的波特率為 4800bits/s ,將 4800bits/s 往回帶入公式,計算出誤差小 于 <7% ,所以可以選擇這種工作模式。1.4
4、方案設計設計鍵盤掃描函數(shù)和按鍵檢測函數(shù),通過MCS-51芯片,實現(xiàn)鍵盤掃描,通過小鍵盤設置17個鍵位選擇鍵(4*4+NEXT®),再輸入時在數(shù)碼管上面顯示1, 進入功能一:接收PC機發(fā)送的數(shù)據(jù)并將其發(fā)回給 PC機,在輸入2時,在數(shù)碼管上面顯示數(shù)值2,然后從小鍵盤輸入數(shù)據(jù)發(fā)送給PC機。1.4.1小鍵盤選擇功能小鍵盤選擇功能:首先設置定時器及波特率,然后在設計鍵盤掃描函數(shù)和按鍵檢測函數(shù),使之能實現(xiàn)小鍵盤的選擇功能。 輸入不同的數(shù)實現(xiàn)調(diào)用不同的函數(shù), 從而實現(xiàn)不同的功能。1.4.2功能 1,PC 機發(fā)送模塊功能1:設計PC發(fā)送函數(shù),此功能還需要有串行口中斷函數(shù)。目的是實現(xiàn)單 片機可以接收P
5、C機發(fā)送的數(shù)據(jù),并且將其發(fā)送給 PC機。設置一個返回鍵,讓按鍵1 實現(xiàn)返回小鍵盤選擇功能,可以重新選擇功能 1 還是功能 2。1.4.3 功能 2,單片機發(fā)送模塊功能 2:設計小鍵盤發(fā)送程序,需要調(diào)用鍵盤掃描函數(shù)和按鍵檢測函數(shù),若 有鍵按下,將鍵值發(fā)送到數(shù)碼管上,并將其轉(zhuǎn)化為ascii碼發(fā)回PC機。同樣設置 一個返回鍵,設置小鍵盤右下角的“ NEXT時返回小鍵盤的功能選擇,使函數(shù)能 夠循環(huán)使用。1.5 方案論證從實際應用的角度,可以任意選擇事先設計好的 3 種狀態(tài),當選擇完一種狀 態(tài)時(除 0),它可以無限的按照這種方案循環(huán)的運行下去,在此過程中,用戶可 以選擇退出這種工作狀態(tài),從而實現(xiàn)對當前
6、進行狀態(tài)的控制,即可以令程序重新 開始。當輸入 0時,結(jié)束。在整個串行口輸入過程中可隨時做出不同的輸入方式,對輸入數(shù)據(jù)的工作狀態(tài)進行控制。2 總體設計方案2.1 實現(xiàn)方法開始運行程序時,數(shù)碼管初始化顯示 6個數(shù)字 0,然后選擇一種模式(1 和2), 若輸入的數(shù)不是“ 1”或“ 2” ,只在LED登上顯示該數(shù),等待重新輸入一個工作狀態(tài),此處在掃描鍵盤并按鍵檢測后需要將掃描到斷碼發(fā)送到登上。在選擇“ 1”,即要實現(xiàn)功能1,則調(diào)用PC機發(fā)送函數(shù),用串行口中斷函數(shù)來保存斷點(防止計數(shù)器溢出)。使之能實現(xiàn)接收PC機發(fā)送的數(shù)據(jù)后,在將其回 發(fā)給PC機。設置一全局變量flag,當用戶按鍵1時,flag置1,
7、使之跳出while 死循環(huán),從而達到返回小鍵盤,重新選擇功能若選擇“ 2”,即要實現(xiàn)功能 2,須調(diào)用小鍵盤掃描函數(shù),將數(shù)據(jù)顯示到數(shù)碼 管上,同時然后將該數(shù)據(jù)轉(zhuǎn)化成acsii碼的形式通過串行口發(fā)送到 PC機上。當從小鍵盤按鍵NEXT時,返回初始狀態(tài),可以進行功能 1和2的重新選擇。2.2 設計思路本課設主要分 3 個模塊,第一個模塊是主程序中的鍵盤掃描,通過鍵盤掃 描程序來獲取從小鍵盤輸入的鍵值, 此次課設里面用到的鍵盤的按鍵主要有三個, 一個是0',一個是1',另一個是2'。當輸入0'時,結(jié)束。當輸入的是1' 時,進入第二個功能模塊,由PC機發(fā)送數(shù)據(jù),將
8、數(shù)據(jù)發(fā)送給單片機,然互在傳給PC機。當輸入數(shù)值 2時,進入第二個模塊,將數(shù)據(jù)由單片機小鍵盤輸入,發(fā)送給PC機。模塊調(diào)用圖如下頁圖2.1所示2.3設計環(huán)境圖2.1模塊調(diào)用硬件環(huán)境:偉福LAB8000 ;軟件環(huán)境:Kei卩vision3詳細設計3.1電路設計單片機內(nèi)部的總體電路圖如圖3.1所示,15ZAnBVL<T2¥49.*JIt" w傀胃聲U'PICB RILED Ut-111衆(zhòng)CP11事館 MiltnIrWCiW:血滬皤.J.;n XT3=1:41圖3.1 8051單片機電路圖3.2軟件設計3.2.1主程序鍵盤掃描模塊該模塊的功能是用戶從小鍵盤輸入數(shù)據(jù),以進
9、行功能選擇。將某一鍵按下,通過掃描鍵盤,向列掃描碼地址(0X8002H)逐列輸出低電平,然后從行碼地址(0X8001H)讀回。如果有鍵按下,則相應行的值應為低,如果無鍵按下,由于上拉的作用,行碼為高。這樣就可以通過輸出的列碼和讀取的行碼來判斷按下的是哪個 鍵。該模塊中鍵盤掃描的電路圖和鍵盤掃描電路如圖3.2和3.3所示.疔0_口匸曲cmx n4aAL jn-FIlk斗曲 1上_1,-1 ,U4 r¥<5La jQA9JIBVIP一.3 Krnf¥TiLA A A AAA A 號IA£»»|S趣4、AD-ur=T=4,厶buk AC* r*
10、汕 »X 心 I ADI3 L t一亞A盤旳習SiP卽sfsifwyBfparczfl 盯113ogwCiAJA甘 jgr二oCin±ran±15 <fYr'Tl 4 uKEY: KEYb« :i KZYU tr>口3®<4n®®nnpwJ M;JL®ocn?I-XR2S1-3.BLJLiX0rx主函數(shù)模塊首先設置定時器及波特率的選擇,根據(jù)標志位k1的值選擇是PC模式發(fā)送數(shù)據(jù)還是小鍵盤模式發(fā)送數(shù)據(jù),并根據(jù)功能選擇模塊中對各模式的信息 的進行相應的初始設置。通過小鍵盤選擇功能控制數(shù)據(jù)的輸出方
11、式,還能接受新 的鍵值來執(zhí)行相應的功能。讀取的鍵值要先判斷是否是無效鍵,是無效鍵要執(zhí)行死循環(huán)程序,按下“ T或“ 2”鍵才能繼續(xù)顯示。如下頁圖3.4所示322功能1模塊該模塊的功能是通過鍵盤掃描程序的按鍵選擇選擇功能1 (串口傳輸),并且將數(shù)字顯示到數(shù)碼管上面。要實現(xiàn)單片機與PC機的串行通信,數(shù)碼管顯示電路圖如圖3.5所示o-_ 11' rt 譽* *睦十心 J頂2XX:J::-丐a*a<H.»F 斗、P J i $ a440Q 氓XU fr J. . r T 缶呂8:MBs+<4tB WL z " p - Ui 母 acon"ifcGr-J齊
12、EGJi.2 門VWI T=.<J_/"1 J、. H 二 :j *1 -J w| I7亠 rr li圖3.5數(shù)碼管顯示電路圖JTh i 世F -.n- IL aM' L-啟動功能1時開啟功能1模塊利用單片機的串行口,實現(xiàn)PC機的串行通訊。在定時器,調(diào)用串行中斷函數(shù),通過 while(!flag)語句實現(xiàn)循環(huán)發(fā)送的功能,在串 行中斷子函數(shù)中先將PC機中輸入的內(nèi)容發(fā)送到單片機上,執(zhí)行while(!RI) 單片機將其內(nèi)容回發(fā)給PC機之前需要進行是否返回小鍵盤選擇功能的判定,通過if(temp=49)flag=1語句,判斷是否是數(shù)1的ASCII碼49,若是則將flag置1,達
13、 到跳出該循環(huán)的目的。如圖3.6所示。323功能2模塊本次課設實現(xiàn)單片機與 PC機之間的串行通信需要串口通信需要 用到MAX232芯片,由于標準的 MAX232電平很高,可以達到正負15V, 常用的TTL電平最高可以達到5V,所以需要MAX232芯片來進行轉(zhuǎn)換。將 P3.0 接 RXD引腳,P3.1 接 TXD引腳 MAX232芯片如下圖3.7所示,用MAX232接單片機與 如圖3.8所示PC機后的電路圖a未匚£f r aTl【X Rl CUTTl GLTKJ lCI +C'l-Cl -a -貯cvrR2 X12 INTZULTV-V.VCCGyoIOlF L6MM 21=R
14、XD 9 如 10 CS/ 2RS-232(tl¥轉(zhuǎn)換電路LjaRXD232 nFHFJJ ICuF.T1aQOO o圖3.7 MAX232芯片AT09C51111213151曰LJi理PI 0 P1 1 PI.2PI.3 PI 4PI 5 P1 6PI 7 R8TP3.0(RXD)_P3 1 n>!D)ALE(jfPROG) P3 2CrtNTO>PP 勺(/INTIJ P3 4(JO)P3 ep-i) P3 G(AM?) P3.TC/RD) XTAL2XTAL1 GNDvcc PDi 0(AC0> PD.ItACU P0.2CAC2) P0.3(AC3) PC
15、4(AC 4) POi 5(AC5) PCI eAce) PC 7(AC 7) /EACVPP)/PSEN P2.7(A1 5) P2 6(A14) P2.5(A1 打 P2 4(A12) P2.j(A1 1) P2 2(A10)P21(A9) PJ.IKAfl、HIN232-p±X2- 'I3Cl t V*C2+ C2-VccGINDT1outRlin RioutTiin1512犬S232亠 Connector弱 RTS JSr宵LGMD尺I廣T2out T2lri R2ir R2out圖3.8 MAX232連接后的電路圖功能2模塊實現(xiàn)小鍵盤發(fā)送數(shù)據(jù)的功能,需調(diào)用小鍵盤掃描
16、函數(shù)和按鍵檢測函 數(shù),將小鍵盤輸入的數(shù)據(jù)發(fā)送到 LED燈上。啟動功能2時同功能1 一樣先啟動定時器工作,掃描小鍵盤使之能夠在小鍵盤輸入數(shù)據(jù),對輸入的數(shù)據(jù)進行判定,若為返回鍵(NEXT)則跳出該函數(shù)重新進行小鍵盤選擇功能,使之能夠循環(huán)使用;若為基 本鍵,將掃描到的按鍵的鍵值通過查表的方式轉(zhuǎn)為 ASCII碼,好發(fā)送回PC機中。如圖3.9所示圖3.9功能2模塊流程圖4 調(diào)試4.1 調(diào)試過程主函數(shù)模塊中的鍵盤掃描開始不太會,所以在本次課程設計開始做的時候就 參照著實驗指導書進行了細致地系統(tǒng)地學習,深刻地了解了其工作原理,以便后 來理解代碼以及編寫代碼。功能1即PC機發(fā)送數(shù)據(jù)模塊進行編代碼時,由于平時學
17、習單片機時用的是匯 編語言編程,這次課程設計要求用 C語言進行編程,結(jié)合著實驗箱上的各器件和接線方法進行編程。因為以前實驗時候做過串口通信實驗,所以對這部分還是挺言。有時候調(diào)試的時候忘記連熟悉的,將以前寫的實驗原理匯編語言轉(zhuǎn)化為 C語蘭實驗箱的線,急的滿頭大汗,最后發(fā)現(xiàn)真是又高興又無奈。編寫代碼過程中還會存在一些小的語法錯誤, 通過 keil 軟件不斷進行調(diào)試的 過程中,根據(jù)其給出的錯誤提示,來進行檢查修改。4.2 調(diào)試結(jié)果根據(jù)此次課程設計題目的要求,在老師和同學的幫助下,經(jīng)過上述的各種調(diào)試過程,實現(xiàn)了課設上面的所有要求,可以在按鍵 1時數(shù)碼管顯示1,進行PC機發(fā)送數(shù)據(jù),發(fā)送給單片機,單片機再
18、將數(shù)據(jù)發(fā)給 PC機。按鍵2時數(shù)碼管顯示2, 將小鍵盤輸入的數(shù)據(jù)發(fā)送給 PC機。但是由于課設簡單,孫老師讓增加一個界面,類似于串口大師的,經(jīng)過一天多的學習,只做完了對話框,沒有將之與單片機連 接到一起。參考文獻1張毅剛,劉杰.MCS-51單片機原理及應用MD .哈爾濱:哈爾濱工業(yè)大學出版社, 2008張義和.例說51單片機:C語言版MQ .北京:人民郵電出版社,201023段晨東,爨瑩 . 單片機原理及接口技術 M. 北京:清華大學出版社, 20084偉福Lab8000系列單片機仿真實驗系統(tǒng) 使用說明書MD .南京偉福實業(yè)有限公司, 20155 高峰 . 單片微型計算機原理與接口技術 M. 北京
19、:科學出版社, 2007錄(關鍵部分程序清單)#include <reg51.h>#include <intrins.h>#define uchar unsigned char #define uint unsigned int xdata uchar xdata uchar xdata ucharkey led dat_at_ 0x8001;/ 定義鍵盤行地址_at_ 0x8002;/ 定義鍵盤列地址并定義段碼顯示所在列_at_ 0x8004;/ 定義段碼輸出地址uchar ascii=48,49,50,51,52,53,54,55,56,57,0x41,0x42,0
20、x43,0x44,0x45,0x46; ucharledmap=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uint k1;uchar flag;uchar temp;void pcsend();void keysend();int i,j,p;unsigned char testkey() led = 0;return (key&0x0f);/數(shù)碼管顯示函數(shù)uint getkey() uint k;/鍵盤掃描函數(shù)led=0xfb;switch(key)case 0x0e
21、:k=13;case 0x0d:k=12;case 0x0b:k=11;case 0x07:k=10; default:break;led=0xf7; switch(key) case 0x0e:k=14;case 0x0d:k=3;/掃描左數(shù)第四列while(testkey();return (k); while(testkey();return (k); while(testkey();return (k); while(testkey(); return (k);/掃描左數(shù)第三列while(testkey();return (k); while(testkey();return (k);
22、/下數(shù)第一行 /下數(shù)第二行 /下數(shù)第三行 /下數(shù)第四行case 0x0b:k=6; case 0x07:k=9; default:break; led=0xef; switch(key) case 0x0e:k=15; case 0x0d:k=2; case 0x0b:k=5; case 0x07:k=8;default:break; led=0xdf; switch(key) case 0x0e:k=0; case 0x0d:k=1; case 0x0b:k=4; case 0x07:k=7; default:break; led=0xfe; switch(key)case 0x0e: k=100; while(testkey();return(k);default: return( -1); break;while(testkey();return (k); while(testkey();return (k);/掃描左數(shù)第二列while(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版應急通訊基站搭棚施工合同參考2篇
- 二零二五版交通事故車輛維修及賠償協(xié)議2篇
- 二零二五年度食品飲料品牌授權(quán)銷售合同范本2篇
- 二零二五年度儲罐安裝與環(huán)保驗收合同4篇
- 2025年度個人理財產(chǎn)品投資及收益分配合同4篇
- 2025年度生物質(zhì)能發(fā)電項目承包清工勞務合同模板4篇
- 二零二五年度玻璃工藝品設計與生產(chǎn)合作協(xié)議
- 二零二五年度轉(zhuǎn)租協(xié)議甲乙丙三方權(quán)益保障合同
- 2025年度跨境電商股權(quán)退出撤資協(xié)議書
- 二零二五年度餐廳租賃合同附餐飲行業(yè)趨勢研究合作
- 2025年春新滬科版物理八年級下冊全冊教學課件
- 2025屆高考語文復習:散文的結(jié)構(gòu)與行文思路 課件
- 電網(wǎng)調(diào)度基本知識課件
- 拉薩市2025屆高三第一次聯(lián)考(一模)語文試卷(含答案解析)
- 《保密法》培訓課件
- 回收二手機免責協(xié)議書模板
- (正式版)JC∕T 60023-2024 石膏條板應用技術規(guī)程
- (權(quán)變)領導行為理論
- 2024屆上海市浦東新區(qū)高三二模英語卷
- 2024年智慧工地相關知識考試試題及答案
- GB/T 8005.2-2011鋁及鋁合金術語第2部分:化學分析
評論
0/150
提交評論