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