OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7961|回复: 6

关掉电源以后LCD屏不显示 同时串口也不输出

[复制链接]

5

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
327
金钱
327
注册时间
2019-1-3
在线时间
47 小时
发表于 2021-6-6 19:30:52 | 显示全部楼层 |阅读模式
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);

    }
}


IMG_4260.JPG
IMG_4261.JPG

SHT85 template.rar

8.73 MB, 下载次数: 2

最佳答案

查看完整内容[请看2#楼]

LCD_Init()初始化函数中有 printf(" LCD ID:%x\r\n",lcddev.id); //打印LCD ID 把这句注释掉就可以了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
327
金钱
327
注册时间
2019-1-3
在线时间
47 小时
 楼主| 发表于 2021-6-6 19:30:53 | 显示全部楼层
LCD_Init()初始化函数中有     printf(" LCD ID:%x\r\n",lcddev.id); //打印LCD ID      把这句注释掉就可以了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2021-6-7 01:37:41 | 显示全部楼层
帮顶
回复

使用道具 举报

6

主题

890

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1481
金钱
1481
注册时间
2020-8-19
在线时间
336 小时
发表于 2021-6-7 09:25:56 | 显示全部楼层
帮顶  
回复

使用道具 举报

0

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2019-9-19
在线时间
119 小时
发表于 2021-6-7 10:07:32 | 显示全部楼层
帮顶
回复

使用道具 举报

11

主题

2153

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4936
金钱
4936
注册时间
2015-1-10
在线时间
618 小时
发表于 2021-6-8 09:22:00 | 显示全部楼层
是不是程序在RAM里跑的
回复

使用道具 举报

5

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
327
金钱
327
注册时间
2019-1-3
在线时间
47 小时
 楼主| 发表于 2021-6-8 15:41:08 | 显示全部楼层
阿侑kevin 发表于 2021-6-8 09:22
是不是程序在RAM里跑的

请问一下 怎么看程序是不是在RAM里呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 21:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表