雅特力车规级MCU-AT32A403A开发板评测 06 GC9A01 SPI-LCD 1.28圆形屏幕

news2024/9/25 9:27:48

雅特力车规级MCU-AT32A403A开发板评测 06 GC9A01 SPI-LCD 1.28圆形屏幕

硬件平台

  1. AT32A403A Board开发板

  2. 1.28寸圆形彩色TFT显示屏高清IPS 模块240X240 SPI接口GC9A01

    在这里插入图片描述

产品介绍

推荐一个屏幕资料参考网站 http://www.lcdwiki.com/1.28inch_IPS_Module

在这里插入图片描述

  • 1.28寸圆形IPS彩屏,支持 RGB 65K色显示,显示色彩丰富
  • 240X240分辨率,显示清晰
  • IPS全视角面板,超宽可视范围
  • 采用4线制SPI串行总线,只需几个IO即可点亮
  • 提供丰富的Arduino、STM32、C51以及MSP430示例程序
  • 军工级工艺标准,长期稳定工作
  • 提供底层驱动技术支持

产品参数

名称参数
显示颜色RGB 65K 彩色
SKUMSP1281
尺寸1.28(inch)
面板材质TFT
驱动芯片GC9A01
分辨率240*240 (Pixel)
显示接口4-line SPI interface
有效显示区域(AA区)直径:32.40 (mm)
触摸屏类型无触摸屏
触摸IC无触摸IC
模块PCB底板尺寸38.03x45.80(mm)
视角全角度
工作温度-10℃~60℃
存储温度-20℃~70℃
工作电压3.3V

接口定义

序号模块引脚引脚说明
1GND液晶屏电源地
2VCC液晶屏电源正(3.3V/5V)
3SCL液晶屏SPI总线时钟信号
4SDA液晶屏SPI总线写数据信号
5RES液晶屏复位控制信号(低电平复位,模块有复位电路,该引脚可不接)
6DC液晶屏寄存器/数据选择控制信号(低电平:寄存器,高电平:数据)
7CS液晶屏片选控制信号(低电平使能)
8BLK液晶屏背光控制信号(高电平点亮,如不需要控制,请接3.3V)
模拟SPI移植LCD屏幕驱动
  1. 建立工程模板,添加相关驱动文件
 //lcd_gc9a01 硬件驱动层代码
 lcd_gc9a01.c
 lcd_gc9a01.h
 //lcd_gc9a01 软件应用层代码
 lcd_guic
 lcd_gui.h
 lcd_font.h
 //lcd_gc9a01 软件测试代码
 lcd_example.c
 lcd_example.h

在这里插入图片描述

  1. 配置引脚
    选择引脚,进入工程开始编写屏幕引脚初始化代码。为了方便后续移植,我在lcd_gc9a01.h处宏定义了每一个引脚,后续根据需要进行修改即可。
#define LCD_GPIO_PORT       GPIOD
#define LCD_GPIO_PORT_CLK   CRM_GPIOD_PERIPH_CLOCK

#define SCL_GPIO_PORT       GPIOD
#define SCL_GPIO_PIN        GPIO_PINS_8
#define SCL_GPIO_PORT_CLK   CRM_GPIOD_PERIPH_CLOCK

#define SDA_GPIO_PORT       GPIOD
#define SDA_GPIO_PIN        GPIO_PINS_9
#define SDA_GPIO_PORT_CLK   CRM_GPIOD_PERIPH_CLOCK

#define RES_GPIO_PORT       GPIOD
#define RES_GPIO_PIN        GPIO_PINS_10
#define RES_GPIO_PORT_CLK   CRM_GPIOD_PERIPH_CLOCK

#define DC_GPIO_PORT        GPIOD
#define DC_GPIO_PIN         GPIO_PINS_11
#define DC_GPIO_PORT_CLK    CRM_GPIOD_PERIPH_CLOCK

#define CS_GPIO_PORT        GPIOD
#define CS_GPIO_PIN         GPIO_PINS_12
#define CS_GPIO_PORT_CLK    CRM_GPIOD_PERIPH_CLOCK

#define BLK_GPIO_PORT        GPIOD
#define BLK_GPIO_PIN         GPIO_PINS_13
#define BLK_GPIO_PORT_CLK    CRM_GPIOD_PERIPH_CLOCK

  1. 屏幕GPIO端口初始化配置
void lcd_gpio_init(void)
{
  gpio_init_type gpio_init_struct;

  /* enable the gpioa clock */
  crm_periph_clock_enable(LCD_GPIO_PORT_CLK, TRUE);

  /* set default parameter */
  gpio_default_para_init(&gpio_init_struct);

  /* configure the gpio */
  gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
  gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
  gpio_init_struct.gpio_pins = SDA_GPIO_PIN |SCL_GPIO_PIN|RES_GPIO_PIN|DC_GPIO_PIN|CS_GPIO_PIN|BLK_GPIO_PIN;
  gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  gpio_init(LCD_GPIO_PORT, &gpio_init_struct);
    
}
  1. SPI 接口宏定义设置
#define	SPI_SCLK_SET    gpio_bits_set(SCL_GPIO_PORT,SCL_GPIO_PIN)
#define	SPI_SCLK_CLR    gpio_bits_reset(SCL_GPIO_PORT,SCL_GPIO_PIN)

#define	SPI_MOSI_SET    gpio_bits_set(SDA_GPIO_PORT,SDA_GPIO_PIN)
#define	SPI_MOSI_CLR    gpio_bits_reset(SDA_GPIO_PORT,SDA_GPIO_PIN)
   


#define	LCD_RES_SET     gpio_bits_set(RES_GPIO_PORT,RES_GPIO_PIN)
#define	LCD_RES_CLR     gpio_bits_reset(RES_GPIO_PORT,RES_GPIO_PIN)

#define	LCD_DC_SET      gpio_bits_set(DC_GPIO_PORT,DC_GPIO_PIN)
#define	LCD_DC_CLR      gpio_bits_reset(DC_GPIO_PORT,DC_GPIO_PIN)

#define	LCD_CS_SET      gpio_bits_set(CS_GPIO_PORT,CS_GPIO_PIN)
#define	LCD_CS_CLR      gpio_bits_reset(CS_GPIO_PORT,CS_GPIO_PIN)

#define	LCD_BLK_SET     gpio_bits_set(BLK_GPIO_PORT,BLK_GPIO_PIN) 
#define	LCD_BLK_CLR     gpio_bits_reset(BLK_GPIO_PORT,BLK_GPIO_PIN) 

  1. 软件SPI代码实现

    /*****************************************************************************
     * @name       :void  SPI_WriteByte(uint8_t Data)
     * @function   :Write a byte of data using STM32's Software SPI
     * @parameters :Data:Data to be written
     * @retvalue   :None
    ******************************************************************************/
    void SPI_WriteByte(uint8_t Data)
    {
    	unsigned char i=0;
    	for(i=8;i>0;i--)
    	{
    	  if(Data&0x80)	
    			SPI_MOSI_SET; //输出数据
        else
    		  SPI_MOSI_CLR;
          SPI_SCLK_CLR;       
          SPI_SCLK_SET;
          Data<<=1; 
    	}
    }
    
    /*****************************************************************************
     * @name       :void LCD_WR_REG(uint8_t data)
     * @function   :Write an 8-bit command to the LCD screen
     * @parameters :data:Command value to be written
     * @retvalue   :None
    ******************************************************************************/
    void LCD_WR_REG(uint8_t data)
    { 
       LCD_CS_CLR;     
       LCD_DC_CLR;	  
       SPI_WriteByte(data);
       LCD_CS_SET;	
    }
    
    /*****************************************************************************
     * @name       :void LCD_WR_DATA(uint8_t data)
     * @function   :Write an 8-bit data to the LCD screen
     * @parameters :data:data value to be written
     * @retvalue   :None
    ******************************************************************************/
    void LCD_WR_DATA(uint8_t data)
    {
       LCD_CS_CLR;
       LCD_DC_SET;
       SPI_WriteByte(data);
       LCD_CS_SET;
    }
    

    如果传输的数据位为1,则将SPI数据引脚拉高;传输的数据位为0,则将SPI数据引脚拉低。每次传输一个字节数据,高位在前,每个时钟上升沿传输1位数据。

  2. LCD初始化函数

