中易网

LCD屏 用C语言如何写

答案:2  悬赏:60  
解决时间 2021-04-27 17:39
  • 提问者网友:浪子生来ˇ性放荡²↘
  • 2021-04-27 06:06
LCD屏 用C语言如何写
最佳答案
  • 二级知识专家网友:错过的是遗憾
  • 2021-04-27 06:16
//51单片机驱动ST7070控制16*2的字符型LCD

#include <reg52.h>

sbit RS = P3^2;
sbit R_W = P3^3;
sbit EN = P3^4;
sbit busy=P1^7;
sbit Auto=P3^6;
sbit step=P3^7;

void write_command(char);
void write_data(char);
void delay_s(int);
void delayms(int);
unsigned char checkbusy(void);

void scan(void);

void madefont(void);
void money(void);
void abcd(void);
void number(void);
void picure(void);
void white(void);
void black(void);
void snow(void);
void hoi(void);
void hline(void);
void vline(void);
void net(void);
void frame(void);

void main(void)
{
delay_s(40);
// write_command(0x20);
// write_command(0x20);

write_command(0x38); // FUNCTION SET
delay_s(10);
write_command(0x38); //FUNCTION SET
delay_s(2);
write_command(0x38); //FUNCTION SET
delay_s(2) ;

write_command(0x28); //FUNCTION SET
delay_s(2);
write_command(0x28); //FUNCTION SET
delay_s(2);

write_command(0x0c); //Display on
delay_s(10) ;
write_command(0x01); //Clear Display
delay_s(10) ;
write_command(0x06); // entry mode set
delay_s(10) ;

// write_command(0x0c); //display on
// delay_s(2);
// write_command(0x01); //CLEAR display
// delay_s(2);
write_command(0x2C); //FUNCTION SETC EXT=1
delay_s(2);
write_command(0x04); //bias resistor set,External bias resistor select.
delay_s(2);

checkbusy();
money();
delay_s(200);
scan();

checkbusy();
abcd();
delay_s(200);
scan();

checkbusy();
number();
delay_s(200);
scan();

checkbusy();
picure();
delay_s(200);
scan();

checkbusy();
white();
delay_s(200);
scan();

checkbusy();
black();
delay_s(200);
scan();

checkbusy();
snow();
delay_s(50);
scan();

checkbusy();
hoi();
delay_s(200);
scan();

madefont(); //造字
delay_s(200);

checkbusy();
hline();
delay_s(200);
scan();

checkbusy();
vline();
delay_s(200);
scan();

checkbusy();
net();
delay_s(200);
scan();

checkbusy();
frame();
delay_s(200);
scan();

}

void write_command(char comm)
{ RS = 0;
R_W = 0;

EN = 1;
P1=comm&0xf0;
delayms(1);
EN = 0;

EN=1;
comm<<=4;
P1=comm&0xf0;
EN=0;

}

void write_data(char dda)
{ RS = 1;
R_W = 0;

EN = 1;
P1=dda&0xf0;
delayms(1);
EN = 0;

EN=1;
dda<<=4;
P1=dda&0xf0;
EN=0;

}

void delay_s(int c)
{ int i,j;
for (i = 0; i<=c; i++)
for ( j = 1; j<=1000; j++);
}

void delayms(int c1)
{ int i,j;
for (i = 0; i<=c1; i++)
for ( j = 1; j<=50; j++);
}

unsigned char checkbusy(void) //检测 BF
{
busy=0x01;
RS = 0;
R_W = 1;
EN = 0;
EN = 1;
while(busy);//当BUSY=1时,不断循环,当BUSY=0时,开始执行下一条指令.
return(busy);
}

void madefont(void) //造字
{
int i,j;
write_command(0x40);

for(i=0;i<4;i++) //HLINE,CODE=00H
{
write_data(0x1f);
write_data(0x00);
}

for(i=0;i<8;i++) //VLINE ,code=01h
{
write_data(0x15);
}

for(i=0;i<4;i++) //net,CODE=02H
{
write_data(0x15);
write_data(0x0a);
}

for(i=0;i<1;i++) //Frame,CODE=03H
{
write_data(0x1f);
for(j=0;j<6;j++)
{
write_data(0x11);
}
write_data(0x1f);
}
}

void scan(void)
{
while(step==1&Auto==0)
{
delay_s(5);
}
if(step==0)
{
delay_s(5);
while(step==0)
{
delay_s(5);
}
delay_s(5);
}
else if(Auto==1)
{
delay_s(5);
}
delay_s(5);
write_command(0x01);
}

