|
以485通信為例,其中包括AT89C52,MAX487芯片和虛擬中端,實(shí)現(xiàn)兩個(gè)單片機(jī)之間的通訊。
雙機(jī)通信.png (67.92 KB, 下載次數(shù): 102)
下載附件
2020-6-19 20:03 上傳
MAX487-MAX491以及MAX1487是用于baiRS-485與RS-422通信的低功耗收發(fā)器,du每個(gè)器件中都具有一個(gè)驅(qū)動(dòng)器和一zhi個(gè)接收器。MAX483、MAX487、MAX488以及daoMAX489具有限擺率驅(qū)動(dòng)器,可以減小EMI,并降低由不恰當(dāng)?shù)慕K端匹配電纜引起的反射,實(shí)現(xiàn)最高250kbps的無差錯(cuò)數(shù)據(jù)傳輸。MAX481、MAX485、MAX490、MAX491、MAX1487的驅(qū)動(dòng)器擺率不受限制,可以實(shí)現(xiàn)最高2.5Mbps的傳輸速率。
這些收發(fā)器在驅(qū)動(dòng)器禁用的空載或滿載狀態(tài)下,吸取的電源電流在120μA至500μA之間。另外,MAX481、MAX483與MAX487具有低電流關(guān)斷模式,僅消耗0.1μA。所有器件都工作在5V單電源下。
MAX487.png (20.37 KB, 下載次數(shù): 106)
下載附件
2020-6-19 20:04 上傳
max487.jpg (15.74 KB, 下載次數(shù): 102)
下載附件
2020-6-19 20:04 上傳
驅(qū)動(dòng)器具有短路電流限制,并可以通過熱關(guān)斷電路將驅(qū)動(dòng)器輸出置為高阻狀態(tài),防止過度的功率損耗。接收器輸入具有失效保護(hù)特性,當(dāng)輸入開路時(shí),可以確保邏輯高電平輸出。
MAX487與MAX1487具有1/4單位負(fù)載的接收器輸入阻抗,使得總線上最多可以有128個(gè)MAX487/MAX1487收發(fā)器。使用MAX488-MAX491可以實(shí)現(xiàn)全雙工通信,而MAX481、MAX483、MAX485、MAX487與MAX1487則為半雙工應(yīng)用設(shè)計(jì)。
分別對(duì)兩個(gè)單片機(jī)下載程序
發(fā)送端
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- void delay_ms(uint ms)
- {
- uchar time;
- while(ms--)
- for(time=0;time<115;time++);
- }
- void UART_sendOneByte(uchar dat)
- {
- SBUF=dat;//將被發(fā)送的單字節(jié)數(shù)據(jù)放入串口SBUF數(shù)據(jù)發(fā)送緩沖器
- while(TI==0);//等待SBUF緩沖器中的數(shù)據(jù)被發(fā)送完畢(發(fā)送完畢后TI被硬件寫1)
- TI=0;//將TI位(發(fā)送完成標(biāo)志位)清零
- }
- void UART_sendEnter(void)
- {
- UART_sendOneByte(0x0d);
- UART_sendOneByte(0x0a);
- }
- void UART_sendstring(uchar *str)
- {
- while(*str)
- {
- UART_sendOneByte(*str);
- str++;
- }
- }
- void main()
- {
- uchar temp=0;
- TMOD=0x20; //設(shè)置定時(shí)器T1為方式2
- TH1=0xfd; //波特率9600
- TL1=0xfd;
- SCON=0x40; //串口初始化方式1發(fā)送,不接收
- PCON=0x00; //SMOD=0
- TR1=1; //啟動(dòng)T1
-
- while(1)
- {
- UART_sendstring("你好");
- delay_ms(1000);//延時(shí)1秒
- UART_sendstring("你好");
- delay_ms(1000);//延時(shí)1秒
- UART_sendstring("你好");
- delay_ms(1000);//延時(shí)1秒
復(fù)制代碼
接收端
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- void delay_ms(uint ms)
- {
- uchar time;
- while(ms--)
- for(time=0;time<115;time++);
- }
- void UART_sendOneByte(uchar dat)
- {
- SBUF=dat;//將被發(fā)送的單字節(jié)數(shù)據(jù)放入串口SBUF數(shù)據(jù)發(fā)送緩沖器
- while(TI==0);//等待SBUF緩沖器中的數(shù)據(jù)被發(fā)送完畢(發(fā)送完畢后TI被硬件寫1)
- TI=0;//將TI位(發(fā)送完成標(biāo)志位)清零
- }
- void UART_sendEnter(void)
- {
- UART_sendOneByte(0x0d);
- UART_sendOneByte(0x0a);
- }
- void UART_sendstring(uchar *str)
- {
- while(*str)
- {
- UART_sendOneByte(*str);
- str++;
- }
- }
- void main( )
- {
- uchar temp=0;
- TMOD=0x20; //設(shè)置定時(shí)器T1為方式2
- TH1=0xfd; //波特率9600
- TL1=0xfd;
- SCON=0x50; //設(shè)置串口為方式1接收,REN=1
- PCON=0x00; //SMOD=0
- TR1=1; //啟動(dòng)T1
- while(1)
- {
復(fù)制代碼
串口通信Proteus仿真.zip
(43.88 KB, 下載次數(shù): 80)
2020-6-19 20:11 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
RS485雙機(jī)通信程序.zip
(28.13 KB, 下載次數(shù): 96)
2020-6-19 20:11 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|