**
******************************************************************************
* @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---------------------------------------- */
基于STM32F103ZET6芯片的ADC采集方波信号求占空比并显示在lcd上
全部资料51hei下载地址:
求脉冲信号占空比并显示.7z
(227.17 KB, 下载次数: 37)
|