ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

51单片机LCD1602两行移动显示

2021-01-28 20:04:35  阅读:265  来源: 互联网

标签:delay 20 uchar lcden 51 write 单片机 LCD1602 com


实现51单片机LCD1602两行移动显示

第一行:My name is Eagal

第二行:Music film Games

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P3^4;
sbit rs=P3^5;
sbit rw=P3^6;	
sbit dula=P2^6;
sbit wela=P2^7;
uchar table1[]="My name is Eagal";
uchar table2[]=" Music Flim Games ";
void delay(uint x)
{
	uint a,b;
	for(a=x;a>0;a--)
		for(b=10;b>0;b--); 
}

void write_com(uchar com)
{
	P0=com;
	rs=0;
	lcden=0;
	delay(10);
	lcden=1;
	delay(10);
	lcden=0;
	
}

void write_date(uchar date)
{
	P0=date;
	rs=1;
	lcden=0;
	delay(10);
	lcden=1;
	delay(10);
	lcden=0;
	
}

void init()
{
    rw=0;
	dula=0;
	wela=0;
	write_com(0x38);   //显示模式设置:16×2显示,5×7点阵,8位数据接口
	delay(20);
	write_com(0x0c);   //显示模式设置
	delay(20);
	write_com(0x06);   //显示模式设置:无光标
	delay(20);
	write_com(0x01);   //清屏幕指令,将以前的显示内容清除
	delay(20);	
}

void main()
{	uint k=1000;
	uchar *pa,*pb;
	init();

	write_com(0x80 | 0x0f);	 //将第一个字符写在向右偏移17个字符处,为后面的由右向左划入做准备。
	delay(20);
		pa = table1;
		while(*pa != '\0')
		{
			write_date(*pa++);
			while(k--);
		}

	write_com(0x07); 
	write_com(0x80 | 0x4f);
//	delay(50);
	pb = table2;
		while(*pb != '\0')
		{
			write_date(*pb++);
			while(k--);
		}	
	//while(1);
}

标签:delay,20,uchar,lcden,51,write,单片机,LCD1602,com
来源: https://blog.csdn.net/m0_52802869/article/details/113357073

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有