求12864液晶(无字库)地址总线显示c程序
时间:10-02
整理:3721RD
点击:
求12864液晶(无字库)地址总线显示c程序,需要挂好多东西,想省口,用以下的方法与AD_0809、数码管挂在一起有冲突!求高手指点!
我的程序:
sbit rs=P2^0;
sbit en=P2^1;
sbit cs1=P2^2;
sbit cs2=P2^3;
sbit cs_0809=P2^4;
sbit rd_0809=P2^5;
sbit wr_0809=P2^6;
sbit eoc_0809=P2^7;
uchar code table[][32]={
/*-- 文字: 0 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xF0,0x08,0x08,0x18,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x0F,0x10,0x20,0x10,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 1 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 2 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x30,0x08,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x18,0x14,0x13,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 3 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x10,0x08,0x88,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x10,0x20,0x20,0x11,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 4 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x03,0x02,0x02,0x02,0x1F,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 5 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x70,0x48,0xC8,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x10,0x10,0x20,0x10,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 6 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xE0,0x90,0x88,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0x18,0x20,0x20,0x19,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 7 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x10,0x08,0x08,0x88,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 8 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x78,0x88,0x88,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0C,0x12,0x21,0x21,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 9 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x60,0x98,0x08,0x08,0xF8,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x21,0x12,0x09,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 电 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xF0,0x10,0x90,0x90,0xFF,0x48,0x48,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0x04,0x04,0x04,0x1F,0x22,0x22,0x22,0x23,0x20,0x20,0x38,0x00,0x00,
/*-- 文字: 压 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0xFC,0x04,0x04,0x04,0xFC,0x82,0x82,0x82,0x82,0x00,0x00,0x00,0x00,
0x40,0x30,0x0E,0x21,0x21,0x21,0x21,0x1F,0x10,0x12,0x14,0x10,0x10,0x00,0x00,0x00,
/*-- 文字: V --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x08,0xF8,0x00,0x80,0x70,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: : --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=220;y>0;y--);
}
void write_com(uchar com)
{
P0=com;
rs=0;
en=1,
en=1;
en=1;
en=0;
}
void write_date(uchar date)
{
P0=date;
rs=1;
en=1,
en=1;
en=1;
en=0;
}
void open_on(uchar date)
{
date|=0x3e;
write_com(date);
}
void choose_cs(uchar cs)
{
switch(cs)
{
case 0:cs1=1;cs2=1;
break;
case 1:cs1=1;cs2=0;
break;
case 2:cs1=0;cs2=1;
break;
default:break;
}
}
void set_line(uchar line)
{
line|=0xc0;
write_com(line);
}
void set_page(uchar page)
{
page|=0xb8;
write_com(page);
}
void set_row(uchar row)
{
row|=0x40;
write_com(row);
}
void clear_12864(uchar date)
{
uchar i,k;
choose_cs(date);
for (i=0;i<8;i++)
{
set_page(i);
for (k=0;k<64;k++)
{
set_row(k);
write_date(0x00);
}
}
}
void init_12864()
{
open_on(1);
set_line(0);
clear_12864(0);
}
void sz(uchar page, uchar row, uchar num)
{
uchar i,temp_row;
if(row>64)
{
choose_cs(2);
temp_row=row-64;
}
else
{
choose_cs(1);
temp_row=row;
}
set_page(page);
set_row(temp_row);
for(i=0;i<16;i++)
{
write_date(table[num][i]);
}
set_page(page+1);
set_row(temp_row);
for(i=16;i<32;i++)
{
write_date(table[num][i]);
}
}
void main()
{
init_12864();
while(1)
{
sz(1,48,1);
}
}
我的程序:
sbit rs=P2^0;
sbit en=P2^1;
sbit cs1=P2^2;
sbit cs2=P2^3;
sbit cs_0809=P2^4;
sbit rd_0809=P2^5;
sbit wr_0809=P2^6;
sbit eoc_0809=P2^7;
uchar code table[][32]={
/*-- 文字: 0 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xF0,0x08,0x08,0x18,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x0F,0x10,0x20,0x10,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 1 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 2 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x30,0x08,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x18,0x14,0x13,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 3 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x10,0x08,0x88,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x10,0x20,0x20,0x11,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 4 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x03,0x02,0x02,0x02,0x1F,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 5 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x70,0x48,0xC8,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x10,0x10,0x20,0x10,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 6 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xE0,0x90,0x88,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0x18,0x20,0x20,0x19,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 7 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x10,0x08,0x08,0x88,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 8 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x78,0x88,0x88,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0C,0x12,0x21,0x21,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 9 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x60,0x98,0x08,0x08,0xF8,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x21,0x12,0x09,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 电 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xF0,0x10,0x90,0x90,0xFF,0x48,0x48,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0x04,0x04,0x04,0x1F,0x22,0x22,0x22,0x23,0x20,0x20,0x38,0x00,0x00,
/*-- 文字: 压 --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0xFC,0x04,0x04,0x04,0xFC,0x82,0x82,0x82,0x82,0x00,0x00,0x00,0x00,
0x40,0x30,0x0E,0x21,0x21,0x21,0x21,0x1F,0x10,0x12,0x14,0x10,0x10,0x00,0x00,0x00,
/*-- 文字: V --*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x08,0xF8,0x00,0x80,0x70,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: : --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=220;y>0;y--);
}
void write_com(uchar com)
{
P0=com;
rs=0;
en=1,
en=1;
en=1;
en=0;
}
void write_date(uchar date)
{
P0=date;
rs=1;
en=1,
en=1;
en=1;
en=0;
}
void open_on(uchar date)
{
date|=0x3e;
write_com(date);
}
void choose_cs(uchar cs)
{
switch(cs)
{
case 0:cs1=1;cs2=1;
break;
case 1:cs1=1;cs2=0;
break;
case 2:cs1=0;cs2=1;
break;
default:break;
}
}
void set_line(uchar line)
{
line|=0xc0;
write_com(line);
}
void set_page(uchar page)
{
page|=0xb8;
write_com(page);
}
void set_row(uchar row)
{
row|=0x40;
write_com(row);
}
void clear_12864(uchar date)
{
uchar i,k;
choose_cs(date);
for (i=0;i<8;i++)
{
set_page(i);
for (k=0;k<64;k++)
{
set_row(k);
write_date(0x00);
}
}
}
void init_12864()
{
open_on(1);
set_line(0);
clear_12864(0);
}
void sz(uchar page, uchar row, uchar num)
{
uchar i,temp_row;
if(row>64)
{
choose_cs(2);
temp_row=row-64;
}
else
{
choose_cs(1);
temp_row=row;
}
set_page(page);
set_row(temp_row);
for(i=0;i<16;i++)
{
write_date(table[num][i]);
}
set_page(page+1);
set_row(temp_row);
for(i=16;i<32;i++)
{
write_date(table[num][i]);
}
}
void main()
{
init_12864();
while(1)
{
sz(1,48,1);
}
}
