欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機實現串口通信(主單片機到從單片機發送LED流水燈)
[打印本頁]
作者:
15113099078
時間:
2018-12-9 21:33
標題:
51單片機實現串口通信(主單片機到從單片機發送LED流水燈)
其實這是個51單片機串口通信的小例子,課堂上老師說你們可以去嘗試弄一下,于是就去網上找一下資料,就做了這個實驗。
1.jpg
(225.41 KB, 下載次數: 29)
下載附件
2021-10-12 04:54 上傳
先把一個作為主機,用來發送數據;另一個作為從機,用來接收數據。將兩個程序各自燒錄到對應的板子上去,并將主機的TX(P3.0)接到從機的RX(P3.1),主機的RX(P3.1)接到從機的TX(P3.1),便可以實現將主機的數據發送到從機上去,并在從機上實現功能,這時可以看到從機上流水燈的現象
主機發送代碼
#include<reg51.h>
unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //流水燈控制碼
void send(unsigned char dat) //數據發送程序
{
SBUF=dat; //將要發送的數據存入發送緩沖器中
while(TI==0); //若發送中斷標志位沒有置1(正在發送數據),就等待
TI=0; //若發送完成,TI自動置1,這里把它清零
}
void delay(void) //延時函數
{
unsigned char m,n;
for(m=0;m<200;m++) //延時約50ms
for(n=0;n<250;n++);
}
void main(void)
{
unsigned char i;
TMOD=0x20; //定時器T1工作于方式2(可自動重裝的8位定時器)
SCON=0x40; //串口工作方式1,不允許接收
PCON=0x00; //波特率不倍增
TH1=0xf4; //波特率為2400b/s
TL1=0xf4;
TR1=1; //啟動定時器T1(T1作波特率的發生器)
while(1)
{
for(i=0;i<8;i++) //一共8位的流水燈控制碼
{
send(tab[i]); //發送數據
delay(); //每50ms發送一次數據
}
}
}
從機接收代碼
#include<reg51.h>
unsigned char receive(void) //數據接收函數
{
unsigned char dat;
while(RI==0); //數據沒有接收完畢時等待接收
RI=0; //接收完畢時清零
dat=SBUF; //將接收緩沖器中的數據存入dat
return dat; //將接收到的數據返回
}
void main(void)
{
TMOD=0x20; //設置定時器T1工作于方式2
SCON=0x50; //串口工作方式1,允許接收數據
PCON=0x00; //波特率不倍增
TH1=0xf4; //波特率為2400b/s
TL1=0xf4;
TR1=1; //啟動定時器T1
REN=1; //允許接收數據
while(1)
{
P2=receive(); //將接收到的數據送到P1口顯示
}
}
復制代碼
作者:
持勤補拙
時間:
2020-3-2 14:15
謝謝樓主,學習了。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1