簡體   English   中英

PIC和ARDUINO之間的UART通信

[英]UART communication between PIC and ARDUINO

在此處輸入圖片說明 我正在嘗試將 ARDUINO 串行監視器用於我的 PIC 微控制器進行調試,通過將 PIC 的 TX 和 RX 引腳與 ARDUINO 連接,我為 PIC16f877A 編寫了代碼,它確實具有硬件 USART 模塊,使用 Mikroc 編譯器,振盪器頻率為 4MHz , 當我嘗試在 Proteus 中進行模擬時,這工作正常,輸出在串行監視器(Proteus 內部)和我用作 UART 接收器的另一個微控制器上都可見,但我無法讓這件事在 PIC 和 Arduino 之間工作Uno 物理上。 屏幕(Arduino IDE 串行監視器)保持空白。 這是使用 Mikroc UART 庫的 PIC 發送器代碼:

char test[]="Test string Incoming \n";
char *p1;
void main()
{
UART1_init(9600);  //initializing USART module with 9600 baud rate
delay_ms(100);
while(1){
p1=test;
while(*p1){UART1_Write(*p1);   p1++ ;   delay_ms(100);} // writing character one by one on serial transmitter  pin
  }
} 

這是 Arduino Uno 的代碼,它將充當接收器,然后將接收到的字符傳輸到串行監視器:

char byt;
void setup() {
  Serial.begin(9600);
  Serial.println("This is uart test!");
}

void loop() {
 if (Serial.available()){
 byt= Serial.read();
 if (byt==' ') Serial.println(); 
 else Serial.print(byt);
 }
}

這是我在 Proteus 仿真中用作接收器的另一個 PIC16F877A 的代碼。

sbit lcd_rs at rb2_bit;sbit lcd_en at rb3_bit;sbit lcd_d4 at rb4_bit; sbit lcd_d5 at rb5_bit; sbit lcd_d6 at rb6_bit; sbit lcd_d7 at rb7_bit;

sbit lcd_rs_direction at trisb2_bit; sbit lcd_en_direction at trisb3_bit; sbit lcd_d4_direction at trisb4_bit;
sbit lcd_d5_direction at trisb5_bit; sbit lcd_d6_direction at trisb6_bit; sbit lcd_d7_direction at trisb7_bit;
char ch;
void main() 
{
lcd_init();
lcd_cmd(_lcd_clear);
lcd_cmd(_lcd_cursor_off);
lcd_out(1,1,"This is UART test!");
UART1_init(9600);
while(1)
{
if (UART1_Data_Ready)
{ ch=UART1_Read();
 lcd_chr(2,1,ch);}

}

}

有沒有人對此有任何想法?

您為雙方使用相同的串行端口,而您應該為 PC(IDE 串行監視器)和SoftwareSerial 使用串行端口或允許在指定引腳上為 PIC 端提供額外串行端口的類似庫。

編輯

在此處輸入圖片說明

假設上圖中正確描述了您的配置,您可能希望將來自 Serial1 (PIC) 的內容回顯到 Serial (PC),如下所示:

void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
}

void loop() {
  if (Serial1.available()) {
    byte inByte = Serial1.read();
    Serial.print(inByte, BYTE);
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM