基于51单片机的上位机图像处理与嵌入式模块部署(MCU项目1)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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文件的烧录了。烧录的时候选择好51类型、端口、hex文件之后,直接单击下载按钮,需要冷启动一下51开发板,这个时候就可以烧录成功了。

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 <reg52.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) {
        P3 = 0xFE;  // 0000 0001 ??P3.0
        delay(500); // ??500??
        P3 = 0xFF;  // 1111 1111 ??P3.0
        delay(500); // ??500??
    }
}

        这里没有使用P1,而是使用了P3,主要是因为3.0和3.1是程序的下载口,购买的51开发板上面有led灯,正好可以拿过来进行LED测试。

作者:嵌入式-老费

物联沃分享整理
物联沃-IOTWORD物联网 » 基于51单片机的上位机图像处理与嵌入式模块部署(MCU项目1)

发表评论