学习板上带有字符型LCD显示,特点是24段4位,驱动方式是复用1/4占空比,1/3基准,工作电压3V,如下图所示
我们先分析下官方给的范例关于LCD的驱动函数
void LCD_GLASS_Init(void)//使能LCD时钟,并设置相应参数
void LCD_contrast()//通过按键调节对比度
void LCD_bar()//将bar值写道LCD缓存中
static void LCD_Conv_Char_Seg(uint8_t* c,bool point,bool column, uint8_t* digit)//将ASCII码转换为LCD显示,第一个参数是要显示的字符比如‘c’,第二个参数是设置POINT是否显示,第三个参数是设置COLUMN是否显示,第四个参数不是很懂
void LCD_GLASS_WriteChar(uint8_t* ch, bool point, bool column, uint8_t position)//将字符写入LCD缓存,和上面参数大体一致
void LCD_GLASS_DisplayString(uint8_t* ptr)//显示字符串,最大只能显示7个,范例:LCD_GLASS_DisplayString("Error");
void LCD_GLASS_DisplayStrDeci(uint16_t* ptr)//能够显示有小数点的字符串
void LCD_GLASS_Clear(void)//清除LCD缓冲区
void LCD_GLASS_ScrollSentence(uint8_t* ptr, uint16_t nScroll, uint16_t ScrollSpeed)//字符串句子移动模式显示,使用前需要清除LCD缓冲区,第一个参数是显示的字符串,第二个参数是显示几次,第三个是速度,单位是毫秒,范例:LCD_GLASS_ScrollSentence(" ** STM8L-DISCOVERY **",1,SCROLL_SPEED);
还有一些常用字符声明,比如A-Z,0-9,一些其他特殊字符比如:
/* code for '? character */
#define C_UMAP 0x6081
/* code for 'm' character */
#define C_mMap 0xb210
/* code for 'n' character */
#define C_nMap 0x2210
/* constant code for '*' character */
#define star 0xA0D7
/* constant code for '-' character */
#define C_minus 0xA000
#define DOT 0x8000 /* for add decimal point in string */也就是小数点.
#define DOUBLE_DOT 0x4000 /* for add decimal point in string */冒号
/* Macros used for set/reset bar LCD bar */四个BAR宏定义
#define BAR0_ON t_bar[0] |= 0x80
#define BAR0_OFF t_bar[0] &= ~0x80
#define BAR1_ON t_bar[1] |= 0x08
#define BAR1_OFF t_bar[1] &= ~0x08
#define BAR2_ON t_bar[0] |= 0x20
#define BAR2_OFF t_bar[0] &= ~0x20
#define BAR3_ON t_bar[1] |= 0x02
#define BAR3_OFF t_bar[1] &= ~0x02
我们编写下面一个LCD测试函数
void main(void)
{
uint16_t tab1[3],tab2[5];
/* 初始化*/
LCD_GLASS_Init();
//滚动显示字符串
LCD_GLASS_ScrollSentence("**STM8L LCD TEST** EEFOCUS",1,100);
//显示小数
delay_ms(0XFFF);
//LCD_GLASS_Clear();
BAR0_ON;
tab1[0]='1';
tab1[0] |= DOT;
tab1[1]='2';
tab1[2]='V';
LCD_GLASS_DisplayStrDeci(tab1);
//显示:
delay_ms(0XFFFF);
//LCD_GLASS_Clear();
BAR1_ON;
tab2[0]='1';
tab2[1]='7';
tab2[1] |= DOUBLE_DOT;
tab2[2]='0';
tab2[3]='2';
tab2[4]=' ';
LCD_GLASS_DisplayStrDeci(tab2);
while (1)
{
}
}
关键字:STM8L 探索套件 学习笔记 LCD液晶显示
引用地址:
STM8L探索套件学习笔记-LCD液晶显示(三)
推荐阅读最新更新时间:2024-03-16 14:41
stm8l低功耗系列
最近干刚做了一个stm8的项目用的是L低功耗系列,其中遇到一个问题。外设寄存器的值怎么都写入不进去。用IAR仿真产看寄存器的值,不论写进去多少,都是初始值。后来把所有寄存器都写了一遍,发现有的能写进去,有的写不进去。比如GPIO的寄存器就能写进去。百思不得姐,偶然查看clock的库函数发现个函数是设置外设时钟的。这个系列,亦或者整个低功耗系列的每个外设是不是都需要在时钟寄存器中单独设置时钟。(以前所使用的芯片都是在外设寄存器中使能或者是禁使能)
[单片机]
LCD12864液晶显示程序
/*********************************************************************** 工 程:ST7920驱动的12864液晶的3线串行驱动模式 引脚定义:RS(CS)===== PD3 //PB0 RW(SID)==== PD4 //PB1 EN(SCLK)=== PD6// PB2 PSB为硬件控制,接高电平为8位或4位的并行模式,接低电平为串行模式 ************************************************************************/ #include iom16v.h #
[单片机]
TQ2440 学习笔记—— 1、Windows平台下开发工具安装与环境建立
1、开发工具的安装与环境建立 系统:win7 64位 SecureCRT软件:该软件可以代替Windows中的超级终端,是个非常好的串口工具(其实它的功能很多,不过这里只是使用了它的串口功能) 功能:SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单的说是Windows下登录UNIX或Linux服务器主机的软件。 可以通过登录虚拟机里面的Linux操作系统,这样我们就不需要频繁的进入虚拟机里面进行操作;同时它也可以连通开发板的操作系统,也可以进行操作,通过相应的设置可以完成开发板、虚拟机、PC机三者的互通。 直接解压即可使用。使用方法: 主要是要注意端口配置: DNW软件:是
[单片机]
STM32学习笔记-GPIO使用超强总结
1 GPIO使用步骤 1.1. 使能GPIO对应的外设时钟 例如://使能GPIOA、GPIOB、GPIOC对应的外设时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC , ENABLE); 1.2. 声明一个GPIO_InitStructure结构体 例如: GPIO_InitTypeDef GPIO_InitStructure; 1.3. 选择待设置的GPIO管脚 例如://选择待设置的GPIO第7、8、9管脚位 ,中间加“|”符号 GPIO_InitStructure
[单片机]
NRF24L01调试记 (STM32F4,STM32F1,STM8L)
其实网上NRF24L01的资料很多,例程也很多,本不应该有什么大问题,但是确出了各种奇怪的问题,花了不少时间。 STM32F103+NRF24L01 用最小系统板搭了个平台,加上网上的例程,问题是检查NRF24L01的时候,一直没法找到,读写地址寄存器失败,起初怀疑是引线的问题,自己检查连线以及针脚定义,都没有发现问题,既然针脚没有问题怀疑是SPI通讯的问题,接着检查SPI配置,都没有发现明显的错误,尽管分频到256还是不行,十分不解,检查时序代码,因为是网上现成的代码本来想不应该有问题,但是还真的发现问题了,发现网上时序先是将CSN拉高!发送结束后再拉低!这个明显不符,修改后运行正常,哎,网上人家给的例程未必人家就验证过,切
[单片机]
STM32学习笔记(一)---基础知识
常识 1.所有芯片的引脚顺序都是逆序排列的 2.芯片主要由内核和片上外设组成。 存储器映射 存储器本身不具有地址,给存储器分配地址的过程就称为存储器映射。 给存储器再分配一个地址的过程就叫做存储器重映射。 寄存器映射 设计片上外设时,以四个字节为一个单元,共32bit,每个单元对应不同的功能,我们控制这些单元就可以驱动外设工作。 根据每个单元的功能不同,以功能为名给这个内存单元起别名,这个别名就是寄存器。 给已经分配好地址的有特定功能的内存单元取别名的过程就叫做寄存器映射 例子: GPIOF端口的输出数据寄存器ODR的内存地址为0x4002 1414(ODR寄存器32位,低16位有效,控制16个IO端口
[单片机]
STM32+FreeRTOS+CUBEMX_学习笔记(四)按键输入
前言 gpio输入模式也就是简单的读取gpio的电平 操作 1、首先在cube中将gpio设置为输入模式 2、函数讲解: HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin);//这个函数用来读取pin的高低电平值 /** * @brief Read the specified input port pin. * @param GPIOx where x can be (A..F) to select the GPIO peripheral for STM32F0 family * @param GPIO_Pin specifies the port bit to read.
[单片机]
AM335x(TQ335x)学习笔记——USB驱动移植
对于AM335x来讲,TI维护的USB驱动已经非常完善了,本文称之为移植,实际上仅仅是配置内核选项使能USB HOST/OTG功能。废话少说,直接动手开启AM335x的USB驱动配置项。 Step1. 配置内核支持USB 默认的配置项没有配置USB相关的选项,但是DTS已经配置好了,我们不需要对DTS作任何修改,详细的内核配置项如下: Device Drivers --- USB support --- OTG support * EHCI HCD (USB 2.0) support Improved Transaction Translator schedul
[单片机]