显示屏基础通信实验

实验内容

        实现串口屏收发

实验要求

        能成功编译例程代码,并下载运行效果与实验目的相同

        能解决调试过程中遇到的问题

拓展要求

        实时显示板载传感器数据(未实现)

        由于使用的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系列,同时由于不同的厂家引脚可能在设计上不同,不同厂家的开发板需要对照原理图进行修改。

 

 代码下载

源码下载,访问密码:341

 声明

        本程序根据野火例程修改而来,代码并不完美,有误可联系

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值