当前位置: 首页 > news >正文

【51单片机】让AI识别电路图,帮你进行编码(以51单片机为例)

让AI识别电路图,帮你进行编码(以51单片机为例)

​ 这里使用的AI大模型使用的是 Copilot。(两个前提:1. 科学上网、2. 有微软账号

image-20240814103544701

今天测试了一下Copilot识别图片的能力,能力还是可圈可点的。

首先准备一张电路图

注意以下两点:

  1. 图片不能太大

​ 太大上传不了,尽量不大于1MB

  1. 图片不能太模糊

    ​ 不要使用截图保存的方式把电路图放在本地,请使用PDF导出图片的方式。注意导出的时候选择合适清晰度的导出,满足第一点的同时还要满足你放大后你用肉眼能识别每个引脚的标号

至少像这张图一样的清晰度,下面这张图上传CSDN可能会被吃像素,真正的清晰度请点击链接查看

HC6800-ES

上传电路图

image-20240814111627268

点击这个按钮就可以.

上传电路图后,追加一些信息。以及你的目的。

提问方式

  1. 简要介绍一下你的这张图片是什么。
  2. 你要让AI做什么(你的目的)
  3. 向AI介绍你的环境,以及约束条件。例如你使用的是Keil(环境),使用C语言编写程序(约束条件)
  4. 功能点1……
  5. 功能点2……
  6. ……

最终效果

image-20240814112502039

​ 因为它有联系上下文对话的能力,所以一开始我是先让看图,然后问一下比较简单的问题。然后我让他完成了流水灯的功能,这是他给出的程序.

#include <reg52.h>  // 包含8051单片机的寄存器定义void delay(unsigned int time);  // 延时函数声明void main() {unsigned char i;while (1) {for (i = 0; i < 8; i++) {P2 = ~(0x01 << i);  // 依次点亮P2口的LEDdelay(50000);  // 调用延时函数}}
}void delay(unsigned int time) {unsigned int i, j;for (i = 0; i < time; i++)for (j = 0; j < 100; j++);
}

我具体没有去运行,参照电路图,再看看程序应该没有什么问题,身边有开发板的同学帮我测试一下~

这是我让他实现的第二个功能: 在按下独立按键K1时,数码管的第一位显示1;按下K2时,显示2,并且包含按键消抖功能。

#include <reg52.h>  // 包含8051单片机的寄存器定义sbit K1 = P3^0;  // 定义K1按键连接在P3.0
sbit K2 = P3^1;  // 定义K2按键连接在P3.1
sbit SEG_A = P2^0;  // 数码管段选引脚
sbit SEG_B = P2^1;
sbit SEG_C = P2^2;
sbit SEG_D = P2^3;
sbit SEG_E = P2^4;
sbit SEG_F = P2^5;
sbit SEG_G = P2^6;
sbit SEG_DP = P2^7;  // 数码管小数点引脚void delay(unsigned int time);  // 延时函数声明
void displayDigit(unsigned char digit);  // 数码管显示函数声明
unsigned char debounceKey(sbit key);  // 按键消抖函数声明void main() {while (1) {if (debounceKey(K1) == 0) {  // 如果按下K1displayDigit(1);  // 显示数字1} else if (debounceKey(K2) == 0) {  // 如果按下K2displayDigit(2);  // 显示数字2}}
}void delay(unsigned int time) {unsigned int i, j;for (i = 0; i < time; i++)for (j = 0; j < 120; j++);
}void displayDigit(unsigned char digit) {switch (digit) {case 1:P2 = 0xF9;  // 数码管显示1的段码break;case 2:P2 = 0xA4;  // 数码管显示2的段码break;default:P2 = 0xFF;  // 关闭数码管break;}
}unsigned char debounceKey(sbit key) {if (key == 0) {  // 检测按键是否按下delay(20);  // 延时20ms进行消抖if (key == 0) {  // 再次检测按键是否按下while (key == 0);  // 等待按键释放return 0;  // 按键按下}}return 1;  // 按键未按下
}

基本上思路就是这样, 通过ai我们可以节省大量的时间.

​ 其实不只是Copilot,ChatGPT-4o和Claude也可上传图片,甚至是pdf,表格之类的文档,输入的功能更加强大,只不过各有各的优缺点。

比如,ChatGPT-4o的使用有限制,Claude需要的网络环境比较纯净才行,否则容易封号,且账号注册相较于前两者是最难注册的。


http://www.mrgr.cn/news/1588.html

相关文章:

  • 使用nginx作为minio等图片、视频鉴权媒介
  • 8.19Qt作业
  • Leetcode 70.爬楼梯
  • 安泰ATA-7015高压放大器在机器人测试中的应用研究
  • k8s 安装nacos集群
  • 微服务通过nacos实现动态路由
  • Go更换国内源配置环境变量
  • Baumer工业相机堡盟工业相机如何通过BGAPISDK初始化时过滤其它非Baumer相机(C#)
  • 鸿萌数据恢复服务:SQL Server 中的“PFS 可用空间信息不正确”错误
  • 网络安全实训第五天(主机系统渗透)
  • DAX(Data Analysis Expressions)数据建模底层原理是什么?BI分析工具的底层及应用场景的分析
  • 节省IO的小技巧:GD32 MCU如何使用一个GPIO实现串口半双工收发
  • Vue 3中deep属性的深度解析:ref与reactive的不同表现
  • Golang | Leetcode Golang题解之第352题将数据流变为多个不相交区间
  • 16:【stm32】I2C的使用一:I2C片上外设的使用
  • 记录一次edu web端渗透测试实录
  • C#与其它编程语言有什么区别,以及相关优势有哪些
  • Windows禁止应用联网
  • Awesome-Chinese-LLM:收集和梳理中文LLM相关的开源模型、应用、数据集及教程等资料
  • Android about event log