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

📄 1602.c

📁 1602 的驱动程序 很完整。通过KEIL C 编译在ROTUES 上用AT89C51仿真通过。
💻 C
字号:
#include "reg52.h"
#include "intrins.h"

#define uchar unsigned char
#define uint unsigned int

sbit RS=P3^7;
sbit RW=P3^6;
sbit EN=P3^5;
static void delay(uint j);
//************************
void initlcd();     /*LCD初始化*/
void writecom(uchar c);
void writedata(uchar c);
void showchar(uchar pos,uchar c); /*显示一个字符 pos为位置 范围0-31 c为字符*/
void showstring(uchar line,uchar *ptr);/*显示一行字符 line为行号 范围0,1 *ptr为首地址*/
void disp_1602(uchar line,uchar *add);/*显示一行数字line为行号 范围0,1  *add为首地址*/
code uchar disp1[16]={0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5};
code uchar disp2[]="ABCDEFGHIJKLMNOP";
//************************
void writecom(uchar c)
{ delay(100);
  EN=0;
  RS=0;
  RW=0;
  _nop_();
  P0=c;
  EN=1;
  _nop_();
  EN=0;
}
//*************************
void writedata(uchar c)
{ delay(100);
  EN=0;
  RS=1;
  RW=0;
  _nop_();
  P0=c;
  EN=1;
  _nop_();
  EN=0;
  RS=1;
}
//*****************
void showchar(uchar pos,uchar c)
{ uchar p;
  if(pos>=0x10)
     p=pos+0xb0;
  else
     p=pos+0x80;
  writecom(p);

  writedata(c);
 }
//****************************
void showstring(uchar line,char *ptr)
{ uchar l,i;
  l=line<<4;
  for(i=0;i<16;i++)
      {showchar(l++,*(ptr+i));}
}
//***************************
void initlcd()
{ 
  writecom(0x38);
  writecom(0x38);
  writecom(0x06);
  writecom(0x0c);
  writecom(0x01);
}
//*********************
void delay(uint j)
{ 
  while(j--);
}
//***************************************
void disp_1602(uchar line,uchar *add)
{
	uchar k;
	for(k=0;k<16;k++)
		showchar(16*line+k,*(add+k)+0x30);
}
//*************************
void delayms(uint j)
{
	uchar i;
	while(j--)
	{
		for(i=0;i<125;i++)
			;
	}
}
//************************
main()
{
	delayms(1);
	initlcd();  
	disp_1602(0,disp1);
	showstring(1,disp2);
	while(1)
	  ;
}

⌨️ 快捷键说明

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