stm32课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*

三个坐标系统的转换:

触摸屏:

column 240

x

_ _ _ _ _ _

^ |

| |

| |

| |

| |

| | 320

| |

| |

| |

| |

| |

| |

(0,0) - - - - - -> y

液晶显示字体及清屏等函数:

column 240

x (0,0) ----------->

| |

| |

| |

| |

| |

| | 320

| |

| |

| |

| |

| |

| |

V- - - - - -

y

液晶显示图像:

column 240

X

-----------A

| |

| |

| |

| |

| |

| | 320

| |

| |

| |

| |

| |

| |

Y <- - - - - -(0,0)

转换关系:

Y字 = 320 - X触摸

X字 = Y触摸

X图像 = X触摸

Y图像 = 240-Y触摸

Y图像 = 240 - X字

X图像 = 320 - Y字

*/

图像和字在屏幕的放置有一个方向相反。

“LCD触摸屏控制七彩呼吸灯”部分程序:

#include "stm32f10x.h"

#include "bsp_usart1.h"

#include "bsp_ili9341_lcd.h"

#include "bsp_sdfs_app.h"

#include "bsp_bmp.h"

#include "bsp_SysTick.h"

#include "bsp_touch.h"

#include "bsp_spi_flash.h"

#include "bsp_led.h"

#include "even_process.h"

#include "bsp_breathing.h //被调用的H文件的包含.呼吸灯头文件int main(void)

{

uint8_t k;

/* 初始化LCD */

LCD_Init();

LCD_Clear(0, 0, 240, 320, BACKGROUND); //清屏

/* 初始化sd卡文件系统,因为汉字的字库放在了sd卡里面 */

Sd_fs_init();

/* 系统定时器 1us 定时初始化 */

SysTick_Init();

/* 初始化LED */

LED_GPIO_Config();

/* 初始化外部FLASH */

SPI_FLASH_Init(); //PA4/5/6/7

/* 触摸屏IO和中断初始化 */

Touch_Init(); //LCD触摸屏的配置用到模拟FLASH

PE0/2/3/4, PD13

#if 1

SPI_FLASH_BufferRead(&cal_flag, 0, 1);

if( cal_flag == 0x55 )

{

SPI_FLASH_BufferRead((void*)cal_p, 1, sizeof(cal_p));

SPI_FLASH_CS_HIGH();

for( k=0; k<6; k++ )

printf("\r\n rx = %LF \r\n",cal_p[k]);

}

else

{

/* 等待触摸屏校正完毕 */

while(Touch_Calibrate() !=0);

}

#elif 0

/* 等待触摸屏校正完毕 */

while(Touch_Calibrate() !=0);

#endif

/* 显示LED控制界面图片 */

Lcd_show_bmp(100, 30,"/led/ui_window.bmp");//图像和字形坐标配置有一个方向相反

Lcd_show_bmp(38, 184,"/led/ui_rb_button.bmp");

Lcd_show_bmp(38, 95,"/led/ui_gb_button.bmp"); //显示关状态按钮

Lcd_show_bmp(38, 11,"/led/ui_yb_button.bmp");

TIM3_Breathing_Init();

while(1)

{

even_process();//灯的配置及变色

}

}

void even_process(void)

{

//char lcd_char[20];

switch(even)

{

case E_BUTTON1: //LED3

if(red_button == S_OFF) //原来为关状态

{

Lcd_show_bmp(38, 184,"/led/ui_r_button.bmp");

//显示开状态按钮

red_button = S_ON;

//更新状态标志

}

else //原来为开状态

{

Lcd_show_bmp(38, 184,"/led/ui_rb_button.bmp");

//显示关状态按钮

red_button = S_OFF;

//更新状态标志

}

LED1_TOGGLE; //LED状态反转

even = E_NULL;

break;

case E_BUTTON2: //LED1

if(green_button == S_OFF) //原来为关状态

{

Lcd_show_bmp(38, 95,"/led/ui_g_button.bmp");

//显示开状态按钮

green_button = S_ON;

//更新状态标志

}

else //原来为开状态

{

Lcd_show_bmp(38, 95,"/led/ui_gb_button.bmp");

//显示关状态按钮

green_button = S_OFF;

//更新状态标志

}

相关文档
最新文档