标题:
51+PIC单片机兼容程序 1602液晶显示欢迎界面
[打印本页]
作者:
51黑芯片
时间:
2016-1-17 00:18
标题:
51+PIC单片机兼容程序 1602液晶显示欢迎界面
//犯的错:在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<reg52.h>
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 <pic.h>
__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);
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1