⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd1602.c

📁 PIC16F877入门程序和仿真原理图
💻 C
字号:
#include <pic.h>
#define uchar unsigned char
#define uint unsigned int
#define RS RB0
#define RW RB1
#define E RB2
uchar  table[]="yinbo made";
uchar  table1[]="PIC16f877";
uchar  table2[]="LCD1602:"; 
void init_pic()
{
TRISB=0X00;
TRISD=0X00;
}
//**********延时函数*************/
void delay_a(uchar z)
{
	uint i,j;
	for(i=z;i>0;i--)
	for(j=110;j>0;j--);
}
/********************************************************************\
|* 函 数 名: write_command(uchar tempdata)							*|
|* 功能描述: 将数据码写入LCD数据寄存器			     					*|
\********************************************************************/
void write_command(uchar tempdata)
{
   	RW=0;
	RS=0;	  //RS=0/RW=0 时写指令;
	delay_a(5);	
	PORTD=tempdata;
	delay_a(5);
	E=1;
	delay_a(5); 
	E=0;
}
/********************************************************************\
|* 函 数 名: void write_data(uchar tempdata)						*|
|* 功能描述: 写LCD1602使能程序      								*|
\********************************************************************/
void write_data(uchar tempdata)
{	
	RW=0;
	RS=1;	   //RS=1/RW=0 时写数据;
	delay_a(5);
	PORTD=tempdata;
	delay_a(5);
	E=1;
	delay_a(5); 
	E=0;	
}
void init_LCD(void)
{
	write_command(0x38); // lcd为两行显示8位数据线有效  	
	write_command(0x0c); // 显示字符  关闭光标
	write_command(0x06); // 输入方式设置 光标向右移动一位 ac-1
}
void write_sfm(uchar hang,uchar lie,uchar date) //*定义变量数字显示位置*/
{
	uchar shi,ge;
	shi=date/10;
	ge=date%10;
	if(hang==0)	//第一行
	{
	write_command(0x80+lie);
	write_data(0x30+shi);
	write_data(0x30+ge);
	}
	else //第二行
	{
	write_command(0x80+0x40+lie);
	write_data(0x30+shi);
	write_data(0x30+ge);	
	}
}
void zifu_disp()
{
	uchar i;
   		write_command(0x80+0x03);//第1行第3列:(0x00------0x0F)+0x80;
	for(i=0;i<10;i++)
	{
		write_data(table[i]);
		delay_a(5);
	}
	write_command(0x80+0x40);//第2行第1列
	{
		for(i=0;i<9;i++)
		{
			write_data(table1[i]);
			delay_a(5);	
		}
	}
	write_command(0x80+0x49);//第2行第9列:(0x40-------0x4F)+0x80;
		for(i=0;i<7;i++)
	{
		write_data(table2[i]);
		delay_a(5);
	}
}
//*************硬件测试用的主函数*******************/
void main()
{	
	init_pic();
	init_LCD();
	while(1)
	{	
		//write_sfm(0,5,90);//第一行第二列开始显示变量数字;
		//write_sfm(0,14,19);//第二行第一列开始显示变量数字;
		zifu_disp();
	}
}

⌨️ 快捷键说明

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