STM32驱动串口屏,STM32F103C8T6串口发送指令控制HMI串口屏

  • 串口屏
    • 基础指令集
  • 硬件和接线
    • 接线
    • 实验前准备
  • STM32程序
    • 串口程序
    • 主函数
  • 实验现象
  • 总结

串口屏

串口屏是一个集成了单片机的屏幕模块,采用的是TTL串口协议,可以直接通过对应指令控制屏幕,
本文采用的串口屏是陶晶驰T0系列的基本型,目的是通过单片机的串口来控制串口屏

基础指令集


上面仅是一部分常用的基础指令,更多更仔细的指令或者函数可以访问陶晶驰资料官网。

硬件和接线

硬件需要一块STM32F103C8T6的开发板,杜邦线诺干,2.4寸串口屏一块

接线

串口屏 STM32
+5V 5V
TX PA10
RX PA9
GND GND

实验前准备

准备前需要下载出厂标准样例,一般出厂自带的,不需要下载,需要下载的可以参考以前的文章:51单片机驱动HMI串口屏,串口屏的下载方式

STM32程序

串口程序

串口配置

void uart_init(u32 bound){//GPIO端口设置GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);    //使能USART1,GPIOA时钟USART_DeInit(USART1);  //复位串口1//USART1_TX   PA.9GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;    //复用推挽输出GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9//USART1_RX    PA.10GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化PA10//Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;       //子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         //IRQ通道使能NVIC_Init(&NVIC_InitStructure);    //根据指定的参数初始化VIC寄存器//USART 初始化设置USART_InitStructure.USART_BaudRate = bound;//一般设置为9600;USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式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); //初始化串口USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启中断USART_Cmd(USART1, ENABLE);                    //使能串口 }

中断服务程序

void USART1_IRQHandler(void)                 //串口1中断服务程序{u8 Res;
#ifdef OS_TICKS_PER_SEC     //如果时钟节拍数定义了,说明要使用ucosII了.OSIntEnter();
#endifif(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾){Res =USART_ReceiveData(USART1);//(USART1->DR);   //读取接收到的数据  if((USART_RX_STA&0x8000)==0)//接收未完成{if(USART_RX_STA&0x4000)//接收到了0x0d{if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始else USART_RX_STA|=0x8000;    //接收完成了 }else //还没收到0X0D{   if(Res==0x0d)USART_RX_STA|=0x4000;else{USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;USART_RX_STA++;if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收   }      }      }  }

主函数

主函数

int main(void){       delay_init();           //延时函数初始化    NVIC_Configuration();      //设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(9600);        //串口初始化为9600HMISendstart();          //为确保串口HMI正常通信{ HMISends("cls RED");  //发送串口指令HMISendb(0xff);         //发送结束符 0XFF 0XFF 0XFFdelay_ms(1000);HMISends("cls GREEN");HMISendb(0xff);delay_ms(1000);HMISends("cls BLUE");HMISendb(0xff);delay_ms(1000);HMISends("cls BLACK");HMISendb(0xff); delay_ms(1000);HMISends("page 4");HMISendb(0xff);HMISends("t0.txt=\"春风不度玉门关\"");HMISendb(0xff);    }while(1);
}

字符串发送函数

void HMISends(char *buf1)          //字符串发送函数
{u8 i=0;while(1){if(buf1[i]!=0){USART_SendData(USART1,buf1[i]);  //发送一个字节while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET){};//等待发送结束i++;}else return ;}}```
字节发送函数```c
void HMISendb(u8 k)              //字节发送函数
{        u8 i;for(i=0;i<3;i++){if(k!=0){USART_SendData(USART1,k);  //发送一个字节while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET){};//等待发送结束}else return ;}
} 

实验现象

现象是红绿蓝黑各显示一秒,最后去除原来工程里面春风不度玉门关的背景色

总结

串口屏的驱动只需要配置好单片机的串口就行,其他的就是发送函数的代码,需要完整工程的可以在下方留言获取

STM32驱动串口屏,STM32F103C8T6串口发送指令控制HMI串口屏相关推荐

  1. 《STM32从零开始学习历程》——USART串口通讯实验篇2——指令控制LED灯实验

    <STM32从零开始学习历程>@EnzoReventon USART串口通讯实验篇2--指令控制LED灯实验 本实验是在<USART串口通讯实验篇1--中断接收与发送>的基础上 ...

  2. stm32+HTU21D温湿度传感器通过usart1发送温湿度数据在串口助手显示

    stm32+HTU21D温湿度传感器 这里就不拍实物图了,我用的是下面这款HTU21D ic是stm32f103vet6 工程代码是io口模拟i2c和传感器通讯 PB6-SCL,PB7-SDA usa ...

  3. V831——人脸识别通过串口向下位机发送指令

    V831 文章目录 V831 前言 一.V831人脸识别 二.代码实现 总结 人脸识别串口发送指令 前言 V831人脸识别通过XY坐标以及Z的距离判断向下位机发送的数据,下位机处理完成后发送数据回来. ...

  4. 三菱PLC 串口控制 发送指令控制plc端口、计数器、寄存器

    1.plc 设置

  5. FPGA纯Verilog实现任意尺寸图像缩放,串口指令控制切换,贴近真实项目,提供工程源码和技术支持

    目录 1.前言 2.目前主流的FPGA图像缩放方案 3.本方案的优越性 4.详细设计方案 5.vivado工程详解 6.上板调试验证并演示 7.福利:工程源码获取 1.前言 代码使用纯verilog实 ...

  6. 上位机开发C#语言:模拟STC串口助手接收单片机发送数据

    题目概述: 设计一个模拟STC串口助手,通过串口进行接收或发送数据. STC串口助手: 编程: using System; using System.Collections.Generic; usin ...

  7. 9.PMAC上位机-上位机发送指令

    通常我们说PC控制其他硬件工作,指的是PC给相应的硬件发送指令来控制对应硬件.同时在发送完指令后可能会接受到相对应的反馈消息,告诉PC当前硬件的状态和参数等数据,这就是常见的PC和硬件通信.PMAC已 ...

  8. stm32驱动 ov7670发送到串口上位机显示图像

    所需硬件: 1.stm32 103ZET6核心板,没有lcd(调试摄像头一定要买一个lcd,太方便了,都是泪): 2.OV7670带FIFO淘宝一搜一大把最常见的那种: 驱动代码:参考正点原子官方例程 ...

  9. android灯光蜂鸣器控制节点指令代码,基于stm32发送串口指令控制LED,蜂鸣器等(串口助手+原理图+显示结果)...

    本帖最后由 我累个去啊啊啊 于 2019-6-12 16:22 编辑 ///2019 6 12 更新 加入 :串口助手截图 简易问题说明 ///2019 6 11 更新  加入 :  使用的串口调试助 ...

最新文章

  1. Ajax基础和Json基础
  2. python应用程序类型_python – 类型提示条件可变参数应用程序
  3. P2261 [CQOI2007]余数求和 整除分块
  4. publiccms实现首页菜单栏下拉的方法
  5. ADO.NET基本运用随笔
  6. 高性能红黑二叉树实现
  7. 计算机没考好的检讨书300百以上,考试没考好的万能检讨书300字(精选5篇)
  8. lstm 做多分类loss完全不下降_使用Induction Network做Few-Shot Text分类
  9. jquery效果插件网址
  10. 信息论基础(考试复习,针对考点)
  11. 解决:Word仿宋字体显示不正确,仿宋GB2312的问题
  12. wincc做皮带动画_WinCC里怎样做动画呢
  13. 计算机网络---网卡,交换机和路由器|CSDN创作打卡
  14. 你喜欢试探别人的底线吗?
  15. 4、Shiro之IniRealm以及用户登录认证,角色认证,权限认证
  16. 安卓11添加第三方输入法替换默认输入法
  17. Linux中select IO复用机制
  18. eKing Cloud基础云平台演进之路
  19. JavaScript数据数据类型判断
  20. 苹果加急审核App的办法

热门文章

  1. 技术经理成长复盘-我是什么样的人
  2. STGNN(www 2020)论文总结
  3. 安卓车机数字时间屏保
  4. 七夕表白之Python画玫瑰花
  5. php mysql admin_mysql+phpAdmin
  6. 利用Python检验用户输入密码的复杂度,非常简单
  7. Git问题Everything up-to-date正确解决方法
  8. Sigfox被NB-IoT招安?这只是其成为物联网Uber的一个路径
  9. MySQL 为什么需要 redo log?
  10. hotnets2018 Networking in Heaven as on Earth 阅读报告