单片机 > 单片机程序设计 > 详情

51+PIC单片机兼容程序 1602液晶显示欢迎界面

发布时间:2020-05-28 发布时间:
|

//犯的错:在51里RW(L命令、H数据)是直接焊成接地的

//∴ 少了lcd_enable(); 这一函数{lcdrs = 0; lcdrw = 0; lcden = 0; delay(5); lcden = 1;}

//少了这一函数设置就无法显示了

#define PIC     //说明,如果是51,你把这句删掉即可

#define ww     //说明,如果是PIC16F877A,你把这句删掉即可

#ifdef ww

#include

sbit lcden=P3^4;

sbit lcdrs=P3^5;

sbit lcdrw=P3^0;   //这是个无用的定义,因为51板直接接地,而PIC则不是

sbit dula=P2^6;     

sbit wela=P2^7;

#endif

#ifdef PIC

#include

__CONFIG(0X3B31);

#define lcden RA3

#define lcdrs RA5

#define lcdrw RA4

#define P0 PORTD

#endif

#define uchar unsigned char

#define uint unsigned int


#ifdef ww

uchar code table[]="   hello! jasper";   //写字符串时用“”而不是{ }了

uchar code table1[]="   xm.dabiao    ";

#endif

#ifdef PIC

  //奇怪了,移动下面2行会提示,逗号错误

const uchar table[]="   hello! jasper";    //写字符串时用“”而不是{ }了

const uchar table1[]="   xm.dabiao    "; //PIC的数组写法与51的是不同的

#endif

uchar num;

void delay(uint z)     //延时

{

  uint x,y;

  for(x=z;x>0;x--)

   for(y=110;y>0;y--);

}

void write_com(uchar com)

{

  lcdrs=0;  

  P0=com;

  delay(5);  

  lcden=1;  

  delay(5);

  lcden=0;

}

void write_data(uchar date)  

{

  lcdrs=1;

  P0=date;

//  delay(5);

  lcdrs=1;

  lcdrw=0;

  lcden=0;

  delay(5);

  lcden=1;

}

void lcd_enable(void)   

{

lcdrs = 0;                     

lcdrw = 0;                  

lcden = 0;                  

delay(5);                

lcden = 1;                   

}

void init()

{

#ifdef ww

   dula=0;          

  wela=0;

  lcden=0;

#endif

#ifdef PIC

TRISA=0x00;PORTA=0XF0;

TRISD=0x00;PORTD=0XFF;

ADCON1=0X07; 

RA1=1;

#endif

  lcd_enable();   

  write_com(0x38);  

  lcd_enable(); 

  write_com(0x0c);    

  lcd_enable();   

  write_com(0x06);    

  lcd_enable();  

  write_com(0x01);

  lcd_enable(); 

// write_com(0x80);

  write_com(0x80+0x10); 

}

void main()

{

  init();

  for(num=0;num<16;num++) 

  {       

    write_data(table[num]); 

    delay(20); 

  }

  write_com(0x80+0x51);  

  for(num=0;num<16;num++)

  {

    write_data(table1[num]);

    delay(20);

  }

  for(num=0;num<16;num++)

  {

    write_com(0x18); 

    delay(160); 

  }

  while(1);

}


关键字:51  PIC单片机  1602液晶显示

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机按键切换下一首歌