查看: 1185|回复: 0
收起左侧

RISC-V单片机快速入门07-板载LCD显示ESP8266数据

[复制链接]

  离线 

  • TA的每日心情
    奋斗
    2021-3-3 12:32
  • 签到天数: 10 天

    [LV.3]

    发表于 2020-8-28 11:59:24 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 皋陶 于 2020-8-28 17:15 编辑

    RISC-V单片机快速入门01-开发环境搭建
    RISC-V单片机快速入门02-移植RT_Thread Nano
    RISC-V单片机快速入门03-基于RT_Thread Nano添加控制台
    RISC-V单片机快速入门04-基于RT_Thread Nano添加FinSH
    RISC-V单片机快速入门05-串口助手发送AT指令启动TCP Server
    RISC-V单片机快速入门06-控制ESP8266启动Http Server
    RISC-V单片机快速入门07-板载LCD显示ESP8266数据



    RISC-V单片机快速入门07-板载LCD显示ESP8266数据


    前言:

    本节,我们使用GD32VF103控制ESP-01S启动TCP Server,然后让多个网络调试助手连接ESP-01S并与之通信,并通过LCD显示TCP网络助手发来的数据。


    一、基础知识1.LCD简介

    本实验使用的LCD为龙眼开发板板载LCD,是一个0.96英寸的屏,使用ST7735S驱动驱动,硬件引脚说明如下


    国内芯片技术交流-RISC-V单片机快速入门07-板载LCD显示ESP8266数据risc-v单片机中文社区(1)


    本实验最终实现效果如下图:


    国内芯片技术交流-RISC-V单片机快速入门07-板载LCD显示ESP8266数据risc-v单片机中文社区(2)


    图中设置中文显示需要使用字库软件设置,本实验采用字模Ⅲ这款字库软件,已经连同代码推送到云端,可以下载后使用。


    2.字库软件安装

    字模Ⅲ安装也比较简单,点击Zimo3InstallFULL.exe,一直下一步默认安装即可,破解使用fontreg.exe工具


    国内芯片技术交流-RISC-V单片机快速入门07-板载LCD显示ESP8266数据risc-v单片机中文社区(3)

    打开后,按照下图步骤进行注册即可。


    国内芯片技术交流-RISC-V单片机快速入门07-板载LCD显示ESP8266数据risc-v单片机中文社区(4)

    注册成功后如下图所示


    二、实例2.1 制作字符

    打开上文注册号的字模Ⅲ软件,按如下方式设置字体大小以及字符集格式


    国内芯片技术交流-RISC-V单片机快速入门07-板载LCD显示ESP8266数据risc-v单片机中文社区(5)

    设置生成的字模格式如下


    国内芯片技术交流-RISC-V单片机快速入门07-板载LCD显示ESP8266数据risc-v单片机中文社区(6)

    常规设置如下



    国内芯片技术交流-RISC-V单片机快速入门07-板载LCD显示ESP8266数据risc-v单片机中文社区(7)

    输入要转换的字符串,点击字库智能生成按钮

    国内芯片技术交流-RISC-V单片机快速入门07-板载LCD显示ESP8266数据risc-v单片机中文社区(8)

    将生成的字库复制到打开的工程oledfont.h文件中


    国内芯片技术交流-RISC-V单片机快速入门07-板载LCD显示ESP8266数据risc-v单片机中文社区(9)

    同理导出"接收"两个汉字,设置大小为16*16,不在演示步骤。


    2.2 驱动程序说明

    gd32vf103单片机使用spi接口驱动LCD,硬件连接如下:


    国内芯片技术交流-RISC-V单片机快速入门07-板载LCD显示ESP8266数据risc-v单片机中文社区(10)


    SPI初始化

    1. void spi_config(void)
    2. {
    3.     spi_parameter_struct spi_init_struct;
    4.     /* deinitilize SPI and the parameters /
    5.     OLED_CS_Set();
    6.     spi_struct_para_init(&spi_init_struct);
    7.     / SPI0 parameter config */
    8.     spi_init_struct.trans_mode           = SPI_TRANSMODE_FULLDUPLEX;
    9.     spi_init_struct.device_mode          = SPI_MASTER;
    10.     spi_init_struct.frame_size           = SPI_FRAMESIZE_8BIT;
    11.     spi_init_struct.clock_polarity_phase = SPI_CK_PL_HIGH_PH_2EDGE;
    12.     spi_init_struct.nss                  = SPI_NSS_SOFT;
    13.     spi_init_struct.prescale             = SPI_PSC_8;
    14.     spi_init_struct.endian               = SPI_ENDIAN_MSB;
    15.     spi_init(SPI0, &spi_init_struct);
    16.     spi_crc_polynomial_set(SPI0,7);
    17.     spi_enable(SPI0);
    18. }
    复制代码

    LCD写数据函数

    1. /*
    2.        Function description: LCD serial data write function
    3.        Entry data: serial data to be written to dat
    4.        Return value: None
    5. */
    6. void LCD_Writ_Bus(u8 dat)
    7. {
    8.     OLED_CS_Clr();
    9.     while(RESET == spi_i2s_flag_get(SPI0, SPI_FLAG_TBE));
    10.         spi_i2s_data_transmit(SPI0, dat);
    11.     while(RESET == spi_i2s_flag_get(SPI0, SPI_FLAG_RBNE));
    12.         spi_i2s_data_receive(SPI0);
    13.     OLED_CS_Set();
    14. }
    复制代码

    2.3 程序主函数逻辑

    增加处理代码,区分是不是http数据,如果是普通TCP数据,直接返回


    1. while(1)
    2. {
    3.     if (STA_DATA_ARRIVED == system_context->event)
    4.     {
    5.         // send back
    6. //            ESP8266_SendString ( DISABLE, system_context->data_buf, rt_strlen(system_context->data_buf), system_context->sock_id );
    7.             if (rt_strstr(system_context->data_buf, "/getdata"))
    8.             {
    9.                 rt_kprintf("ready to send data………. %s\r\n", response);
    10.                 ESP8266_SendString ( DISABLE, response, rt_strlen(response), system_context->sock_id );
    11.                 system_context->event = STA_CONNECTED;
    12.             }else if(rt_strstr(system_context->data_buf, "/index"))
    13.             {
    14.                 rt_kprintf("ready to send data………. %s\r\n", response_index);
    15.                 ESP8266_SendString ( DISABLE, response_index, rt_strlen(response_index), system_context->sock_id );
    16.                 system_context->event = STA_CONNECTED;
    17.             }else
    18.             {
    19. //                 send back
    20.                 ESP8266_SendString ( DISABLE, system_context->data_buf, rt_strlen(system_context->data_buf), system_context->sock_id );
    21.                 LCD_ShowString(24 + 48, 40, (u8 *)(system_context->data_buf), RED);
    22.             }
    23.         }
    24.         rt_thread_mdelay(10);
    25.     }
    复制代码

    三、运行

    下载程序完毕后,重启设备,ESP01S启动一个WIFI热点,并启动TCP Server,log如下:


    国内芯片技术交流-RISC-V单片机快速入门07-板载LCD显示ESP8266数据risc-v单片机中文社区(11)

    电脑连接模块热点,然后启动网路助手,连接模块起来的AP热点,发送111,会受到返回的数据111


    国内芯片技术交流-RISC-V单片机快速入门07-板载LCD显示ESP8266数据risc-v单片机中文社区(12)


    LCD显示如下:


    国内芯片技术交流-RISC-V单片机快速入门07-板载LCD显示ESP8266数据risc-v单片机中文社区(13)

    灯光效果不好,手机太渣,大家将就着看哈,功能是OK了。


    四、结语

    一叶孤沙出品:一沙一世界,一叶一菩提






    上一篇:RISC-V单片机快速入门06-控制ESP8266启动Http Server
    下一篇:一粒沙子变成芯片的全过程
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条



    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-4-19 04:25 , Processed in 1.310996 second(s), 44 queries .

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