|
使用串口通信。具體功能描述如下:采用USART,波特率為9600,一個(gè)單片機(jī)發(fā)送數(shù)字,一個(gè)單片機(jī)接收,并把接收的數(shù)字用數(shù)碼管顯示。
51hei.png (18.08 KB, 下載次數(shù): 57)
下載附件
2019-11-22 13:41 上傳
單片機(jī)源程序如下:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int //宏定義
- bit tt;
- uchar aa;
- void display(uchar aa);
- void delay(uint c);
- void init();
- sbit Ledshi = P2^0; //十位數(shù)碼管使能端
- sbit Ledge = P2^1; //個(gè)位數(shù)碼管使能端
- uchar ma[]=
- {
- 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f
- }; //編碼0~9
- void main()
- {
- init();
- while(1)
- {
- while(tt)
- {
- display(aa);
- delay(20);
- }
- }
- }
- void init()
- {
- PCON &= 0x7F; //波特率不加倍
- TMOD=0x20; //定時(shí)器1工作方式2
- TH1=0xfd;
- TL1=0xfd; //給定時(shí)器定初值,設(shè)置波特率為9600
- TR1=1; //開啟定時(shí)器1工作
- SCON=0x50; //允許串行口接收數(shù)據(jù),設(shè)置串行口工作方式1
- EA=1;
- ES=1; //打開串行口中斷
- ET1=0; //禁止定時(shí)器1中斷
- }
- void display(uchar aa) //顯示函數(shù)
- {
- uchar shi,ge;
- shi=aa/10; //取十位
- ge=aa%10; //取個(gè)位
- P0=ma[shi]; //送十位值
- P2=0xbf; //選擇段選位置
- delay(5);
- P0=0; //數(shù)碼管消影
- P2=0xff;
- P0=ma[ge]; //送個(gè)位值
- P2=0x7f; //選擇段選位置
- delay(5);
- P0=0; //數(shù)碼管消影
- P2=0xff;
- }
- void delay(uint c) //延時(shí)函數(shù)
- {
- uchar i,j;
- for(i=0;i<c;i++)
- for(j=0;j<110;j++);
- }
- void receive() interrupt 4
- {
- aa=SBUF;
- tt = 1; //接受一次后打開顯示
- ES = 0; //關(guān)閉串行中斷
- RI = 0; //清除串行接受標(biāo)志位
- }
復(fù)制代碼
所有資料51hei提供下載:
51單片機(jī)串口通信.zip
(18.6 KB, 下載次數(shù): 157)
2019-11-17 17:32 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|