基本程序及地址排布
第一行地址:80H 81H 82H 83H 84H 85H 86H 87H 第二行地址:90H 91H 92H 93H 94H 95H 96H 97H 第三行地址:88H 89H 8AH 8BH 8CH 8DH 8EH 8FH 第四行地址:98H 99H 9AH 9BH 9CH 9DH 9EH 9FH
#include <>
#include <>
#define unint unsigned int
#define unchar unsigned char
sbit re=P2^0; /*数据\指令选择*/
sbit rw=P2^1; /*读\写选择*/
sbit e=P2^2; /*读\写使能*/
sbit psb=P2^7;
uchar code table[]='zhang jian wei' ;
void writecom(unchar com);
void writedat(unchar dat);
void initinal(void);
void display1();
void display2();
void display3();
//12MHZ晶振延时50微秒
void delay50us(uint t)
{
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
//主函数
void main()
{
initinal();
while(1)
{
// display1();
// display2();
display3();
while(1);
}
}
//写命令
void writecom(unchar com) {
rw=0;
rs=0;
delay50us(1);
P0=com;
e=1;
delay50us(10);
e=0;
delay50us(10);
}
//写数据
void writedat(unchar dat) {
rw=0;
rs=1;
delay50us(1);
P0=dat;
e=1;
delay50us(10);
e=0;
delay50us(10);
}
//初始化
void initinal(void)
{
delay50us(2);
void writecom(0x30); delay50us(4); writecom(0x30);
delay50us(4); writecom(0x0f);
delay50us(4); writecom(0x01);
delay50us(240); writecom(0x06);
delay50us(10);
}
//ASCII显示
void display1()
{
uchar i;
uchar a;
a=0x10;
writecom(0x80);
delay50us(1);
for(i=0;i<16;i++)
{
writedat(a);
delay50us(1);
a++;
}
}
void display2()
{
uchar i;
uchar a,b;
a=0xBA;
b=0xC0;
writecom(0x80);
delay50us(1);
for(i=0;i<16;i++)
{
writedat(a);
writedat(b);
delay50us(1);
b++;
}
}
void display3()
{
uchar i;
writecom(0x80);
delay50us(1);
for(i=0;i<16;i++)
{
writedat(atable[i]);
delay50us(1);
}
}