20121113-1602液晶测试程序1

本文所用程序均来源于网络,本人只是进行了验证与学习。尊重原作者。

 

 

 

程序如下:

 

#include <REGX52.H>

#define LCD_DB P0

sbit LCD_RS=P2^2;
sbit LCD_RW=P2^3;
sbit LCD_E=P2^4;

//函数定义
#define uchar unsigned char
#define uint unsigned int

void LCD_init(void);								//初始化
void LCD_write_command(uchar command);				//写指令
void LCD_write_data(uchar dat);						//写数据
void LCD_disp_char(uchar x,uchar y,uchar dat);		//显示位置,X(0-16),y(1-2)
void delay_n40us(uint n);							//延时

void LCD_init(void)									//初始化
{
	LCD_write_command(0x01);						//清除屏幕显示
	LCD_write_command(0x3c);						//设置8位格式,2行,5x7?
	LCD_write_command(0x0c);						//整体显示,关光标,不闪烁?
	LCD_write_command(0x06);						//设定输入方式,增量不移位
	delay_n40us(100);
}

void LCD_write_command(uchar dat)					//写指令
{
	LCD_DB=dat;
	LCD_RS=0;										//指令
	LCD_RW=0;										//写入
	LCD_E=1;										//允许
	LCD_E=0;
	delay_n40us(5);
}

void LCD_write_data(uchar dat)						//写数据
{
	LCD_DB=dat;
	LCD_RS=1;										//数据
	LCD_RW=0;										//写入
	LCD_E=1;										//允许
	LCD_E=0;
	delay_n40us(5);
}

void LCD_disp_char(uchar x,uchar y,uchar dat)		//显示一个字符
{
	uchar address;
	if(y==0)
		address=0x80+x;
	else
		address=0xc0+x;

	LCD_write_command(address);
	LCD_write_data(dat);
}

void delay_n40us(uint n)							//延时函数
{
	uchar j;
	for(n=n;n>0;n--)
		for(j=0;j<2;j++)
			;
}

//主函数
void main(void)
{
	char a;
	char b[16]="123456789abcdeef";
	char c[16]="ABCDEFGHIGKLMNOP";

	delay_n40us(200);
	LCD_init();

	for(a=0;a<16;a++)
	{
		LCD_disp_char(a,0,b[a]);
		LCD_disp_char(a,1,c[a]);
	}
	while(1);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值