⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd1602 液晶.txt

📁 lcd 1602 四线驱动 c8051f330单片机
💻 TXT
字号:


//function:  循环显示2行字符串,整屏左移;

//data: 2009 4.16

//E-->P1.7  R/W-->P1.6 RS-->P1.5
//D7-->P0.3 D6-->P0.2 D5-->P0.1 D4-->P0.0


//=================================头文件
#include <c8051f330.h> 
#include <intrins.h>

//==================================宏命名
#define uchar unsigned char
#define uint unsigned int

//======================================定义变量
uchar num;
uchar code table[]="I am CJG!!!";
uchar code table1[]="a USST's student";

//================================ 定义常量
sbit LCM_RS = P1^5; 
sbit LCM_RW = P1^6;
sbit LCM_E = P1^7;

//=============================子程序声明
void delay(uint z);
void init();
void write_data(uchar date);
void write_com(uchar com);
void left_str( );
void lcd_init();

//=============================//主程序

void main()
{
	
	init();
	lcd_init();
	while(1)
	{
		left_str( );
	
	}
}

//=============================//子程序

void init()
{
	PCA0MD &= ~0x40;  
	XBR0=0x00;
	XBR1=0x40;
	P1MDIN |=0xee;
	P1MDOUT |=0xee;
	P0MDIN |=0x0f;
	P0MDOUT |=0x0f;
	
}
void delay(uint z)	//延时
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}


void write_com(uchar com) //写命令
{
	delay(10);
	LCM_RS=0;
	LCM_RW=0  ;
	LCM_E=0;
	com =   ((com&0x0f)<<4)   |   ((com&0xf0)>>4); //高低位转换
	P0=(com&0x0f);
	delay(5);
	LCM_E=1;			   
	delay(5);		 	 //延时0.5us
	LCM_E=0;
	com = com >>4;    //高四位移到低四位
	P0= com&0x0f;  //写低四位
	LCM_E = 1; 	delay(5);   // Z=1,延时3.2us
	LCM_E= 0;  delay(5);			     
}							  

void write_data(uchar date)//写数据
{
	delay(10);
	LCM_RS=1;
	LCM_RW=0  ;
	LCM_E=0;
	date =   ((date&0x0f)<<4)   |   ((date&0xf0)>>4);
	P0=(date&0x0f);
	delay(5);
	LCM_E=1;
	delay(5);
	LCM_E=0;
	date = date >>4;    
	P0= date&0x0f;  
	LCM_E = 1;  delay(5);
	LCM_E = 0;  delay(5);
}

void lcd_init()   //lcd初始化
{
	delay(10);
	write_com(0x02);  //function set
	write_com(0x28);  //4bit 	2line frot
	write_com(0x06);   //Mode set  显示右移
	write_com(0x0e);  //开屏幕,开光标,不闪烁
	write_com(0x01);   //清屏
	write_com(0x80+0x03);	//指针
	delay(5);
}
void  left_str( )
{	
	write_com(0x80+0x13);			  //移动指针
	//--------------------------------------
	for	(num=0;num<11;num++)
	{
		write_data(table[num]);          //写字符串1
	}
	write_com(0x80+0x40+0x10);
	//----------------------------------
	for	(num=0;num<16;num++)
	{
		write_data(table1[num]);             //写字符串2
	}	
	//------------------------------------
	for(num=0;num<16;num++)		        //全屏左移
	{
		write_com(0x18);
		delay(500);
	}		
	delay(1000);
	write_com(1);                      //清屏
		
}
							

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -