89C52
本文最后更新于 2173 天前,其中的信息可能已经有所发展或是发生改变。

LCD1602

#include <reg51.h>

sbit RS = P0^7;//RS拉低为命令,拉高为数据
sbit RW = P0^6;//低为写,高为读
sbit EN = P0^5;//高脉冲操作
//定义输出脚

unsigned char num[]= "1234567890";
unsigned char numm[]= "0987654321";
//显示内容

//延时n毫秒
void delay(unsigned int n)
{
    unsigned int i=0,j=0;
    for(i=0;i<n;i++)
        for(j=0;j<123;j++);
}

//写命令模式
void com(unsigned int c)
{
	RS = 0;
	P2 = c;//P2为8位数据输出
	delay(5);
	EN = 1;
	delay(5);
	EN = 0;//高脉冲
}

//写数据模式
void dat(unsigned int d)
{
	RS = 1;
	P2 = d;
	delay(5);
	EN = 1;
	delay(5);
	EN = 0;	
}

void init()
{
	RW = 0;//始终为写模式
	EN = 0;//初始拉低EN
	com(0x38);//初始化屏幕
	
	com(0x0e);//开显示,显示光标
	com(0x06);//当写一个数据时地址指针加一
	
	com(0x80);//显示指针初始化
	com(0x01);//清屏
	
}


void main()
{
	unsigned int q=0;
	unsigned int z=0;
	init();

	
	for (q=0;q<10;q++)
	{
		dat(num[q]);
	    delay(100);
	}
	com(0x80+0x40);
	for (z=0;z<10;z++)
	{
	  	 dat(numm[z]);
	  	 delay(100);
	
	}
	
	while(1);
}

 

上一篇
下一篇