/*****************************************************************************
* @name       :void LCD_Init(void)
* @date       :2018-08-09 
* @function   :Initialization LCD screen
* @parameters :None
* @retvalue   :None
******************************************************************************/	 	 
void LCD_Init(void)
{  
  lcd_gpio_init();								 
  LCD_RESET(); //LCD 复位
//************* GC9A01初始化**********//	
  LCD_WR_REG(0xEF);
  LCD_WR_REG(0xEB);
  LCD_WR_DATA(0x14); 
  
	LCD_WR_REG(0xFE);			 
  LCD_WR_REG(0xEF); 

  LCD_WR_REG(0xEB);	
  LCD_WR_DATA(0x14); 

  LCD_WR_REG(0x84);			
  LCD_WR_DATA(0x40); 

  LCD_WR_REG(0x85);			
  LCD_WR_DATA(0xFF); 

  LCD_WR_REG(0x86);			
  LCD_WR_DATA(0xFF); 

  LCD_WR_REG(0x87);			
  LCD_WR_DATA(0xFF);

  LCD_WR_REG(0x88);			
  LCD_WR_DATA(0x0A);

  LCD_WR_REG(0x89);			
  LCD_WR_DATA(0x21); 

  LCD_WR_REG(0x8A);			
  LCD_WR_DATA(0x00); 

  LCD_WR_REG(0x8B);			
  LCD_WR_DATA(0x80); 

  LCD_WR_REG(0x8C);			
  LCD_WR_DATA(0x01); 

  LCD_WR_REG(0x8D);			
  LCD_WR_DATA(0x01); 

  LCD_WR_REG(0x8E);			
  LCD_WR_DATA(0xFF); 

  LCD_WR_REG(0x8F);			
  LCD_WR_DATA(0xFF); 


  LCD_WR_REG(0xB6);
  LCD_WR_DATA(0x00);
  LCD_WR_DATA(0x20);

  LCD_WR_REG(0x36);
  LCD_WR_DATA(0x08);
  
  LCD_WR_REG(0x3A);			
  LCD_WR_DATA(0x05); 


  LCD_WR_REG(0x90);			
  LCD_WR_DATA(0x08);
  LCD_WR_DATA(0x08);
  LCD_WR_DATA(0x08);
  LCD_WR_DATA(0x08); 

  LCD_WR_REG(0xBD);			
  LCD_WR_DATA(0x06);
  
  LCD_WR_REG(0xBC);			
  LCD_WR_DATA(0x00);	

  LCD_WR_REG(0xFF);			
  LCD_WR_DATA(0x60);
  LCD_WR_DATA(0x01);
  LCD_WR_DATA(0x04);

  LCD_WR_REG(0xC3);			
  LCD_WR_DATA(0x13);
  LCD_WR_REG(0xC4);			
  LCD_WR_DATA(0x13);

  LCD_WR_REG(0xC9);			
  LCD_WR_DATA(0x22);

  LCD_WR_REG(0xBE);			
  LCD_WR_DATA(0x11); 

  LCD_WR_REG(0xE1);			
  LCD_WR_DATA(0x10);
  LCD_WR_DATA(0x0E);

  LCD_WR_REG(0xDF);			
  LCD_WR_DATA(0x21);
  LCD_WR_DATA(0x0c);
  LCD_WR_DATA(0x02);

  LCD_WR_REG(0xF0);   
  LCD_WR_DATA(0x45);
  LCD_WR_DATA(0x09);
  LCD_WR_DATA(0x08);
  LCD_WR_DATA(0x08);
  LCD_WR_DATA(0x26);
  LCD_WR_DATA(0x2A);

  LCD_WR_REG(0xF1);    
  LCD_WR_DATA(0x43);
  LCD_WR_DATA(0x70);
  LCD_WR_DATA(0x72);
  LCD_WR_DATA(0x36);
  LCD_WR_DATA(0x37);  
  LCD_WR_DATA(0x6F);


  LCD_WR_REG(0xF2);   
  LCD_WR_DATA(0x45);
  LCD_WR_DATA(0x09);
  LCD_WR_DATA(0x08);
  LCD_WR_DATA(0x08);
  LCD_WR_DATA(0x26);
  LCD_WR_DATA(0x2A);

  LCD_WR_REG(0xF3);   
  LCD_WR_DATA(0x43);
  LCD_WR_DATA(0x70);
  LCD_WR_DATA(0x72);
  LCD_WR_DATA(0x36);
  LCD_WR_DATA(0x37); 
  LCD_WR_DATA(0x6F);

  LCD_WR_REG(0xED);	
  LCD_WR_DATA(0x1B); 
  LCD_WR_DATA(0x0B); 

  LCD_WR_REG(0xAE);			
  LCD_WR_DATA(0x77);
  
  LCD_WR_REG(0xCD);			
  LCD_WR_DATA(0x63);		


  LCD_WR_REG(0x70);			
  LCD_WR_DATA(0x07);
  LCD_WR_DATA(0x07);
  LCD_WR_DATA(0x04);
  LCD_WR_DATA(0x0E); 
  LCD_WR_DATA(0x0F); 
  LCD_WR_DATA(0x09);
  LCD_WR_DATA(0x07);
  LCD_WR_DATA(0x08);
  LCD_WR_DATA(0x03);

  LCD_WR_REG(0xE8);			
  LCD_WR_DATA(0x34);

  LCD_WR_REG(0x62);			
  LCD_WR_DATA(0x18);
  LCD_WR_DATA(0x0D);
  LCD_WR_DATA(0x71);
  LCD_WR_DATA(0xED);
  LCD_WR_DATA(0x70); 
  LCD_WR_DATA(0x70);
  LCD_WR_DATA(0x18);
  LCD_WR_DATA(0x0F);
  LCD_WR_DATA(0x71);
  LCD_WR_DATA(0xEF);
  LCD_WR_DATA(0x70); 
  LCD_WR_DATA(0x70);

  LCD_WR_REG(0x63);			
  LCD_WR_DATA(0x18);
  LCD_WR_DATA(0x11);
  LCD_WR_DATA(0x71);
  LCD_WR_DATA(0xF1);
  LCD_WR_DATA(0x70); 
  LCD_WR_DATA(0x70);
  LCD_WR_DATA(0x18);
  LCD_WR_DATA(0x13);
  LCD_WR_DATA(0x71);
  LCD_WR_DATA(0xF3);
  LCD_WR_DATA(0x70); 
  LCD_WR_DATA(0x70);

  LCD_WR_REG(0x64);			
  LCD_WR_DATA(0x28);
  LCD_WR_DATA(0x29);
  LCD_WR_DATA(0xF1);
  LCD_WR_DATA(0x01);
  LCD_WR_DATA(0xF1);
  LCD_WR_DATA(0x00);
  LCD_WR_DATA(0x07);

  LCD_WR_REG(0x66);			
  LCD_WR_DATA(0x3C);
  LCD_WR_DATA(0x00);
  LCD_WR_DATA(0xCD);
  LCD_WR_DATA(0x67);
  LCD_WR_DATA(0x45);
  LCD_WR_DATA(0x45);
  LCD_WR_DATA(0x10);
  LCD_WR_DATA(0x00);
  LCD_WR_DATA(0x00);
  LCD_WR_DATA(0x00);

  LCD_WR_REG(0x67);			
  LCD_WR_DATA(0x00);
  LCD_WR_DATA(0x3C);
  LCD_WR_DATA(0x00);
  LCD_WR_DATA(0x00);
  LCD_WR_DATA(0x00);
  LCD_WR_DATA(0x01);
  LCD_WR_DATA(0x54);
  LCD_WR_DATA(0x10);
  LCD_WR_DATA(0x32);
  LCD_WR_DATA(0x98);

  LCD_WR_REG(0x74);			
  LCD_WR_DATA(0x10);	
  LCD_WR_DATA(0x85);	
  LCD_WR_DATA(0x80);
  LCD_WR_DATA(0x00); 
  LCD_WR_DATA(0x00); 
  LCD_WR_DATA(0x4E);
  LCD_WR_DATA(0x00);					
  
  LCD_WR_REG(0x98);			
  LCD_WR_DATA(0x3e);
  LCD_WR_DATA(0x07);

  LCD_WR_REG(0x35);	
  LCD_WR_REG(0x21);

  LCD_WR_REG(0x11); 
  delay_ms(120); 

  LCD_WR_REG(0x29); 	
  LCD_direction(USE_HORIZONTAL);//设置LCD显示方向
  LCD_BLK_SET;//点亮背光	 
  LCD_Clear(WHITE);//清全屏白色
}
  1. 驱动完整代码见仓库代码
    在这里插入图片描述
    在这里插入图片描述

