void main_delay(u32 time){ int i,j; for(i = 0; i < tim_stm32例程">
赞
踩
#include "stm32f10x.h" #include "LQ12864.h" #include <stdio.h> void main_delay(u32 time) { int i,j; for(i = 0; i < time; i++) { for(j = 0; j < 1000; j++) { j++; j--; } } } int main(void) { int i; char buf[100] = { 0 };//字符数组,可以保存字符串 LCD_Init();//LCD初始化 while(1) { for(i = 10; i >= 0; i--) { //将格式化出一个字符串,将字符串赋值给buf数组 sprintf(buf,"高手%d",i);//将字符串打印输出到buf数组中,相当于给buf数组赋值 //将buf中的字符串显示到屏幕中 LCD_Print(30,3,buf);//打印到屏幕上 main_delay(200);//显示一个会儿 LCD_CLS();//清屏 } LCD_P14x16Str(30,3,"科技"); main_delay(200);//显示一个会儿 } }
注意:
1、sprintf()函数可以格式化输出字符串,如数字10可格式化输出为字符串’10’,
sprintf(buf,“高手%d”,i);这里的打印输出并不是打印到屏幕,而是打印输出字符串到buf,这个字符串数组中。
2、调用sprintf()函数需要添加#include <stdio.h>
3、LCD的清屏函数LCD_CLS();
* //i == 0 空格 3 4-1-i 星星 1 2*i+1
*** //i == 1 空格 2 4-1-i 星星 3
***** //i == 2 空格 1 4-1-i 星星 5
******* //i == 3 空格 0 4-1-i 星星 7
#include "stm32f10x.h" #include "LQ12864.h" void main_delay(u32 time) { int i,j; for(i = 0; i < time; i++) { for(j = 0; j < 1000; j++) { j++; j--; } } } int main(void) { int i ,j; for(i = 0; i < 4; i++)//i = 0 1 2 3 { //打印星星 for(j = 0; j < 2*i+1; j++) { LCD_P6x8Str((4-1-i)*6+j*6,i,"#");//(4-1-i)*6 往后移动一个空格 } } }
menu1 *
menu2
menu3
menu4
添加UP(button) DOWN(button) OK(button), 3个按钮
实现按下UP 菜单往上走,DWON菜单往下走…,最后一个再向下,回到第一个,第一个再向上回到最后一个。
#include "stm32f10x.h" #include "LQ12864.h" #include <stdio.h> #define UP 1 //向上键 #define DOWN 2 //向下键 #define NONE 0 //没有按键 //延时 void main_delay(int time) { int i,j; for(i = 0; i < time; i++) { for(j = 0; j < 1000; j++) { j++; j--; } } } //按键初始化 void keyInit() { GPIO_InitTypeDef GPIO_InitStruct;//定义一个结构体变量 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//启动PA的时钟 //给结构体的成员变量赋值 GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;//输入模式 GPIO_InitStruct.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_7 ;//选中了3和 7 GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;//工作频率 GPIO_Init(GPIOA,&GPIO_InitStruct);//PA0 对PA0进行初始化 } //读取按键的值 int keyRead() { if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3) == 0)//上 return UP;//1 if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7) == 0)//下 return DOWN;//2 return NONE;//0 如果没有按键返回0 } int main(void) { //字符指针数组,数组中每个元素都是字符指针,指向四个字符串 char * menu[4] = {"LED1","LED2","FAN","BUZZER"}; int i; int flag = 0;//flag时刻代表当前星星所在的行数 int key;//用来保存读取到的按键的值 keyInit();//按键初始化 LCD_Init();//LCD初始化 while(1) { //在屏幕上显示四行菜单 for(i = 0; i < 4; i++) LCD_P6x8Str(0,i,menu[i]);//menu[i]不要加" "号,menu[i]代表数组中的元素 //显示星星 LCD_P6x8Str(40,flag,"#");//40保证星星显示在菜单后面 //添加按键处理 key = keyRead();//读取按键的值 if(key == UP)//说明按了向上键 { //在星星移动前,清除当前行的星星 LCD_P6x8Str(40,flag," ");//" "之间有空格 flag = flag == 0 ? 3 : flag-1; } else if(key == DOWN)//说明按了向下键 { LCD_P6x8Str(40,flag," ");//" "之间有空格 flag = flag == 3 ? 0 : flag+1; } main_delay(200);//按键消抖 } }
注意:用到sprintf()函数时需要添加头文件#include<stdio.h>,sprintf()可混合打印数字字符串
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。