版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
實(shí)驗(yàn)六串行口通信實(shí)驗(yàn)一、實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)板上有RS-232接口,將該接口與PC機(jī)的串口連接,可以實(shí)現(xiàn)單片機(jī)與PC機(jī)的串行通信,進(jìn)行雙向數(shù)據(jù)傳輸。本實(shí)驗(yàn)要求當(dāng)PC機(jī)向?qū)嶒?yàn)板發(fā)送的數(shù)字在實(shí)驗(yàn)板上顯示,按實(shí)驗(yàn)板鍵盤輸入的數(shù)字在PC機(jī)上顯示,并用串口助手工具軟件進(jìn)行調(diào)試。二、實(shí)驗(yàn)?zāi)康恼莆諉纹瑱C(jī)串行口工作原理,單片機(jī)串行口與PC機(jī)的通信工作原理及編程方法。三、實(shí)驗(yàn)原理51單片機(jī)有一個(gè)全雙工的串行通訊口,所以單片機(jī)和電腦之間可以方便地進(jìn)行串口通信。進(jìn)行串行通訊信要滿足一定的條件,比如電腦的串口是RS232電平(-5~-15V為1,+5~+15V為0),而單片機(jī)的串口是TTL電平(大于+2.4V為1,小于-0.7V為0),兩者之間必須有一個(gè)電平轉(zhuǎn)換電路實(shí)現(xiàn)RS232電平與TTL電平的相互轉(zhuǎn)換。為了能夠在PC機(jī)上看到單片機(jī)發(fā)出的數(shù)據(jù),我們必須借助一個(gè)Windows軟件進(jìn)行觀察,這里我們可以使用免費(fèi)的串口調(diào)試程序SSCOM32或Windows的超級(jí)終端。單片機(jī)串行接口有兩個(gè)控制寄存器:SCON和PCON。串行口工作在方式0時(shí),可通過外接移位寄存器實(shí)現(xiàn)串并行轉(zhuǎn)換。在這種方式下,數(shù)據(jù)為8位,只能從RXD端輸入輸出,TXD端用于輸出移位同步時(shí)鐘信號(hào),其波特率固定為振蕩頻率的1/12。由軟件置位串行控制寄存器(SCON)的REN位后才能啟動(dòng),串行接收,在CPU將數(shù)據(jù)寫入SBUF寄存器后,立即啟動(dòng)發(fā)送。待8位數(shù)據(jù)輸完后,硬件將SCON寄存器的T1位置1,必須由軟件清零。單片機(jī)與PC機(jī)通信時(shí),其硬件接口技術(shù)主要是電平轉(zhuǎn)換、控制接口設(shè)計(jì)和遠(yuǎn)近通信接口的不同處理技術(shù)。在DOS操作環(huán)境下,要實(shí)現(xiàn)單片機(jī)與微機(jī)的通信,只要直接對(duì)微機(jī)接口的通信芯片8250進(jìn)行口地址操作即可。WINDOWS的環(huán)境下,由于系統(tǒng)硬件的無關(guān)性,不再允許用戶直接操作串口地址。如果用戶要進(jìn)行串行通信,可以調(diào)用WINDOWS的API應(yīng)用程序接口函數(shù),但其使用較為復(fù)雜,可以使用KEILC的通信控件解決這一問題。四、實(shí)驗(yàn)電路[參考學(xué)習(xí)板說明書P27]五、連線方法用串口線把單片機(jī)通過MAX232電平轉(zhuǎn)換芯片與PC機(jī)相連,芯片的R2out和T2in分別與單片機(jī)的RXDP3.0和TXDP3.1連接。六、參考程序程序一:/***************************************************************功能:首先LED顯示串口接收的數(shù)據(jù),然后將該數(shù)據(jù)發(fā)送給上位機(jī)作者:txl時(shí)間:2009-04版本:V1.0***************************************************************/#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitwei1=P2^0;sbitwei2=P2^1;ucharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//共陽數(shù)碼管碼表ucharidatabuffer[32];ucharnum,l_datatemp,l_data;//函數(shù)聲明voidinit(void);voidsend_char_com(unsignedcharch);voiddelay(uintz);main(){ucharl_data1,l_data2;num=0;//rxd_num=0;l_datatemp=0;//用于存儲(chǔ)新接收的數(shù)據(jù)l_data=0;//用于存儲(chǔ)顯示的數(shù)據(jù)init();while(1){if(l_data!=l_datatemp)//若接收的數(shù)據(jù)與原來顯示的數(shù)據(jù)不一致,更新原來顯示的數(shù)據(jù){l_data=l_datatemp;send_char_com(l_data);}l_data1=l_data&0xf0;//取高四位顯示l_data1=l_data1>>4; wei1=0;P0=table[l_data1];delay(5);wei1=1;l_data2=l_data&0x0f;//取低四位顯示 wei2=0;P0=table[l_data2];delay(5);wei2=1;}}/*-------------------------------------------------------功能:串口初始化,波特率2400方式18UART-------------------------------------------------------*/voidinit(void)//串口初始化{TMOD=0x20;PCON=0x00;SCON=0x50; TH1=0xF3;TL1=0xF3; TR1=1;//啟動(dòng)定時(shí)器/計(jì)數(shù)器,還與GATE位狀態(tài)有關(guān) ES=1;//允許串行中斷 EA=1;//總中斷開}//查詢方式向串口發(fā)送一個(gè)字符voidsend_char_com(unsignedcharch){SBUF=ch;while(TI==0);TI=0;}/*//向串口發(fā)送一個(gè)字符串,strlen為該字符串長度voidsend_string_com(unsignedchar*str,unsignedintstrlen){unsignedintk=0;do{send_char_com(*(str+k));k++;}while(k<strlen);}*///中斷方式從串口接收字符voidreceive(void)interrupt4using3{if(RI){if(TI)//處理發(fā)送中斷{TI=0; }RI=0;l_datatemp=SBUF;}}voiddelay(uintz){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}程序二、#include<REG51.H>#defineU8unsignedchar#definekey_portP1codeU8tab[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28,0xff};U8buf[4]={10,10,10,0};//顯示緩沖區(qū),開機(jī)先顯示"0"U8cnt=0; //掃描計(jì)數(shù)U8scn=0x7F; //送P2口控制LED顯示位,最左邊LED先亮U8rc;codeU8kcode[]={0xb7,0xbe,0xde,0xee,0xbd,0xdd,0xed,0xbb,0xdb,0xeb,0xd7,0xe7};//反轉(zhuǎn)碼對(duì)應(yīng)鍵值0123456789ABvoiddelay_ms(U8ms){ U8i,j; for(i=0;i<100;i++) {for(j=0;j<ms;j++);};}U8key(void){ U8a,r; delay_ms(20); //延時(shí)20毫秒,消除按鍵抖動(dòng) if(key_port==0xf0)gotorn; a=key_port; key_port=a|0x0f; delay_ms(20); a=key_port; for(r=0;r<=11;r++) {if(a==kcode[r])break;}; if(r>11)r=0xff;//0xff表示無效rn: key_port=0xf0; returnr;}voidsend(unsignedcharc)//發(fā)送一字節(jié)數(shù)據(jù){ SBUF=c; while(TI==0);//等待發(fā)送完畢 TI=0;}voidmain(void){ EA=1; //允許中斷 TMOD=0x21;//定時(shí)器0方式1,定時(shí)器1方式2(作波特率發(fā)生器用) ET0=1; //允許定時(shí)器0中斷 TH0=0xEE; //晶振11.0592MHz,5mS TL0=0; PCON=0; //波特率不倍增 SCON=0x50; //串口工作方式1,REN=1(允許接收)TH1=0xFD; //(11.0592MHz晶振,9600B/S)TL1=0xFD; TR0=1; //開始計(jì)數(shù) TR1=1; ET1=0; //禁止定時(shí)器1中斷 key_port=0xf0; while(1) {if(RI==1) {rc=SBUF;RI=0; if((rc<='9')&&(rc>='0'))buf[3]=rc-'0'; }; if(key_port!=0xf0) { send(key()%10+'0'); while(key_port!=0xf0); delay_ms(20); while(key_port!=0xf0);} }}voidtimeint(void)interrupt1//定時(shí)器0中斷服務(wù)程序{ unsignedchari,s; TH0=0xEE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 糖尿病藥物聯(lián)合用藥
- 確保安全駕駛常規(guī)的關(guān)鍵要點(diǎn)
- 徐濤課件教學(xué)課件
- 3.1.1亞鐵鹽和鐵鹽課件高一上學(xué)期化學(xué)魯科版(2019)必修第一冊(cè)
- DB1304T 481-2024芝麻輕簡化栽培技術(shù)規(guī)程
- 初中七年級(jí)家長會(huì)教案
- 級(jí)中 國美食說課稿
- 壺口瀑布說課稿
- 海洋與生命說課稿
- 格林巴利綜合征治療指南
- 人教版九年級(jí)數(shù)學(xué)下冊(cè) 《圖形的相似》相似教學(xué)課件
- 人員支援工作申請(qǐng)單
- 國家開放大學(xué)實(shí)驗(yàn)學(xué)院生活中的法律形考任務(wù)(一)-形考任務(wù)(一)答案
- 幼兒園教師師德師風(fēng)考核表
- 2022年江蘇省南京市棲霞區(qū)南外仙林分校小學(xué)部六上期中數(shù)學(xué)試卷
- 渠道下沉不能為了下沉而下沉
- 崇明三島現(xiàn)代農(nóng)業(yè)總體0810附件一基礎(chǔ)匯編
- 定2墻上貼著字
- 幾種離子交換裝置
- 交接班制度(PPT31頁)
- 真想變成大大的荷葉(詳案)
評(píng)論
0/150
提交評(píng)論