MSP430FR6989系列教程之LCD

发布者:DreamySunset最新更新时间:2022-09-20 来源: csdn关键字:MSP430FR6989  LCD 手机看文章 扫描二维码
随时随地手机看文章

一、LCD

段式LCD本质上,它由两个互成 90 度的偏光板(偏振入射到显示屏的 光线)、带通电电极的液晶(两个偏光片之间)和一个反射背板(反射穿过显示屏所有层的光线)组成。


当某个特定段的电极不通电时,该段“截止”或呈灰色。 在此正常状态下,液晶具有可以将光偏转 90 度的扭 曲结构。 所以在未通电时,光线首先入射到第一层偏光板上并在偏转后从同一方向射出。 然后,在光线通 过液晶时,液晶使光线偏转 90 度 - 由于此时的光线相对于经过第一层偏光板时发生了偏转,因此光线能够 穿过第二层偏光板。 最后,光线经反射背板反射并经过相同的过程返回。由于光线反射回来,所以该段看 起来是亮的或者灰色的。


当某个段的电极通电时,该段“导通”或呈黑色。 在通电状态下液晶不发生扭转,从而光线通过时不会发生偏 转。 所以在通电时,光线首先入射到第一层偏光板上并在偏转后从同一方向射出。 然后,光线这次只是直 接通过液晶而不发生偏转。 由于第二层偏光板与第一层成 90 度夹角,所以光线无法通过并被吸收。 这使得 该段看起来是暗的。


那么问题来了,我们如何才能驱动LCD呢?

必须使用交流信号驱动 LCD。 施加到 LCD 段上的直流电平可能损坏 LCD - 通常允许低于 50 mV 的直流电 压。 MSP430LCD 模块将自动生成这些类型的交流波形,使用户仅需要指定段的导通与截至 - 内部硬件将完成余下的工作。


LCD 段具有一个施加到两个电极(COMx 线和 Sx 段线)之间液晶的电荷。 这两个电极施加的电势差即为通过 LCD 段观察到的波形。


LCD 段上是否存在 RMS 电压将决定此段为导通还是截止。 图 2 中的示例波形给出了一个导通段和一个截 止段的波形(COMx 和 Sx 引脚信号的组合)。 导通段比截止段上施加了更大的 RMS 电压。 注意,这两个 段都具有净零直流电压的波形,但导通段上的 RMS 电压较高,这使得该段导通并且看起来是暗的。

在这里插入图片描述

在了解了这一点后,就可以开始coding了


二、代码编写

这里附上完整main.c的代码


#include  

#include "lcd.h"

#include "pmm.h"

#include "wdt.h"

/**

 * main.c

 */

int main(void)

