2020-02-05 09:32发布
504239170 发表于 2012-4-15 15:39 PC1602_CHS_页面_06.png (125.24 KB, 下载次数: 1) 下载附件 2012-4-15 20:00 上传 对1602写一个指令的过程如下: 首先要保证EP处于低电平。 然后将RS至于低电平,将RW也置于低电平; 然后向数据端口写入要写的命令; 将EP拉高; 延时至少Tpw的时间; 将EP拉低; 指令写入完成。
PC1602_CHS_页面_06.png (125.24 KB, 下载次数: 1)
下载附件
2012-4-15 20:00 上传
最多设置5个标签!
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
sbit rs = P3^5;
//sbit rw = P2^6;
sbit en = P3^4;
sbit key1=P3^6;
sbit key2=P3^7;
unsigned char code str1[]={"2011-04-13"};
unsigned char code str2[]={"WANGHAIMING!"};
void delay_1ms(unsigned int xms)
{
unsigned int i,j;
for(i=0;i<xms;i++)
for(j=0;j<110;j++);
}
void wr_com(unsigned char com) //写指令
{
delay_1ms(1);
rs=0;
//rw=0;
en=0;
P0=com;
delay_1ms(1);
en=1;
delay_1ms(1);
en=0;
}
void wr_dat(unsigned char dat) //写数据
{
delay_1ms(1);
rs=1;
//rw=0;
en=0;
P0=dat;
delay_1ms(1);
en=1;
delay_1ms(1);
en=0;
}
void lcd_init()
{
delay_1ms(15);
wr_com(0x38); delay_1ms(5);
wr_com(0x08); delay_1ms(5);
wr_com(0x01); delay_1ms(5);
wr_com(0x06); delay_1ms(5);
wr_com(0x0c); delay_1ms(5);
}
void displcd(unsigned char *p)
{
while(*p!=' ')
{
wr_dat(*p);
p++;
delay_1ms(1);
}
}
void keyscan()
{
uchar keynum=0;
if(key1==0)
{
delay_1ms(5);
if(key1==0)
{
keynum=1;
}
while(!key1);
}
if(key2==0)
{
delay_1ms(5);
if(key2==0)
{
keynum=2;
}
while(!key2);
}
switch(keynum)
{
case 1:wr_com(0x01);wr_com(0x80);displcd(str1); break;
case 2:wr_com(0x01);wr_com(0x80);displcd(str2); break;
}
}
void main()
{
lcd_init();
wr_com(0x80);
displcd(str1);
while(1)
{
keyscan();
}
}
一周热门 更多>