文章编号:1231 .2840

『关闭窗口』

点亮v8088手机显示屏(liuzengxin)


//参考丁丁的程序,进行了修改。
//点亮v8088手机显示屏(KS0717)。数据输出:8255的A口,地址:0xF000
//程序如下:
#include <reg51.h>
#include <absacc.h>

typedef unsigned char uchar;

sbit E=P1^2;   //DP_EN
sbit A0=P1^3;  //RS=1 显示数据 RS=0 控制命令
sbit RST=P1^4; //复位
sbit BKLT=P1^5;//背光 BKLT=0 亮 BKLT=1 灭

#define I8255A 0xf000
#define I8255B 0xf001
#define I8255C 0xf002
#define I8255  0xf003
#define AIN    0x90
#define AOUT   0x80
//点阵数据,一个字节是一列八行。
code uchar pd[9][98]=
{
    //98列x16行
    //1行
    {
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    0x00,0x00
    },
    //98列x16行
    //2行
    {
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    0x00,0x00
    },
    //98列x16行
    //3行
    {
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    0x00,0x00
    },
    //98列x16行
    //4行
    {
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    0x00,0x00
    },
    //98列x16行
    //5行
    {
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    0x00,0x00
    },
    //98列x16行
    //6行
    {
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    0x00,0x00
    },
    //98列x16行
    //7行
    {
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    0x00,0x00
    },
    //98列x16行
    //8行
    {
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    0x00,0x00
    },
    //9 图标区
    {
//            天线                 天1                   2                   3
    
0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00
,
//               4                   5                                    摘机
    
0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00
,
//                                                    三角
    
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00
,
//                                小屋
    
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
//            短信                短信号    闹钟      电池右              电池

    
0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00
,
//            电池中              电池框
    
0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,
    0x00,0x00
    }
};

//*******************************
//写数据
void wridata(uchar ch)
{
    A0=1;
    XBYTE [I8255A]=ch;
    E=1;
    E=0;
    E=1;
}
//写命令
void wricmd(uchar ch)
{
    A0=0;
    XBYTE [I8255A]=ch;
    E=1;
    E=0;
    E=1;
}
//LCD Page
uchar lcdpage(uchar lpage)
{
    return (lpage|0xb0);
}
//清屏,ch=9时连带图标一起清除,ch=8仅清除点阵区
void cls(uchar ch)
{
    uchar i,j;
    for(j=0;j<ch;j++)
    {
        wricmd(lcdpage(j));//set page
        wricmd(0x00);//set column lsb
        wricmd(0x10);//set column msb
        wricmd(0xE0);//set modify-read mode
        for(i=0;i<98;i++)
        {
            wridata(0x00);
        }
        wricmd(0xEE);
    }
}
//初始化液晶
void initlcd(void)
{
    RST=0;RST=0;RST=0;RST=0;RST=0;RST=0;RST=0;RST=0;RST=0;RST=0;RST=0;
    RST=1;
    
    wricmd(0x2F);//SET POWER CONTROL
    
    wricmd(0x81); //Set reference voltage mode
    wricmd(0x20); //Set reference voltage register
    
    wricmd(0x40);//INITIAL DISPLAY LINE =0
    
    wricmd(0xAF);//DISPLAY On
    
    wricmd(0xA6);//NORMAL DISPIAY SET

    wricmd(0xA0);//ADC=0(SEG1~SEG132) //a1,ADC=1
    
    wricmd(0xC8);//SHL=0(COM1~COM64) //c0
    
    wricmd(0xA2);//SET 1/8 LCD BIAS
    
    cls(9);
}
//显示
void displaylcd(void)
{
    uchar i, j;
    for(j=0;j<9;j++)
    {
        wricmd(lcdpage(j));//set page
        wricmd(0x00);//set column lsb
        wricmd(0x10);//set column msb
        wricmd(0xE0);//set modify-read mode
        for(i=0;i<98;i++)
        {
            wridata(pd[j][i]);
        }
        wricmd(0xEE);
    }
}
//*******************
void main(void)
{
    XBYTE [I8255]=AOUT;
    initlcd();
    displaylcd();
    BKLT=0; //背光亮
    while(1)
    {
    }
}


(文章推荐人:低手)

 

返回大虾论坛 返回首页