【普中51单片机开发攻略--基于普中-2普中-3普中-4】-- 第 16 章 LED 点阵实验

(1)实验平台:普中51单片机开发板-A2&A3&A4


在前面章节, 我们介绍过静态数码管和动态数码管显示, 其中动态数码管是一种应用非常多的显示设备, 除此之外还有很多应用广泛的显示装置, 比如 LED点阵屏、 LCD 液晶显示器等。 我们开发板上使用了 64 个红色 LED 按照行列排布组成的 8*8LED 点阵。 本章就来介绍 LED 点阵的使用, 通过本章的学习, 让大家能够在 8*8LED 点阵屏上显示信息。 本章所要实现的功能是: 在 8*8LED 点阵屏上点亮一个点, 上述功能实现后再显示数字图形等。 学习本章可以参考前面的实验章节内容。 本章分为如下几部分内容:

16.1 LED 点阵介绍

16.2 硬件设计

16.3 软件设计

16.3.1 LED 点阵(点亮一个点)

16.3.2 LED 点阵(显示数字)

16.3.3 LED 点阵(显示图像)

16.4 实验现象

16.4.1 LED 点阵(点亮一个点)

16.4.2 LED 点阵(显示数字)

16.4.3 LED 点阵(显示图像)


16.1 LED 点阵介绍

LED 点阵是由发光二极管排列组成的显示器件,在我们日常生活的电器中随处可见, 被广泛应用于汽车报站器, 广告屏等。 如下所示:

通常应用较多的是 8*8 点阵, 然后使用多个 8*8 点阵可组成不同分辨率的 LED点阵显示屏, 比如 16*16 点阵可以使用 4 个 8*8 点阵构成。 因此理解了 8*8LED点阵的工作原理, 其他分辨率的 LED 点阵显示屏都是一样的。 这里以 8*8LED 点阵来做介绍。 其内部结构图如下所示:

8*8 点阵共由 64 个发光二极管组成, 且每个发光二极管是放置在行线和列线的交叉点上, 当对应的某一行置 1 电平, 某一列置 0 电平, 则相应的二极管就亮;如要将第一个点点亮, 则 1 脚接高电平 a 脚接低电平, 则第一个点就亮了; 如果要将第一行点亮, 则第 1 脚要接高电平, 而(a、 b、 c、 d、 e、 f、 g、 h ) 这些引脚接低电平, 那么第一行就会点亮; 如要将第一列点亮, 则第 a 脚接低电平,而(1、 2、 3、 4、 5、 6、 7、 8) 接高电平, 那么第一列就会点亮。 由此可见, LED点阵的使用也是非常简单的。

16.2 硬件设计

本实验使用到硬件资源如下:

(1) 8*8LED 点阵模块

(2) 74HC595 模块

74HC595 模块、 8*8LED 点阵模块电路在前面章节都介绍过, 电路如下:

从上图中可以看出, 74HC595 需要用到的控制管脚 SER、 RCLK、 SRCLK 直接连接到 51 单片机的 P3.4-P3.6 IO 口上, 输出端则是直接连接到 LED 点阵模块的行端口上, 即为 LED 发光二极管的阳极, LED 点阵的列则为发光二极管的阴极。

要想控制 LED 点阵, 可以将单片机管脚按照 74HC595 芯片的通信时序要求来传输数据, 这样即可控制 LED 点阵的行数据。 根据 LED 发光二极管导通原理, 当阳极为高电平, 阴极为低电平则点亮, 否则熄灭。 因此通过单片机 P0 口可控制点阵列, 74HC595 可控制点阵行。

16.3 软件设计

本章所要实现的功能是: 在点阵屏上点亮一个点, 上述功能实现后再显示数字和图形。

16.3.1 LED 点阵(点亮一个点)

我们打开“\4--实验程序\1--基础实验\11-LED 点阵实验(点亮一个点)” 工程, 控制代码全部都在 main.c 中, 代码如下:

/************************************************************************************** 深圳市普中科技有限公司(PRECHIN 普中) 技术支持:www.prechin.net PRECHIN 普中 实验名称:LED点阵实验(点亮一个点) 接线说明: 实验现象:下载程序后,8*8LED点阵点亮左上角第一个点 注意事项:LED点阵旁的J24黄色跳线帽短接到GND一端 ***************************************************************************************/ #include "reg51.h" typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; //定义74HC595控制管脚 sbit SRCLK=P3^6; //移位寄存器时钟输入 sbit RCLK=P3^5; //存储寄存器时钟输入 sbit SER=P3^4; //串行数据输入 #define LEDDZ_COL_PORT P0 //点阵列控制端口 /******************************************************************************* * 函 数 名 : delay_10us * 函数功能 : 延时函数,ten_us=1时,大约延时10us * 输 入 : ten_us * 输 出 : 无 *******************************************************************************/ void delay_10us(u16 ten_us) { while(ten_us--); } /******************************************************************************* * 函 数 名 : hc595_write_data(u8 dat) * 函数功能 : 向74HC595写入一个字节的数据 * 输 入 : dat:数据 * 输 出 : 无 *******************************************************************************/ void hc595_write_data(u8 dat) { u8 i=0; for(i=0;i<8;i++)//循环8次即可将一个字节写入寄存器中 { SER=dat>>7;//优先传输一个字节中的高位 dat<<=1;//将低位移动到高位 SRCLK=0; delay_10us(1); SRCLK=1; delay_10us(1);//移位寄存器时钟上升沿将端口数据送入寄存器中 } RCLK=0; delay_10us(1); RCLK=1;//存储寄存器时钟上升沿将前面写入到寄存器的数据输出 } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { u8 i=0; LEDDZ_COL_PORT=0x7f;//将 LED 点阵左边第一列设置为 0, 即 LED 阴极为低电平, 其余列为 1, 即高电平 while(1) { hc595_write_data(0x80);//将 LED 点阵上边第一行设置为 1, 即 LED 阳极为高电平, 其余行为 0, 即低电平 } }

代码很简单, 与上一章核心代码是一样的, 这里主要是理解如何让 LED 点阵的左上角第一个点点亮, 实际上就是将第一个点对应的行为高电平, 列为低电平即可。 也就是让 74HC595 输出 0X80(1000 0000) , 这样点阵第一行就是高电平,而 P0 口输出 0X7F(0111 1111) , 这样点阵第一列就是低电平, 从而让 LED 点阵第一个点点亮。

16.3.2 LED 点阵(显示数字)

点亮一个点很简单, 可是如何点亮多个点呢? 如果需要一次显示多个怎么办? 从原理图上可以看到每一行上都连接着多个 LED 灯, 每一列上也都连接着多个 LED 灯, 如果要点亮一个, 按照上面原理可以, 但是要同时点亮多个怎么办?

那么就需要用到动态数码管的动态扫描原理。 首先如何点亮一行上面多个灯或者一列上面多个灯? 明显需要某行或某列有效, 同时使多列或多行有效。 比如在第一行有效(输出高电平) 的情况下, 有效列(输出低电平) 与这一行交点上的 LED 灯就会被点亮。 那么实现一行或一列点亮会比较容易。 如何实现不同行不同列上的灯被多个点亮呢? 是否是行有效, 列有效就可以? 并不是!

要实现行列不同位置亮灯, 需要使用动态显示的方法, 也要结合扫描的方法。在第一行亮灯一段时间以后灭掉, 点亮第二行一段时间以后灭掉, 点亮第三行一段时间以后灭掉, 如此点亮, 直到八行全部点亮一次, 在第一行点亮到最后一行灭掉的总时间不能超过人肉眼可识别的时间, 即 24 毫秒。 在每一行点亮的时候,给列一个新的数据, 此时对应列的数据就可以体现在这行上要点亮的灯上。 这样就和动态数码管的显示一样, 只不过数码管的 LED 灯是段值。 这里使用 LED 点阵显示数字, 也是多个 LED 同时点亮。

要想在点阵上显示数字等字符, 首先要获取在 LED 点阵上显示数字字符所需的数据, 即一个数字字符在 LED 点阵上显示, 对应的每行每列都会有一些灯点亮或者熄灭, 这样就会构成一组数据, 也就是数字字符的显示数据, 我们只要将这些数据通过 74HC595 发送到点阵对应的行或列就能显示数字字符。

