1602.c

来自「单片机项目19-电子日历(1602显示)」· C语言 代码 · 共 71 行

C
71
字号
/************************************************************************************/
//fm1602驱动
//2011年5月30日
/************************************************************************************/
#include <reg51.h>
#define uchar unsigned char

uchar num[] = "0123456789";

sbit RS = P2^2;
sbit RW = P2^1;
sbit E  = P2^0;

void delay_us(unsigned int x)
{
	while(x--);
}
/************************************向1602写一个命令*********************************/
void write_command(uchar command)
{
	RW = 0;RS = 0;E = 1;
	P0 = command;
	delay_us(100);		  //等待接收
	E = 0;
	RW = 1;
}
/************************************向1602写一个数据*********************************/
void write_data(uchar date)
{
	RW = 0;RS = 1;E = 1;
	P0 = date;
	delay_us(100);		  //等待接收
	E = 0;
	RW = 1;
}
/***************************************初始化1602************************************/
 void F1602_init(void)
{
	write_command(0x38); 		// 两行,每行16字符,每个字符5*7点阵	
	write_command(0x0f);		// 光标显示并闪烁
	write_command(0x0C);		// 光标不显示
	//write_command(0x06);		// 光标随字符右移
}
/***************************************对1602清屏************************************/
void F1602_clear()
{
	write_command(0x01);	
	write_command(0x02);	
}
/*************************************向1602写字符串**********************************/
void display_string(uchar *p)
{
	while(*p)				 //字符非空
	{
		write_data(*p);		 //写字符
		p++;				 //数据指针加1
	}
}
/**********************************向1602写数字变量(两位)*****************************/
void display_num(uchar x)
{
	 write_data(num[x / 10]);
	 write_data(num[x % 10]);	
}
/******************************************定位**************************************/
void gotoxy(uchar y,uchar x)
{
	if(y == 1)
	write_command(0x80 + x);			//第一行
	else if(y == 2)write_command(0x80 + 0x40 + x); 	//第二行
}

⌨️ 快捷键说明

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