**
******************************************************************************
* @file main.c
* @author fire
* @version V1.0
* @date 2013-xx-xx
* @brief 液晶顯示漢字實驗(字庫在外部FLASH)
******************************************************************************
* @attention
*
*
******************************************************************************
*/
#include "stm32f10x.h"
#include "bsp_ili9341_lcd.h"
#include "./flash/bsp_spi_flash.h"
#include "bsp_led.h"
#include "bsp_AdvanceTim.h"
#include "bsp_GeneralTim.h"
#include "bsp_usart.h"
static void LCD_Test(void);
static void Delay ( __IO uint32_t nCount );
void Printf_Charater(void) ;
extern uint16_t Count_flag;
//extern __align(8) float show_DutyCycle ;
//extern __align(8) float show_Frequency ;
extern float show_DutyCycle ;
extern float show_Frequency ;
u8 dispBuff[100];
int main(void)
{
//LCD 初始化
ILI9341_Init ();
/* USART config */
USART_Config();
ILI9341_GramScan ( 6 );
//Printf_Charater();
/* 通用定時器初始化,用于生成PWM信號 */
GENERAL_TIM_Init();
/* 高級定時器初始化 ,用戶捕獲PWM信號*/
ADVANCE_TIM_Init();
while(1)
{
if(Count_flag==1)
{
LCD_SetFont(&Font8x16);
LCD_SetColors(RED,BLACK);
//ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH); /* 清屏,顯示全黑 */
/********顯示字符串示例*******/
LCD_SetTextColor(GREEN);
//sprintf( dispBuff,"占空比:%0.2f%% 頻率:%0.2fHz\n",show_DutyCycle,show_Frequency);
sprintf( (char*)dispBuff,"占空比:%0.2f%%",show_DutyCycle);
LCD_ClearLine(LINE(5)); /* 清除單行文字 */
/*然后顯示該字符串即可,其它變量也是這樣處理*/
ILI9341_DispStringLine_EN_CH(LINE(5),(char*)dispBuff);
Count_flag=0;
}
//LCD_Test();
}
}
// printf("\r\n ********** 液晶屏中文顯示程序(字庫在外部FLASH)*********** \r\n");
// printf("\r\n 若漢字顯示不正常,請閱讀工程中的readme.txt文件說明,根據要求給FLASH重刷字模數據\r\n");
// //其中0、3、5、6 模式適合從左至右顯示文字,
// //不推薦使用其它模式顯示文字 其它模式顯示文字會有鏡像效果
// //其中 6 模式為大部分液晶例程的默認顯示方向
// ILI9341_GramScan ( 6 );
//
// Printf_Charater();
//
// while ( 1 )
// {
// ;
// }
//
//
//}
///*用于測試各種液晶的函數*/
void LCD_Test(void)
{
/*演示顯示變量*/
static uint8_t testCNT = 0;
char dispBuff[100];
testCNT++;
LCD_SetFont(&Font8x16);
LCD_SetColors(RED,BLACK);
ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH); /* 清屏,顯示全黑 */
/********顯示字符串示例*******/
ILI9341_DispStringLine_EN_CH(LINE(0),"秉火3.2寸LCD參數:");
ILI9341_DispStringLine_EN_CH(LINE(1),"分辨率:240x320 px");
ILI9341_DispStringLine_EN_CH(LINE(2),"ILI9341液晶驅動");
ILI9341_DispStringLine_EN_CH(LINE(3),"XPT2046觸摸屏驅動");
/********顯示變量示例*******/
LCD_SetTextColor(GREEN);
/*使用c標準庫把變量轉化成字符串*/
sprintf(dispBuff,"顯示變量: %d ",testCNT);
LCD_ClearLine(LINE(5)); /* 清除單行文字 */
/*然后顯示該字符串即可,其它變量也是這樣處理*/
ILI9341_DispStringLine_EN_CH(LINE(5),dispBuff);
/*******顯示圖形示例******/
/* 畫直線 */
LCD_ClearLine(LINE(7));/* 清除單行文字 */
LCD_SetTextColor(BLUE);
ILI9341_DispStringLine_EN_CH(LINE(7),"畫直線:");
LCD_SetTextColor(RED);
ILI9341_DrawLine(50,170,210,230);
ILI9341_DrawLine(50,200,210,240);
LCD_SetTextColor(GREEN);
ILI9341_DrawLine(100,170,200,230);
ILI9341_DrawLine(200,200,220,240);
LCD_SetTextColor(BLUE);
ILI9341_DrawLine(110,170,110,230);
ILI9341_DrawLine(130,200,220,240);
Delay(0xFFFFFF);
ILI9341_Clear(0,16*8,LCD_X_LENGTH,LCD_Y_LENGTH-16*8); /* 清屏,顯示全黑 */
/*畫矩形*/
LCD_ClearLine(LINE(7)); /* 清除單行文字 */
LCD_SetTextColor(BLUE);
ILI9341_DispStringLine_EN_CH(LINE(7),"畫矩形:");
LCD_SetTextColor(RED);
ILI9341_DrawRectangle(50,200,100,30,1);
LCD_SetTextColor(GREEN);
ILI9341_DrawRectangle(160,200,20,40,0);
LCD_SetTextColor(BLUE);
ILI9341_DrawRectangle(170,200,50,20,1);
Delay(0xFFFFFF);
ILI9341_Clear(0,16*8,LCD_X_LENGTH,LCD_Y_LENGTH-16*8); /* 清屏,顯示全黑 */
/* 畫圓 */
LCD_ClearLine(LINE(7)); /* 清除單行文字 */
LCD_SetTextColor(BLUE);
ILI9341_DispStringLine_EN_CH(LINE(7),"畫圓");
LCD_SetTextColor(RED);
ILI9341_DrawCircle(100,200,20,0);
LCD_SetTextColor(GREEN);
ILI9341_DrawCircle(100,200,10,1);
LCD_SetTextColor(BLUE);
ILI9341_DrawCircle(140,200,20,0);
Delay(0xFFFFFF);
ILI9341_Clear(0,16*8,LCD_X_LENGTH,LCD_Y_LENGTH-16*8); /* 清屏,顯示全黑 */
}
/**
* @brief 簡單延時函數
* @param nCount :延時計數值
* @retval 無
*/
static void Delay ( __IO uint32_t nCount )
{
for ( ; nCount != 0; nCount -- );
}
/*"當"字符的字模16x16 */
unsigned char charater_matrix[] =
{ /*"當",0*/
0x01,0x00,0x21,0x08,0x11,0x08,0x09,0x10,0x09,0x20,0x01,0x00,0x7F,0xF8,0x00, 0x08,
0x00,0x08,0x00,0x08,0x3F,0xF8,0x00,0x08,0x00,0x08,0x00,0x08,0x7F,0xF8,0x00,0x08,
};
/**
* @brief 使用串口在上位機打印字模
* 演示字模顯示原理
* @retval 無
*/
void Printf_Charater(void)
{
int i,j;
unsigned char kk;
/*i用作行計數*/
for ( i=0;i<16;i++)
{
/*j用作一字節內數據的移位計數*/
/*一行像素的第一個字節*/
for(j=0; j<8; j++)
{
/*一個數據位一個數據位地處理*/
kk = charater_matrix[2*i] << j ; //左移J位
if( kk & 0x80)
{
printf("*"); //如果最高位為1,輸出*號,表示筆跡
}
else
{
printf(" "); //如果最高位為0,輸出空格,表示空白
}
}
/*一行像素的第二個字節*/
for(j=0; j<8; j++)
{
kk = charater_matrix[2*i+1] << j ; //左移J位
if( kk & 0x80)
{
printf("*"); //如果最高位為1,輸出*號,表示筆跡
}
else
{
printf(" "); //如果最高位為0,輸出空格,表示空白
}
}
printf("\n"); //輸出完一行像素,換行
}
printf("\n\n"); //一個字輸出完畢
}
/* ------------------------------------------end of file---------------------------------------- */
QQ截圖20190601225150.png (73.49 KB, 下載次數: 34)
下載附件
2019-6-1 22:52 上傳
基于STM32F103ZET6芯片的ADC采集方波信號求占空比并顯示在lcd上
全部資料51hei下載地址:
求脈沖信號占空比并顯示.7z
(227.17 KB, 下載次數: 37)
2019-6-2 06:03 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|