單片機與pc機軟件開發(fā)_第1頁
單片機與pc機軟件開發(fā)_第2頁
單片機與pc機軟件開發(fā)_第3頁
免費預覽已結(jié)束,剩余14頁可下載查看

下載本文檔

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

文檔簡介

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機。1.3 課程設計原理本次課程設計由于要完成功能的選擇,所以要用鍵盤掃描程序。 通過鍵盤掃描程序來判斷按下來的是哪一個按鍵,實現(xiàn)功能選擇。當掃描到用戶按LAB8000上面的小鍵盤 1 時,實現(xiàn)功能 1 的選擇,這時候從 PC機的鍵盤輸入數(shù)據(jù), 就可以使之發(fā)送出去,傳送到單片機然后后傳回PC機,這里面需要一個SBUF緩沖區(qū)來緩沖存儲數(shù)據(jù), 當把數(shù)據(jù)往單片機里面發(fā)送時,

3、數(shù)據(jù)需要先發(fā)送到 SBUF緩沖區(qū)里面,然后再往單片機里面發(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往回帶入公式,計

4、算出誤差小于 <7% ,所以可以選擇這種工作模式。1.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:設計 P

5、C發(fā)送函數(shù),此功能還需要有串行口中斷函數(shù)。目的是實現(xiàn)單片機可以接收 PC機發(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)的

6、運行下去,在此過程中,用戶可以選擇退出這種工作狀態(tài),從而實現(xiàn)對當前進行狀態(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ù)

7、據(jù)后,在將其回發(fā)給 PC機。設置一全局變量 flag ,當用戶按鍵 1 時,flag 置 1,使之跳出 while 死循環(huán),從而達到返回小鍵盤,重新選擇功能 1 跟 2。若選擇“ 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。當輸入

8、0時,結(jié)束。當輸入的是 1 時,進入第二個功能模塊,由 PC機發(fā)送數(shù)據(jù),將數(shù)據(jù)發(fā)送給單片機,然互在傳給 PC 機。當輸入數(shù)值 2時,進入第二個模塊,將數(shù)據(jù)由單片機小鍵盤輸入,發(fā)送給 PC機。模塊調(diào)用圖如下頁圖 2.1 所示單片機與 PC 機通訊系統(tǒng)鍵盤選擇按鍵模塊PC機發(fā)送數(shù)據(jù)模塊單片機發(fā)送數(shù)據(jù)模塊圖 2.1模塊調(diào)用2.3 設計環(huán)境硬件環(huán)境:偉福LAB8000 ;軟件環(huán)境: Kei vision3 詳細設計3.1硬件電路設計8051 單片機內(nèi)部的總體電路圖如圖3.1 所示,圖 3.1 8051 單片機電路圖3.2軟件設計3.2.1 主程序鍵盤掃描模塊該模塊的功能是用戶從小鍵盤輸入數(shù)據(jù),以進行功

9、能選擇。將某一鍵按下,通過掃描鍵盤,向列掃描碼地址(0X8002H)逐列輸出低電平,然后從行碼地址(0X8001H)讀回。如果有鍵按下 , 則相應行的值應為低 , 如果無鍵按下,由于上拉的作用,行碼為高。這樣就可以通過輸出的列碼和讀取的行碼來判斷按下的是哪個鍵。該模塊中鍵盤掃描的電路圖和鍵盤掃描電路如圖3.2 和 3.3 所示圖 3.2 鍵盤電路圖開始初始化地址參數(shù)輸出列掃描信號列掃描信號移位讀入行信號該列有鍵輸入否否是按照行列計算鍵值查表得鍵碼6列掃描完等待按鍵釋放是結(jié)束圖 3.3 鍵盤掃描流程圖主函數(shù)模塊首先設置定時器及波特率的選擇,根據(jù)標志位k1 的值選擇是PC模式發(fā)送數(shù)據(jù)還是小鍵盤模式

10、發(fā)送數(shù)據(jù),并根據(jù)功能選擇模塊中對各模式的信息的進行相應的初始設置。通過小鍵盤選擇功能控制數(shù)據(jù)的輸出方式,還能接受新的鍵值來執(zhí)行相應的功能。讀取的鍵值要先判斷是否是無效鍵,是無效鍵要執(zhí)行死循環(huán)程序,按下“ 1”或“ 2”鍵才能繼續(xù)顯示。如下頁圖3.4 所示開始設置定時器工作方式及波特率小鍵盤輸入NN為值是 1或者YY值是否為1結(jié)束Y上微機鍵盤發(fā)送數(shù)據(jù)用小鍵盤發(fā)送數(shù)據(jù)按小鍵盤 1 鍵按小鍵盤NEXT 鍵圖 3.4 主函數(shù)模塊流程圖3.2.2 功能 1 模塊該模塊的功能是通過鍵盤掃描程序的按鍵選擇選擇功能 1(串口傳輸),并且將數(shù)字顯示到數(shù)碼管上面。要實現(xiàn)單片機與 PC機的串行通信 ,數(shù)碼管顯示電路

11、圖如圖 3.5 所示圖 3.5數(shù)碼管顯示電路圖功能 1 模塊利用單片機的串行口, 實現(xiàn) PC機的串行通訊。啟動功能 1 時開啟定時器,調(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, 達到跳出該循環(huán)的目的。如圖 3.6 所示。開始啟動定時器,允許串行口中斷上微機輸入傳輸數(shù)據(jù)數(shù)

12、據(jù)由 SBUF 傳入 TempN接收完RI=0將 Temp 中的數(shù)據(jù)傳到SBUFN發(fā)送完NYTI=0小鍵盤輸入1?Y返回斷點圖 3.6 功能 1 模塊流程圖3.2.3 功能 2 模塊本次課設實現(xiàn)單片機與PC 機之間的串行通信需要串口通信需要用到 MAX232芯片,由于標準的MAX232電平很高,可以達到正負15V,常用的 TTL電平最高可以達到5V,所以需要 MAX232芯片來進行轉(zhuǎn)換。將 P3.0 接 RXD引腳, P3.1 接 TXD引腳MAX232芯片如下圖 3.7 所示,用 MAX232接單片機與 PC機后的電路圖如圖 3.8 所示圖 3.7 MAX232 芯片圖 3.8 MAX232

13、 連接后的電路圖功能 2 模塊實現(xiàn)小鍵盤發(fā)送數(shù)據(jù)的功能, 需調(diào)用小鍵盤掃描函數(shù)和按鍵檢測函數(shù),將小鍵盤輸入的數(shù)據(jù)發(fā)送到LED燈上。啟動功能2 時同功能 1 一樣先啟動定時器工作 , 掃描小鍵盤使之能夠在小鍵盤輸入數(shù)據(jù), 對輸入的數(shù)據(jù)進行判定, 若為返回鍵 (NEXT)則跳出該函數(shù)重新進行小鍵盤選擇功能, 使之能夠循環(huán)使用 ; 若為基本鍵 , 將掃描到的按鍵的鍵值通過查表的方式轉(zhuǎn)為ASCII 碼, 好發(fā)送回 PC機中。如圖 3.9 所示開始啟動定時器1 工作調(diào)用鍵盤掃描函數(shù)按鍵為 NEXTNY讓第二個數(shù)碼管顯示返回斷點將鍵值相對應的ASCII碼發(fā)送到變量knum 中從 temp 中輸出數(shù)據(jù)N發(fā)送

14、完成YTI=0圖 3.9 功能 2 模塊流程圖4 調(diào)試4.1調(diào)試過程主函數(shù)模塊中的鍵盤掃描開始不太會,所以在本次課程設計開始做的時候就參照著實驗指導書進行了細致地系統(tǒng)地學習,深刻地了解了其工作原理,以便后來理解代碼以及編寫代碼。功能 1 即 PC機發(fā)送數(shù)據(jù)模塊進行編代碼時, 由于平時學習單片機時用的是匯編語言編程,這次課程設計要求用C語言進行編程,結(jié)合著實驗箱上的各器件和接線方法進行編程。因為以前實驗時候做過串口通信實驗,所以對這部分還是挺熟悉的,將以前寫的實驗原理匯編語言轉(zhuǎn)化為C語言。有時候調(diào)試的時候忘記連實驗箱的線,急的滿頭大汗,最后發(fā)現(xiàn)真是又高興又無奈。編寫代碼過程中還會存在一些小的語法

15、錯誤,通過 keil軟件不斷進行調(diào)試的過程中,根據(jù)其給出的錯誤提示,來進行檢查修改。4.2調(diào)試結(jié)果根據(jù)此次課程設計題目的要求,在老師和同學的幫助下,經(jīng)過上述的各種調(diào)試過程,實現(xiàn)了課設上面的所有要求,可以在按鍵1 時數(shù)碼管顯示1,進行PC機發(fā)送數(shù)據(jù),發(fā)送給單片機,單片機再將數(shù)據(jù)發(fā)給PC機。按鍵2 時數(shù)碼管顯示2,將小鍵盤輸入的數(shù)據(jù)發(fā)送給PC機。但是由于課設簡單,孫老師讓增加一個界面,類似于串口大師的,經(jīng)過一天多的學習,只做完了對話框,沒有將之與單片機連接到一起。參考文獻1 張毅剛,劉杰 . MCS-51單片機原理及應用 M. 哈爾濱:哈爾濱工業(yè)大學出版社, 20082 張義和 . 例說 51 單

16、片機: C 語言版 M. 北京:人民郵電出版社, 20103 段晨東,爨瑩 . 單片機原理及接口技術 M. 北京:清華大學出版社, 20084 偉福 Lab8000 系列單片機仿真實驗系統(tǒng) 使用說明書 M. 南京偉福實業(yè)有限公司, 20155 高峰 . 單片微型計算機原理與接口技術 M . 北京:科學出版社, 2007附錄(關鍵部分程序清單)#include <reg51.h>#include <intrins.h>#defineuchar unsigned char#defineuint unsigned intxdata ucharkey_at_ 0x8001;/

17、定義鍵盤行地址xdata ucharled_at_ 0x8002;/ 定義鍵盤列地址并定義段碼顯示所在列xdata uchardat_at_ 0x8004;/ 定義段碼輸出地址uchar ascii=48,49,50,51,52,53,54,55,56,57,0x41,0x42,0x43,0x44,0x45,0x46; ucharledmap=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x7 1;uint k1;uchar flag;uchar temp;void pcsend();vo

18、id keysend();int i,j,p;unsigned char testkey()/數(shù)碼管顯示函數(shù)led = 0;return (key&0x0f);uint getkey() uint k;/ 鍵盤掃描函數(shù)led=0xfb;switch(key)/掃描左數(shù)第四列case 0x0e:k=13;case 0x0d:k=12;case 0x0b:k=11;case 0x07:k=10;while(testkey();return (k);while(testkey();return (k);while(testkey();return (k);while(testkey(); r

19、eturn (k);/下數(shù)第一行/下數(shù)第二行/下數(shù)第三行/下數(shù)第四行dcbadefault:break;led=0xf7;/掃描左數(shù)第三列switch(key) case 0x0e:k=14;case 0x0d:k=3;while(testkey();return (k);while(testkey();return (k);case 0x0b:k=6;while(testkey();return (k);case 0x07:k=9;while(testkey();return (k);default:break;led=0xef;/掃描左數(shù)第二列switch(key) case 0x0e:k

20、=15;while(testkey();return (k);case 0x0d:k=2;while(testkey();return (k);case 0x0b:k=5;while(testkey();return (k);case 0x07:k=8;while(testkey();return (k);default:break;led=0xdf;/ 掃描左數(shù)第一列switch(key) case 0x0e:k=0;while(testkey();return (k);case 0x0d:k=1;while(testkey();return (k);case 0x0b:k=4;while(testkey();return

溫馨提示

  • 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

提交評論