【AT-START-F423测评】8.综合应用实现简单的信息显示屏

综合前面已经实现的功能用这些东西简单做一个信息显示屏
 


显示屏分3个页面,用开发板上的按键进行切换
第1页显示一些欢迎信息
 

复制

void lcd_change()

{

    yuyy_hs12864g18b_clear_screen(&hs12864_dev);

    if(mode == 0)

    {

        yuyy_hs12864g18b_display_string_8x16(&hs12864_dev,0,0,0,(uint8_t *)" AT32F423 TEST  ");

        yuyy_hs12864g18b_display_string_8x16(&hs12864_dev,0,2,0,(uint8_t *)"    WELCOME     ");

        yuyy_hs12864g18b_display_string_8x16(&hs12864_dev,0,4,0,(uint8_t *)" Press userkey  ");

        yuyy_hs12864g18b_display_string_8x16(&hs12864_dev,0,6,0,(uint8_t *)"Code by yuyy1989");

    }

    else if(mode == 1)

    {

        bmp280_readpress();

        dht11_readHT();

    }

    else

    {

        yuyy_hs12864g18b_display_string_8x16(&hs12864_dev,0,2,0,(uint8_t *)"   Wait data    ");

    }

}

第2页显示时钟和传感器数据

复制

uint8_t *WeekdayStr[7]= {"SUN","MON","TUE","WED","THU","FRI","SAT"};

void showtime()

{

    ertc_time_type time;

    char out[20];

    ertc_calendar_get(&time);

    if(mode != 1)

        return;

    sprintf(out," 20%02d-%02d-%02d %s ",time.year, time.month, time.day,WeekdayStr[time.week%7]);

    yuyy_hs12864g18b_display_string_8x16(&hs12864_dev,0,0,0,(uint8_t *)out);

    sprintf(out,"    %02d:%02d:%02d    ",time.hour, time.min, time.sec);

    yuyy_hs12864g18b_display_string_8x16(&hs12864_dev,0,2,0,(uint8_t *)out);

}

void bmp280_readpress()

{

    float temp,press;

    char out[20];

    temp = yuyy_bmp280_readtemp(&bmp280_dev);

    press = yuyy_bmp280_readpress(&bmp280_dev);

     if(mode != 1)

            return;

    sprintf(out,"   %.1fPa",press);

    yuyy_hs12864g18b_display_string_8x16(&hs12864_dev,0,6,0,(uint8_t *)out);

}

void dht11_readHT()

{

    float humi,temp;

    char out[20];

    uint8_t outlen;

    uint8_t result = yuyy_dht11_readHT(&dht11_dev,&temp,&humi);

    if(YUYY_DHT11_OK == result)

    {

        if(mode != 1)

            return;

        outlen = sprintf(out,"  %.1f%% %.1f",humi,temp);

        yuyy_hs12864g18b_display_string_8x16(&hs12864_dev,0,4,0,(uint8_t *)out);

        yuyy_hs12864g18b_display_graphic_16x16(&hs12864_dev,0,4,8*outlen,(uint8_t *)test16x16temp);

        yuyy_hs12864g18b_display_string_8x16(&hs12864_dev,0,4,8*(outlen+2),(uint8_t *)"   ");

    }

}

第3页显示电脑CPU内存占用和网速,通过串口接收上位机发送过来的数据并显示

复制

uint8_t lcdhead[4] = {'L','C','D',':'};

uint8_t lcdbuf[4][17] = {0};

uint8_t lcdheadindex = 0;

uint8_t lcdrowindex = 0;

uint8_t lcdcolindex = 0;

uint8_t lcd_showflag = 0;

void uart_receivebyte(uint8_t dat)

{

    if(lcdheadindex < 4)

    {

        if(dat == lcdhead[lcdheadindex])

            lcdheadindex += 1;

        else

            lcdheadindex = 0;

    }

    else

    {

        if(dat == '\n')

        {

            lcd_showflag = 1;

        }

        else if(dat == '#')

        {

            lcdrowindex += 1;

            lcdcolindex = 0;

        }

        else if(lcdrowindex < 4 && lcdcolindex < 16)

        {

            lcdbuf[lcdrowindex][lcdcolindex] = dat;

            lcdcolindex += 1;

        }

    }

}

void procLcddata()

{

    if(mode != 2)

            return;

    uint8_t i = 0;

    while(i<4)

    {

        yuyy_hs12864g18b_display_string_8x16(&hs12864_dev,0,i*2,0,lcdbuf[i]);

        i += 1;

    }

    memset(lcdbuf,' ',68);

    lcdbuf[0][16] = 0;

    lcdbuf[1][16] = 0;

    lcdbuf[2][16] = 0;

    lcdbuf[3][16] = 0;

    lcdheadindex = 0;

    lcdrowindex = 0;

    lcdcolindex = 0;

}


---------------------
作者:yuyy1989
链接:https://bbs.21ic.com/icview-3337056-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值