


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、PC機和單片機通信(RS232協議)目錄:1、單片機串口通信的使用2、PC控制單片機10 口輸出3、單片機控制實訓指導及綜合使用實例 4、單片機給計算機發送數據:實驗任務單片機串口通信的使用,通過串口,我們的個人電腦和單片機系統進行通信。個人電腦作為上位機,向下位機單片機系統發送十六進制或者ASCLL碼,單片機系統接收后,用LED顯示接收到的數據和向上位機發回原樣數據。硬件電路圖實驗原理RS-232是美國電子工業協會正式公布的串行總線標準,也是目前最常用的串 行接口標準,用來實現計算機和計算機之間、計算機和外設之間的數據通訊。RS-232串行接口總線適用于:設備之間的通訊距離不大于15m,傳輸
2、速率最大為20kBps。RS-232協議以-5V 15V表示邏輯1;以+5V 15V表示邏輯0。我們是 用MAX232芯片將RS232電平轉換為TTL電平的。 一個完整的RS-232接口有22 根線,采用標準的25芯插頭座。我們在 這里使用的是簡化的9芯插頭座。注意我們在這里使用的晶振是11.0592M的,而不是12M。因為波特率的設置 需要11.0592M的。“串口調試助手”軟件的使用很簡單,只要將串口選擇 CMO1 '波 特率設置為 9600'數據位為8位。打開串口(如果關閉)。然后在發送區里輸入要發送的數據,單擊手動發送就將數據發送出去了。注意,如果選中十六 進制發送那么
3、發送的數據是十六進制的,必須輸入兩位數據。如果沒有選中, 則發送的是ASCLL碼,那么單片機控制的數碼管將顯示 ASCLL碼值。數字二進制Px0Px7Abcdefg p十六進制00xco10xf920xa430xb040x9950x9260x8270xf880x8090x90A0x88B0x83C0xc6D0xa1E0x86F0x8eASCII常用代碼表字符代碼字符代碼字符代碼字符代碼字符3252 1472H92112p3353573I93113q3454674J94A114r35#55775K95115s36$56876L96'116t37%57 I977M97a117u38&
4、;5878N98b118v395979O99c119w40(60<80P100d120x41)61=81Q101e121y42*62>82R102f122z43+ 63?83S103g12344J6484T104h124|45-65A85U105i1254666B86V106j12647/67C87W107k48068D88X108l49169E89Y109m50270F90Z110n51371G91111o1C語言源程序#include "reg52.h" 包函8051內部資源的定義unsigned char dat; /用于存儲單片機接收發送緩沖寄存器SBU
5、F里面的內容sbit gewei=P2A4; /個位選通定義sbit shiwei=P2A5; 十位選通定義sbit baiwei=P2A6; 百位選通定義unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,; /110 void Delay(unsigned int tc) /延時程序while( tc != 0 )unsigned int i;for(i=0; i<100; i+);tc-;void LED() /LED 顯示接收到的數據(十進制)gewei=0; P0=tabledat
6、%10; Delay(10); gewei=1;shiwei=0; P0=tabledat/10; Delay(10); shiwei=1;baiwei=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;/主程序功能 :實現接收數據并把接收到的數據原樣發送回去 /void main()In it_Com(); 串口初始化while(1)if ( RI
7、) /掃描判斷是否接收到數據,dat = SBUF; /接收數據 SBUF 賦和 datRI=0; /RI 清零。SBUF = dat; 在原樣把數據發送回去(接收數據為發送數據的 ASCII碼,如發送q顯示為113)LED(); /顯示接收到的數據/這一個例子是以掃描的方式編寫的,還可以以中斷的方式編寫,請大家思考/實驗任務 PC 控制單片機 IO 口輸出#include "reg52.h" /包函 8051 內部資源的定義 unsigned char dat; /用/ 于存儲單片機接收發送緩沖寄存器 SBUF 里面的內容 void Delay(unsigned int
8、tc) /延時程序 while( tc != 0 ) unsigned int i; for(i=0; i<100; i+);tc-;/功能:串口初始化,波特率 9600,方式1/void Init_Com(void)TMOD = 0x20;PCON = 0x00;SCON = 0x50;TH1 = 0xFd;TL1 = 0xFd;TR1 = 1;/ 主程序功能 :實現接收數據并把接收到的數據原樣發送回去 / void main()Init_Com();/ 串口初始化 while(1) if ( RI ) /掃描判斷是否接收到數據,dat = SBUF; 接收數據SBUF賦和dat if
9、(dat=OxOO) 如果PC發送十六進制00,單片機P1 口全亮。 P1=0x00;else if(dat=0x01)P1=0x01;else if(dat=0x02) P1=0x02;else if(dat=0x03) P1=0x03;else if(dat=0x04) P1=0x04;RI=0; /RI 清零。SBUF = dat; 在原樣把數據發送回去(接收數據為發送數據的 ASCII碼,如發送q顯示為113) 實驗任務 單片機控制實訓指導及綜合使用實例#include "reg52.h" /包函 AT89S52 內部資源的定義(注視參看書 160 頁)#defin
10、e uchar unsigned char/宏定義uchar led 10=0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef;數字 1 10,字符串uchar led164; /存儲接收數據unsigned int i,j,t,k;sbit P32=P3A2;void scjs(void)interrupt 4 /定義中斷ES=0;/ 使能串行口的中斷k=1;while(1)RI=0;led1k-1=SBUF;/將接收數據送段碼表k+;TH0=0x3c; /t0 定時 50sm 內接收不到數據跳過接收TL0=0xb0;TR0=1;while(!
11、RI)if(!TF0) goto FH;FH:TF0=0;/TF0 不清零不能重新接收TR0=0;P32=1;for(j=1;j<k;j+)SBUF=ledj-1; 數據送回給 pcwhile(!TI);TI=0;P32=0;delay(t)ES=1;SCON=0x50;for(i=0;i<t;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
12、;a<=k+1/k*8;a+) for(c=5;c>=0;c-) if(a+c<k+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 內部資源的定義 #define uchar unsigned charsbit P3_2=P3A2;uchar zdzt=0x0c;uchar zsgw=0x02;uchar zsdw=0x00;uchar bs=0;uchar zqsb
13、w=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();void disp();void delay();code uchar tab13=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,
14、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,0x5b,0x4f,0x66,0x6d,0x7d,0x7f, 0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x
15、77,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,0x7f,0x6f,0x77,0x7c,;void key(voi
16、d)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(); while(!(P2&0X02); zs=zs-1;keyprc();disp();void keyp
17、rc()if(zs<20) zs=20;if(zs>99)zs=99;zsgw=zs/10;zsdw=zs%10;void djzd(void) interrupt 1 TH0=zssc(zs-20)*2;TL0=zssc(zs-20)*2+1; if(zdzt=0x0a) yxsj=yxsj<<1|yxsj>>7; else if (zdzt=0x0b) yxsj=yxsj<<7|yxsj>>1; else if(zdzt=0x0c) P1=0xff;goto LP;P1=yxsj;bs+; if(bs=48) bs=0;zqs+;
18、LP:binbcd();disp();void 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; whil
19、e(!TI);TI=0;TMOD=0x02; TH1=0Xfd; TL1=0xfd;SCON=0x50;TR1=1;ES=1;void delay() int k; for(k=0;k<1200;k+); void sin()interrupt 4 P1=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=
20、0x21;TH1=0xfd;TL1=0xfd;SCON=0x50;PCON=0x00;IE=0X92;PS=1;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;單片機給計算機發送數據 :#include "reg52.h" /包函 8051 內部資源的定義SBUF 里面的內容unsigned char dat; /用/ 于存儲單片機接收發送緩沖寄存器 unsigned char fan;int i,j;void Delay() / 延時程序for(i=0; i<100; i+)for(j=0; j<100; j+);void delays()int k;for (k=0;k<1200;k+);/功能:串口初始化,波特率 9600,方式1/void Init_Com(void)TMOD = 0x20;PCON = 0x00;SCON = 0x50;TH1 = 0xFd;TL1 = 0xFd;TR1 = 1;/ 主程序功能 :實現接收數據并把接收到的數據原樣發送回去/void m
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國內外低碳經濟與綠色金融關系的比較分析
- 信息記錄管理制度
- 信用安全管理制度
- 信訪接待管理制度
- 公司內外務管理制度
- 養雞益生菌管理制度
- 力學實驗室管理制度
- 后廚負責人管理制度
- 基建27項管理制度
- 小企業會員管理制度
- 國家開放大學2025年《創業基礎》形考任務3答案
- SL631水利水電工程單元工程施工質量驗收標準第1部分:土石方工程
- 2023-2024學年江蘇省蘇州市高二下學期6月期末物理試題(解析版)
- (正式版)HGT 22820-2024 化工安全儀表系統工程設計規范
- 最新四川省教師資格認定體檢表
- 兒童手機設計報告
- 防眩板施工組織設計
- 公路交通工程及安全設施施工指導意見
- 干式變壓器企業標準
- 國家開放大學《流通概論》章節測試參考答案
- 中小學廁所蹲位數量統計表
評論
0/150
提交評論