|
0.jpg (89.37 KB, 下載次數(shù): 107)
下載附件
2018-1-23 05:35 上傳
0.png (41.58 KB, 下載次數(shù): 84)
下載附件
2018-1-23 05:36 上傳
單片機(jī)源程序如下:
- /******************************************************************
- 功能:采用USART串口通信,波特率為9600,一個(gè)單片機(jī)發(fā)送數(shù)字
- 一個(gè)單片機(jī)接收,并把接收的數(shù)字用數(shù)碼管顯示。接收。!
- 作者:cs天涯
- ******************************************************************/
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- bit flag;
- uchar num;
- void display(uchar num);
- void delay(uint z);
- void init();
- uchar code table[]=
- {
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71};//編碼0~9AbCdEF
- void main()
- {
- init();
- while(1)
- {
- while(flag)
- {
- display(num);
- delay(5);
- }
- }
- }
- void init()
- {
- PCON &= 0x7F; //波特率不加倍
- TMOD=0x20; //定時(shí)器1工作方式2
- TH1=0xfd;
- TL1=0xfd; //給定時(shí)器定初值,設(shè)置波特率為9600
- TR1=1; //開(kāi)啟定時(shí)器1工作
- SCON=0x50;//0101 0000 允許串行口接收數(shù)據(jù),設(shè)置串行口工作方式1
- EA=1;
- ES=1; //打開(kāi)串行口中斷
- ET1=0; //禁止定時(shí)器1中斷
- }
- void display(uchar num)
- {
- uchar shi,ge;
- shi=num/10; //取十位
- ge=num%10; //取個(gè)位
- P0=table[shi]; //送十位值
- P2=0xbf;//1011 1111 //選擇段選位置
- delay(5);
- P0=0; //數(shù)碼管消影
- P2=0xff;
- P0=table[ge]; //送個(gè)位值
- P2=0x7f;//0111 1111 //選擇段選位置
- delay(5);
- P0=0; //數(shù)碼管消影
- P2=0xff;
- }
- void delay(uint z) //延時(shí)函數(shù)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void receive() interrupt 4
- {
- num=SBUF;
- flag = 1; //接受一次后打開(kāi)顯示
- ES = 0; //關(guān)閉串行中斷
- RI = 0; //清除串行接受標(biāo)志位
- }
- 發(fā)送程序:
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar num; //=2939可以不要
- void init();
- void delay(int z);
- void send(uchar num); //聲明子函數(shù)的時(shí)候要加分號(hào)
- void main()
- {
- init(); //調(diào)用子函數(shù)的時(shí)候要加分號(hào)
- while(1)
- {
- send(39); //發(fā)送函數(shù)
- delay(10); //發(fā)送后延時(shí)一下,保證發(fā)送頻率不過(guò)快
- }
- }
- void init()
- {
- PCON&=0x7F; // 設(shè)置波特率不加倍
- TMOD=0x20; //設(shè)置定時(shí)器1工作方式 2
- TH1=0xfd;
- TL1=0xfd; //設(shè)定定時(shí)器1工作方式2的初值 (關(guān)計(jì)算還沒(méi)講) 波特率為9600
- TR1=1; //開(kāi)定時(shí)器1,開(kāi)啟波特率發(fā)生器
- SM0=0;
- SM1=1; //設(shè)定串口通信工作方式1
- EA=1; //開(kāi)總中斷
- }
- void delay(int z) //晶振11.592.延時(shí)z毫秒
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void send(uchar num)
- {
- SBUF=num; //把發(fā)送的內(nèi)容寫(xiě)進(jìn)sbuf,自動(dòng)發(fā)送 ,發(fā)送數(shù)據(jù)時(shí)TI為0,!0為1
- while(!TI); //!邏輯非,發(fā)送完數(shù)據(jù),發(fā)送完數(shù)據(jù)時(shí)TI為1.!1為0,停止發(fā)送
- TI=0; //TI需要軟件清零
- }
復(fù)制代碼
所有資料51hei提供下載:
單片機(jī)串口通信.zip
(37.19 KB, 下載次數(shù): 258)
2018-1-23 00:01 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|