8051与ESP32 CAM串行通讯

发布者:平和宁静最新更新时间:2022-04-13 来源: eefocus关键字:ESP32  CAM  串行通讯 手机看文章 扫描二维码
随时随地手机看文章

前面我们介绍了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      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();

    }

}

短接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的串口通讯,并不完善。

关键字:ESP32  CAM  串行通讯 引用地址:8051与ESP32 CAM串行通讯

上一篇:8051单片机(STC89C52)以轮询方式实现串口通信(51接收数据后发送回PC端)
下一篇:基于C8051F410的串口通信实验

推荐阅读最新更新时间:2024-11-20 11:58

as8051入门
汇编例子 MAIN: MOV R0, #16 MOV R1, #16 LOOP: MOV A, R1 MOV @R0,A MOV A,0x0 MOV A, @R0 MOV SBUF, A INC R0 INC R1 CJNE R0, #255 , LOOP NOP  数值有2种表示方式,16进制,0x78,10进制 #255都可以,在CJNE等语句中只允许10进制。 生成hex文件 run: as8051 -l -o -s xram.asm aslink xram
[单片机]
8051单片机-校验和
【例子】通过校验和的方式实现数据传输与控制,例如控制LED灯、蜂鸣器、发送数据到上位机。 由于是数据传输与控制,需要定制一个结构体、共用体方便数据识别,同时增强可读性。从数据帧格式定义中可以定义为“PKT_SUM_EX”类型。 识别数据请求什么操作可以通过以下手段来识别:识别数据头部1、数据头部2,操作码。当完全接收数据完毕后通过校验该数据得出的校验值与该数据的尾部的校验值是否匹配。 若匹配,则根据操作码的请求进行操作;若不匹配则丢弃当前数据帧,等待下一个数据帧的到来。 结构体定义: /*使用结构体对数据包进行封装 *方便操作数据 */ typedef struct _PKT_SUM { U
[单片机]
8051微控制器的基础知识
8051微控制器是嵌入式系统、消费电子、汽车等各个领域中最流行和最常用的微控制器之一,技术上称为Intel MCS-51架构。8051微控制器系列是由Intel公司在1980年开发,在80年代非常流行(当然现在也很流行)。 8051微控制器具有串行通信、定时器、中断等许多功能,因此许多大学生和初学者开始使用8051微控制器来研究微控制器的原理(尽管这种趋势似乎随着Arduino的引入而改变)。 现在看来,8051微控制器可能看起来有点过时,但小编认为,它是开始使用微控制器、嵌入式系统和编程(C语言和汇编)的最佳平台之一,而对于刚入门的朋友,好好研究8051微控制器是非常有必要的。 8051单片机介绍及历史 英特尔的80
[单片机]
<font color='red'>8051</font>微控制器的基础知识
C8051F单片机在远端测控装置中的应用
摘 要:本文介绍了C8051F系列单片机在远端测控装置中的应用,给出了整个系统的结构,包括硬件配置和系统网络构成,对一些技术问题也做出了详尽的说明。 关键词:C8051F ;远端测控;硬件配置 C8051F单片机是完全集成的混合信号系统芯片(SoC),具有与8051指令集完全兼容的CIP-51内核和高速、高性能、高集成度等特点。在本文设计的一套远端测控装置中取得了较好的效果。 系统简介 远端测控装置是一种现场可编程的控制器,它能完成数据的采集控制,而通过远程通信的方式(如电台、CDMA、拨号等)将数据上传至中心站或接收中心站的遥控指令。它往往被安装在比较分散、环境比较恶劣、无电源保障(经常断电或使用太阳能)且无人值守
[单片机]
8051单片机I/O口的工作原理
一、P0端口的结构及工作原理 P0端口8位中的一位结构图见下图: 由上图可见,P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。 下面,先分析组成P0口的各个部分: 先看输入缓冲器:在P0口中,有两个三态的缓冲器,在其的输出端可以是高电平、低电平,同时还有一种就是高阻状态(或称为禁止状态),上面一个是读锁存器的缓冲器,下面一个是读引脚的缓冲器,读取P0.X引脚上的数据,要使这个三态缓冲器有效,引脚上的数据才会传输到内部数据总线上。 D锁存器:在51单片机的32根I/O口线中都是用一个D触发器来构成锁存器的。D端是数据输入端,CP是控制端(也就是时序控制信号输入端),Q是输出端,Q非是
[单片机]
<font color='red'>8051</font>单片机I/O口的工作原理
8051单片机-波特率的研究
通常情况下,8051系列单片机外接晶振频率一般是12MHz、24MHz、48MHz如图7-6-1,为什么会这样选取呢?从前面的章节已经介绍8051系列单片机的每12个时钟周期为一个指令周期,当8051系列单片机外接12MHz晶振时,指令周期=12/12MHz=1us;若外接24MHz晶振时,指令周期=12/24MHz=0.5us;若外接48MHz晶振时,指令周期=12/48MHz=0.25us。8051系列单片机外接能够被除尽的晶振,在使用单片机内部的定时器/计数器资源时作定时器使用时能够得到精确定时应用;当使用汇编语言编程时,可以清楚知道当前每一行代码执行的时间。 8051系列单片机外接能够被除尽的晶振即12MHz、24MH
[单片机]
8051单片机中DPTR的扩展设计
   摘要 首先对比分析在执行大规模数据转移时,传统805l单片机和进行DPTR扩展后的805l单片机在数据转移执行效率上的差别。通过详细分析DPTR操作所涉及的因素,具体实现对DPTR的扩展,并进行实际仿真测试。   单片机的出现是计算机技术发展史上的一个里程碑,它使计算机从海量数值计算进入到控制领域。在单片机中,以8051系列最为经典,至今仍是最普及、广泛使用的8位MUC架构。北界许多技术人员在其基础上不断进行性能扩展,使得805l系列芯片不断完善,从而形成一个庞大的体系。在传统的8051系列单片机中,设置了一组双字节寄存器(数据指针DPTR),用于访问外接的64 KB数据存储器和I/O接口电路;但在现今的8051单片机应用
[单片机]
基于C8051F的磁流变控制器设计
前言 磁流变阻尼器(MRFD)的阻尼力调节主要依靠调节其内部励磁线圈电流的方式实现,一般通过控制器将外界控制端发出的控制信号转变为一定的输出电压(由线圈电阻大小决定)、电流(由线圈线径决定)输入励磁线圈。在工程控制过程中,磁流变阻尼器控制器的实时精确调节对阻尼器性能的影响很大。从设计原理来讲,MRFD控制器主要分成电压源控制器和电流源控制器两种。根据对励磁线圈的等效电路图分析可知电流源响应速度快于电压源。因此MPFD控制器的设计几乎都采用电流源控制方式。 MRFD控制器的性能指标有:磁流变阻尼器的控制电流与阻尼力的线性关系,要求控制电流连续可调并具有较高的线性度和较小的相对误差;振动控制的实时性要求控制器响应速度要快;用于现场
[工业控制]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved