課程設(shè)計報告單片機(jī)PC機(jī)串行通訊設(shè)計_第1頁
課程設(shè)計報告單片機(jī)PC機(jī)串行通訊設(shè)計_第2頁
課程設(shè)計報告單片機(jī)PC機(jī)串行通訊設(shè)計_第3頁
課程設(shè)計報告單片機(jī)PC機(jī)串行通訊設(shè)計_第4頁
課程設(shè)計報告單片機(jī)PC機(jī)串行通訊設(shè)計_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、-PAGE . z- - - .總結(jié)資料*大學(xué)課 程 設(shè) 計 報 告課程設(shè)計名稱:單片機(jī)系統(tǒng)綜合課程設(shè)計課程設(shè)計題目:單片機(jī)與PC機(jī)串行通訊設(shè)計院系:專 業(yè):班 級:學(xué) 號:姓 名:指導(dǎo)教師:完成日期:目 錄 TOC o 1-3 h z u HYPERLINK l _Toc330501048第1章 總體設(shè)計方案 PAGEREF _Toc330501048 h 1HYPERLINK l _Toc3305010491.1 課程設(shè)計的容和要求. PAGEREF _Toc330501049 h 1HYPERLINK l _Toc3305010501.2 課程設(shè)計原理. PAGEREF _Toc3305

2、01050 h 1HYPERLINK l _Toc3305010511.3課程設(shè)計思路. PAGEREF _Toc330501051 h 2HYPERLINK l _Toc3305010521.4 實驗環(huán)境. PAGEREF _Toc330501052 h 2HYPERLINK l _Toc330501053第2章 詳細(xì)設(shè)計方案 PAGEREF _Toc330501053 h 3HYPERLINK l _Toc3305010542.1 實現(xiàn)方法. PAGEREF _Toc330501054 h 3HYPERLINK l _Toc3305010552.2模塊設(shè)計. PAGEREF _Toc330

3、501055 h 3HYPERLINK l _Toc3305010562.2.1主函數(shù)流程圖. PAGEREF _Toc330501056 h 3HYPERLINK l _Toc3305010572.2.2功能1模塊. PAGEREF _Toc330501057 h 4HYPERLINK l _Toc3305010582.3程序連線圖. PAGEREF _Toc330501058 h 7HYPERLINK l _Toc330501059第3章 調(diào)試及結(jié)果分析 PAGEREF _Toc330501059 h 8HYPERLINK l _Toc3305010603.1 調(diào)試步驟及方法. PAGER

4、EF _Toc330501060 h 8HYPERLINK l _Toc3305010613.2 實驗結(jié)果及分析. PAGEREF _Toc330501061 h 8HYPERLINK l _Toc330501062參考文獻(xiàn) PAGEREF _Toc330501062 h 9HYPERLINK l _Toc330501063附 錄A源程序 PAGEREF _Toc330501063 h 10HYPERLINK l _Toc330501064附 錄B原理圖 PAGEREF _Toc330501064 h 13HYPERLINK l _Toc330501065附 錄C元器件清單 PAGEREF _

5、Toc330501065 h 14-. z第1章 總體設(shè)計方案1.1 課程設(shè)計的容和要求1、課程設(shè)計容:利用偉福公司的LAB6000通用微控制器仿真實驗系統(tǒng)開發(fā)單片機(jī)與PC機(jī)串行通訊系統(tǒng),實現(xiàn)單片機(jī)與PC機(jī)的通訊。要現(xiàn)數(shù)據(jù)收發(fā)功能。具要求容如下:.通過LAB6000的小鍵盤選擇功能;.功能1:接收PC機(jī)發(fā)送的數(shù)據(jù),并將其回發(fā)給PC機(jī);.功能2:從LAB6000的小鍵盤輸入數(shù)據(jù),發(fā)送給PC機(jī)。2、課程設(shè)計要求:.認(rèn)真完成課程設(shè)計任務(wù);.通過教師現(xiàn)場驗收;.交出完整的課程設(shè)計報告。1.2 課程設(shè)計原理根據(jù)題目要求,要完成LAB6000的小鍵盤選擇,接收并且回發(fā)數(shù)據(jù),小鍵盤可以輸入并發(fā)送數(shù)據(jù)等功能,

