Comunicación serie 8051 con ESP32 CAM

Anteriormente introdujimos la comunicación en serie de 8051 y tenemos una cierta comprensión de la comunicación en serie. Ahora nos comunicamos con ESP32CAM implementando 8051.

Primero comprenda el diagrama de pines de la leva esp32.

Como se muestra arriba, vemos que los pines del puerto serie 0 de ESP32 CAM son GPIO 3 (RxD) y GPIO 1 (TxD), mientras que el pin GPIO 16 es solo un pin receptor del puerto serie 2. Pero ESP32 CAM tiene tres puertos seriales (Serial, Serial1, Serial2), y su TxD y RxD pueden ser mapeados por software.

Código de prueba ESP32

En el IDE de Arduino, usamos el siguiente código para probar el puerto serie de la CAM ESP 32, cortocircuitar GPIO 0 y GPIO 16 en la placa, encender la cámara esp32, abrir el monitor serie del IDE de Arduino y puede ver que los datos se envían y reciben espontáneamente.

void setup() {
    Serial.begin(9600);//用于电脑监控
    Serial1.begin(9600,SERIAL_8N1, 0, 16);//用于 和8051通讯,0为RxD,16为TxD
}
unsigned char count = 0;
void loop() {
    Serial1.println(count ++);//给8051发送数据
    if(Serial1.available()>0){//接收8051发送的数据
        Serial.print("from 8051: ");
        Serial.println(Serial1.read());
    }
    delay(500);
}

Vea el valor de "recuento" acumulado en la ventana del monitor serie. Como se muestra abajo:

Código de prueba del puerto serie 8051:

#include <REGX51.H>
sbit lcd_rs = P0^7;
sbit lcd_rw = P0^6;
sbit lcd_en = P0^5;
void delay(unsigned int ms){
   int k,l;
   for(k=0;k<ms;k++)
      for(l=0;l<120;l++);
}
void cmdwrt (unsigned char x)
{
  P2=x;
  lcd_rs=0;
  lcd_rw=0;
  lcd_en=1;
  delay(1);
  lcd_en=0;
}
void lcd_init(){
  unsigned char i = 0;
  unsigned char cmd[]={0x38,0x01,0x06,0x0c,0x80};//1602初始化命令
  for(i=0;i<5;i++){
     cmdwrt (cmd[i]);
     delay (1);
  }
}
void lcd_data(unsigned char disp_data) //向LCD发送显示数据的函数
{
    lcd_init();
    delay(1);
    P2 = disp_data;
   lcd_rs = 1;
   lcd_rw=0;
   lcd_en=1;
   delay(1);
   lcd_en=0;
}
void uart_init(){
   TMOD = 0x20; // 定时器1,模式2(8位自动装载)
   TR1=1;//启用Timer 1
   TH1 = 0xfd; // 在Timer 1,mode 2, 11.0952MHz下,设定9600比特率
   SCON = 0x50; //uart mode1,接收使能
}
unsigned char sData;
void uart_send(){//发送给esp32 cam
    delay(500);
    SBUF = sData++;
    if(TI == 0) return;
       TI=0;
}
void uart_read() // 读取从 esp32 cam 发送的的数据
{
   // 等到收到字节
   if(RI==0) return;
   lcd_data(SBUF + ‘0’);
   RI=0; //清除RI以接收下一个字节
}
void main(){
    uart_init();
    while(1){
        uart_send();
        uart_read();
    }
}

Cortocircuite los pines del transceptor del puerto serie P3.0 y P3.1 del 8051 y podrá ver el incremento automático digital en la pantalla LCD después del encendido (solo se muestra un dígito, debe expandirlo usted mismo).

Realice la comunicación entre la cámara esp32 y el puerto serie 8051

Conecte el RxD (P3.0), TxD (P3.1) y GND del 8051 al TxD (GPIO 16), RxD (GPIO 0) y GND del ESP32 CAM, respectivamente, y realice la prueba 8051 anterior programa en la función uart_read(). "lcd_data(SBUF + '0');" se cambia a "lcd_data(SBUF);", se puede ver después de encender: 1602 LCD en la placa de desarrollo 8051 muestra los datos enviados por esp32 cam, El monitor serie Arduino IDE muestra datos de 8051 datos.

Lo anterior es solo para probar la comunicación en serie entre 8051 y esp32 cam, y no es perfecto.

Supongo que te gusta

Origin blog.csdn.net/m0_67034740/article/details/123887702
Recomendado
Clasificación