stm32课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
//更新状态标志
}