上位机图像处理和嵌入式模块部署(mcu项目1:假设用51单片机实现)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        到目前位置,我们借助于qt和apm32 mcu芯片,实现了大多数功能。大家如果回过头来看,其实这些功能并不复杂。从固件的角度来看,主要就是实现了ad读取,并且根据配置条件,确认是否进行蜂鸣器的告警。而从上位机的角度来说,核心的功能就是查看当前ad的采样数值,另外一个功能就是对于阈值的设定和读取。

        上位机自不必说,一般都是pc或者是嵌入式linux完成的。如果从降成本的角度来说,用8051来实现apm32的相关功能也是完全可以的。

1、8051单片机

        8051单片机的内存不大,一般只有几百个字节,大的也只有几k空间。flash的话,一般也就几k到几十k空间。如果折算成代码行数的话,通常就是几百行到几千行代码。此外,频率一般也就是几十M,很少超过100M,所以实现的功能都比较单一。

2、开发方法

        8051的开发工具是keil-c51,和我们arm mcu开发的工具keil差不多。唯一不同的,keil-c51不需要安装单独的pack。最简单的工程可能就两个文件,一个汇编文件,一个main.c文件。

3、烧录方法

        一般8051芯片上面有一个串口是专门烧录的,比如stc的8051单片机STC89C52RC。我们借助于stc-isp这个烧录工具+com串口,就可以实现hex文件的烧录了。

4、调试方法

        不过比较遗憾的是,8051之前是没有办法进行单步调试的,如果需要调试的话,可能只能通过串口打印了。另外如果没有实物的话,可以通过Proteus这个软件来仿真也是不错的方法。

        另外一个我个人用的比较多的方法,就是借助于windows的vs工具,把一些和硬件底层无关的代码提前开发好,这样也能节省一部分时间。当然调试的方法,不仅依赖于软件,有的时候还需要万用表、示波器,所以这有赖于自己综合能力的提升。

5、8051一般有哪些外设

        基本的外设,8051其实都是包括在内的,只是8051 cpu的频率低了一点,所以给人一种低端的感觉。但是事实上只要和场景匹配,不管是用8051、还是arm mcu 或者dsp,其实无所谓的,能解决问题就好。通过,8051单片机里面,gpio、uart、timer、spi、iic、ad、pwm、watchdog这些基本的外设都是存在的。不同的8051单片机,差别一般体现在gpio个数、ram大小、flash大小和外设的个数上面。

        另外就算不存在的硬件接口,也可以通过gpio仿真出来,无非就是速率低一点而已。

6、8051上出现比较少的外设

        和mcu相比较,8051单片机一般没有can、usb、sdio、eth这些复杂一点的外设。因此,如果你的场景用到上面说的这些外设,最好还是选用arm mcu。更不要说图像处理这种对cpu要求较高的场景了。

7、8051独特的eeprom

        有一些8051芯片内部含有eeprom,可以保存一些配置数据,这在arm mcu里面是不多见的,比较新奇。

8、软件开发方法的差别

        虽然很多时候,8051单片机和arm mcu一样,都是1~2个人完成的,但是arm mcu明显能做的事情更多。比如,它可以添加rtos、可以添加lwip协议栈、可以填fatfs文件系统,甚至可以添加usb协议栈,这些都是8051没有办法做的,所以总的来说还是看场景、看需求。

9、独立、小巧的设备更适合8051

        简单来说,如果一个设备不需要和外界通讯,或者说即使通讯,也不需要很高的速率,那么8051无疑是最佳的开发平台。gpio负责输入输出、uart负责上位机通信、spi和iic负责和其他芯片通信、ad负责感知外界世界、pwm负责控制电机,即使自己做不了的事情,也是可以通过spi接口、iic接口、uart接口借助于第三方芯片来完成,本身还是非常非常棒的产品。

        记得读书的时候学习控制原理,里面提到了pid,当时不明白为甚要用8051单片机实现,现在想起来只能用两个字来形容,8051确实是“真香”。如果用不着linux soc,又不涉及can、usb、sdio和eth,那么8051还真的是非常理想的一个选择。

        大家可以试想一下这样的场景,玩具、测量工具、小家电、后装的车载电子、交通工具电子,是不是都可以用8051实现。

