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

server/2024/9/20 4:02:08/ 标签: 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.ppmy.cn/server/102060.html

相关文章

C语言日常练习 Day17

目录 一、找出一个二维数组的鞍点 二、有一篇文章&#xff0c;共有3行文字&#xff0c;每行有80个字符。要求分别统计出其中的英文大写字母、小写字母、数字、空格以及其他字符的个数 三、有一行电文&#xff0c;已按下面规律编译成密码&#xff1a;A->Z,a->z,B->Y,…

wordpress视频模板

视频背景wordpress官网主题 红色风格的wordpress主题&#xff0c;首页视频背景&#xff0c;鼠标滚动翻转展示内容&#xff0c;适合公司官网使用。 https://www.jianzhanpress.com/?p7288 MCN传媒wordpress主题 红色风格wordpress大视频背景主题&#xff0c;适合做直播业务的…

【Harmony OS 4.0】水果排行榜案例

ets/example2/Models export class FruitsData {id: stringname: stringvote: stringconstructor(id: string, name: string, vote: string) {this.id idthis.name namethis.vote vote} }ets/example2/TitleComponent // app标题子组件 import APPContext from ohos.app.a…

【ARM 芯片 安全与攻击 5.4 -- Meltdown 攻击与防御介绍】

文章目录 什么是 Meltdown 攻击?Meltdown 攻击的基本原理Meltdown 攻击代码示例Meltdown 攻击在芯片中的应用应用场景Meltdown 攻击与瞬态攻击、测信道攻击的关系针对 Meltdown 攻击的防御硬件级防御Summary什么是 Meltdown 攻击? Meltdown 攻击是一种利用处理器乱序执行(o…

【网络编程】组播的实现(C语言,linux,Ubuntu)

组播 1> 组播也是实现一对多的通信方式&#xff0c;对于广播而言&#xff0c;网络需要对每个消息进行复制转发&#xff0c;会占用大量的带宽&#xff0c;导致网络拥塞 2> 组播可以实现小范围的数据传播&#xff1a;将需要接收数据的接收端加入多播组&#xff0c;发送端…

Linux---05---用户组权限

课程回顾 vim编辑器 本章重点 文件权限 用户管理 用户组管理 一、文件权限 由于Linux是一个多人多任务的系统&#xff0c;因此经常会出现同一台机器同时有多个人进行操作&#xff0c;为了考虑每个人的隐私权以及每个人喜好的工作环境&#xff0c;所以文件的权限归属就至关…

50Kg大载重六旋翼无人机技术详解

50Kg大载重六旋翼无人机的机体结构设计是确保其高承载能力和飞行稳定性的基础。该机体通常采用轻质高强度的材料如碳纤维、铝合金或复合材料构建&#xff0c;以在保证结构强度的同时减轻整机重量。设计过程中&#xff0c;需考虑空气动力学原理&#xff0c;优化机臂布局、机身形…

Leetcode面试经典150题-189.轮转数组

解法都在代码里&#xff0c;不懂就留言或者私信 class Solution {public void rotate(int[] nums, int k) {/**向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]....向右轮转 7 步: [1,2,3,4,5,6,7] *//**既然反转数组的倍数是不需…

oracle使用sql生成表结构文档

oracle使用sql生成表结构文档 背景 客户要求数据资产盘点,需要提供相关表字段的说明文档&#xff0c;指定具体格式。手动是不可能手动的&#xff0c; 使用SQL实现。 要求 实现 生成脚本sql 查询所有非临时表 SELECT table_name FROM all_tables WHERE temporary N;--默认…

sp-eric靶机

端口扫描 靶机ip地址为192.168.7.46 目录扫描 访问80端口 拼接访问 /admin.php 发现登录框 测试sql注入&#xff0c;弱口令等&#xff0c;无结果 扫描目录发现了.git文件&#xff0c;存在源码泄漏 将其下载到kali上读取 python2 GitHack.py -u http://192.168.7.180/.git/…

深入探索CANoe的CAPL语言

概述 在汽车电子和嵌入式系统开发领域&#xff0c;仿真和测试是确保功能正确性和性能标准的关键步骤。Vector公司的CANoe软件是这一领域的佼佼者&#xff0c;它提供了一个强大的平台&#xff0c;用于模拟、测试和分析汽车网络&#xff0c;特别是CAN网络。今天&#xff0c;我们…

无人机电池详解!!!

娱乐型和玩具型无人机 这类无人机的电池容量通常较小&#xff0c;以满足短时间娱乐飞行的需求。电池容量范围一般在500mAh至3000mAh之间&#xff0c;轻便、易携带&#xff0c;适合初学者和休闲玩家。 航拍无人机 普通航拍无人机追求高续航能力&#xff0c;电池容量一般在500…

玩转单例模式

目录 1. 饿汉式 2. 懒汉式 3. volatile解决指令重排序 4. 反射破坏单例模式 5. 枚举创建单例模式 所谓单例模式&#xff0c;就是是某个类的实例对象只能被创建一次&#xff0c;单例模式两种实现&#xff1a;饿汉式和懒汉式。 1. 饿汉式 所谓饿汉式&#xff0c;顾名思义…

Lambda表达式与流式编程

一、Lambda表达式 1.1 什么是lambda表达式 Lambda表达式是 jdk1.8 引入的一个新特性&#xff0c;它是函数式编程在Java中的一种体现。也是1.8最值得学习的新特性。 1. Lambda表达式实际上就是匿名内部类的简化版本。 2. Lambda表达式是jdk1.8引入的一个最重要的新特性&…

VUE(一)——nextTick

DOM更新循环结束后执行延迟回调&#xff0c;在数据修改以后立即使用该方法可获取更新后的DOM。 &#xff08;*问题1&#xff09;DOM更新循环&#xff1f; VUE中使用异步执行DOM更新&#xff0c;在修改数据之后视图不会立即更新&#xff0c;而是等同一事件循环中的所有数据变化…

Java后端面试题(mq相关)(day9)

目录 为什么用MQ&#xff1f; 异步 、削峰、解耦1. 异步处理2. 解耦3. 削峰填谷 Exchange类型什么是死信队列&#xff1f;如何保证消息的可靠性&#xff1f;RabbitMQ中如何解决消息堆积问题?RabbitMQ中如何保证消息有序性?如何防止消息重复消费&#xff1f;(如何保证消息幂等…

ARM——体系结构

计算机体系结构&#xff1a;冯诺伊曼 哈佛 冯诺依曼结构 冯诺依曼结构&#xff0c;也称冯诺依曼模型或普林斯顿结构&#xff0c;是根据冯诺依曼提出的存储程序概念设计的计算机体系结构。其主要特点包括&#xff1a; 存储程序&#xff1a;指令与数据都…

嵌入式 | 嵌入式 Linux 系统使用摄像头

点击上方"蓝字"关注我们 01、引言 >>> 在嵌入式 Linux 系统使用摄像头 俗话说“眼见为实”,这或许是为什么近年来摄像头在嵌入式系统上快速增长的原因。它们被用于不同的场景,如: 远程监控:典型的例子是闭路电视,监控人员在监视环境(或许你所在的大楼…

web开发环境搭配与创建javaee项目

一.web开发 (1)web开发指的是前端,后端,以及数据库进行交互&#xff0c;前端发送请求到后端&#xff0c;后端经过程序处理后到达数据库&#xff0c;最后在进行后端处理响应回前端。 (2)一次三端交互的doget或者dopost简单请求流程 (3)web开发除了需要前端,后端,数据库开发工具…

C#垃圾处理机制相关笔记

C#编程中的垃圾处理机制主要通过垃圾回收器&#xff08;Garbage Collector&#xff0c;GC&#xff09;实现自动内存管理。C#作为一种托管语言&#xff0c;其垃圾处理机制显著减轻了程序员的内存管理负担&#xff0c;与C语言等非托管语言形成鲜明对比。具体介绍如下&#xff1a;…