查看: 3086|回复: 1

[原创] [涂鸦IoT-TYDE3.0实验]四、连接串口LCD实验

[复制链接]
  • TA的每日心情
    开心
    2019-11-19 11:07
  • 签到天数: 226 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2018-2-12 14:05:02 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 zhjb1 于 2018-2-12 14:31 编辑

    在下载的例程中一时找不到专门IO控制函数只好借助其控制LED的函数Hal_RGB.c和hal_rgb.h。具体更改如下:
    打开hal_rgb.h在 #define   LED2  2 下边增加:
    #define          sdat  3
    #define   sclk  4
    #define   sreg  5
    #define   sres  6
    在 #define LED_B_ON()        GPIO_ResetBits(GPIOB,GPIO_Pin_9)
       #define LED_B_OFF()       GPIO_SetBits(GPIOB,GPIO_Pin_9)的下边增加:

    #define sdat_ON()        GPIO_ResetBits(GPIOB,GPIO_Pin_12)
    #define sdat_OFF()       GPIO_SetBits(GPIOB,GPIO_Pin_12)
    #define sclk_ON()        GPIO_ResetBits(GPIOB,GPIO_Pin_13)
    #define sclk_OFF()       GPIO_SetBits(GPIOB,GPIO_Pin_13)
    #define sreg_ON()        GPIO_ResetBits(GPIOB,GPIO_Pin_14)
    #define sreg_OFF()       GPIO_SetBits(GPIOB,GPIO_Pin_14)
    #define sres_ON()        GPIO_ResetBits(GPIOB,GPIO_Pin_15)
    #define sres_OFF()       GPIO_SetBits(GPIOB,GPIO_Pin_15)
    注意,xxxx_OFF()是设置IO口为高;xxxx_ON()设置IO口为低!在最后增加两个函数:
    void lcd_Init(void);
    void lcdControl(uint8_t Object,uint8_t State);
    后一个没有用到,但觉得可能会有用。
    打开Hal_RGB.c,在最后边增加两个函数:
    //函数名称 : lcdInit        功能描述 : lcd初始化
    void lcd_Init(void){
      GPIO_InitTypeDef GPIO_InitStruct;
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
      GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
      GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
      GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_Init(GPIOB, &GPIO_InitStruct);

      sdat_OFF();
      sclk_OFF();
      sreg_OFF();
      sres_OFF();
    }
    //函数名称 : lcdControl        功能描述 : LED控制
    void lcdControl(uint8_t Object,uint8_t State){
      switch(Object){
      case sdat:
        if(State == 1) sdat_ON();else sdat_OFF();
        break;
      case sclk:
        if(State == 1)sclk_ON();else sclk_OFF();
        break;
            case sreg:
        if(State == 1)sreg_ON();else sreg_OFF();
        break;
            case sres:
        if(State == 1)sres_ON();else sres_OFF();
        break;
      }
    }
    前者是定义PB_12~PB_15为4线串口LCD控制GPIO口,后者暂时无用,觉得可能有用。余下的就相当简单了,只需要将变好的显示屏驱动代码写成.h文档include连接上去就一起Ok了。

    41

    41
    照片41显示了较大的128x64黑白串口屏连接板子驱显示意图。为满屏刷显ASCII码。以后的E1S与F103的通讯就可以截获显示在LCD上了,相当于终端设备。
    以上工程是在IAR8.11下修改的wifi_mcusdk_dev_stm32_v3.0.3文档。



    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-2-18 22:25
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2018-2-12 15:40:55 | 显示全部楼层
    老哥,你这速度挺快啊
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 10:08 , Processed in 0.123815 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.