LoRa终端设备ASR6505之段式LCD
时间:2022-07-25
本文章向大家介绍LoRa终端设备ASR6505之段式LCD,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言:STM8L15x有LCD控制器外设,不需要使用额外的芯片,可以直接驱动段式LCD。ASR6505预留了最大4COM、18SEG的LCD接口,即就是开发板最右边的接口。
1、LCD驱动电源
软件来选择VLCD的电源,如果使用内部供电,则需要VLCD引脚断开(P3跳线帽断开),反之闭合。
2、ASR6505 LCD相关引脚与STM8L对应关系
3、段式LCD
4、LCD参数
参数:Bias偏置电压是1/3,Duty占空比是1/4,需要4个COM口和12个SEG口。
连接:ASR6505对应连接LCD也是用COM0-COM3(对应LCD的Pin1-Pin4),SEG0-SEG12(对应LCD的Pin5-Pin16)。
5、STM8L的LCD的SEG引脚使能
由上面的图可知,连接LCD需要ASR6505的SEG0-SEG11,对应到STM8L上面就是SEG4-SEG9、SEG14-SEG17、SEG40-SEG41,共12个SEG口,在下图在用红圈标了出来。
6、段式LCD点亮分析
查看LCD规格书可知,点亮第一个“点”需要往对应的缓存(LCD_RAM)写1,下面是STM8L的LCD_RAM表和段式LCD的映射表:
7、实验设计
驱动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、实验现象
《从0到1搭建LoRa物联网》系列文章推荐:
- Setting Up KeePass For Centos 6
- 拼音米大热!快视”、“冰冰”等多个域名结拍
- 入门必读:Hadoop新手学习指导
- 使用密码记录工具keepass来保存密码
- 机器人带着VR学习,最后学会了人工智能
- 超经典的JBOSS入门文章
- ASP.NET2.0应用中定制安全凭证
- AI造的AI,比人造的还厉害,该喜还是该忧?
- Mono 3.2 测试NPinyin 中文转换拼音代码
- Reactive Extensions介绍
- Reactive Extensions(Rx) 学习
- 发布一个日期选择控件(ASPNET2.0)
- 做程序员压力山大,很多人都快疯了
- 小程序让交通出行变得如此简化,看看这些微信小程序你有在用了吗?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux如何实现断点续传文件功能
- Xshell实现Windows上传文件到Linux主机的方法
- Linux中的EXT系列文件系统格式详解
- Linux中hexdump命令用法
- CentOS7挂载新数据盘的完整步骤
- Linux下安装Keepalived及原理分析
- centos6搭建gitlab的方法步骤
- Linxu服务器上安装JDK 详细步骤
- linux 不改变目录结构移动 home 目录到新分区的操作方法
- ubuntu14.04安装opencv3.0.0的操作方法
- Linux中让alias设置永久生效的方法详解
- Centos系统下“无法打开并写入文件”问题的解决
- 如何在Linux下设置录音笔时间
- Linux下ZooKeeper分布式集群安装教程
- CentOS 6.5中利用yum搭建LNMP环境的步骤详解