LCD介绍和应用和范例代码

1999天前 · AVR单片机 · 550次阅读

LCD的特点

  • 低电压,微功耗。工作电压为3~5V,每平方厘米液晶显示屏的耗电量在μA级。
  • 平板结构。易大量生产,物理体积小,占用空间多。
  • 寿命长
  • 光线柔和。液晶显示屏是被动发光器件,90%以上是外部物体对光的反射。被动显示适合人的视觉习惯,不会引起疲劳。
  • 无电磁辐射。液晶显示器不会产生电磁辐射,是绿色器件。

LCD显示器的分类

按显示器的使用和显示内容来分:

  • 字段式
  • 点阵字符式
  • 点阵图形式

16×2标准LCD字符显示器应用设计

硬件设计

图为16×2标准字符型LCD接口电路图。由于在CVAVR中必须按照一定的规定连接LCD才能使用CVAVR内部提供的LCD函数,所以原理图是按照CVAVR的规定设计的。
如果要使用CVAVR内部提供的LCD函数,则硬件连接必须按以下要求实现:

  • 与LCD的连接必须使用AVR的同一个8位的I/O端口,如PC(或者PA、PB、PD)
  • LCD采用4位并行传输方式(即仅用DB4~DB7),4位数据总线。
  • 具体连接定义如下:

    • 3根控制线:PC0-RS,PC1-R/W,PC2-E。
    • 4根控制线:PC4-DB4,PC5-DB5,PC6-DB6,PC7-DB7。

电路图如下:
Annotation.png

软件设计

代码如下(C):

/******
File name            :demo_6_8.c
Chip type            :ATmega16
Program type         :Application
Clock frequency      :4.000000MHz
Memory model         :Small
External SRAM size   :0
Data Stack size      :256
******/
#include<mega16.h>
#include<delay.h>
#asm
.equ __lcd_port = 0x15;//PORTC数据寄存器地址 CVAVR指定要用这一句
#endasm
/* [LCD]
1 GND - 9GND
2 +5V - 10 VCC
3 VLC - LCD HEADER Vo
4 RS - 1 PC0(M16)
5 RD - 2 PC1(M16)
6 EN - 3 PC2(M16)
11 D4 - 5 PC4(M16)
12 D5 - 6 PC5(M16)
13 D6 - 7 PC6(M16)
14 D7 - 8 PC7(M16) */
#include<lcd.h>

flash char dis_str[]="Hello World! This is a LCD display demo."
void main(void)
{
    char flash *str;
    str = dis_str;
    lcd_init(16);//激活2*16的LCD区域;初始化LCD
    while(1)
    {
        lcd_clear();//清屏
        lcd_putsf("It's demo_6_8.c");//显示这条消息
        lcd_gotoxy(str);//到lcd第二行?
        lcd_putsf(str);//显示这条消息
        if (*str++ == 0) str = dis_str;
        delay_ms(500);
    }
}

下面的演示程序,可以在LCD上显示用户定义的简单汉字“天天向上”。
程序代码:

/******-
File name            :demo_6_9.c
Chip type            :ATmega16
Program type         :Application
Clock frequency      :4.000000MHz
Memory model         :Small
External SRAM size   :0
Data Stack size      :256
******/
#include<mega16.h>
//Alphanumeric LCD Module functions
#asm
.equ __lcd_port = 0x15;
#endasm
#include<lcd.h>
typedef unsigned char byte;
/* table for the user defined character */
flash byte char0[8] = {//天的字型
0b0011111,
0b0000100,
0b0000100,
0b0011111,
0b0000100,
0b0000100,
0b0001010,
0b0010001,
}
flash byte char1[8] = {//向的字型
0b0000100,
0b0001000,
0b0011111,
0b0010001,
0b0011111,
0b0011011,
0b0011111,
0b0010001,
}
flash byte char2[8] = {//上的字型
0b0000100,
0b0000100,
0b0000111,
0b0000100,
0b0000100,
0b0000100,
0b0000100,
0b0011111,
}
/* function used to define user characters */
void define_char(byte flash *pc,byte_code)
{
    byte i,a;
    a = (char_code << 3) | 0x40;
    for (i=0;i<8;i++) lcd_write_byte(a++,*pc++);
}

void main(void)
{
    lcd_init(16);//初始化LCD
    define_char(char0,0);//定义字符0
    define_char(char1,1);//定义字符1
    define_char(char2,2);//定义字符2
    lcd_clear();
    lcd_putsf("demo_6_9.c");//第一行显示内容
    lcd_gotoxy(0,1);
    lcd_putsf("User define:");//第二行显示内容
    lcd_putchar(0);
    lcd_putchar(0);
    lcd_putchar(1);
    lcd_putchar(2);
    while(1);
}
👍 0

none

最后修改于1999天前

评论

贴吧 狗头 原神 小黄脸
收起

贴吧

狗头

原神

小黄脸

目录

avatar

未末

迷失

126

文章数

275

评论数

7

分类