6、在本次設(shè)計中主要使用了MCS-51芯片以及局部連線來完成串行通訊的模擬。采用MCS-51芯片實現(xiàn)不同模式串行通訊,通過延時程序控制串行通訊的頻率。將鍵盤選擇功能、PC機(jī)發(fā)送及接收數(shù)據(jù)功能、小鍵盤發(fā)送功能等通過不同的子程序?qū)崿F(xiàn),然后在程序中調(diào)用不同的子程序來實現(xiàn)不同的功能。因為需要實現(xiàn)小鍵盤輸入數(shù)據(jù),所以必須實現(xiàn)鍵盤掃描功能及按鍵檢測功能。按鍵的掃描方法有掃描法和線反轉(zhuǎn)法,因為小鍵盤按鍵不是非常多,所以本設(shè)計采用行列掃描法來進(jìn)展小鍵盤掃描。課程設(shè)計思路1提出方案設(shè)計鍵盤掃描函數(shù)函數(shù)和按鍵檢測函數(shù),通過MCS-51芯片,實現(xiàn)鍵盤掃描。通過小鍵盤設(shè)置17個鍵位選擇鍵,輸入“1時在LED燈顯示并選擇功

7、能1接收和發(fā)送PC機(jī)發(fā)送的數(shù)據(jù);輸入“2時在LED燈顯示并選擇功能2從小鍵盤輸入數(shù)據(jù)并發(fā)送給PC機(jī)。小鍵盤選擇功能:首先設(shè)置定時器及波特率,然后再設(shè)計鍵盤掃描函數(shù)和按鍵檢測函數(shù),使之能實現(xiàn)小鍵盤選擇功能。輸入不同的數(shù)實現(xiàn)調(diào)用不同的函數(shù),從而實現(xiàn)不同的功能。功能1:設(shè)計PC發(fā)送函數(shù),此功能還需要有串行口中斷處理函數(shù)。目的是實現(xiàn)單片機(jī)可以承受PC機(jī)發(fā)送的數(shù)據(jù),并將其回發(fā)給PC機(jī)。設(shè)置一個返回鍵,如按鍵“1時返回小鍵盤選擇功能,可以重新選擇功能1還是功能2。功能2:設(shè)計小鍵盤發(fā)送程序,需調(diào)用鍵盤掃描函數(shù)及按鍵檢測函數(shù),假設(shè)有鍵按下,將鍵值發(fā)送到LED燈上,并將其轉(zhuǎn)為ASCII碼發(fā)送回PC機(jī)。同樣設(shè)置

8、一返回鍵,如按鍵“NE*T(右數(shù)第一列,下數(shù)第一行)時返回小鍵盤選擇功能。使函數(shù)能循環(huán)使用。2方案論證從實際應(yīng)用的角度,用戶可以任意選擇事先設(shè)計好的2種狀態(tài),中選擇完一種狀態(tài)時,它可以無限的按照這種方案循環(huán)的運(yùn)行下去,在此過程中,用戶可以選擇退出這種工作狀態(tài),從而實現(xiàn)對當(dāng)前進(jìn)展?fàn)顟B(tài)的控制,即可以令程序重新開場。在整個串行口輸入過程中可隨時做出不同的輸入方式,對輸入數(shù)據(jù)的工作狀態(tài)進(jìn)展控制。1.4 實驗環(huán)境硬件環(huán)境:MCS-51實驗箱,PC機(jī)。軟件環(huán)境:WAVE2000應(yīng)用軟件-. z第2章 詳細(xì)設(shè)計方案2.1 實現(xiàn)方法開場運(yùn)行程序時數(shù)碼管初始化顯示6個數(shù)字0,然后選擇一種模式1和2,假設(shè)輸入的數(shù)

