前面我们介绍了8051的串行通讯,对串行通讯有了一定的了解,现在通过实现8051与ESP32CAM通信。
首先了解下esp32 cam的引脚图。
如上图,我们看到ESP32 CAM的串口0引脚分别为GPIO 3(RxD)、GPIO 1(TxD),而GPIO 16引脚只是串口2的一个接收引脚。但是ESP32 CAM 有三个串口(Serial、Serial1、Serial2),可以软件映射其TxD和RxD。
ESP32 测试代码
在Arduino IDE中我们使用下面代码测试ESP 32 CAM的串口,短接上板子上的GPIO 0和GPIO 16,给esp32 cam上电,打开Arduino IDE的串口监视器,就可以看到数据自发自收。
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);
}
从串口监控窗口中看到累加的 “count” 的值。如下图:
8051串口测试代码:
#include 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 } 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(); } } 短接8051的串口收发引脚P3.0和P3.1,上电就可以看到在LCD看到数字自增(只显示一位,有需要自己扩展)。 实现esp32 cam与8051串口通讯 把8051的RxD(P3.0)、TxD(P3.1)、GND分别与ESP32 CAM的TxD(GPIO 16)、RxD(GPIO 0)、GND连接,并且把上述8051的测试程序uart_read()函数中的“lcd_data(SBUF + ‘0’);”改为“lcd_data(SBUF);”,通电就可以看到:8051 开发板上的1602 LCD显示esp32 cam发来的数据,Arduino IDE串口监视器显示来自8051的数据。 以上只为测试8051与esp32 cam的串口通讯,并不完善。
上一篇:8051单片机(STC89C52)以轮询方式实现串口通信(51接收数据后发送回PC端)
下一篇:基于C8051F410的串口通信实验
推荐阅读最新更新时间:2024-11-20 11:58
设计资源 培训 开发板 精华推荐
- LT4275CIMS IEEE 802.3at (Type 2) 25.5W 受电设备的典型应用电路
- 第一块5532
- #第五届立创电子设计大赛#双色LED灯智能语音开关
- MICRF219 的典型应用:300MHz 至 450MHz ASK 接收器,不推荐使用 RSSI、自动轮询、位检查和静噪,新设计请参考 MICRF219A
- LT1634BIS8-1.25 微功率电压和电流基准的典型应用
- NCP1532GEVB:双路降压 DC-DC 转换器评估板
- 使用 Analog Devices 的 LTC4162IUFD-SADM 的参考设计
- 供电测试
- DC994A,在 10 引脚 MSOP 耐热增强型 MSE 封装中使用 LT3003 3 通道 LED 镇流器和 PWM 的演示板
- DC970A-A,使用 LTC3541EDD 高效率、500mA 同步降压加 300mA VLDO 稳压器的演示板