微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求12864液晶(无字库)地址总线显示c程序

求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);
        }
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top