微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > lcd1602显示程序

lcd1602显示程序

时间:09-18 来源:电子发烧友网 点击:

  for(i=0;i《12;i++)

  {

  write_data(data[i]);//第一行的数据字符

  delay(5);

  }

  write_commond(0xc0);//第二行的DDRAM地址不加0x10也可

  for(i=0;i《16;i++)

  {

  write_data(data[i]);//第二行的数据字符

  delay(5);

  }

  /* for(i=0;i《16;i++)

  {

  write_commond(0x18);//光标不动,数据左移一位

  delay(5);

  }*/

  while(1);

  }

  写近一个字符A程序如下:

  #include《pic.h》

  #define uchar unsigned char

  #define uint unsigned int

  #define DB PORTD

  #define rs RB0

  #define e RB1

  __CONFIG(0x3B31);

  void init();

  void write_commond(uchar dat);//写指令函数

  void write_data(uchar dat);//写数据函数

  void disp_char(uchar x,uchar y,uchar dat);//在屏幕某个位置显示一个字符,x(0-16),y(1-2)

  void delay(uint x);

  void delay(uint x)

  {

  uint a,b;

  for(a=x;a》0;a--)

  for(b=110;b》0;b--);

  }

  void init()//初始化指令

  {

  write_commond(0x01);//0000000001,清除屏幕显示

  write_commond(0x28);//设置4位格式,2行,5X7,功能设定

  write_commond(0x0C);//0000001100,开显示,无光标,不闪烁

  write_commond(0x06);//0000000110,置输入模式,光标右移,屏幕上的文字不移动

  write_commond(0x80);//0001000100,设定CGRAM地址显示屏或光标移动方向

  }

  void write_commond(uchar dat)

  {

  rs=0;//指令

  DB=dat;

  e=1;//允许

  delay(5);

  e=0;

  DB=DB《《4;

  delay(5);

  e=1;

  delay(5);

  e=0;

  }

  void write_data(uchar dat)

  {

  rs=1;//数据

  DB=dat;

  e=1;//允许

  delay(5);

  e=0;

  delay(5);

  DB=DB《《4;

  e=1;delay(5);

  e=0;

  }

  void disp_char(uchar x,uchar y,uchar dat)

  {

  uchar address;

  if(y==1) address=0x80+x;

  else

  address=0xc0+x;

  write_commond(address);

  write_data(dat);

  delay(5);

  }

  void main()

  {

  TRISD=0X00;

  PORTD=0X00;

  PORTB=0X00;

  TRISB=0X00;

  init();

  disp_char(0,1,‘A’);

  while(1);

  }

  也可以是如下:

  void disp_char(uchar x,uchar y,uchar dat)

  {

  uchar i;

  write_commond(0x80+x);

  if(i=0;i《16;i++)

  {

  write_data(‘A’);

  delay(5);

  }

  }

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top