9、不是“1或“2,只在LED燈上顯示該數(shù),等待重新輸入一工作狀態(tài)。此處在掃描鍵盤并按鍵檢測后需將掃描到的段碼發(fā)送到LED燈上。假設(shè)選擇“1,即要實現(xiàn)功能1則調(diào)用PC機(jī)發(fā)送函數(shù),用串行口中斷函數(shù)來保存斷點防止計數(shù)器溢出。使之能實現(xiàn)接收PC機(jī)發(fā)送的數(shù)據(jù)后再將其回發(fā)給PC機(jī)。設(shè)置一全局變量flag,當(dāng)用戶輸入一個數(shù)例如“1的ASCII碼時flag置1使之跳出while語句死循環(huán),從而到達(dá)返回小鍵盤選擇功能的目的。假設(shè)選擇“2,即要實現(xiàn)功能2需調(diào)用小鍵盤掃描函數(shù)和按鍵檢測函數(shù),將小鍵盤輸入的數(shù)據(jù)發(fā)送到LED燈上,同時然后將該數(shù)據(jù)轉(zhuǎn)換成ASCII碼的形式通過串行口發(fā)送到PC機(jī)上。同小鍵盤選擇功能一樣該功能

10、也要調(diào)用小鍵盤掃描函數(shù)和按鍵檢測函數(shù)。由于要實現(xiàn)按鍵返回的目的,在小鍵盤掃描函數(shù)中設(shè)置了“NE*T鍵變量kk=100時,同樣利用了while語句來跳出死循環(huán)。模塊設(shè)計主函數(shù)流程圖主程序用于控制個功能子程序的調(diào)用和相應(yīng)的芯片及存、存放器、變量的初始化,協(xié)調(diào)整個程序的運(yùn)行。由于本課設(shè)只用了8031芯片,小鍵盤和LED燈來顯示模擬結(jié)果,而且所有的功能都是用軟件實現(xiàn)的,所以主程序要能很好的組織程序的運(yùn)行。主函數(shù)模塊首先設(shè)置定時器及波特率的選擇,根據(jù)標(biāo)志位k1的值選擇是PC模式發(fā)送數(shù)據(jù)還是小鍵盤模式發(fā)送數(shù)據(jù),并根據(jù)功能選擇模塊中對各模式的信息的進(jìn)展相應(yīng)的初始設(shè)置。通過小鍵盤選擇功能控制數(shù)據(jù)的輸出方式,還

11、能承受新的鍵值來執(zhí)行相應(yīng)的功能。讀取的鍵值要先判斷是否是無效鍵,是無效鍵要執(zhí)行死循環(huán)程序,按下“1或“2鍵才能繼續(xù)顯示。如果是停頓鍵指程序設(shè)計功能1中的“1鍵和功能2中的“NE*T鍵,應(yīng)立刻清空數(shù)碼管的顯示存并將其重新初始化。如下頁圖2. 1所示。開場設(shè)置定時器工作方式及波特率大小N輸入按鍵為1或2YN按鍵為1Y小鍵盤發(fā)送函數(shù)PC發(fā)送函數(shù)返回斷點圖2.1主函數(shù)模塊流程圖功能1模塊功能1模塊利用單片機(jī)的串行口,實現(xiàn)PC機(jī)的串行通訊。啟動功能1時開啟定時器,調(diào)用串行中斷函數(shù),通過while(!flag)語句實現(xiàn)循環(huán)發(fā)送的功能,在串行中斷子函數(shù)中先將PC機(jī)中輸入的容發(fā)送到單片機(jī)上,執(zhí)行while(!

12、RI)(即RI=1單片機(jī)接收完數(shù)據(jù)跳出該循環(huán)) 語句。在單片機(jī)將其容回發(fā)給PC機(jī)之前需要進(jìn)展是否返回小鍵盤選擇功能的判定,通過if(temp=49)flag=1語句,判斷是否是數(shù)1的ASCII碼49,假設(shè)是則將flag置1,到達(dá)跳出該循環(huán)的目的。如圖2.2所示。8031的R*D、T*D接線柱在POD51仿真板上,8086的T*D、R*D在POD8086仿真板上的8031芯片旁邊。通訊雙方的R*D、T*D信號本應(yīng)經(jīng)過電平轉(zhuǎn)換后再行穿插連接,本設(shè)計中為減少連線可將電平轉(zhuǎn)換略去,而將雙方的R*D、T*D直接穿插連接。開場啟動定時器工作并允許串口中斷調(diào)用串行中斷函數(shù)是否輸入數(shù)據(jù)01數(shù)據(jù)輸入到變量tem

