【从0到1搭建LoRa物联网】7、国产LoRa终端ASR6505驱动段式LCD例程

系列文章:
【从0到1搭建LoRa物联网】1、LoRa物联网的架构
【从0到1搭建LoRa物联网】2、终端设备开发方式
【从0到1搭建LoRa物联网】3、国产LoRa终端ASR6505软硬件
【从0到1搭建LoRa物联网】4、国产LoRa终端ASR6505普通GPIO
【从0到1搭建LoRa物联网】5、国产LoRa终端ASR6505驱动DHT11
【从0到1搭建LoRa物联网】6、国产LoRa终端ASR6505 I2C接口

1、前言

STM8L15x有LCD控制器外设,不需要使用额外的芯片,可以直接驱动段式LCD。ASR6505预留了最大4COM、18SEG的LCD接口,即就是开发板最右边的接口。

2、LCD驱动电源

软件来选择VLCD的电源,如果使用内部供电,则需要VLCD引脚断开(P3跳线帽断开),反之闭合。

3、ASR6505 LCD相关引脚与STM8L对应关系

ASR6505 LCD相关引脚与STM8L对应关系如下:

ASR6505 Pin NameSTM8 Pin Name
SEG17PG7(SEG35)
SEG16PD6(SEG20)
SEG15PD5(SEG19)
SEG14PD4(SEG18)
SEG13PF7(SEG43)
SEG12PF6(SEG42)
SEG11PF5(SEG41)
SEG10PF4(SEG40)
SEG9PB7(SEG17)
SEG8PB6(SEG16)
SEG7PB5(SEG15)
SEG6PB4(SEG14)
SEG5PD3(SEG9)
SEG4PD2(SEG8)
SEG3PD0(SEG7)
SEG2PE5(SEG6)
SEG1PE4(SEG5)
SEG0PE3(SEG4)
COM3PD1(COM3)
COM2PA6(COM2)
COM1PA5(COM1)
COM0PA4(COM0)

4、段式LCD

在这里插入图片描述

5、LCD参数

参数:Bias偏置电压是1/3,Duty占空比是1/4,需要4个COM口和12个SEG口。
连接:ASR6505对应连接LCD也是用COM0-COM3(对应LCD的Pin1-Pin4),SEG0-SEG12(对应LCD的Pin5-Pin16)。

6、STM8L的LCD的SEG引脚使能

由上面的图可知,连接LCD需要ASR6505的SEG0-SEG11,对应到STM8L上面就是SEG4-SEG9、SEG14-SEG17、SEG40-SEG41,共12个SEG口,在下图在用红圈标了出来。
在这里插入图片描述

7、段式LCD点亮分析

查看LCD规格书可知,点亮第一个“点”需要往对应的缓存(LCD_RAM)写1,下面是STM8L的LCD_RAM表和段式LCD的映射表:
在这里插入图片描述
在这里插入图片描述

8、代码实现

void LCD_PeriphInit(void)
{
  CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE);//LCD驱动时钟门控使能

  LCD_DeInit( );//LCD相关寄存器恢复初值
  LCD_Init(LCD_Prescaler_4, LCD_Divider_16,//LCD驱动初始化,LCD刷新频率
              LCD_Duty_1_4, LCD_Bias_1_3,//1/4DUTY 1/3BIAS,看屏幕参数
              LCD_VoltageSource_Internal);//选择LCD驱动电源,外部或内部
  
  LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xF0); //SEG4-7
  LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0xC3); //SEG8-9,SEG14-15
  LCD_PortMaskConfig(LCD_PortMaskRegister_2, 0x3F); //SEG16-21
  LCD_PortMaskConfig(LCD_PortMaskRegister_3, 0x00); //NONE
  LCD_PortMaskConfig(LCD_PortMaskRegister_4, 0x00); //MONE
  LCD_PortMaskConfig(LCD_PortMaskRegister_5, 0x0F); //SEG40-43
  
  LCD_ContrastConfig(LCD_Contrast_3V3);//配置对比度
  LCD_DeadTimeConfig(LCD_DeadTime_0);  //设置死区时间
  LCD_PulseOnDurationConfig(LCD_PulseOnDuration_5);// 配置LCD脉冲持续时间
  LCD_HighDriveCmd(ENABLE);
  LCD_Cmd(ENABLE);
}

void LCD_Display(void)
{    
 //对显示缓冲区操作,要结合液晶说明书 
  static uint8_t i=0;   
  i++;
  if(i>=255)
  {
    i=0;
  }
  if(i%2)
  {
    LCD_WriteRAM(LCD_RAMRegister_0, 0x30|0xC0|0x03|0x00|0x00|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_1, 0x00|0x00|0x03|0xC0|0x00|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_2, 0x00|0x00|0x00|0x00|0x03|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_4, 0x03|0x0C|0x30|0x00|0x00|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_5, 0x00|0x00|0x00|0x0C|0x30|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_7, 0x30|0xC0|0x00|0x00|0x00|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_8, 0x00|0x00|0x03|0xC0|0x00|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_9, 0x00|0x00|0x00|0x00|0x03|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_11,0x03|0x0c|0x30|0x00|0x00|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_12,0x00|0x00|0x00|0x0C|0x30|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_15,0x00|0x00|0x00|0x00|0x00|0x30);  
    LCD_WriteRAM(LCD_RAMRegister_17,0x00|0x00|0x00|0x00|0x00|0x30);  
    LCD_WriteRAM(LCD_RAMRegister_19,0x00|0x00|0x00|0x00|0x00|0x30);  
    LCD_WriteRAM(LCD_RAMRegister_21,0x00|0x00|0x00|0x00|0x00|0x30);  

  }
  else
  {
    LCD_WriteRAM(LCD_RAMRegister_0, 0x20|0xC0|0x03|0x00|0x00|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_1, 0x00|0x00|0x03|0x80|0x00|0x00);   
    LCD_WriteRAM(LCD_RAMRegister_2, 0x00|0x00|0x00|0x00|0x01|0x00);   
    LCD_WriteRAM(LCD_RAMRegister_4, 0x00|0x08|0x20|0x00|0x00|0x00);   
    LCD_WriteRAM(LCD_RAMRegister_5, 0x00|0x00|0x00|0x0C|0x30|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_7, 0x20|0x40|0x00|0x00|0x00|0x00);   
    LCD_WriteRAM(LCD_RAMRegister_8, 0x00|0x00|0x02|0x80|0x00|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_9, 0x00|0x00|0x00|0x00|0x02|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_11,0x00|0x08|0x20|0x00|0x00|0x00); 
    LCD_WriteRAM(LCD_RAMRegister_12,0x00|0x00|0x00|0x00|0x20|0x00);  
    LCD_WriteRAM(LCD_RAMRegister_15,0x00|0x00|0x00|0x00|0x00|0x10);  
    LCD_WriteRAM(LCD_RAMRegister_17,0x00|0x00|0x00|0x00|0x00|0x30); 
    LCD_WriteRAM(LCD_RAMRegister_19,0x00|0x00|0x00|0x00|0x00|0x30);  
    LCD_WriteRAM(LCD_RAMRegister_21,0x00|0x00|0x00|0x00|0x00|0x30);  
  }
}

9、实验现象

在这里插入图片描述

欢迎关注微信公众号【物联网思考】,回复关键字“ ASR6505”获取资料,《从0到1搭建LoRa物联网》系列的所有软硬件资料将会分享在公众号。在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
LORA物联网技术是一种低功耗、远距离传输的无线通信技术,适用于物联网应用中的长距离通信。基站是LORA物联网系统中的关键组成部分,用于接收和发送物联设备的数据。节水灌溉是一种利用现代科技手段来进行高效节水灌溉的方法。 在LORA物联网技术中,基站可以与多个节点设备通信,实现数据的接收和发送。对于节水灌溉系统而言,基站可以接收来自各个节点设备的传感器数据,如土壤湿度、气温等,然后通过LORA物联网技术将这些数据传输到云平台或决策系统中进行处理和分析。 通过分析这些数据,决策系统可以根据不同地区的气候、土壤条件等因素来制定灌溉方案。基站可以接收来自决策系统的指令,并将灌溉计划发送给相应的节点设备。节点设备依据这些指令进行相应的灌溉操作,实现高效的节水灌溉。 利用LORA物联网技术和基站,节水灌溉系统具有以下优势: 1. 长距离传输:LORA物联网技术具有远距离传输的特点,可以实现对大范围区域内的节点设备进行数据的接收和发送,满足节水灌溉系统在大面积土地上的需求。 2. 低功耗:LORA物联网技术能够实现低功耗通信,延长节点设备的电池寿命,减少维护成本。 3. 多通道通信:基站支持与多个节点设备进行通信,实现对多个节点设备的监控和控制,提高灌溉的智能化水平。 4. 数据分析:通过将传感器数据传输到云平台或决策系统中进行分析,节水灌溉系统可以根据实时的环境条件进行智能化的决策,实现高效的灌溉管理。 综上所述,利用LORA物联网技术和基站,可以实现对节水灌溉系统的远程监控和控制,提高灌溉效率,节约水资源,并减少人力和物力成本。这种技术在农业领域的应用前景广阔。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

freemote

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值