用程序生成字符表情(上)

程序生成如●ω●和●▽●的表情没想到吧

这里我先布置一个题目

使用java去定量生成字符表情

好处是什么呢好长是可以防止屏蔽!

下棋揭晓答案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是一个简单的程序示例: ```c #include "stm32f10x.h" #include <stdio.h> #define MAX7219_CS_Pin GPIO_Pin_4 #define MAX7219_CS_Port GPIOA void USART1_Init(void); void USART1_SendChar(char ch); char USART1_ReceiveChar(void); void delay_ms(uint32_t ms); void MAX7219_Init(void); void MAX7219_Send(int address, int data); int main(void) { char ch; int i; // 初始化串口 USART1_Init(); // 初始化 MAX7219 MAX7219_Init(); while (1) { // 接收字符 ch = USART1_ReceiveChar(); // 根据接收到的字符控制 LED 点阵显示表情 switch (ch) { case 'U': for (i = 1; i <= 8; i++) { MAX7219_Send(i, 0x08); } MAX7219_Send(2, 0x18); MAX7219_Send(3, 0x38); MAX7219_Send(4, 0x78); break; case 'D': for (i = 1; i <= 8; i++) { MAX7219_Send(i, 0x80); } MAX7219_Send(2, 0xC0); MAX7219_Send(3, 0xE0); MAX7219_Send(4, 0xF0); break; case 'L': for (i = 1; i <= 8; i++) { MAX7219_Send(i, 0x81); } MAX7219_Send(2, 0xC3); MAX7219_Send(3, 0xE7); MAX7219_Send(4, 0xFF); break; case 'R': for (i = 1; i <= 8; i++) { MAX7219_Send(i, 0x18); } MAX7219_Send(2, 0x1C); MAX7219_Send(3, 0x1E); MAX7219_Send(4, 0x1F); break; default: for (i = 1; i <= 8; i++) { MAX7219_Send(i, 0x00); } MAX7219_Send(2, 0x81); MAX7219_Send(3, 0x81); MAX7219_Send(4, 0x00); break; } } } void USART1_Init(void) { USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; // 使能 USART1 时钟和 GPIOA 时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); // 配置 USART1 Tx 引脚为推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // 配置 USART1 Rx 引脚为浮空输入 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); // 配置 USART1 USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); // 使能 USART1 USART_Cmd(USART1, ENABLE); } void USART1_SendChar(char ch) { // 等待发送缓冲区为空 while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); // 发送字符 USART_SendData(USART1, ch); // 等待发送完成 while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); } char USART1_ReceiveChar(void) { // 等待接收到数据 while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET); // 返回接收到的数据 return USART_ReceiveData(USART1); } void delay_ms(uint32_t ms) { volatile uint32_t nCount; RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq(&RCC_Clocks); nCount = (RCC_Clocks.HCLK_Frequency / 10000) * ms; for (; nCount != 0; nCount--); } void MAX7219_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; // 使能 GPIOA 时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 配置 CS 引脚为推挽输出 GPIO_InitStructure.GPIO_Pin = MAX7219_CS_Pin; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(MAX7219_CS_Port, &GPIO_InitStructure); // 初始化 MAX7219 MAX7219_Send(0x0C, 0x01); MAX7219_Send(0x0B, 0x07); MAX7219_Send(0x09, 0xFF); MAX7219_Send(0x0F, 0x00); } void MAX7219_Send(int address, int data) { int i; // 使能片选信号 GPIO_ResetBits(MAX7219_CS_Port, MAX7219_CS_Pin); // 发送数据 for (i = 16; i >= 1; i--) { if (i == 8) { // 发送地址 SPI1_SendData(address); } else { // 发送数据 if (data & (1 << (i - 1))) { SPI1_SendData(0x01); } else { SPI1_SendData(0x00); } } } // 禁止片选信号 GPIO_SetBits(MAX7219_CS_Port, MAX7219_CS_Pin); } void SPI1_SendData(uint8_t data) { // 等待发送缓冲区为空 while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET); // 发送数据 SPI_I2S_SendData(SPI1, data); // 等待发送完成 while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); SPI_I2S_ReceiveData(SPI1); } ``` 这个程序使用 USART1 接收来自 Python 程序字符,根据接收到的字符控制两个级联的 MAX7219 LED 点阵显示上箭头、下箭头、左箭头、右箭头四种不同的表情,未接收到时显示问号的表情。具体的 MAX7219 的控制可以参考 MAX7219 的数据手册。注意,这个程序使用了 SPI 接口与 MAX7219 进行通讯,需要先初始化 SPI 接口。 ### 回答2: 要设计一个stm32f103程序使其可以接收来自python串口通信的字符,并根据接收的字符控制两个级联MAX7219 LED点阵显示上箭头、下箭头、左箭头、右箭头四种不同的表情,并且在未接收到字符时显示问号的表情,可以按照以下步骤进行设计: 1. 首先,需要连接stm32f103与MAX7219 LED点阵器件。将LED点阵器件的VCC引脚连接到stm32f103的3.3V电源引脚,GND引脚连接到stm32f103的地引脚,CLK引脚连接到stm32f103的SCK引脚,DIN引脚连接到stm32f103的MOSI引脚,CS引脚连接到stm32f103的一个GPIO引脚。 2. 然后,需要配置stm32f103的串口通信功能。选择一个串口(如USART1)作为与Python串口通信的接口。设置波特率、数据位、停止位、校验位等串口通信参数。 3. 在程序中,实现串口数据接收的功能。通过中断或查询方式读取串口接收寄存器,判断接收到的字符,并根据字符的不同,控制LED点阵显示对应的箭头表情。如果未接收到字符,则显示问号表情。 4. 使用MAX7219驱动器的库函数或自行编写的驱动代码,控制LED点阵显示对应的图案。为上、下、左、右箭头和问号分别定义相应的图案数组,并根据接收到的字符选择对应的图案数组进行显示。 5. 最后,通过编译、烧录程序到stm32f103芯片上,然后与Python程序建立串口通信连接。在Python程序中,通过串口向stm32f103发送控制字符,触发相应的表情显示。 综上所述,以上是一个基本的读取Python串口数据并控制MAX7219 LED点阵显示相应表情的stm32f103程序设计流程。具体的实现细节和代码需要根据实际情况和需求进行具体的开发和实现。 ### 回答3: 设计一个STM32F103程序,使其可以接收来自Python串口通信的字符,并根据接收的字符控制两个级联的MAX7219 LED点阵显示不同的表情。 首先,你需要使用STM32CubeMX配置你的STM32F103开发板,并启用串口功能。然后,根据所选的串口通信参数(例如波特率、奇偶校验位等),生成相应的初始化代码。 在程序中,你需要创建一个接收缓冲区来存储从串口接收的字符。每当你接收到一个字符时,将其存储在缓冲区中。 接下来,你可以使用条件语句来判断接收到的字符,并根据不同的字符来控制MAX7219 LED点阵显示不同的表情。 例如,当接收到字符'A'时,你可以编写一个函数来显示上箭头的表情。同样地,当接收到字符'B'时,你可以编写另一个函数来显示下箭头的表情。其他的字符表情依此类推。 当你未接收到字符时,你可以编写一个函数来显示问号的表情。 为了控制两个级联的MAX7219 LED点阵,你需要使用相应的库函数将表情数据发送到MAX7219芯片。这些库函数可以在ST官方提供的HAL库中找到。你可以找到相关的例程代码,并根据自己的需求进行适当的修改。 最后,在主循环中,你需要不断地检查接收缓冲区中是否有新的字符,如果有,就调用相应的函数来控制LED点阵显示相应的表情。 总结起来,你需要配置STM32F103串口功能并初始化串口通信,创建接收缓冲区,并编写相应的函数来显示不同的表情。在主循环中,你需要检查接收缓冲区中是否有新的字符,并根据不同的字符调用相应的函数来控制LED点阵显示不同的表情
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值