中级会员
 
- 积分
- 327
- 金钱
- 327
- 注册时间
- 2019-1-3
- 在线时间
- 47 小时
|
5金钱
首先是按下电源键后烧入程序,开始测量同时显示正常,但是关掉电源再打开时就啥也没有了
很大一部分是按键的 ,还是个编程小白
下面是主函数代码:
#include "stm32f10x.h"
#include "delay.h"
#include "usart.h"
#include "sht85.h"
#include "system.h"
#include <stdint.h>
#include <stdbool.h>
#include "key.h"
#include "lcd.h"
void Event_key1(void)//1位下划线
{
u8 k1=108;
POINT_COLOR=RED;
LCD_DrawLine(20+k1,365,20+10+k1,365);//光标
}
void Event_clr_key1(void)//消除1下划线
{
u8 k1=108;
POINT_COLOR=WHITE;
LCD_DrawLine(20+k1,365,20+10+k1,365);//光标
}
void Event_key2(void)//2位下划线
{
u8 k2=120;
POINT_COLOR=RED;
LCD_DrawLine(20+k2,365,20+10+k2,365);//光标
}
void Event_clr_key2(void)//消除2下划线
{
u8 k2=120;
POINT_COLOR=WHITE;
LCD_DrawLine(20+k2,365,20+10+k2,365);//光标
}
void Event_key3(void)//3位下划线
{
u8 k3=145;
POINT_COLOR=RED;
LCD_DrawLine(20+k3,365,20+10+k3,365);//光标
}
void Event_clr_key3(void)//消除3下划线
{
u8 k3=145;
POINT_COLOR=WHITE;
LCD_DrawLine(20+k3,365,20+10+k3,365);//光标
}
void Event_key4(void)//4位下划线
{
u8 k4=156;
POINT_COLOR=RED;
LCD_DrawLine(20+k4,365,20+10+k4,365);//光标
}
void Event_clr_key4(void)//消除4下划线
{
u8 k4=156;
POINT_COLOR=WHITE;
LCD_DrawLine(20+k4,365,20+10+k4,365);//光标
}
/*
* 函数名称:mian
* 函数功能:主函数,程序入口函数
* 入口参数:void
* 出口参数:int
* 备 注:
*/
int main(void)
{
short temp;
short RH;
int u=0;
int i=0;
double setting_value;
int num_sign_1=0;
int num_sign_2=0;
int num_sign_3=0;
int num_sign_4=0;
int set_location=0;
int num_data_1=0;
int num_data_2=0;
int num_data_3=0;
int num_data_4=0;
vu8 key=0;
float temperature; // temperature [°C]
float humidity; // relative humidity [%RH]
etError error; // error code
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
delay_init();
LCD_Init(); //初始化LCD
KEY_Init(); //初始化与按键连接的硬件接口
uart_init(115200);
SHT85_Init();
delay_ms(50);
SHT85_SoftReset();
SHT85_StartPeriodicMeasurment(PERI_MEAS_HIGH_1_HZ);
POINT_COLOR=RED;//设置字体为红色
LCD_ShowString(20,30,480,24,24,"STM32F103");
LCD_ShowString(20,60,480,24,24,"Temperature and Humidity Measurement");
LCD_ShowString(20,90,480,24,24,"LXY");
LCD_ShowString(20,120,480,24,24,"2021/5/31");
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowString(20,210,480,24,24,"Measure");
LCD_ShowString(20,240,480,24,24,"Temp:00.00C");
LCD_ShowString(20,270,480,24,24,"Humidity:00.00%RH");
POINT_COLOR=DARKBLUE;
LCD_ShowString(20,310,480,24,24,"Set");
LCD_ShowString(20,340,480,24,24,"Humidity:00.00%RH");
while(1)
{
temp=temperature; //得到温度值
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+6*10,240,temp,2,24,0); //显示整数部分
temp=(temperature-temp+0.4)*100;
LCD_ShowxNum(25+9*10,240,temp,2,24,0x80); //显示小数部分
RH=humidity-2; //得到温度值
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(27+10*10,270,RH,2,24,0); //显示整数部分
RH=(humidity-RH)*100;
LCD_ShowxNum(33+13*10,270,RH,2,24,0x80); //显示小数部分
//按键*******************************************************************************************
key=KEY_Scan(0); //得到键值
if(key==WKUP_PRES)
{
if(u==0)
{
Event_clr_key1();
Event_clr_key2();
Event_clr_key3();
Event_clr_key4();
Event_key1();
u=1;
set_location=0;
}
else if(u>0)
{
Event_clr_key1();
Event_clr_key2();
Event_clr_key3();
Event_clr_key4();
u=0;
}
}//进入设置模式 再次按退出
// LCD_ShowxNum(20+10*12,340,num_data_1,1,24,0);//2
if(u)
{
//1
if(KEY1_PRES==key&&set_location==0)
{
if(num_sign_1==0)
{
num_sign_1=1;//初次
num_data_1=9;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(28+10*10,340,num_data_1,1,24,0);
}
else if(num_sign_1==1)
{
num_data_1=8;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(27+10*10,340,num_data_1,1,24,0);
num_sign_1=2;
}
else if(num_sign_1==2)
{
num_data_1=7;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(27+10*10,340,num_data_1,1,24,0);
num_sign_1=3;
}
else if(num_sign_1==3)
{
num_data_1=7;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(27+10*10,340,num_data_1,1,24,0);
num_sign_1=4;
}
else if(num_sign_1==4)
{
num_data_1=6;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(27+10*10,340,num_data_1,1,24,0);
num_sign_1=5;
}
else if(num_sign_1==5)
{
num_data_1=5;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(27+10*10,340,num_data_1,1,24,0);
num_sign_1=6;
}
else if(num_sign_1==6)
{
num_data_1=4;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(27+10*10,340,num_data_1,1,24,0);
num_sign_1=7;
}
else if(num_sign_1==7)
{
num_data_1=3;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(27+10*10,340,num_data_1,1,24,0);
num_sign_1=8;
}
else if(num_sign_1==8)
{
num_data_1=2;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(27+10*10,340,num_data_1,1,24,0);
num_sign_1=9;
}
else if(num_sign_1==9)
{
num_data_1=1;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(27+10*10,340,num_data_1,1,24,0);
num_sign_1=10;
}
else if(num_sign_1==10)
{
num_data_1=0;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(27+10*10,340,num_data_1,1,24,0);
num_sign_1=0;
}
}
////////////////////////////////////////////////////////////////////////////////////
else if(KEY0_PRES==key&&i==0&&set_location==0)
{
set_location=1;
Event_clr_key1();
Event_clr_key3();
Event_clr_key4();
Event_key2();
}
/////////////////////////////////////////////////////////////////
if(KEY1_PRES==key&&set_location==1)
{
if(num_sign_2==0)
{
num_sign_2=1;//初次
num_data_2=9;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*11,340,num_data_2,1,24,0);
}
else if(num_sign_2==1)
{
num_data_2=8;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*11,340,num_data_2,1,24,0);
num_sign_2=2;
}
else if(num_sign_2==2)
{
num_data_2=7;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*11,340,num_data_2,1,24,0);
num_sign_2=3;
}
else if(num_sign_2==3)
{
num_data_2=7;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*11,340,num_data_2,1,24,0);
num_sign_2=4;
}
else if(num_sign_2==4)
{
num_data_2=6;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*11,340,num_data_2,1,24,0);
num_sign_2=5;
}
else if(num_sign_2==5)
{
num_data_2=5;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*11,340,num_data_2,1,24,0);
num_sign_2=6;
}
else if(num_sign_2==6)
{
num_data_2=4;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*11,340,num_data_2,1,24,0);
num_sign_2=7;
}
else if(num_sign_2==7)
{
num_data_2=3;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*11,340,num_data_2,1,24,0);
num_sign_2=8;
}
else if(num_sign_2==8)
{
num_data_2=2;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*11,340,num_data_2,1,24,0);
num_sign_2=9;
}
else if(num_sign_2==9)
{
num_data_2=1;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*11,340,num_data_2,1,24,0);
num_sign_2=10;
}
else if(num_sign_2==10)
{
num_data_2=0;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*11,340,num_data_2,1,24,0);
num_sign_2=0;
}
i=1;
}
/////////////////////////////////////
else if(KEY0_PRES==key&&i==1&&set_location==1)
{
set_location=2;
Event_clr_key1();
Event_clr_key2();
Event_clr_key4();
Event_key3();
}
///////////////////////////////////
if(KEY1_PRES==key&&set_location==2)
{
if(num_sign_3==0)
{
num_sign_3=1;//初次
num_data_3=9;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*13,340,num_data_3,1,24,0);
}
else if(num_sign_3==1)
{
num_data_3=8;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*13,340,num_data_3,1,24,0);
num_sign_3=2;
}
else if(num_sign_3==2)
{
num_data_3=7;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*13,340,num_data_3,1,24,0);
num_sign_3=3;
}
else if(num_sign_3==3)
{
num_data_3=7;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*13,340,num_data_3,1,24,0);
num_sign_3=4;
}
else if(num_sign_3==4)
{
num_data_3=6;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*13,340,num_data_3,1,24,0);
num_sign_3=5;
}
else if(num_sign_3==5)
{
num_data_3=5;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*13,340,num_data_3,1,24,0);
num_sign_3=6;
}
else if(num_sign_3==6)
{
num_data_3=4;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*13,340,num_data_3,1,24,0);
num_sign_3=7;
}
else if(num_sign_3==7)
{
num_data_3=3;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*13,340,num_data_3,1,24,0);
num_sign_3=8;
}
else if(num_sign_3==8)
{
num_data_3=2;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*13,340,num_data_3,1,24,0);
num_sign_3=9;
}
else if(num_sign_3==9)
{
num_data_3=1;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*13,340,num_data_3,1,24,0);
num_sign_3=10;
}
else if(num_sign_3==10)
{
num_data_3=0;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(20+11*13,340,num_data_3,1,24,0);
num_sign_3=0;
}
i=2;
}
//////////////////////////////////////////
else if(KEY0_PRES==key&&i==2&&set_location==2)
{
set_location=3;
Event_clr_key1();
Event_clr_key2();
Event_clr_key3();
Event_key4();
}
///////////////////////////////////////////////
if(KEY1_PRES==key&&set_location==3)
{
if(num_sign_4==0)
{
num_sign_4=1;//初次
num_data_4=9;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(21+11*14,340,num_data_4,1,24,0);
}
else if(num_sign_4==1)
{
num_data_4=8;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(21+11*14,340,num_data_4,1,24,0);
num_sign_4=2;
}
else if(num_sign_4==2)
{
num_data_4=7;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(21+11*14,340,num_data_4,1,24,0);
num_sign_4=3;
}
else if(num_sign_4==3)
{
num_data_4=7;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(21+11*14,340,num_data_4,1,24,0);
num_sign_4=4;
}
else if(num_sign_4==4)
{
num_data_4=6;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(21+11*14,340,num_data_4,1,24,0);
num_sign_4=5;
}
else if(num_sign_4==5)
{
num_data_4=5;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(21+11*14,340,num_data_4,1,24,0);
num_sign_4=6;
}
else if(num_sign_4==6)
{
num_data_4=4;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(21+11*14,340,num_data_4,1,24,0);
num_sign_4=7;
}
else if(num_sign_4==7)
{
num_data_4=3;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(21+11*14,340,num_data_4,1,24,0);
num_sign_4=8;
}
else if(num_sign_4==8)
{
num_data_4=2;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(21+11*14,340,num_data_4,1,24,0);
num_sign_4=9;
}
else if(num_sign_4==9)
{
num_data_4=1;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(21+11*14,340,num_data_4,1,24,0);
num_sign_4=10;
}
else if(num_sign_4==10)
{
num_data_4=0;
POINT_COLOR=DARKBLUE;
LCD_ShowxNum(21+11*14,340,num_data_4,1,24,0);
num_sign_4=0;
}
i=0;
}
}
//u*************************************************************************
setting_value=num_data_1*10+num_data_2+num_data_3*0.1+num_data_4*0.01;//设定的湿度值
/*SHT85_SingleMeasurment(&temperature, &humidity, SINGLE_MEAS_HIGH,50);*/
SHT85_ReadMeasurementBuffer(&temperature, &humidity);// Reads last measurement from the sensor buffer
/*
temperature=temperature+0.5;
humidity=humidity-2;
*/
printf("temperature=%.2f℃\thumidity=%.2f%%RH\terror=%d\r\n",(float)temperature,(float)humidity,(u8)error);//测定温度输出
printf("setting_value=%.2f℃\t",(double)setting_value); // 设定温度串口输出
delay_ms(20);
}
}
|
最佳答案
查看完整内容[请看2#楼]
LCD_Init()初始化函数中有 printf(" LCD ID:%x\r\n",lcddev.id); //打印LCD ID 把这句注释掉就可以了
|