9、怎么入手

        买一个板子,再加一个usb转232串口,从点灯开始。其实也就是两杯瑞幸咖啡的事情。

#include <reg51.h>  // 包含51单片机的头文件

void delay(unsigned int ms) {
    unsigned int i, j;
    for (i = 0; i < ms; i++)
        for (j = 0; j < 123; j++);  // 简单的延时循环
}

void main() {
    while (1) {
        P1 = 0xFE;  // 0000 0001 点亮P1.0
        delay(500); // 延时500毫秒
        P1 = 0xFF;  // 1111 1111 熄灭P1.0
        delay(500); // 延时500毫秒
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/781780.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

现场Live震撼!OmAgent框架强势开源!行业应用已全面开花

第一个提出自动驾驶并进行研发的公司是Google&#xff0c;巧的是&#xff0c;它发布的Transformer模型也为今天的大模型发展奠定了基础。 自动驾驶已经完成从概念到现实的华丽转变&#xff0c;彻底重塑了传统驾车方式&#xff0c;而大模型行业正在经历的&#xff0c;恰如自动驾…

Canvas:掌握颜色线条与图像文字设置

想象一下&#xff0c;用几行代码就能创造出如此逼真的图像和动画&#xff0c;仿佛将艺术与科技完美融合&#xff0c;前端开发的Canvas技术正是这个数字化时代中最具魔力的一环&#xff0c;它不仅仅是网页的一部分&#xff0c;更是一个无限创意的画布&#xff0c;一个让你的想象…

计算云服务2

第二章 裸金属服务器 什么是裸金属服务器(BMS) 裸金属服务器(Bare Metal Server&#xff0c;BMS)是一款兼具虚拟机弹性和物理机性能的计算类服务为用户以及相关企业提供专属的云上物理服务器&#xff0c;为核心数据库、关键应用系统、高性能计算、大数据等业务提供卓越的计算…

PCIe 规范核心知识线介绍

0&#xff0c;总体Topology x86 处理器系统中 PCIe的拓扑结构&#xff1a; PCIe Switch的总体结构 1&#xff0c;PCIe 枚举 BIOS 负责枚举与分派配置设备的 BusID[7:0] : DeviceID[4:0] : FunctionID[2:0]; cpu先识别 Host-PCI-Bridge&#xff0c;其下是Bus0&#xff1b; 在…

Linux:DHCP服务配置

目录 一、DHCP概述以及DHCP的好处 1.1、概述 1.2、DHCP的好处 二、DHCP的模式与分配方式 2.1、模式 2.2、DHCP的分配方式 三、DHCP工作原理 四、安装DHCP服务 五、DHCP局部配置并且测试 5.1、subnet 网段声明 5.2、客户机预留指定的固定ip地址 一、DHCP概述以及DHCP…

在CentOS7云服务器下搭建MySQL网络服务详细教程

目录 0.说明 1.卸载不要的环境 1.1查看当前环境存在的服务mysql或者mariadb 1.2卸载不要的环境 1.2.1先关闭相关的服务 1.2.2查询曾经下载的安装包 1.2.3卸载安装包 1.2.4检查是否卸载干净 2.配置MySQLyum源 2.1获取mysql关外yum源 2.2 查看当前系统结合系统配置yum…

EN-SLAM:Implicit Event-RGBD Neural SLAM解读

论文路径&#xff1a;https://arxiv.org/pdf/2311.11013.pdf 目录 1 论文背景 2 论文概述 2.1 神经辐射场&#xff08;NeRF&#xff09; 2.2 事件相机&#xff08;Event Camera&#xff09; 2.3 事件时间聚合优化策略&#xff08;ETA&#xff09; 2.4 可微分的CRF渲染技术…

最新版Python安装教程

一、安装Python 1.下载Python 访问Python官网&#xff1a; https:/www.oython.orgl 点击downloads按钮&#xff0c;在下拉框中选择系统类型(windows/Mac OS./Linux等) 选择下载最新稳定版本的Python 以下内容以演示安装Windows操作系统64位的python 左边是稳定发布版本Stabl…

芯片封装简介

1、背景 所谓“封装技术”是一种将集成电路用绝缘的塑料或陶瓷材料打包的技术。以CPU为例&#xff0c;实际看到的体积和外观并不是真正的CPU内核的大小和面貌&#xff0c;而是CPU内核等元件经过封装后的产品。封装技术对于芯片来说是必须的&#xff0c;也是至关重要的。因为芯片…

LLM4Decompile——专门用于反编译的大规模语言模型

概述 论文地址&#xff1a;https://arxiv.org/abs/2403.05286 反编译是一种将已编译的机器语言或字节码转换回原始高级编程语言的技术。该技术用于分析软件的内部工作原理&#xff0c;尤其是在没有源代码的情况下&#xff1b;Ghidra 和 IDA Pro 等专用工具已经开发出来&#…

灵活视图变换器:为扩散模型设计的革新图像生成架构

在自然界中&#xff0c;图像的分辨率是无限的&#xff0c;而现有的图像生成模型在跨任意分辨率泛化方面存在困难。虽然扩散变换器&#xff08;DiT&#xff09;在特定分辨率范围内表现出色&#xff0c;但在处理不同分辨率的图像时却力不从心。为了克服这一限制&#xff0c;来自上…

java 栅栏(CyclicBarrier)

Java中的栅栏&#xff08;CyclicBarrier&#xff09;是一种用于协调多个线程并发工作的同步辅助类。与CountDownLatch不同&#xff0c;CyclicBarrier允许一组线程相互等待&#xff0c;直到所有线程都到达一个共同的屏障点&#xff08;barrier&#xff09;后&#xff0c;才继续执…

【qt】TCP 服务端怎么收到信息?

上一节,我已经讲了,TCP的监听,是基于上一节的,不知道的可以看看. 当我们的TCP 服务器 有 客户端请求连接的时候,会发出一个信号newConnection(). 在TCP服务端与客户端的通信中,我们需要使用到套接字 QTcpSocket类. 套接字相当于是网络通信的接口,服务段和客户端都要通过它进行通…

聚焦大模型应用落地,2024全球数字经济大会人工智能专题论坛在京举办

7月1日下午&#xff0c;2024全球数字经济大会人工智能专题论坛在中关村国家自主创新示范区会议中心举办。论坛紧扣大模型应用落地这一热点&#xff0c;以“应用即未来——大模型赋能千行百业&#xff0c;新生态拥抱产业未来”为主题&#xff0c;备受社会各界关注。 一、北京已…

STM32点灯闪烁

stm32c8t6引脚图 开发板引脚图 GPIO端口的每个位可以由软件分别配置成 多种模式。 ─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能 配置GPIO端口步骤&#xff1a;开启时钟->使用结构体设置输出模式…

LabVIEW从测试曲线中提取特征值

在LabVIEW中开发用于从测试曲线中提取特征值的功能时&#xff0c;可以考虑以下几点&#xff1a; 数据采集与处理&#xff1a; 确保你能够有效地采集和处理测试曲线数据。这可能涉及使用DAQ模块或其他数据采集设备来获取曲线数据&#xff0c;并在LabVIEW中进行处理和分析。 特…

吉时利KEITHLEY KI-488驱动和说明

吉时利KEITHLEY KI-488驱动和说明

D1.排序

1.快速排序 双指针 采用分治的思想&#xff0c;基于一个数作为标准&#xff0c;进行分治 步骤&#xff1a; 确定分界点的值。x q[l]、q[(lr)/2]、q[r]、随机 都可以&#xff1b;划分区间&#xff1a;使得小于等于x的数放在数组的左边&#xff1b;大于等于x的数放在数组的右边…

系统级别的原生弹窗窗口

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>原生的弹出窗口dialog</title><style>…

C语言指针函数指针

跟着这篇文章重新理解了一下&#xff1a;彻底攻克C语言指针 有一个例子感觉可以拿出来看看&#xff1a; char *(*c[10])(int **p); * 这段声明定义了一个长度为10的数组c&#xff0c;数组中的每个元素都是指向函数的指针。每个函数接受一个类型为int **&#xff08;指向指向…