{

WDT_A_hold(WDT_A_BASE);


    // Disable the GPIO power-on default high-impedance mode to activate

    // previously configured port settings

PMM_unlockLPM5();


//enable interrupts

    __enable_interrupt();


    LCD_C_setPinAsLCDFunctionEx(LCD_C_BASE, LCD_C_SEGMENT_LINE_0, LCD_C_SEGMENT_LINE_21);

    LCD_C_setPinAsLCDFunctionEx(LCD_C_BASE, LCD_C_SEGMENT_LINE_26, LCD_C_SEGMENT_LINE_43);


    LCD_C_initParam initParams = {0};

    initParams.clockSource = LCD_C_CLOCKSOURCE_ACLK;

    initParams.clockDivider = LCD_C_CLOCKDIVIDER_1;

    initParams.clockPrescalar = LCD_C_CLOCKPRESCALAR_16;

    initParams.muxRate = LCD_C_4_MUX;

    initParams.waveforms = LCD_C_LOW_POWER_WAVEFORMS;

    initParams.segments = LCD_C_SEGMENTS_ENABLED;


    LCD_C_init(LCD_C_BASE, &initParams);


    // LCD Operation - VLCD generated internally, V2-V4 generated internally, v5 to ground

    LCD_C_setVLCDSource(LCD_C_BASE, LCD_C_VLCD_GENERATED_INTERNALLY, LCD_C_V2V3V4_GENERATED_INTERNALLY_NOT_SWITCHED_TO_PINS,

         LCD_C_V5_VSS);


    // Set VLCD voltage to 2.60v

    LCD_C_setVLCDVoltage(LCD_C_BASE, LCD_C_CHARGEPUMP_VOLTAGE_2_60V_OR_2_17VREF);


    // Enable charge pump and select internal reference for it

    LCD_C_enableChargePump(LCD_C_BASE);

    LCD_C_selectChargePumpReference(LCD_C_BASE, LCD_C_INTERNAL_REFERENCE_VOLTAGE);


    LCD_C_configChargePump(LCD_C_BASE, LCD_C_SYNCHRONIZATION_ENABLED, 0);


    // Clear LCD memory

    LCD_C_clearMemory(LCD_C_BASE);


// Display "123456"

       // LCD Pin18-Pin19 for '1'

       LCD_C_setMemory(LCD_C_BASE, LCD_C_SEGMENT_LINE_18, 0x0);

       LCD_C_setMemory(LCD_C_BASE, LCD_C_SEGMENT_LINE_19, 0x6);


       // LCD Pin10-Pin11 for '2'

       LCD_C_setMemory(LCD_C_BASE, LCD_C_SEGMENT_LINE_10, 0xB);

       LCD_C_setMemory(LCD_C_BASE, LCD_C_SEGMENT_LINE_11, 0xD);


       // LCD Pin6-Pin7 for '3'

       LCD_C_setMemory(LCD_C_BASE, LCD_C_SEGMENT_LINE_6, 0x3);

       LCD_C_setMemory(LCD_C_BASE, LCD_C_SEGMENT_LINE_7, 0xF);


       // LCD Pin36-Pin37 for '4'

       LCD_C_setMemory(LCD_C_BASE, LCD_C_SEGMENT_LINE_36, 0x7);

       LCD_C_setMemory(LCD_C_BASE, LCD_C_SEGMENT_LINE_37, 0x6);


       // LCD Pin28-Pin29 for '5'

       LCD_C_setMemory(LCD_C_BASE, LCD_C_SEGMENT_LINE_28, 0x7);

       LCD_C_setMemory(LCD_C_BASE, LCD_C_SEGMENT_LINE_29, 0xB);


       // LCD Pin14-Pin15 for '6'

       LCD_C_setMemory(LCD_C_BASE, LCD_C_SEGMENT_LINE_14, 0xF);

       LCD_C_setMemory(LCD_C_BASE, LCD_C_SEGMENT_LINE_15, 0xB);


       // Turn LCD on

       LCD_C_on(LCD_C_BASE);

       // Set breakpoint here to see the "123456"

       __no_operation();

       // Prepare LCD for adding new segments to old letters to make new letters

       LCD_C_off(LCD_C_BASE);

       /**

        * Rough picture representation of hex value representation to physical lines on a LCD_C

        * lower    upper

        * line     line

        * segment  segment

        *    0x8

        * 0x4 |____0x4

        *   0x2  0x1 |

        * 0x8 ___/ 0x2

        *    / 0x1

        */

       // Display "Ue9A68"

       // LCD Pin18-Pin19 for changing '1' to 'U'

       LCD_C_setMemoryWithoutOverwrite(LCD_C_BASE, LCD_C_SEGMENT_LINE_18, 0xC);

       LCD_C_setMemoryWithoutOverwrite(LCD_C_BASE, LCD_C_SEGMENT_LINE_19, 0x1);


       // LCD Pin10-Pin11 for changing '2' to 'e'

       LCD_C_setMemoryWithoutOverwrite(LCD_C_BASE, LCD_C_SEGMENT_LINE_10, 0x4);


       // LCD Pin6-Pin7 for changing '3' to '9'

       LCD_C_setMemoryWithoutOverwrite(LCD_C_BASE, LCD_C_SEGMENT_LINE_6, 0x4);


       // LCD Pin36-Pin37 for changing '4' to 'A'

       LCD_C_setMemoryWithoutOverwrite(LCD_C_BASE, LCD_C_SEGMENT_LINE_36, 0x8);

       LCD_C_setMemoryWithoutOverwrite(LCD_C_BASE, LCD_C_SEGMENT_LINE_37, 0x8);


       // LCD Pin28-Pin29 for changing '5' to '6'

       LCD_C_setMemoryWithoutOverwrite(LCD_C_BASE, LCD_C_SEGMENT_LINE_28, 0x8);


       // LCD Pin14-Pin15 for changing '6' to '8'

       LCD_C_setMemoryWithoutOverwrite(LCD_C_BASE, LCD_C_SEGMENT_LINE_15, 0x4);


       //Turn LCD on

       LCD_C_on(LCD_C_BASE);


      __bis_SR_register(LPM3_bits | GIE);


return 0;

}


