微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 迪文串口屏显示驱动

迪文串口屏显示驱动

时间:10-02 整理:3721RD 点击:

迪文的显示屏使用起来比较方便,其使用串口通讯,即可支持RS232,又可以支持TTL电平。在NUCLEO-F412ZG实验板上,USART2已经引到了CN9上,我们就利用USART2来实现与迪文串口屏的通讯试验。USART2硬件接口如下图红框所示:



                              


我们在STM32CubeMX中配置USART2,打开“USART2Configuration”界面,打开“GPIO Settings”标签:




配置完成后,我们生成项目源码,USART2的配置如下:


/* USART2 init function */


static void MX_USART2_UART_Init(void)


{



huart2.Instance = USART2;


huart2.Init.BaudRate = 115200;


huart2.Init.WordLength = UART_WORDLENGTH_8B;


huart2.Init.StopBits = UART_STOPBITS_1;


huart2.Init.Parity = UART_PARITY_NONE;


huart2.Init.Mode = UART_MODE_TX_RX;


huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;


huart2.Init.OverSampling = UART_OVERSAMPLING_16;


  if(HAL_UART_Init(&huart2) != HAL_OK)


  {


   Error_Handler();


  }


}


在上述配置函数中,调用了HAL_UART_Init函数来初始化USART2,同时调用HAL_UART_MspInit函数来初始化硬件配置,HAL_UART_MspInit函数需要我们编写供系统回调。


接下来我们编写向屏写数据的源码,我们向屏写氧气百分比、氢气百分比、甲烷百分比、乙炔百分比、乙烯百分比和丙烷百分比等数据。


//向屏写数据,用于数据显示


void SetDataToLCD(void)


{


  uint16_tlength=SetVarDataLength;


  uint8_ttxData[SetVarDataLength];


  uint16_tstartAddress=0x0000;



  //对往下写的数据作格式化转换


SendDataProcess(txData);


  


  //发送数据


WriteDataToLCD(startAddress,txData,length);


}


其中SendDataProcess函数是对要写的数据进行格式化,因为屏幕只能接受符合其要求格式的数据。WriteDataToLCD是我们封装的向屏发送数据的函数:


//写数据变量存储器


void WriteDataToLCD(uint16_t startAddress,uint8_ttxData[],uint16_t length)


{


  /*命令的长度由帧头(2个字节)+数据长度(1个字节)+指令(1个字节)+起始地址(2个字节)+数据(长度为length)*/


  uint16_tcmd_Length=length+6;


  uint8_tcmd_VAR_Write[WriteDataCommandLength];


cmd_VAR_Write[0]=0x5A;


cmd_VAR_Write[1]=0xA5;


cmd_VAR_Write[2]=(uint8_t)(length+3);


cmd_VAR_Write[3]= FC_VAR_Write;


cmd_VAR_Write[4]=(uint8_t)(startAddress>>8);//起始地址


cmd_VAR_Write[5]=(uint8_t)startAddress;//起始地址


  for(intdataIndex=0;dataIndex<length;dataIndex++)


  {


   cmd_VAR_Write[dataIndex+6]=txData[dataIndex];


  }


  


SendData(cmd_VAR_Write,cmd_Length);


}


编写完成后我们运行调试:




调试无误后,我们在IO终端中查看数据显示结果,证明运行数据是没有问题的。




接下来我们在先视频上查看数据,与在IO终端中一致,就是说屏显示的数据就是MCU发送给它的数据:




再来看看对传感器做一下扰动时(用配气仪和小型气泵向传感器管道送不同的气)数据的变化,传感器检测对象变化是屏幕显示也变化。




再来改变一下气体成分和气泵的转速看看数据的变化:



经过以上实验,NUCLEO-F412ZG通过串口与迪文串口屏通讯完全可行。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top