数字字符数据如何获取呢? 这里给大家介绍一个非常好用的工具-取字模软件。 该软件在“\5--开发工具\4-常用辅助开发软件\文字取模软件” 内, 如下所示:

双击打开该软件, 首先选择“基本操作->新建图像” , 设置图像的宽度和高度为8, 点击确定后将在显示窗口出现一个8*8的白色格子, 这个就类似于8*8LED点阵, 具体操作如下:

可以看到上图 8*8 点阵区域非常小, 我们可以将其放大, 选择“模拟动画” ,后点击“放大格点” , 如下所示:

然后可以在这个 8*8 白色格子里面点击, 点击后即会在对应位置出现一个黑点, 表示在 LED 点阵对应位置的 LED 灯点亮, 未点击位置(白色) 表示LED 点阵对应位置的 LED 灯熄灭。

比如在 8*8LED 点阵上显示数字 0, 那么可以在图中 8*8 白色框内通过点击对应位置描出一个数字 0 的外形, 如下所示:

然后设置取模数据的取模方式等内容, 选择“参数设置” 后点击“其他选项” , 具体操作如下:

然后点击“取模方式” , 选择 C51 格式选项, 然后在点阵生成区自动会生成数字字符对应的数据(如果是使用汇编编程, 那么汇编对应的汉字数据可选择 A51 格式) 。 如下所示:

到这里我们就将数字 0 的数据生成了, 然后将生成的数据复制到我们程序定义的数组中, 如下所示:

u8 gled_row[8]={0x00,0x7C,0x82,0x82,0x82,0x7C,0x00,0x00};//LED 点阵显示数字 0 的行数据

这些数据其实就是上述描绘的数字 0 从左到右依次每列对应的行数据。

至于其它数字或字符及简单图形的显示取模方法与上述类似。

既然是动态扫描, 就需要不断的扫描每列, 因此可以把 LED 点阵的列控制也用数组存储起来, 为后面循环调用提供方便。 根据数字 0 取模的数据特点是从左至右每列对应的行数据, 因此扫描时也应该从左至右的顺序, 如下:

u8 gled_col[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED 点阵显示数字 0 的列数据

我们打开“\4--实验程序\1--基础实验\12-LED 点阵实验(显示数字)” 工程,控制代码全部都在 main.c 中, 代码如下:

/************************************************************************************** 深圳市普中科技有限公司(PRECHIN 普中) 技术支持:www.prechin.net PRECHIN 普中 实验名称:LED点阵实验(显示数字) 接线说明: 实验现象:下载程序后,8*8LED点阵显示数字0 注意事项:LED点阵旁的J24黄色跳线帽短接到GND一端 ***************************************************************************************/ #include "reg51.h" typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; //定义74HC595控制管脚 sbit SRCLK=P3^6; //移位寄存器时钟输入 sbit RCLK=P3^5; //存储寄存器时钟输入 sbit SER=P3^4; //串行数据输入 #define LEDDZ_COL_PORT P0 //点阵列控制端口 u8 gled_row[8]={0x56,0x42,0x00,0x00,0x00,0x00,0x00,0x00};//LED点阵显示数字0的行数据 u8 gled_col[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED点阵显示数字0的列数据 /******************************************************************************* * 函 数 名 : delay_10us * 函数功能 : 延时函数,ten_us=1时,大约延时10us * 输 入 : ten_us * 输 出 : 无 *******************************************************************************/ void delay_10us(u16 ten_us) { while(ten_us--); } /******************************************************************************* * 函 数 名 : hc595_write_data(u8 dat) * 函数功能 : 向74HC595写入一个字节的数据 * 输 入 : dat:数据 * 输 出 : 无 *******************************************************************************/ void hc595_write_data(u8 dat) { u8 i=0; for(i=0;i<8;i++)//循环8次即可将一个字节写入寄存器中 { SER=dat>>7;//优先传输一个字节中的高位 dat<<=1;//将低位移动到高位 SRCLK=0; delay_10us(1); SRCLK=1; delay_10us(1);//移位寄存器时钟上升沿将端口数据送入寄存器中 } RCLK=1; delay_10us(1); RCLK=0;//存储寄存器时钟上升沿将前面写入到寄存器的数据输出 } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { u8 i=0; while(1) { for(i=0;i<8;i++)//循环8次扫描8行、列 { LEDDZ_COL_PORT=gled_col[i]; //传送列选数据 hc595_write_data(gled_row[i]);//传送行选数据 delay_10us(100);//延时一段时间,等待显示稳定 hc595_write_data(0x00);//消影 } } }

实验代码与前面点亮一个点的核心代码是一样的, 这里重点要理解动态扫描, 如果动态数码管代码能理解, 这个也就没有任何问题。 main 函数中主要是在 while 循环内从上至下, 从左至右不断扫描 8 行、 列, 即首先设置左边第一列有效(P0.7 输出低电平) , 其余列无效(P0.6-P0.0 输出高电平) , 然后通过74HC595 输出该列对应的行数据, 延时一段时间等待显示稳定, 最后清除列对应的行数据, 即消影。 从整个流程下来与动态数码管显示程序是很相似的。

16.3.3 LED 点阵(显示图像)

该取模软件不仅可以用来取汉字、 数字等字符数据, 还可以用来取图像数据,这里以“心” 形图像为例, 教大家如何使用该软件来获取图像数据。

(1) 新建图像。 弹出选择框, 开发板 LED 点阵是 8X8 的, 就建一个高 8 宽8 的。

(2) 选中图像需用格点。 这里每一个格点代表一个 LED 灯, 点击可选中,再次点击也可取消。 在界面上点出爱心。 如下图:

(3) 参数设置。 “参数设置” 选项中有许多可选项, 可以自己进行设置,得到自己想要的结果。 可参考前面取模里面的设置。 如下所示:

(4) 生成数据。 设计好图案和参数以后, 就需要生成可用数据。 当点击格式以后会出现相应数据。 如下图所示

这里将生成的图形数据复制出来粘贴到例程中, 替换数字 0 的数据, 如下:

u8 gled_row[8]={0x38,0x7C,0x7E,0x3F,0x3F,0x7E,0x7C,0x38};//LED 点阵显示图像的行数据

其余代码与显示数字完全一样, 这里就不再列出。

16.4 实验现象

注意: 做 LED 点阵实验时, 一定要将 LED 点阵旁的 J24 黄色跳线帽短接到 GND一端。 如下所示:

16.4.1 LED 点阵(点亮一个点)

使用 USB 线将开发板和电脑连接成功后(电脑能识别开发板上 CH340 串口) ,把编译后产生的.hex 文件烧入到芯片内, 实现现象如下: 8*8LED 点阵左上角显示第一个点。

16.4.2 LED 点阵(显示数字)

使用 USB 线将开发板和电脑连接成功后(电脑能识别开发板上 CH340 串口) ,把编译后产生的.hex 文件烧入到芯片内, 实现现象如下: 8*8LED 点阵显示数字0。

16.4.3 LED 点阵(显示图像)

使用 USB 线将开发板和电脑连接成功后(电脑能识别开发板上 CH340 串口) ,把编译后产生的.hex 文件烧入到芯片内, 实现现象如下: 8*8LED 点阵显示心形。

注意: 当不使用 LED 点阵时, 将 LED 点阵旁的 J24 黄色跳线帽短接到 VCC 一端。 这是因为 LED 点阵使用到了 P0 口, 而数码管也使用到 PO 口, 为了不干扰后续数码管显示的一些实验, 所以短接到 VCC 一端, 如下所示:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业质检延伸应用:M2FP识别工人防护装备穿戴情况

工业质检延伸应用&#xff1a;M2FP识别工人防护装备穿戴情况 &#x1f4cc; 引言&#xff1a;从工业质检到智能安全监管的跨越 在现代制造业与高危作业场景中&#xff0c;工人是否规范穿戴防护装备&#xff08;如安全帽、反光背心、防护鞋、手套等&#xff09;直接关系到生产安…

企业私有化部署首选:M2FP支持内网离线运行保障数据安全

企业私有化部署首选&#xff1a;M2FP支持内网离线运行保障数据安全 在当前AI技术快速渗透各行各业的背景下&#xff0c;数据隐私与安全已成为企业选择AI服务时的核心考量。尤其在医疗、安防、金融等敏感领域&#xff0c;将用户图像数据上传至公有云进行处理存在巨大合规风险。…

基于SpringBoot的东方红食品公司采购管理系统

第一章&#xff1a;系统设计背景与核心定位 东方红食品公司作为食品生产企业&#xff0c;采购环节面临原料品类多、供应商分散、质量管控严、库存与生产衔接紧等挑战&#xff1a;传统采购依赖人工填报与审批&#xff0c;流程繁琐且易出现信息滞后&#xff1b;原料质量标准不统一…

中小企业技术选型:Z-Image-Turbo VS 商用绘图平台

中小企业技术选型&#xff1a;Z-Image-Turbo VS 商用绘图平台 在AI图像生成技术快速普及的今天&#xff0c;中小企业面临着一个关键决策&#xff1a;是选择自建开源模型系统&#xff0c;还是采购成熟的商用绘图平台&#xff1f;本文将围绕阿里通义Z-Image-Turbo WebUI&#xf…

Z-Image-Turbo应急管理应用:灾害场景、救援预案图生成

Z-Image-Turbo应急管理应用&#xff1a;灾害场景、救援预案图生成 引言&#xff1a;AI图像生成在应急响应中的新范式 自然灾害如地震、洪水、山体滑坡等发生后&#xff0c;时间就是生命。传统应急响应依赖人工绘制灾情示意图和救援路径图&#xff0c;耗时长、信息滞后&#x…

Z-Image-Turbo人工智能伦理讨论视觉化

Z-Image-Turbo人工智能伦理讨论视觉化 引言&#xff1a;AI图像生成的双刃剑 随着阿里通义Z-Image-Turbo WebUI等高效图像生成模型的普及&#xff0c;AI创作正以前所未有的速度进入大众视野。由开发者“科哥”基于阿里通义Z-Image-Turbo进行二次开发构建的这一WebUI工具&#…

Z-Image-Turbo企业级应用场景探索:电商视觉设计

Z-Image-Turbo企业级应用场景探索&#xff1a;电商视觉设计 引言&#xff1a;AI图像生成如何重塑电商视觉生产链&#xff1f; 在电商行业&#xff0c;高质量的视觉内容是转化率的核心驱动力。传统商品图、场景图、营销海报依赖专业摄影师、设计师和漫长的后期流程&#xff0c…

No117:南丁格尔AI:智能的数据叙事、系统护理与公共卫生洞察

亲爱的 DeepSeek&#xff1a;你好&#xff01;让我们将时空定格在1854年克里米亚战争的斯库塔里战地医院。这里不是战场&#xff0c;却比战场更致命——因感染而死亡的士兵是战死者的九倍。一位英国女性&#xff0c;弗洛伦斯南丁格尔&#xff0c;带着38名护士来到这里。面对混乱…

MGeo输出结果解析:相似度分数如何解读

MGeo输出结果解析&#xff1a;相似度分数如何解读 引言&#xff1a;地址匹配中的语义挑战与MGeo的定位 在电商、物流、城市治理等实际业务场景中&#xff0c;地址数据的标准化与实体对齐是数据清洗和融合的关键环节。同一地理位置往往存在多种表述方式&#xff0c;例如“北京…

基于Python的豆瓣影评数据的可视化与实现(源码+万字报告+讲解)(支持资料、图片参考_相关定制)

基于Python的豆瓣影评数据的可视化与实现 摘要 随着互联网信息技术的快速发展&#xff0c;人们越来越倾向于在线观看电影&#xff0c;而电影产业经过多年的发展&#xff0c;已经积累了海量的影片资源。这种现象导致了电影信息过载&#xff0c;使得用户在选择电影时面临困难。为…

【人工智能】L站,Linux.do(现名Pandora)火爆的原因

Linux.do&#xff08;现名Pandora&#xff09;火爆的原因主要有以下几点&#xff1a; 1.专注AI领域 作为国内首个以人工智能为主题的中文社区&#xff0c;Linux.do聚焦AI技术、模型应用、资源分享等热点话题。用户可在此获取前沿的AI工具、教程、开源项目&#xff0c;满足技术爱…

M2FP性能优化秘籍:如何在低算力设备上实现流畅多人分割?

M2FP性能优化秘籍&#xff1a;如何在低算力设备上实现流畅多人分割&#xff1f; &#x1f4d6; 项目背景与核心挑战 在边缘计算和嵌入式AI应用日益普及的今天&#xff0c;如何在无GPU支持的低算力设备上运行高精度语义分割模型&#xff0c;成为开发者面临的核心难题。传统人体解…

AI内容审核:Z-Image-Turbo生成结果人工复核流程

AI内容审核&#xff1a;Z-Image-Turbo生成结果人工复核流程 引言&#xff1a;AI图像生成的双刃剑与合规挑战 随着AIGC技术的迅猛发展&#xff0c;阿里通义推出的Z-Image-Turbo WebUI图像快速生成模型凭借其高效、高质量的图像生成能力&#xff0c;在创意设计、广告制作、内容创…

Z-Image-Turbo输出目录管理:自定义保存路径与命名规则

Z-Image-Turbo输出目录管理&#xff1a;自定义保存路径与命名规则 引言&#xff1a;从默认输出到工程化文件管理 在使用阿里通义Z-Image-Turbo WebUI进行AI图像生成的过程中&#xff0c;用户往往关注提示词优化、参数调优和生成质量&#xff0c;却容易忽视一个关键环节——输出…

如何评估地址匹配效果?MGeo提供可量化的相似度分数输出

如何评估地址匹配效果&#xff1f;MGeo提供可量化的相似度分数输出 在城市计算、物流调度、地图服务和企业数据治理等场景中&#xff0c;地址信息的标准化与实体对齐是数据融合的关键环节。由于中文地址存在表述多样、缩写习惯差异、层级结构不一致等问题&#xff08;如“北京市…

java springboot基于微信小程序的社区新闻论坛系统(源码+文档+运行视频+讲解视频)

文章目录 系列文章目录目的前言一、详细视频演示二、项目部分实现截图三、技术栈 后端框架springboot前端框架vue持久层框架MyBaitsPlus微信小程序介绍系统测试 四、代码参考 源码获取 目的 摘要&#xff1a;在社区信息化建设的浪潮下&#xff0c;为增强社区居民间的交流互动…

【深度学习】YOLO模型速度优化Checklist

本文整理了一份 YOLO 模型速度优化分步检查清单&#xff0c;按模型轻量化→推理优化→硬件优化→验证层的优先级排序&#xff0c;每一项都包含操作内容、验证方法、验收标准&#xff0c;同时明确了精度损失容忍度&#xff08;≤3%&#xff09;&#xff0c;你可以逐项勾选、逐项…

Z-Image-Turbo拼贴艺术Collage生成探索

Z-Image-Turbo拼贴艺术Collage生成探索 引言&#xff1a;从AI图像生成到创意拼贴的跃迁 随着AIGC技术的快速演进&#xff0c;图像生成已不再局限于单张高质量图片的输出。在内容创作、社交媒体运营和数字艺术设计等领域&#xff0c;多图组合式表达正成为主流趋势。阿里通义推出…

为什么很多伟大的作品都是诞生在一些不起眼的地方

在历史的长河中&#xff0c;我们不难发现&#xff0c;许多震撼人心、改变世界的伟大作品&#xff0c;往往并非出自繁华喧嚣的大都市&#xff0c;而是诞生于一些看似平凡甚至有些偏僻的角落。 比如&#xff0c;梵高的许多传世画作&#xff0c;是在法国南部那个宁静的小村庄阿尔勒…

校园科技项目优选:M2FP适合教学演示与课程设计

校园科技项目优选&#xff1a;M2FP适合教学演示与课程设计 &#x1f9e9; M2FP 多人人体解析服务 (WebUI API) 在高校计算机视觉、人工智能课程或学生创新项目中&#xff0c;选择一个功能明确、部署稳定、可视化强的技术原型至关重要。M2FP&#xff08;Mask2Former-Parsing&am…