单片机 用LCD显示屏 输出字符串源代码(附Proteus图)

单片机 用LCD显示屏 输出字符串源代码(附Proteus图)_第1张图片

#include "reg51.h"
#define uchar unsigned char
sbit RS=P3^2;
sbit RW=P3^1;
sbit E=P3^0;
uchar sj=0;
int read_state();
int write_cmd(uchar);
void lcd_init();
int input_char(uchar abc);
int input_string();

int read_state()
{
	uchar zgw=0;
	RW=1;
	sleep(3);
	RS=0;
	sleep(3);
	E=1;
	sleep(3);
	sj=P2;
	sleep(3);
	//获取最高位
	E=0;
	sleep(3);
	RW=0;
	sleep(3);
	sj=sj&0x80;
	zgw=sj>>7;
	return zgw;
}

int write_cmd(uchar command)
{
		do{;}while(read_state()==1);//如果控制器忙就出不来,只有控制器不瞒才能出来
		RW=0;sleep(3);RS=0;sleep(3);
		E=1;sleep(3);
		P2=command;sleep(3);
		E=0;sleep(3);
		RW=1;
		sleep(3*250);
		return 0;
}

void lcd_init()
{
	write_cmd(0x3c);
	write_cmd(0x0e);
	write_cmd(0x01);
	write_cmd(0x06);
	write_cmd(0x80);
}

int input_char(uchar abc)
{
	while(read_state()==1);
	RS=1;sleep(3);RW=0;sleep(3);
	E=1;sleep(3);
	P2=abc;sleep(3);
	E=0;sleep(3);
	RW=1;
	sleep(3*255);
	return 0;
}

int input_string()
{
	int i=0;
	uchar str[]="hello tom";
	while(read_state()==1);
	for(i=0;str[i]!='\0';i++)
	{
		input_char(str[i]);
		sleep(3*200);
	}
	return 0;
}

int main()
{
		lcd_init();
		sleep(3*250);
		write_cmd(0x83);
		sleep(3*250);
		input_string();
		while(1);
	return 0;
}

void sleep(long int a)
{
	long int i=0;
	for(i=0;i

附:字符型LCD显示屏型号:LM016L;这个代码应该是可以直接运行的

你可能感兴趣的:(单片机,proteus,mongodb)