版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、PC 機與單片機通信(RS232 協(xié)議)目錄:1、單片機串口通信的應用2、PC控制單片機IO口輸出3、單片機控制實訓指導及綜合應用實例4、單片機給計算機發(fā)送數(shù)據(jù):實驗任務單片機串口通信的應用,通過串口,我們的個人電腦和單片機系統(tǒng)進行通信。個人電腦作為上位機,向下位機單片機系統(tǒng)發(fā)送十六進制或者ASCLL碼,單片機系統(tǒng)接收后,用LED顯示接收到的數(shù)據(jù)和向上位機發(fā)回原樣數(shù)據(jù)。硬件電路圖實驗原理RS-232是美國電子工業(yè)協(xié)會正式公布的串行總線標準,也是目前最常用的串行接口標準,用來實現(xiàn)計算機與計算機之間、計算機與外設之間的數(shù)據(jù)通訊。RS-232串行接口總線適用于:設備之間的通訊距離不大于15m,傳輸速
2、率最大為20kBps。RS-232協(xié)議以-5V15V表示邏輯1;以+5V15V 表示邏輯0。 我們是用MAX232芯片將RS232電平轉(zhuǎn)換為TTL電平的。 一個完整的RS-232接口有22根線,采用標準的25芯插頭座。我們在 這里使用的是簡化的9芯插頭座。注意我們在這里使用的晶振是11.0592M的,而不是12M。因為波特率的設置需要11.0592M的?!按谡{(diào)試助手V2.1.exe” 軟件的使用很簡單,只要將串口選擇CMO1波特率設置為9600 數(shù)據(jù)位為 8 位。打開串口(如果關閉)。然后在發(fā)送區(qū)里輸入要發(fā)送的數(shù)據(jù),單擊手動發(fā)送就將數(shù)據(jù)發(fā)送出去了。注意,如果選中十六進制發(fā)送那么發(fā)送的數(shù)據(jù)是十
3、六進制的,必須輸入兩位數(shù)據(jù)。如果沒有選中,則發(fā)送的是ASCLL碼,那么單片機控制的數(shù)碼管將顯示ASCLL碼值。數(shù)字二進制Px0Px7Abcdefg p十六進制00xco10xf920xa430xb040x9950x9260x8270xf880x8090x90A0x88B0x83C0xc6D0xa1E0x86F0x8e ASCII常用代碼表字符代碼字符代碼字符代碼字符代碼字符3252472H92112p33!53573I93113q34”54674J94114r35#55775K95_115s36$56876L96116t37%57977M97a117u38&58:78N98b118v3959;
4、79O99c119w40(6082R102f122z43+63?83S103g12344,6484T104h124|45-65A85U105i12546.66B86V106j12647/67C87W107k48068D88X108l49169E89Y109m50270F90Z110n51371G91111oC語言源程序#include reg52.h /包函8051 內(nèi)部資源的定義unsigned char dat; /用于存儲單片機接收發(fā)送緩沖寄存器SBUF里面的內(nèi)容sbit gewei=P24; /個位選通定義sbit shiwei=P25; /十位選通定義sbit baiwei=P26;
5、 /百位選通定義unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,; /110void Delay(unsigned int tc) /延時程序while( tc != 0 )unsigned int i;for(i=0; i100; i+);tc-;void LED() /LED顯示接收到的數(shù)據(jù)(十進制)gewei=0; P0=tabledat%10; Delay(10); gewei=1;shiwei=0; P0=tabledat/10; Delay(10); shiwei=1;baiwei
6、=0; P0=tabledat/100; Delay(10); baiwei=1;/功能:串口初始化,波特率9600,方式1/void Init_Com(void)TMOD = 0x20;PCON = 0x00;SCON = 0x50;TH1 = 0xFd;TL1 = 0xFd;TR1 = 1;/主程序功能:實現(xiàn)接收數(shù)據(jù)并把接收到的數(shù)據(jù)原樣發(fā)送回去/void main()Init_Com();/串口初始化while(1) if ( RI ) /掃描判斷是否接收到數(shù)據(jù),dat = SBUF; /接收數(shù)據(jù)SBUF賦與datRI=0; /RI 清零。SBUF = dat; /在原樣把數(shù)據(jù)發(fā)送回去(接
7、收數(shù)據(jù)為發(fā)送數(shù)據(jù)的ASCII碼,如發(fā)送q顯示為113)LED(); /顯示接收到的數(shù)據(jù)/這一個例子是以掃描的方式編寫的,還可以以中斷的方式編寫,請大家思考/實驗任務PC控制單片機IO口輸出#include reg52.h /包函8051 內(nèi)部資源的定義unsigned char dat; /用于存儲單片機接收發(fā)送緩沖寄存器SBUF里面的內(nèi)容void Delay(unsigned int tc) /延時程序while( tc != 0 )unsigned int i;for(i=0; i100; i+);tc-;/功能:串口初始化,波特率9600,方式1/void Init_Com(void)T
8、MOD = 0x20;PCON = 0x00;SCON = 0x50;TH1 = 0xFd;TL1 = 0xFd;TR1 = 1;/主程序功能:實現(xiàn)接收數(shù)據(jù)并把接收到的數(shù)據(jù)原樣發(fā)送回去/void main()Init_Com();/串口初始化while(1) if ( RI ) /掃描判斷是否接收到數(shù)據(jù),dat = SBUF; /接收數(shù)據(jù)SBUF賦與datif(dat=0x00)/如果PC發(fā)送十六進制00,單片機P1口全亮。P1=0x00;else if(dat=0x01)P1=0x01;else if(dat=0x02)P1=0x02;else if(dat=0x03)P1=0x03;els
9、e if(dat=0x04)P1=0x04;RI=0; /RI 清零。SBUF = dat; /在原樣把數(shù)據(jù)發(fā)送回去(接收數(shù)據(jù)為發(fā)送數(shù)據(jù)的ASCII碼,如發(fā)送q顯示為113) 實驗任務單片機控制實訓指導及綜合應用實例#include reg52.h /包函AT89S52 內(nèi)部資源的定義(注視參看書160頁)#define uchar unsigned char /宏定義uchar led 10=0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef;/數(shù)字110,字符串uchar led164;/存儲接收數(shù)據(jù)unsigned int i,j,t,k;
10、sbit P32=P32; void scjs(void)interrupt 4 /定義中斷ES=0;/ 使能串行口的中斷k=1;while(1)RI=0;led1k-1=SBUF; /將接收數(shù)據(jù)送段碼表k+;TH0=0x3c; /t0定時50sm內(nèi)接收不到數(shù)據(jù)跳過接收TL0=0xb0;TR0=1;while(!RI)if(!TF0) goto FH;FH:TF0=0;/TF0不清零不能重新接收 TR0=0; P32=1;for(j=1;jk;j+)SBUF=ledj-1;/數(shù)據(jù)送回給pcwhile(!TI);TI=0;P32=0;delay(t)ES=1;SCON=0x50;for(i=0;
11、it;i+);ES=0;SCON=0x00;void main (void)int a,c;TMOD=0x21;TH1=0Xfd;TL1=0xfd;SCON=0x50;PCON=0x00;IE=0x90;TR1=1;k=1;P32=0;while(1)ES=0;SCON=0x00;for(a=0;a=0;c-)if(a+ck+1/k*8+1)if(k=1)SBUF=leda+c;else SBUF=led1a+c;else SBUF=0x00;while(!TI);TI=0;delay(39000);#include reg52.h /包函8051 內(nèi)部資源的定義#define uchar u
12、nsigned charsbit P3_2=P32;uchar zdzt=0x0c;uchar zsgw=0x02;uchar zsdw=0x00;uchar bs=0;uchar zqsbw=0;uchar zqssw=0;uchar zqsgw=0;uchar yxsj=0x11;uchar zs=20;int zqs=0;uchar zqsgzj=0x00;uchar zqsdzj=0x00;uchar zsscgw=0x1f;uchar zsscdw=0x00;uchar bzsj;uchar ztsj;void key (void);void keyprc();void binbcd
13、();void disp();void delay();code uchar tab13=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x39;code uchar zssc160=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0
14、x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0
15、x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,;void key(void)TR0=0;if(!(P2&0X01)delay();while(!(P2&0X01);zdzt=0x0a;disp();else if(!(P3&0X08)delay();while(!(P3&0X08);zdzt=0x0b;disp();else if(!(P3&0X10)delay();while(!(P3&0X10);zs=zs+1;keyprc();disp();else if(!(P2&0X02)delay
16、();while(!(P2&0X02);zs=zs-1;keyprc();disp();void keyprc()if(zs99)zs=99;zsgw=zs/10;zsdw=zs%10;void djzd(void) interrupt 1TH0=zssc(zs-20)*2;TL0=zssc(zs-20)*2+1;if(zdzt=0x0a)yxsj=yxsj7;else if (zdzt=0x0b)yxsj=yxsj1;else if(zdzt=0x0c)P1=0xff;goto LP;P1=yxsj;bs+;if(bs=48)bs=0;zqs+;LP:binbcd();disp();void
17、 binbcd()zqsbw=zqs/100;zqssw=zqs%100/10;zqsgw=zqs%10;void disp()TR1=0;ES=0;SCON=0x00;TMOD=0x01;SBUF=tabzqsgw;while(!TI);TI=0;SBUF=tabzqssw;while(!TI);TI=0;SBUF=tabzqsbw;while(!TI);TI=0;SBUF=tabzsdw;while(!TI);TI=0;SBUF=tabzsgw;while(!TI);TI=0;SBUF=tabzdzt;while(!TI);TI=0;TMOD=0x02;TH1=0Xfd;TL1=0xfd;
18、SCON=0x50;TR1=1;ES=1;void delay()int k;for(k=0;k1200;k+);void sin()interrupt 4P1=0xff;ES=0;bzsj=SBUF;RI=0;while(!RI);RI=0;ztsj=SBUF;if(bzsj=0x30)zdzt=ztsj-0x37;if(bzsj=0x31)if(ztsj=0x49)zs+;else zs-;ES=1;P3_2=0;keyprc();zqs=0;disp();main()TMOD=0x21;TH1=0xfd;TL1=0xfd;SCON=0x50;PCON=0x00;IE=0X92;PS=1;
19、TR1=1;P3_2=0;TH0=0x1f;TL0=0x00;SP=0x60;disp();while(1)key();if(zdzt=0x0c)TR0=0;P1=0xff;else TR0=1;單片機給計算機發(fā)送數(shù)據(jù):#include reg52.h /包函8051 內(nèi)部資源的定義unsigned char dat; /用于存儲單片機接收發(fā)送緩沖寄存器SBUF里面的內(nèi)容unsigned char fan;int i,j;void Delay() /延時程序for(i=0; i100; i+)for(j=0; j100; j+);void delays()int k;for (k=0;k1200;k+);/功能:串口初始化,波特率9600,方式1/void Init_Com(void)TMOD = 0x20;PCON = 0x00;SCON = 0x50;TH1 = 0xFd;TL1 = 0xFd;TR1 = 1;/主程序功能:實現(xiàn)接收數(shù)據(jù)并把接收到的數(shù)據(jù)原樣發(fā)送回去/void main()Init_C
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 考級樂理課件教學課件
- 幼兒乘機課件教學課件
- 2024年乙方接受房產(chǎn)抵債具體協(xié)議
- 2024供應鏈管理運輸合同
- 2024年度專利申請成果轉(zhuǎn)化許可合同
- 2024年度搬廠工程安全監(jiān)督合同
- 2024年度市場營銷策劃執(zhí)行合同
- 04版無人機研發(fā)與銷售合同
- 2024年度文化藝術品收藏與展覽合同
- 2024年度無人機采購與租賃合同
- 2024下半年四川省廣元市直屬事業(yè)單位招聘104人歷年公開引進高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
- 市政道路施工工程重難點分析及對策
- 2024年渤海船舶職業(yè)學院單招職業(yè)適應性測試題庫及答案解析
- 《行政復議法》講座課件-2024鮮版
- 外國新聞傳播史 課件 第十九章 非洲其他代表性國家的新聞傳播事業(yè)
- JTJ034-2000 公路路面基層施工技術規(guī)范
- 小班數(shù)學活動《分類》課件
- 《娛樂場所管理條例》課件
- 渣土車掛靠合同
- 《小動物眼科學》課件
- 特殊兒童心理輔導理論與實務 課件 第4、5章 特殊兒童心理輔導與治療的基本方法、特殊兒童常見的心理行為問題及輔導
評論
0/150
提交評論