51单片机-LCD12864液晶屏

lcd12864液晶屏,有点复杂,只有基本的显示。


#include <reg52.h>
#include <intrins.h>
#define uint  unsigned int
#define uchar unsigned char
	

sbit LCD12864_READ = P0^7;
sbit LCD12864_RS = P3^5;
sbit LCD12864_RW = P3^6;
sbit LCD12864_EN = P3^4;
sbit LCD12864_RD = P3^7;

//
void Delay_Ms(uchar z)
{
	uchar x,y;
	for(x=z;x>0;x--)
	   for(y=120;y>0;y--);
}
/*******************LCD12864LCD检查忙*********************/
void LCD12864_busy()
{                         
	LCD12864_RS = 0;
	LCD12864_RW = 1;
	LCD12864_EN = 1;
	Delay_Ms(1);
	P0 = 0xff;
	while(1)
	{
		LCD12864_EN = 1;
		if(LCD12864_READ == 0) break;
	}
	LCD12864_EN = 0;
}
/*******LCD12864WriteCommand要写入的命令********************/
void LCD12864_Write_Cmd(unsigned char Cmd)
{	
	LCD12864_busy();
	LCD12864_RS = 0;
	LCD12864_RW = 0;
	LCD12864_EN = 0;
	Delay_Ms(1);
	P0 = Cmd;
	Delay_Ms(1);
	LCD12864_EN = 1;
	Delay_Ms(1);
	LCD12864_EN = 0; 
}
 
/**************LCD12864WriteByte要写入的字节*************/
void LCD12864_Write_Date(unsigned char date)
{
	LCD12864_busy();
	LCD12864_RS = 1;	
	LCD12864_RW = 0;
	LCD12864_EN = 0;
	P0 = date;
	Delay_Ms(1);
	LCD12864_EN = 1;
	Delay_Ms(1);
	LCD12864_EN = 0;
}
// *******************
void LCD12864_init()
{
    LCD12864_RD = 1;               //并口方式   
    LCD12864_Write_Cmd(0x34);      //扩充指令操作
    LCD12864_Write_Cmd(0x30);      //基本指令操作
    LCD12864_Write_Cmd(0x0C);      //显示开,关光标
    LCD12864_Write_Cmd(0x01);      //清除LCD的显示内容
}
//
void gotoxy(uchar x,uchar y)
{
	     if(x==1) {LCD12864_Write_Cmd(0x80+y-1);}
	else if(x==2) {LCD12864_Write_Cmd(0x90+y-1);}
	else if(x==3) {LCD12864_Write_Cmd(0x88+y-1);}
	else if(x==4) {LCD12864_Write_Cmd(0x98+y-1);}
}
//
void LCD_write_zifu(uchar *p)
{
	while(*p!=0)
	{
		LCD12864_Write_Date(*p);
		p++;
	}
}
/*****主程序*****************************/
void  main()
{
	LCD12864_init();
	gotoxy(1,1);
	LCD_write_zifu("LCD 液晶,带字库");
	gotoxy(2,1);
	LCD_write_zifu("LCD 液晶,带字库");
	gotoxy(3,1);
	LCD_write_zifu("LCD 液晶,带字库");
	gotoxy(4,1);
	LCD_write_zifu("LCD 液晶,带字库");
	while(1);
}

个人见解,感谢阅读。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值