实验内容
实现串口屏收发
实验要求
能成功编译例程代码,并下载运行效果与实验目的相同
能解决调试过程中遇到的问题
拓展要求
实时显示板载传感器数据(未实现)
由于使用的MINI开发板为附带板载传感器,并做此实验未能购买传感器,将拓展内容修改为按键控制LED,在LCD中显示按键进行的操作与LED操作后的状态。
红外传感器在MINI板上是通过PC0进行交互的,因此在实际操作中可以通过库函数GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 进行数据的分析
实验代码
#include "stm32f10x.h"
#include "bsp_key.h"
#include "./usart/bsp_usart.h"
#include "./lcd/bsp_ili9341_lcd.h"
#include "./flash/bsp_spi_flash.h"
static void LCD_Test(void);
static void MAIN_COMMENT(void);
int main(void)
{
//LCD 初始化
ILI9341_Init ();
//LED初始化
LED_GPIO_Config();
/* 按键端口初始化 */
Key_GPIO_Config();
/* USART config */
USART_Config();
ILI9341_GramScan ( 6 );
LCD_Test();
while ( 1 )
{
MAIN_COMMENT();
}
}
/*用于测试各种液晶的函数*/
void LCD_Test(void)
{
LCD_SetFont(&Font8x16); //设置文本字体
LCD_SetColors(RED,BLACK); //设置文本颜色与背光颜色
ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH); /* 清屏,显示全黑 */
ILI9341_DisplayStringEx(4*24,0,24,24,(uint8_t *)"实验",0); //显示字符串实验
ILI9341_DisplayStringEx(0,26,20,20,(uint8_t *)"注意:本实验未使用红外,将按键的点击反馈至LCD屏",0);
ILI9341_DrawLine(0,80,240,80); //设置线的颜色与线的位置
ILI9341_DisplayStringEx(20,85,17,20,(uint8_t *)"The state of the key is",0);
ILI9341_DisplayStringEx(20,200,17,20,(uint8_t *)"The state of the led is",0);
}
void MAIN_COMMENT(void)
{
uint8_t i=0,j=0;
/* 轮询按键状态,若按键按下则反转LED */
while(1)
{
if( Key_Scan(KEY1_GPIO_PORT,KEY1_GPIO_PIN) == KEY_ON )
{
LCD_SetTextColor(BLUE);
i++;
ILI9341_Clear(20,125,240,20);
ILI9341_Clear(20,245,240,20);
LED1_TOGGLE;
if(i%2==1)
{
ILI9341_DisplayStringEx(20,125,17,20,(uint8_t *)"BUTTON1 turns on the LED1",0);
ILI9341_DisplayStringEx(80,245,17,20,(uint8_t *)"LED1 is ON",0);
}
else
{
ILI9341_DisplayStringEx(20,125,17,20,(uint8_t *)"BUTTON1 turns off the LED1",0);
ILI9341_DisplayStringEx(80,245,17,20,(uint8_t *)"LED1 is OFF",0);
}
}
if( Key_Scan(KEY2_GPIO_PORT,KEY2_GPIO_PIN) == KEY_ON )
{
j++;
ILI9341_Clear(20,145,240,20);
ILI9341_Clear(20,265,240,20);
LED2_TOGGLE;
if(j%2==1)
{
ILI9341_DisplayStringEx(20,145,17,20,(uint8_t *)"BUTTON2 turns on the LED2",0);
ILI9341_DisplayStringEx(80,265,17,20,(uint8_t *)"LED2 is ON",0);
}
else
{
ILI9341_DisplayStringEx(20,145,17,20,(uint8_t *)"BUTTON2 turns off the LED2",0);
ILI9341_DisplayStringEx(80,265,17,20,(uint8_t *)"LED2 is OFF",0);
}
}
}
}
实验结果
实验总结
代码仅适用于stm10x系列,同时由于不同的厂家引脚可能在设计上不同,不同厂家的开发板需要对照原理图进行修改。
代码下载
声明
本程序根据野火例程修改而来,代码并不完美,有误可联系