三、总结

以上就是今天要讲的内容,本文仅仅简单介绍了LCD,及如何在LCD上实现显示函数和方法。


参考

[1].TI https://www.ti.com/tool/MSP-EXP430FR6989

[2].TI MSP430FR6989用户指南

关键字:MSP430FR6989  LCD 引用地址:MSP430FR6989系列教程之LCD

上一篇:MSP430FR6989系列教程之定时器
下一篇:MSP430F169 FLASH 操作

推荐阅读最新更新时间:2024-11-18 07:23

FlexEnable灵活的低成本OLCD技术推动多种技术大放异彩
FlexEnable全力以赴,通过最低成本的最具扩展性柔性显示技术,革新世界大众市场应用显示器行业,其中的成功秘诀就是使用有机材料。FlexEnable已经通过有机材料展示了毋须依赖传统玻璃背板并且富有竞争力的有机LCD(OLCD)显示器制造方法,并且提出了OLCD技术可为超高对比度电视显示器带来的诸多关键优势。 FlexEnable战略总监Paul Cain表示:“电视显示器市场是一个竞争激烈的领域,引领业界开发多种创新技术以提高图像质量,这些新技术旨在提供与OLED相当的高对比度性能,而且成本更低,以满足大众消费市场的需求。我们的OLCD技术采用相比其它柔性显示器更简单的制造方法来实现超高对比度显示器,并且与玻璃产品相比更
[电源管理]
FlexEnable灵活的低成本O<font color='red'>LCD</font>技术推动多种技术大放异彩
LCD面板价格Q3涨超30%,Q4或持续上涨带动整机厂商跟涨
受旺季备货拉动,今年第三季度TV面板需求非常强劲,远远超出了面板厂商的产能;同时面板厂将更多的产能转移到IT (笔记本电脑和显示器)面板的生产,导致电视面板供应偏紧,产品价格也持续上涨。据笔者统计今年TV面板报价发现,大部分产品Q3报价上涨30%以上。 业内人士指出,由于电视面板供应仍然偏紧,其产品涨价会持续到第四季度,但涨幅有所收窄,且产品价格仍维持高点。在此背景下,品牌厂商也于9月开始陆续调涨部分电视产品价格,不过,这并不意味着他们已经摆脱价格战,只是面板价格上涨,不得不降低价格战的烈度。 大部分TV面板Q3上涨30%以上 随着新冠疫情逐渐稳定,全球各地区陆续解封及美国政府发放补助之际,品牌厂趁势降价刺激销量,带动TV面板市场
[手机便携]
<font color='red'>LCD</font>面板价格Q3涨超30%,Q4或持续上涨带动整机厂商跟涨
LG否认退出LCD面板市场:与中国厂商差异化竞争
在大尺寸LCD面板市场上,韩国三星、LG两家原本是全球最大的厂商之一,近年来由于国产LCD面板崛起,LCD降价太快,三星、LG也撑不住了。日前有消息称LG公司将退出LCD面板市场,但该公司否认,表示要跟中国厂商等对手打差异化竞争。    实际上LG之前确实表达过关停LCD业务的想法,此前该公司提出过在2020年底停产韩国LCD面板厂,在中国投资的广州面板厂也考虑削减产能,或者增加OLED面板产能。    不过2020年下半年开始,LCD面板由之前的跌价转为涨价,LG的态度也变了,原本去年底计划关停的LCD工厂有活路了,至少现在不会有停产的考虑。    长期来看,LCD面板还是会有降价周期的,但LG表态要在LCD市场上进行差异化竞争
[半导体设计/制造]
STM32 ILI9341驱动TFTLCD(十)LCD显示汉字
LCD显示汉字原理和显示字符一样,设置区域初始点,把汉字字模写入显存。但是汉字的数量比较多,以GB2312为例,GB2312 收录简化汉字及符号、字母、日文假名等共 7445 个图形字符,其中汉字占 6763 个,与ASCII的总数量128不是在同一个数量级上。如果把汉字字模像ASCII一样作为常量保存起来,那将会占用大量的CPU内存。为了节省CPU,这里把汉字字模存入flash中。 对于这么多的汉字,如果按照GB2312的表格来写入字模生成器就比较麻烦了,所以这里用另一个取模软件ts3,可以直接生成整个GB2312的字库。 打开ts3,生成字库步骤和之前生成单个字模的软件类似,这里不再介绍。 对于那么多的汉字,生成字
[单片机]
STM32 ILI9341<font color='red'>驱动</font>TFT<font color='red'>LCD</font>(十)<font color='red'>LCD</font>显示汉字
ARM9(S3C2440) LCD
LCD是liquid crystal display 的简称,液晶显示器按驱动方式分为静态驱动,简单矩阵驱动以及主动矩阵驱动。 简单矩阵驱动分为扭转向列型(TN)和超扭转向列型(STN)两种。 主动矩阵驱动则以TFT为主。 (1)、 TN型驱动液晶,是LCD中最基本的,其他LCD都以TN型改进。他只能将入射光旋转90度,视角只有30度,色彩单一,对比度低,用于电子表和电子计算机。 (2)、 STN型驱动液晶。可将入射光旋转180度至270度,也改善了视角,通过塔配色滤光片,将单色矩阵的任意像素分成3个子像素,红绿蓝。 (3)、1,2都采用场电压驱动方式,如果现实尺寸加大,中心部分对电极变化的反应时间就会变长,显
[单片机]
2018年韩LCD设备商将更倚重中国市场
据悉,受三星显示有限公司和LG Display扩大OLED面板产能以及主要面向中国的创纪录出货量驱动,韩国液晶设备厂商营收在2017年创下新高。 展望2018年,中国LCD设备投资占该行业全球投资比例还将不断上升,韩国液晶设备供应商对中国液晶面板制造商的采购依赖度预计还将不断提高。 在三星显示器的主要设备供应商中,AP Systems公司2017年的收入达到近1万亿韩元(约合9亿美元)的新纪录,其中90%的收入来自用于生产柔性OLED面板的激光剥离(LLO)系统的销售。另外两家供应商Semes和SFA Engineering在2017年的收入分别达到约2万亿韩元。 LG Display的两家供应商Jusung Engineerin
[手机便携]
京东方停止LCD产线,未来将专注于OLED和mini LED
据国外媒体报道,半导体显示技术公司京东方(BOE)宣布,将停止 LCD 产能投资,转向 OLED 和 Mini LED。 过去两年,京东方超过乐金显示(LG Display),成为全球最大的液晶面板制造商。 今年 11 月中旬,外媒报道称,京东方已从今年 10 月份开始在云南昆明量产 Micro OLED 面板。 作为显示技术领域的领导者之一,京东方在 OLED 显示屏方面取得了一些进展,但在 OLED 面板方面仍落后于三星和 LG。 该公司一直在努力追赶三星,如今已将 Micro OLED 纳入其产品开发中。目前,该公司正在寻找 Micro OLED 应用产品的合作伙伴。 今年以来,由于 TV 市场低迷、手机换机动力不
[嵌入式]
京东方停止<font color='red'>LCD</font>产线,未来将专注于OLED和mini LED
Mouser供货带LCD控制器的Kinetis KL3/KL4低功耗MCU
2013年9月10日 – Mouser Electronics即日起现货供应Freescale的Kinetis L KL3/KL4系列带LCD控制器且可扩展性高的低功耗MCU(最多376个分段)。 Freescale Kinetis L系列微控制器的产品阵容,目前已扩展至Kinetis KL3系列和KL4系列。这些新MCU具备灵活的低功耗LCD控制器以及最多376个分段(47 x 8或51 x 4)。 它们的LCD闪烁模式可实现低平均功率并同时保持处于低功耗模式。 这些新设备是Freescale的Kinetis L系列ARM® Cortex™-M0+微控制器,它们是构建在ARM® Cortex™-M0+内核上的入门级32位MCU
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved