-
文章仅为本人学习记录,如有引用部分会另加说明引用出处
LCD1602工作原理注意:
(1)八位数据端口,三位控制端,三位电源端(包含亮度调节);
(2)三位控制端分别代表读写选择,数据/指令选择,使能端;
(3)含有一些固定指令
(4)注意显示时的起始位置(0x80+对应位置的数值)
、
详情见:(96条消息) 【常用传感器】LCD1602液晶工作原理详解及例程代码_Z小旋的博客-CSDN博客_lcd1602
代码部分
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit D1=P1^0; //灯组
sbit key1=P3^4; //独立键盘P3^4//控制PWM波的频率
sbit key2=P3^5; //独立键盘P3^5//控制PWM波的频率
sbit CS_DA=P2^0; //DA转换器片选端,低电平有效
sbit WR_DA=P2^1; //DA转换器输入寄存器写信号,低电平有效
sbit LCD_RS=P2^5; //LCD1206数据(高)指令(低)选择端
sbit LCD_RW=P2^6; //LCD1206读(高)写(低)信号端
sbit LCD_E=P2^7; //LCD1206使能端(下降沿执行命令)
void delay(uchar t)
{
uint i=0,j=0;
for(i=0;i<t;i++)
for(j=0;j<120;j++);
}
void writedata(uchar y)//写数据
{
LCD_RS=1;
LCD_RW=0;
LCD_E=0;
P0=y;
LCD_E=1;
delay(5);
LCD_E=0;
}
void writecom(uchar x)//写命令
{
LCD_RS=0;
LCD_RW=0;
LCD_E=0;
P0=x;
LCD_E=1;
delay(5);
LCD_E=0;
}
void LED_init()
{
writecom(0x38);//设置16*2显示,5*7点阵,8位数据口
writecom(0x0c);//设置开显示,不显示光标
writecom(0x06);//写一个字符后地址指针加1
writecom(0x01);//显示清零,数据指针清零
}
void display()
{
writecom(0x80);//字符显示的起始地址
delay(5);
writedata('1');
delay(5);
}
void main()
{
LED_init();
while(1)
{
display();
}
}
仿真部分