void money (void)
{
int i,j;
write_command(0x80);

for(i=0;i<2;i++)
{
for(j=0;j<1;j++)
{
write_data(0xB1);
write_data(0xB2);
write_data(0xB3);
write_data(0xB4);
write_data(0xB5);
write_data(0xB6);
write_data(0xB7);
write_data(0xB8);
write_data(0xB9);
write_data(0xBA);
write_data(0xBB);
write_data(0xBC);
write_data(0xB1);
write_data(0xBE);
write_data(0xBF);
write_data(0xC0);

write_data(0xD1);
write_data(0xD2);
write_data(0xD3);
write_data(0xD4);
write_data(0xD5);
write_data(0xD6);
write_data(0xD7);
write_data(0xD8);
write_data(0xD9);
write_data(0xDA);
write_data(0xDB);
write_data(0xDC);
write_data(0xD1);
write_data(0xDE);
write_data(0xDF);
write_data(0xE0);

}
}
}

void abcd (void)
{
int i,j;
write_command(0x80);
for(i=0;i<2;i++)
{
for(j=0;j<1;j++)
{
write_data(0x41);
write_data(0x42);
write_data(0x43);
write_data(0x44);
write_data(0x45);
write_data(0x46);
write_data(0x47);
write_data(0x48);
write_data(0x49);
write_data(0x4A);
write_data(0x4B);
write_data(0x4C);
write_data(0x4D);
write_data(0x4E);
write_data(0x4F);
write_data(0x50);

write_data(0x61);
write_data(0x62);
write_data(0x63);
write_data(0x64);
write_data(0x65);
write_data(0x66);
write_data(0x67);
write_data(0x68);
write_data(0x69);
write_data(0x6A);
write_data(0x6B);
write_data(0x6C);
write_data(0x61);
write_data(0x6E);
write_data(0x6F);
write_data(0x70);
}
}
}

void number (void)
{
int i,j;
write_command(0x80);
for(i=0;i<2;i++)
{
for(j=0;j<1;j++)
{
write_data(0x11);
write_data(0x12);
write_data(0x13);
write_data(0x14);
write_data(0x15);
write_data(0x16);
write_data(0x17);
write_data(0x18);
write_data(0x19);
write_data(0x1A);
write_data(0x1B);
write_data(0x1C);
write_data(0x11);
write_data(0x1E);
write_data(0x1F);
write_data(0x20);

write_data(0x31);
write_data(0x32);
write_data(0x33);
write_data(0x34);
write_data(0x35);
write_data(0x36);
write_data(0x37);
write_data(0x38);
write_data(0x39);
write_data(0x3A);
write_data(0x3B);
write_data(0x3C);
write_data(0x31);
write_data(0x3E);
write_data(0x3F);
write_data(0x40);
}
}
}
void picure (void)
{
int i,j;
write_command(0x80);
for(i=0;i<2;i++)
{
for(j=0;j<1;j++)
{
write_data(0x81);
write_data(0x82);
write_data(0x83);
write_data(0x84);
write_data(0x85);
write_data(0x86);
write_data(0x87);
write_data(0x88);
write_data(0x89);
write_data(0x8A);
write_data(0x8B);
write_data(0x8C);
write_data(0x81);
write_data(0x8E);
write_data(0x8F);
write_data(0x90);

write_data(0x91);
write_data(0x92);
write_data(0x93);
write_data(0x94);
write_data(0x95);
write_data(0x96);
write_data(0x97);
write_data(0x98);
write_data(0x99);
write_data(0x9A);
write_data(0x9B);
write_data(0x9C);
write_data(0x91);
write_data(0x9E);
write_data(0x9F);
write_data(0xA0);
}
}
}
void white (void)
{
int i,j;
write_command(0x80);

for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
write_data(0x91);
write_data(0x92);

}
}
}
void black(void)
{
int i,j;
write_command(0x80);

for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
write_data(0xff);
write_data(0xff);

}
}
}
void snow(void)
{
int i,j;
write_command(0x80);
for(i=0;i<4;i++)
{
for(j=0;j<16;j++)
{
write_data(0xdb);
// write_data(0x32);
// write_data(0x33);
// write_data(0x34);

}
}
}

void hoi (void)
{
int i,j;
write_command(0x80);

for(i=0;i<4;i++)
{
for(j=0;j<16;j++)
{

// write_data(0x00);
// write_data(0x01);
// write_data(0x02);
write_data(0x03);
}
}
}

void hline (void)
{
int i,j;
write_command(0x80);
for(i=0;i<4;i++)
{
for(j=0;j<40;j++)
{
write_data(0x01);
}
}
}
void vline(void)
{
int i,j;
write_command(0x80);
for(i=0;i<4;i++)
{
for(j=0;j<40;j++)
{
write_data(0x02);
}
}
}
void net(void)
{
int i,j;
write_command(0x80);
for(i=0;i<4;i++)
{
for(j=0;j<40;j++)
{
write_data(0x03);
}
}
}
void frame(void)
{
int i,j;
write_command(0x80);
for(i=0;i<4;i++)
{
for(j=0;j<40;j++)
{
write_data(0x04);
}
}
}
全部回答
  • 1楼网友:糜废丧逼
  • 2021-04-27 06:21
根据你选的屏的控制指令写,有问题我可以帮忙的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息