屏幕测试

  1. 主程序
#include "main.h"

/**
  * @brief  main function.
  * @param  none
  * @retval none
  */
int main(void)
{
//  unsigned char count_num; 
  system_clock_config();
  at32_board_init();
  uart_print_init(115200);
  module_smg_gpio_iint();
  LCD_Init();
  /* output a message on hyperterminal using printf function */
  //printf("usart printf example: retarget the c library printf function to the usart\r\n");
  printf("Hardware_Init [ok] \r\n");
  printf("at_start_a403a board testing 2024-02-13\r\n");
  printf("at_start_a403a board module softspi lcd \r\n");
 
  
  while(1)
  {
       printf("lcd_example_test [start] \r\n");
       main_test(); 		   
	   menu_test();			   
       English_Font_test();     
       Chinese_Font_test();    
   
       printf("lcd_example_test [end] \r\n"); 
  }
}

  1. 测试效果

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

2024年云服务器ECS价格表出炉——阿里云

2024年阿里云服务器租用费用&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元&#xff0c;ECS u1服务器2核4G5M固定带宽199元一年&#xff0c;2核4G4M带宽轻量服务器一年165元12个月&#xff0c;2核4G服务…

基于MATLAB的直流无刷电机速度控制

作品简介 基于MATLAB的直流无刷电机速度控制 仿真平台&#xff1a;Matlab 仿真结果为&#xff1a;

【总结】服务器无法连接外网,设置http代理解决

问题 某天想要在服务器上下载编译github上某开源项目&#xff0c;结果发现访问不了外网。 于是找运维&#xff0c;运维给了个http代理服务器地址。简单操作后&#xff0c;就可以访问外网了。 解决 在需要访问外网的机器上&#xff0c;执行以下命令&#xff1a;http_proxyhtt…

Python Web开发记录 Day8:Django part2 部门管理

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、部门列表2、模板的继承3、添加部门4、编辑部…

下载chromedrive,使用自动化

1、先看一下自己浏览器的版本 2、访问 https://googlechromelabs.github.io/chrome-for-testing/

java中Volatile关键字的原理

Volitile的主要作用就是保持内存可见性和防止指令重排序。我分别说一下这两个作用的实现原理 1.保持内存可见性的实现原理 volatile内存可见性主要通过lock前缀指令实现的&#xff0c;它会锁定当前内存区域的缓存&#xff0c;并且立即将当前缓存的数据写入到主内存&#xff0…

【Linux】linuxCNC+Qt+Opencascade+kdl+hal 实时6轴机器人控制器

CNC机器人 程序框架 机器人模型 笔记&#xff1a; debian重启后 无法打开共享目录 最新版搜狗输入法安装后不支持中文&#xff0c;需要安装旧版本的 sogoupinyin_4.0.1.2800_x86_64.deb可用 数控机器人在哪些领域应用有优势 数控机器人在多个领域都展现出了显著的优势&#xff…

IAB视频广告标准《数字视频和有线电视广告格式指南》之 概述- IAB受众和技术标准 - 我为什么要翻译介绍美国人工智能科技公司IAB系列(2)

第二篇 - 概述- IAB受众和技术标准 本文目录 一、IAB技术实验室简介 二、概述及IAB受众 三、资源- IAB倡导的相关视频广告技术标准 四、案例分享-介绍一家数字化营销服务公司 - SproutSocial 五、数字营销工兵观察 六、资料来源及推荐阅读 一、IAB技术实验室简介 随着近…

