您的位置:首页 > 其它

20121113-1602液晶测试程序1

2012-11-13 21:08 239 查看
本文所用程序均来源于网络,本人只是进行了验证与学习。尊重原作者。



程序如下:

#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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: