这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 51单片机入门之1602液晶显示

共3条 1/1 1 跳转至

51单片机入门之1602液晶显示

工程师
2019-06-28 12:49:30     打赏

本部分主要介绍1602液晶显示,显示内容为“Hello,Welcome to my site,my friends.”。

原理图如下:

 

程序如下:

#include

#define uchar unsigned char

#define uint unsigned int

sbit RS=P3^0; //数据/命令选择端(H/L)

sbit EN=P3^2; //使能端

sbit RW=P3^1; //读/写选择端(H/L),本文章只写,所以该端口供低电平

sbit wela=P3^3;//锁存器位选信号

uchar table1[]="Hello,Welcome to my ";//字符表1

uchar table2[]="site,my friends.";//字符表2

void delay(uint x) //延时函数

{

uint a,b;

for(a=x;a>0;a--)

for(b=10;b>0;b--);

}

void delay1(uint x) //延时函数

{

uint a,b;

for(a=x;a>0;a--)

for(b=100;b>0;b--);

}

void write_com(uchar com) //写命令函数

{

wela=1; //锁存器位选打开

P2=com; //向P2口写命令

wela=0; //锁存器位选关闭

RS=0; //以下部分跟据1602手册的时序图写出

EN=0;

RW=0;

delay(10);

EN=1;

delay(10);

EN=0;

}

void write_date(uchar date) //写数据函数

{

wela=1;

P2=date;

wela=0;

RS=1;

EN=0;

RW=0;

delay(10);

EN=1;

delay(10);

EN=0;

}

void init() //初始化函数

{

write_com(0x38); //显示模式设置

delay(20);

write_com(0x0f);//显示开/关及光标设置

delay(20);

write_com(0x06);//当写一个字符后地址指针加一,光标加一

delay(20);

}

void main() //主函数

{

uchar a;

init();

write_com(0x80); //第一行起始地址

delay(20);

for(a=0;a<25;a++)

{

write_date(table1[a]);//读取字符表

delay(20);

}

write_com(0xc0); //第二行起始地址

delay(20);

for(a=0;a<17;a++)

{

write_date(table2[a]);//读取字符表

delay(20);

}

while(1); //保持显示

}

试验结果如下:

 




    院士
    2019-06-28 23:07:03     打赏
    2楼
    学习了,谢谢楼主的分享。

    工程师
    2019-06-30 21:55:56     打赏
    3楼

    我以前设计了一个虚拟LCD,大家有空可以多了解一下:

    (软件LCD,16x2),通过PC机的串口,外部设备(如:单片机/DSP/FPGA等)可以控制字符的显示,就像真正的1602 LCD一样,指令兼容实物的LCD控制器。大家觉得有实用意义吗?


    image.png


    共3条 1/1 1 跳转至

    回复

    匿名不能发帖!请先 [ 登陆 注册 ]