高频面试必备(Java研发岗),一线互联网架构师设计思想解读开源框架

BeanFactory 和 ApplicationContext 有什么区别&#xff1f; 如何用基于 XML 配置的方式配置 Spring&#xff1f; 如何用基于 Java 配置的方式配置 Spring&#xff1f; 请解释 Spring Bean 的生命周期&#xff1f; Tomcat Tomcat 的缺省端口是多少&#xff0c;怎么修改&…

C++学习随笔(5)——类和对象的深窥

本章我们来学习一下更深入了解一下类和对象&#xff01; 目录 1.类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 5.3 前置和后置重载…

Sui技术帮助Studio Mirai成功实现创意愿景

Brian和Ben Li兄弟对艺术充满热情&#xff0c;通过共同创立的研发工作室Studio Mirai&#xff0c;他们正在探索Web3技术与创意产业的交集。 Studio Mirai的第一个头像类项目&#xff08;profile picture&#xff0c;PFP&#xff09;Tamashi存在于Nozomi World中&#xff0c;这…

2024-3-13,14(CSS)

1.复合选择器 有两个或者多个基础选择器&#xff0c;通过不同的方式组合而成。 目的是更加准确高效的选择目标元素&#xff08;标签&#xff09; 分类&#xff1a; 后代选择器&#xff1a;选中某个元素的所有后代元素 写法&#xff1a;父选择器 子选择器 {CSS属性}&#x…

Pycharm / idea上传项目到 Github 报错

报错内容: gitgithub.com: Permission denied (publickey).翻译–>gitgithub.com:权限被拒绝(公钥). 出现上述报错的原因:   客户端与服务端的ssh key不匹配   客户端与服务端未生成 ssh key 登录上Github查看ssh key是否存在&#xff0c;如果存在&#xff0c;那么可以对…

蓝桥杯单片机快速开发笔记——定时器

一、基本原理&#xff1a; 定时器的作用&#xff1a; 定时器是一种用于产生精确时间延时的模块&#xff0c;可以在程序中用来进行时间控制、计时等操作。 定时器的工作原理&#xff1a; 51单片机的定时器是通过内部的计数器来实现的&#xff0c;计数器每隔一个固定的时间周期自…

windows 安装 gitlab-runner CICD

点击搜索图标 手动输入PowerShell, 右键点击管理员权限打开&#xff0c; 一、安装 安装 gitlab runner 文档参考地址 1、下载exe执行文件 我这里是 win64 https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-windows-amd64.exe 2、创建 gitla…

通过OceanBase 3.x中not in无法走hash连接的变化,来看OB优化器的发展

作者简介&#xff1a; 张瑞远&#xff0c;曾从事银行、证券数仓设计、开发、优化类工作&#xff0c;现主要从事电信级IT系统及数据库的规划设计、架构设计、运维实施、运维服务、故障处理、性能优化等工作。 持有Orale OCM,MySQL OCP及国产代表数据库认证。 获得的专业技能与认…

基于单片机的电子琴设计

基于单片机的电子琴设计 摘 要 读书、看电影、听音乐&#xff0c;都是最常见的丰富内心世界的良剂。听音乐&#xff0c;作为陶冶情操、提升境界最便捷的方式&#xff0c;正受到越来越多人们的欢迎。音乐可以很轻松的融入各种场合&#xff0c;给人们带来很轻松的氛围&#xff…

Pytorch从零开始实战21

Pytorch从零开始实战——Pix2Pix理论与实战 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——Pix2Pix理论与实战内容介绍数据集加载模型实现开始训练总结 内容介绍 Pix2Pix是一种用于用于图像翻译的通用框架&#xff0c;即图像到图像的转换。…

多人语聊房社交APP开发需要有哪些功能呢?

随着移动互联网的快速发展&#xff0c;社交APP已经成为人们日常生活中不可或缺的一部分。而随着语音社交的兴起&#xff0c;多人语聊房社交APP也逐渐受到了用户的青睐。在开发多人语聊房社交APP时&#xff0c;需要具备一系列功能&#xff0c;以满足用户的需求并提供良好的使用体…