13、p中N接收完成YRI=0Y返回斷點按鍵1N從temp中輸出數(shù)據(jù)N發(fā)送完成YTI=0圖2.2功能1模塊流程圖功能2模塊功能2模塊實現(xiàn)小鍵盤發(fā)送數(shù)據(jù)的功能,需調(diào)用小鍵盤掃描函數(shù)和按鍵檢測函數(shù),將小鍵盤輸入的數(shù)據(jù)發(fā)送到LED燈上。啟動功能2時同功能1一樣先啟動定時器工作,掃描小鍵盤使之能夠在小鍵盤輸入數(shù)據(jù),對輸入的數(shù)據(jù)進(jìn)展判定,假設(shè)為返回鍵(NE*T)則跳出該函數(shù)重新進(jìn)展小鍵盤選擇功能,使之能夠循環(huán)使用;假設(shè)為根本鍵,將掃描到的按鍵的鍵值通過查表的方式轉(zhuǎn)為ASCII碼,好發(fā)送回PC機(jī)中。如圖2.3。開場聲明變量kk和knum啟動定時器1工作調(diào)用鍵盤掃描函數(shù)Y按鍵為NE*TN返回斷點使LEN2燈亮將鍵

14、值相對應(yīng)的ASCII碼發(fā)送到變量knum中從temp中輸出數(shù)據(jù)N發(fā)送完成YTI=0圖2.3功能2模塊流程圖程序連線圖本設(shè)計提供了一個6*4的小鍵盤,向列掃描地址0*002H逐列輸出低電平,然后從行碼地址0*001H讀回。如果有鍵按下,則對應(yīng)行的值應(yīng)為低電平;如果無鍵按下,由于上拉的作用,行碼為高。這樣就可以通過輸出的列碼和讀取的行碼來判斷按下的是什么鍵。地址中的*是由KEY/LED CS決定,做鍵盤和LED相連時,需將KEY/LED CS接到相應(yīng)的地址譯碼上,以便用相應(yīng)的地址來。例如將KEY/LED CS信號接CS0上,則列掃描地址為08002H,行碼地址為08001H。列掃描碼還可以分時用作

15、LED的位選通信號。如圖2.4所示。圖2.4鍵盤圖-. z第3章 調(diào)試及結(jié)果分析3.1調(diào)試步驟及方法編譯并連接程序后全速運(yùn)行,在數(shù)碼管上顯示六個LED燈都初始化為0,然后按下小鍵盤鍵中的任意一個鍵,假設(shè)為3F中的任意一鍵在LED的6個燈都顯示該數(shù),此時并沒有選擇執(zhí)行功能1和2;假設(shè)為1則執(zhí)行功能1,即可以在PC機(jī)上輸入數(shù)據(jù)并且可以回發(fā),此時在右數(shù)第2個LED燈上始終顯示1;假設(shè)為2則執(zhí)行功能2,即實現(xiàn)小鍵盤發(fā)送數(shù)據(jù)功能,此時在右數(shù)第2個LED燈上始終顯示2。3.2實驗結(jié)果及分析本程序滿足課程設(shè)計要求,在程序運(yùn)行時,一共有17個按鍵,“1和“2鍵即為功能選擇鍵,又為輸入數(shù)據(jù)鍵,NE*T為復(fù)位鍵其

