【课后练习】LaunchPad课后练习四之LCD1602

常见泽1   2012-5-27 20:21 楼主

1.      简单介绍下1602

1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形(用自定义CGRAM,显示效果也不好)1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

 

看下LCD1602长什么样子

3.jpg

 

1.      LCD1602特性

+5V电压,对比度可调

内含复位电路

提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能

80字节显示数据存储器DDRAM

内建有1605X7点阵的字型的字符发生器CGROM

8个可由用户自定义的5X7的字符发生器CGRAM

字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15)和地线GND(16)

4.jpg

 

1.      挂下原理图

1.jpg

1.      一些指令的简单介绍

2.jpg

1.      注意

本文只是让lcd1602显示,具体怎么显示花样 读者要仔细想想。另外本文没有对忙信号进行检测,不算很谨慎把,读者可自行加上

20120525200906.jpg

课后练习四之LCD1602.pdf (324.51 KB)
(下载次数: 549, 2012-5-27 20:21 上传)

 

 

 

 

 

 

 

回复评论 (18)

  1. /***********************************************
    **** LAUNCH PAD 学习之LCD ***
    **** MCU: MSP430 ***
    **** 作者: 常见泽 ***
    **** ***
    **** ***
    **** 2012.05.24.20:16 ***
    **** 实验现象:LCD ***
    **** ***
    **** P1.0~P1.7接LCD数据口 P2.0 P2.1 en rs ***
    ***********************************************/

    #include <msp430g2452.h>
    unsigned char table1[]="EE-LaunchPad";
    unsigned char num;
    void delay_1ms(void)
    {
    unsigned int i;
    for (i=0;i<1140;i++);
    }

    /*****************************************
    *
    * N ms延时函数
    *
    ****************************************/
    void delay_nms(unsigned int n)
    {
    unsigned int i=0;
    for (i=0;i<n;i++)
    delay_1ms();
    }


    void write_com(unsigned int com)
    {
    //lcdrs = 0;
    P2OUT&= 0xfd;
    P1OUT = com;
    delay_nms(5);
    //lcden = 1;
    P2OUT|= 0x01;
    delay_nms(5);
    P2OUT&= 0xfe;
    }

    void write_dat(unsigned int dat)
    {
    //lcdrs = 1;
    P2OUT |= 0x02;
    P1OUT = dat;
    delay_nms(5);
    //lcden=1;
    P2OUT|= 0x01;
    delay_nms(5);
    // lcden=0;
    P2OUT&= 0xfe;

    }
    void init()
    {
    write_com(0x38);

    write_com(0x0f);
    write_com(0x01) ;
    write_com(0x06);
    write_com(0x80);


    }
    void main(void)
    {
    WDTCTL = WDTPW + WDTHOLD; // Stop WDT
    P1DIR |= 0xff; // P1.2 output
    P2DIR |= 0xff;
    init();
    for(num=0;num<12;num++)
    {
    write_dat(table1[num]);
    delay_nms(100);
    }
    while(1);
    }

点赞  2012-5-27 20:21
老兄,点亮这个屏的电压好像是5V吧!?不是很清楚是不是Launchpad输出的只有3.5?

[ 本帖最后由 wuyanyanke 于 2012-6-16 09:33 编辑 ]
点赞  2012-6-16 09:23

回复 板凳 wuyanyanke 的帖子

外接的。。。看原理图标的是5V啊
点赞  2012-6-16 09:30
我有一个1602的屏!为什么按原理图上面的供电外接电源也没办法点亮呢?!
输入电压是2.7-5.5 按说应该没问题!
点赞  2012-6-16 10:03

回复 5楼 wuyanyanke 的帖子

嗯 理论上是没有问题 RW直接接地了把?程序测试过肯定是对的 要不你传个原理图来看看  1602应该都一样把
点赞  2012-6-16 10:11
请问你的程序是怎么下到板子上去的?
点赞  2012-6-25 12:37

回复 7楼 低c灰太狼 的帖子

我用的IAR编译器 您呢?? 直接是debug点那个三角形就可以下载进去了
点赞  2012-6-25 13:53
我用的是ccs5.1 可以仿真了 我还有个问题想请教您一下 用lanuchpad(G2553)测量正弦波幅值(ADC) 测得的值送到lcd1602显示 我想将您写的关于adc和lcd的程序整合在一起  不知道这样的做法可行否?还有 ,采样的时候 输入量应该从哪个引脚接入呢?还有个问题:我在用ccs仿真时 显示字符时 竟然还能显示上次仿真的字符


希望您能帮我解答下这些问题 新人我不胜感激!!!!
点赞  2012-6-26 01:43

1.jpg

不管是2553还是2442 都差不多

P1口才是AD口

adc和lcd的程序整合在一起 这样的做法是完全可行的 很多开发板给的例程都是这样的
采样的时候输入量是P1.0(AD0)输入 这样的话就会和LCD有冲突了

所以尝试着改程序 需要把LCD的数据口改一个到P2口去

 

至于显示之前的字符

应该拔掉USB 复位下 看看

 

 

点赞  2012-6-26 09:17

回复 10楼 常见泽1 的帖子

我调试过你写的程序了~但发现显示数据不稳定就是一会缺一个字符或有时候还串行,怎么才能显示的更准确呢?请大哥指教~~
点赞  2012-7-16 16:31

回复 11楼 mrm827915 的帖子

不会吧 我调试时没有出现上述问题 显示结果就是我的图片那样
点赞  2012-7-16 20:44
学习了,呵呵,,,,,,
点赞  2012-7-16 23:56
LZ我按你的程序下载发现全速运行下1602各种乱码和串行,但是我一步一步来运行却是正常显示。想问问楼主你的时钟频率是设置多少的阿
点赞  2012-8-13 22:16

回复 14楼 iolaus 的帖子

默认的DCO  没焊接晶振 内部的
点赞  2012-8-14 20:09
好文,辛苦了楼主。
点赞  2012-8-16 21:22
我测试你的这个程序,发现液晶显示 黑色的方格子,好奇怪,电压5V ,3角接 1K的电阻然后接地。就是不对,探讨下,肯能出现什么原因导致这样的现象~~~
点赞  2012-8-17 10:19
我听人说1602可以只用四个数据口,是不是真的啊,楼主和路过大侠能不能给个答复。。。
点赞  2012-8-22 19:56

回复 18楼 智波景严 的帖子

这个我没问玩过 不过刚刚搜了下 的确是有
点赞  2012-8-24 10:19
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复