智能车制作

标题: 帮看下5110液晶代码的问题 [打印本页]

作者: 天涯小极莫    时间: 2011-8-1 11:20
标题: 帮看下5110液晶代码的问题
#include <hidef.h>
#include"derivative.h"
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
//---------------------------------------------
unsigned char code asc2[84][6]=
{
    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },   // sp
    { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },   // !
    { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },   // "
    { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },   // #
    { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },   // $
    { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },   // %
    { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },   // &
    { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },   // '
    { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },   // (
    { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },   // )
    { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },   // *
    { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },   // +
    { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },   // ,
    { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },   // -
    { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },   // .
    { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },   // /
    { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },   // 0
    { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },   // 1
    { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },   // 2
    { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },   // 3
    { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },   // 4
    { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },   // 5
    { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },   // 6
    { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },   // 7
    { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },   // 8
    { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },   // 9
    { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },   // :
    { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },   // ;
    { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },   // <
    { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },   // =
    { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },   // >
    { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },   // ?
    { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },   // @
    { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },   // A
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },   // B
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },   // C
    { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },   // D
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },   // E
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },   // F
    { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },   // G
    { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },   // H
    { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },   // I
    { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },   // J
    { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },   // K
    { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },   // L
    { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },   // M
    { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },   // N
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },   // O
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },   // P
    { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },   // Q
    { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },   // R
    { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },   // S
    { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },   // T
    { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },   // U
    { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },   // V
    { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },   // W
    { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },   // X
    { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },   // Y
    { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },   // Z
    { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },   // [
    { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 },   // 55
    { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },   // ]
    { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },   // ^
    { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },   // _
    { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },   // '
    { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },   // a
    { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },   // b
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },   // c
    { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },   // d
    { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },   // e
    { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },   // f
    { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },   // g
    { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },   // h
    { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },   // i
    { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },   // j
    { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },   // k
    { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },   // l
    { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },   // m
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },   // n
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },   // o
    { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },   // p
    { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },   // q
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },   // r
    { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },   // s
    { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },   // t
    { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },   // u
    { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },   // v
    { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },   // w
    { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },   // x
    { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },   // y
    { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },   // z
    { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }   // horiz lines
};
//---------------------------------------------

#define RST_5110   PTJ_PTJ3           //P2_0 //low active          重启
#define CE_5110    PTJ_PTJ4           //P2_1 //low active          选通
#define DC_5110    PTJ_PTJ5           //P2_2 //0=command,1=data    输入字符或命令
#define SDI_5110   PTJ_PTJ6           //P2_3 //rise edge enable    输入,高电平触发
#define SCK_5110   PTJ_PTJ7           //P2_4 //clock               输入时钟

#define DATA 1
#define CMD   0

//-----------------------------------------------
void Delay_us(uchar t);
void Init_5110(void);
void Write_Byte_5110(uchar Data ,bit CMD_DATA);
void Clear_5110(void);
void Set_R_C_5110(uchar R,uchar C);
void Write_Char_5110(uchar Char);
void Write_String_5110(uchar *P);
//-----------------------------------------------

void Delay_us(uchar t)
{
    while(--t);
}
                                      
void Init_5110(void)   //初始化
{
    Delay_us(1);   //reset LCD
    RST_5110=0;
    Delay_us(1);
    RST_5110=1;
    Write_Byte_5110(0x21,CMD);   //扩展指令
    Write_Byte_5110(0xc8,CMD);   //设置偏压
    Write_Byte_5110(0x20,CMD);   //标准指令
    Clear_5110();
    Write_Byte_5110(0x0c,CMD);   //标准显示模式
}

void Clear_5110(void)            //清屏指令
{
uint i;
Write_Byte_5110(0x80,CMD);   //set the addr as 0x00
for(i=0;i<504;i++)
{
   Write_Byte_5110(0x00,DATA);
}
}

void Set_R_C_5110(uchar R,uchar C) //R=0~5;C=0~83       //设置字符在码表中的起始位置
{
if(R<=5 && C<=83)
{
   Write_Byte_5110(0x40|R,CMD);
   Write_Byte_5110(0x80|C,CMD);
}
}

void Write_Byte_5110(uchar Data ,bit CMD_DATA)    //按位传输字符
{
    uchar i;
    CE_5110=0;     //Enable LCD
    DC_5110=CMD_DATA;

    for(i=0;i<8;i++)
    {
       SCK_5110=0;      
       if(Data & 0x80)   //MSB first
        SDI_5110=1;      //时钟上升沿采样
       else
        SDI_5110=0;
       SCK_5110=1;
       Data<<=1;
    }
    SCK_5110=0;
    CE_5110=1; //disable LCD
}

void Write_Char_5110(uchar Char)   //输入一个字符
{
    uchar i,j;
    i=Char-0x20;                    //在输入该字符的行起始位置
    for(j=0;j<6;j++)
    {
       Write_Byte_5110(asc2[i][j],DATA); //一个字符有六个列组成
    }
}

void Write_String_5110(uchar *P)       //输入一个字符串,由n个字符组成
{
    uchar i;
    for(i=0;i<strlen(P);i++)
    {
       Write_Char_5110(P[i]);
    }
}



//---------------------------


void Delay_Long(int t)
{
    while(--t);
}

void main(void)
{
    uchar Disp_Buffer[]  ="=armjishu.com=Nokia 5110 LCD=ARMJISHU.COM=";
    uchar Disp_Buffer2[] ="=ARMJISHU.COM=Nokia 5110 LCD=armjishu.com=";

    Init_5110();
    while(1)
    {
        Set_R_C_5110(0,0);
        Write_String_5110(Disp_Buffer);
        
        Delay_Long(1000000);
        
        Set_R_C_5110(0,0);
        Write_String_5110(Disp_Buffer2);
    }
}
作者: 天涯小极莫    时间: 2011-8-1 11:22
代码调试时,提示前面asc2【84】【6】数组处出问题了
  哎,搞了一个上午了,没解决,求朋友指教啊
作者: loveit    时间: 2011-8-1 11:47
nokia5110驱动程序网上一搜一大堆啊。。。
作者: 天涯小极莫    时间: 2011-8-1 14:13
哦,兄台,我在51上运行的时候一切正常,移植到s12x上时就出着问题了
作者: guowenzhi    时间: 2011-8-1 14:29
你试着把code去掉
作者: 天涯小极莫    时间: 2011-8-1 14:39
code去掉试过了,没效果
作者: 幸福小样    时间: 2012-8-17 16:27
可以试着把数组里面的84去掉
作者: Mr.Lee    时间: 2012-12-5 17:10
正在学
作者: 张涛B    时间: 2013-4-19 13:31
学习的
作者: 黎露    时间: 2013-4-25 22:24
你的程序可以显示路况信息吗?
作者: 热天    时间: 2014-7-21 10:02
同求,我们的51显示屏也是不能显示.




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2