16、他鍵為普通數(shù)據(jù)鍵,各個按鍵均能實現(xiàn)其所擁有的功能,程序能很好的模擬串行發(fā)送功能。功能1模式切換時,按下PC機(jī)大鍵盤的“1鍵后,返回功能選擇模塊,可以重新選擇工作方式;同樣功能2模式切換時,按下小鍵盤的“NE*T鍵也可以返回功能選擇模塊,從而實現(xiàn)程序循環(huán)使用的功能。-. z- - - .總結(jié)資料參考文獻(xiàn)1毅剛.杰.MCS-51單片機(jī)原理及應(yīng)用M.:工業(yè)大學(xué),20212 王忠民.微型計算機(jī)原理 M.:電子科技大學(xué),20033 頂峰.單片微型計算機(jī)原理與接口技術(shù) M.:科學(xué),20074 初華.匯編語言、微機(jī)原理及接口技術(shù)M.:電子工業(yè),20065 瑞和.微型計算機(jī)原理與接口技術(shù)M.:高等教育,200

17、46 胡漢才.單片機(jī)原理及接口技術(shù) M.:清華大學(xué),2007-. z- - - .總結(jié)資料附 錄A源程序*include *include *define uchar unsigned char*define uint unsigned int*data uchar key _at_ 0*8001;/定義鍵盤行地址*data uchar led _at_ 0*8002;/定義鍵盤列地址并定義段碼顯示所在列*data uchar dat _at_ 0*8004;/定義段碼輸出地址uchar ascii=48,49,50,51,52,53,54,55,56,57,0*41,0*42,0*43,0*

18、44,0*45,0*46;uchar ledmap=0*3f,0*06,0*5b,0*4f,0*66,0*6d,0*7d,0*07,0*7f,0*6f,0*77,0*7c,0*39,0*5e,0*79,0*71; uint k1; uchar flag; uchar temp; void pcsend(); void keysend(); int i,j,p;void delay() for(i=0;i100;i+) for(j=0;j100;j+) for(p=0;p100;p+) ;unsigned char testkey() /數(shù)碼管顯示函數(shù) led = 0; return (key&

19、0*0f); uint getkey() /鍵盤掃描函數(shù) uint k; led=0*fb; /掃描左數(shù)第四列 switch(key) case 0*0e:k=13; while(testkey();return (k); /下數(shù)第一行d case 0*0d:k=12; while(testkey();return (k); /下數(shù)第二行c case 0*0b:k=11; while(testkey();return (k); /下數(shù)第三行b case 0*07:k=10; while(testkey(); return (k); /下數(shù)第四行a default:break; led=0*f7

20、; /掃描左數(shù)第三列 switch(key) case 0*0e:k=14; while(testkey();return (k); case 0*0d:k=3; while(testkey();return (k); case 0*0b:k=6; while(testkey();return (k); case 0*07:k=9; while(testkey();return (k); default:break; led=0*ef; /掃描左數(shù)第二列 switch(key) case 0*0e:k=15; while(testkey();return (k); case 0*0d:k=2;

21、 while(testkey();return (k); case 0*0b:k=5; while(testkey();return (k); case 0*07:k=8; while(testkey();return (k); default:break; led=0*df; /掃描左數(shù)第一列 switch(key) case 0*0e:k=0; while(testkey();return (k); case 0*0d:k=1; while(testkey();return (k); case 0*0b:k=4; while(testkey();return (k); case 0*07:

22、k=7; while(testkey();return (k); default:break; led=0*fe; switch(key)case 0*0e: k=100; while(testkey();return(k); default: return(-1); break; void main()/主函數(shù) TMOD=0*20; TH1=0*F3; TL1=0*F3; SCON=0*50; PCON=0*80; while(1) k1=getkey(); /k1=1; led=2; flag=0; dat=ledmapk1; if(k1=1|k1=2) switch(k1) case 1

23、: pcsend();IE=0*00;k1=0; break; case 2: keysend();k1=0; break; void pcsend()/PC發(fā)送函數(shù) TR1=1; IE=0*90; while(!flag); void keysend()/小鍵盤發(fā)送函數(shù) uint kk=0; uchar knum; TR1=1; kk=getkey(); while(kk!=100) kk=getkey(); if(kk=-1) continue; led=2; knum=asciikk; SBUF=knum; while(!TI); TI=0; void Int1() interrupt 4/串行口中斷函數(shù) while(!RI); temp=SBUF; R

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論