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

百色彭于晏 2024-09-11 14:31:02 阅读 92

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

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

image-20240814103544701

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

首先准备一张电路图

注意以下两点:

图片不能太大

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

图片不能太模糊

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

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

HC6800-ES

上传电路图

image-20240814111627268

点击这个按钮就可以.

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

提问方式

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

最终效果

image-20240814112502039

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

<code>#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口的LED

delay(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) { // 如果按下K1

displayDigit(1); // 显示数字1

} else if (debounceKey(K2) == 0) { // 如果按下K2

displayDigit(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需要的网络环境比较纯净才行,否则容易封号,且账号注册相较于前两者是最难注册的。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。