|
適用于初學(xué)者,雙機(jī)對串口采用不同編程模式,增加對串口編程的認(rèn)知。
說明:
運(yùn)行前,請安裝Virtual Serial等虛擬串口軟件,增加com1-com2。
運(yùn)行后,按下按鍵1即可發(fā)送數(shù)據(jù)至另一個單片機(jī)……
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):
單片機(jī)源程序如下:
- #include "reg52.h"
- #define uchar unsigned char
- #define uint unsigned int
- uchar code table[]={0x0c0,0xf9,0x0a4,0x0b0,0x99,0x92,0x80,0x0f8,0x80,0x90,0x0f7};
- uchar temp,count=0;
- uchar senddata[]={1,2,3,4,'\0'};
- uchar getdata[]={0,0,0,0,'\0'};
- void delay(uint z)
- {
- unsigned int x,y;
- for(x=z;x>0;x--)
- for(y=1000;y>0;y--);
- }
- void delayms(uchar i)//延時函數(shù)
- {
- uchar j,k;
- for(j=i;j>0;j--)
- for(k=125;k>0;k--);
- }
- void display(uchar A1,uchar A2,uchar A3,uchar A4)//顯示函數(shù)
- {
- P1=0x08;
- P0=table[A1];
- delayms(10);
-
- P1=0x04;
- P0=table[A2];
- delayms(10);
-
- P1=0x02;
- P0=table[A3];
- delayms(10);
-
- P1=0x01;
- P0=table[A4];
- delayms(10);
-
- }
- //串口初始化,波特率9600BPS(晶振為11.0592M)
- void InitializeSystem()
- {
- SCON = 0X50;//串口方式1,允許接收
- TMOD = 0X20;//定時器1定時方式2
- TCON = 0x40;//設(shè)定時器1開始計(jì)數(shù)
- TH1 = TL1 = 250;
- PCON = 0x80; //波特率加倍控制,SMOD位
- RI = 0; //清收發(fā)標(biāo)志
- TI = 0;
- TR1 = 1; //啟動定時器
- EA=1; //開啟總中斷
- ES = 1;
- ET1=0;
- }
- //字符發(fā)送函數(shù)
- void putchar(uchar data1)
- {
- SBUF = data1; //將待發(fā)送的字符送入發(fā)送緩沖器
- while(TI == 0); //等待發(fā)送完成
- TI = 0; //發(fā)送中斷標(biāo)志請0
- }
- //字符串發(fā)送函數(shù)
- void putstring(uchar *dat)
- {
- while(*dat != '\0') //判斷字符串是否發(fā)送完畢
- {
- putchar(*dat); //發(fā)送單個字符
- dat++; //字符地址加1,指向先下一個字符
- delay(5);
- }
- }
- //主函數(shù)
- void main( )
- {
- InitializeSystem( );
- while(1)
- {
- display(getdata[0],getdata[1],getdata[2],getdata[3]);
- }
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
雙機(jī)通信-51單片機(jī).rar
(87.25 KB, 下載次數(shù): 47)
2017-11-2 08:41 上傳
點(diǎn)擊文件名下載附件
|
評分
-
查看全部評分
|