极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12238|回复: 1

怎么将这个程序改为适用2560的?求帮忙!

[复制链接]
发表于 2017-3-28 17:10:22 | 显示全部楼层 |阅读模式
这个是我再买12864液晶显示屏商家发我的程序,但好像不适用2560,我又不知道怎么改?求各位大神帮帮忙!谢谢
/*-------------------------------------------------------------------------
Product Name: 12864 (8-Bit parallel)
Apply for Product : HG1286401C
Description:This Resouce Is For Dot Matrix Liquid Crystal
            Modules Controlled By Sitronic'S ST7920
LCM Interface Dimenision:
1                2                3                4                5                6                7                8                9                10
---------------------------------------------------------------------------
VSS                VDD                NC                RS                R/W                E                D0                D1                D2                D3

11                12                13                14                15                16                17                18                19                20
---------------------------------------------------------------------------
D4                D5                D6                D7                PSB                NC                RST                NC                A                K
-------------------------------------------------------------------------*/

//Include Head Files
#include <reg51.h>
#include <math.h>
#include <INTRINS.H>

//Data Type Re-defination
#define  uchar unsigned char
#define  uint unsigned int
#define  xchar unsigned char code

#define          DataPort P1
#define         DELAYMS 80
//MCU Interface Defination

sbit RS_Port        =        P3^0;
sbit RW_Port        =        P3^1;
sbit E_Port        =       P3^2;
sbit PSB_Port        =        P3^3;
sbit RST_Port        =        P3^4;



//取模方式:逐行式,顺向(高位在前)。
xchar LOG12864_R[] =
{
/*--  调入了一幅图像:C:\Documents and Settings\Administrator\桌面\1.bmp  --*/
/*--  宽度x高度=128x64  --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xB3,0x2F,0x80,0x2F,0xB3,0xAD,0x69,0x95,0xA1,0x1F,0xA9,0xB5,0xA0,0xBD,0xFF,0xFF,
0x7F,0x7F,0x7B,0x67,0x1F,0x7D,0x73,0x4F,0x7F,0x3F,0x4F,0x71,0x3F,0x7F,0xFF,0xFF,
0xFF,0x01,0xFD,0xCD,0x31,0xFF,0x01,0xBD,0xBD,0xBD,0xBD,0xBD,0x00,0xFD,0xFF,0xFF,
0xEB,0xEB,0x6B,0x01,0x6C,0xED,0xFF,0xDF,0x3B,0xE7,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,
0xF7,0xF7,0x77,0x00,0xB7,0xFF,0xB7,0x37,0xB7,0x80,0xB7,0xB7,0x33,0xF7,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xCF,0xF0,0xFF,0xE0,0xF7,0xFD,0x40,0xEA,0xEA,0xE0,0xEA,0xEA,0xEA,0xEF,0xFF,0xFF,
0xDF,0xDF,0xEF,0xF7,0xFB,0xFD,0x7F,0xFF,0xFD,0xFB,0xF7,0xEF,0xCF,0xFF,0xFF,0xFF,
0xFF,0xC0,0xFD,0xFB,0xFC,0xFF,0xC0,0xF7,0xF7,0xF7,0xF7,0xF7,0x60,0xFF,0xFF,0xFF,
0xFB,0xFC,0x7F,0xC0,0xFF,0xFE,0xFD,0xFD,0xFD,0xFD,0xFD,0xC0,0xFE,0xFE,0xFF,0xFF,
0xFE,0xEE,0xDF,0xE0,0xFF,0xDF,0xDF,0xEE,0xF5,0xFB,0xF5,0x6E,0xDF,0xDF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x7F,0x9F,0xFF,0x03,0xFF,0xFE,0xFD,0xF3,0xFF,0xFF,0xEF,0x9F,0x3F,0xFF,0xFF,
0x7D,0xBD,0xDD,0xED,0x05,0xA9,0xAC,0xAD,0xAD,0xAD,0x05,0xED,0xFC,0xFD,0xFF,0xFF,
0xFF,0xD7,0xD9,0xDD,0xDD,0x1D,0xC5,0xDC,0x5D,0xDD,0xDD,0xD5,0xD9,0xFF,0xFF,0xFF,
0xFF,0x00,0x6E,0x6E,0xB6,0xD0,0x6A,0x6A,0xD2,0xBA,0xBE,0xBE,0x00,0xFE,0xFF,0xFF,
0x77,0xB3,0xD4,0x66,0x70,0x66,0x56,0x37,0x40,0x6E,0x6E,0xEE,0xC0,0xFF,0xFF,0xFF,
0xFF,0x7F,0xFF,0xC0,0xEA,0x2A,0xEA,0xEA,0x2A,0xEA,0xEA,0xC0,0x7E,0xFF,0xFF,0xFF,
0xDF,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,0x00,0xDE,0xDE,0xDE,0xDE,0xCF,0xDF,0xFF,0xFF,
0xFF,0xFF,0x80,0xB6,0xB6,0xB6,0x00,0xB6,0xB6,0xB6,0x80,0xFE,0xFF,0xFF,0xFF,0xFF,
0xFE,0xFE,0xFF,0xFF,0xF8,0xF7,0xF7,0xF7,0xF7,0xF7,0xF0,0xFF,0xFF,0xFE,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xE0,0xFE,0xFE,0xFE,0xFE,0xEE,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF7,0xF7,0xFB,0xFD,0xF6,0xE3,0xF5,0xF6,0xF7,0xF7,0xF5,0xF3,0xE7,0xFF,0xFF,0xFF,
0xFF,0xE0,0xF7,0xF7,0xF7,0xF5,0xF5,0xF5,0xF2,0xF7,0xF7,0xF7,0xE0,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xE0,0xF5,0xF5,0xF5,0xF5,0xF5,0xF5,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,
0xEF,0xEF,0xEE,0xE9,0xEF,0xE0,0xEF,0xEF,0xE0,0xEB,0xED,0xEE,0xE7,0xEF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xEF,0xED,0xED,0xED,0xED,0xED,0xE0,0xED,0xED,0xED,0xED,0xEC,0xE5,0xEF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF

};

xchar CorpInf[]=
{
        "工业级产品比质量"
        "民用级产品比实惠"
        "  18028784142   "
        "心有宏图智显未来"
};

/*******************************************************
* 函 数 名:void delay(uchar uc_dly)
* 功能描述:短延时函数
* 函数说明:用于弥补MPU和单片机在执行时序上的差异
* 调用函数:无
* 全局变量:无
* 输入参数1)uchar uc_dly
* 返 回 值:无
* 设 计 者:Joshua Chiang    日期:04/10/2008
* 修 改 者:Joshua Chiang    日期:04/10/2008
* 版 本 号:R1.0
*******************************************************/
#pragma disable
void delay(uchar uc_dly)
{
        while (uc_dly--);
}

/*******************************************************
* 函 数 名:void delays()
* 功能描述:长延时函数
* 函数说明:测试时两画面之间的延时
* 调用函数:无
* 全局变量: DELAYMS, 修改该参数确定延时时间的长短
* 输入参数:无
* 返 回 值:无
* 设 计 者:plp          日期:04/10/2008
* Q      Q:153142388    日期:04/10/2008
* 版 本 号:R1.0
*******************************************************/
//Delay Times(s Level)
#pragma disable
void delays()
{
        uchar uc_dly,uc_dly1,uc_dly2;

        uc_dly =DELAYMS;
        
        while (uc_dly --)
        {
                for (uc_dly1=0;uc_dly1<50;uc_dly1++)
                        for (uc_dly2=0;uc_dly2<50;uc_dly2++);
        };
}


//Write Instruction Code
#pragma disable
void wr_cmd(uchar cmd)
{
        E_Port = 0;
        _nop_();
        _nop_();

        RS_Port=0;
        _nop_();
        _nop_();

        RW_Port=0;
        _nop_();
        _nop_();

        E_Port=1;
        _nop_();
        _nop_();

        DataPort=cmd;
        _nop_();
        _nop_();

        E_Port=0;
        _nop_();
        _nop_();

        delay(5);
}

//Write Display RAM Data
#pragma disable
void wr_dat(uchar dat)
{        
        E_Port = 0;
        _nop_();
        _nop_();

        RS_Port=1;
        _nop_();
        _nop_();
        
        RW_Port=0;
        _nop_();
        _nop_();

        E_Port=1;
        _nop_();
        _nop_();
               
        DataPort=dat;
        _nop_();
        _nop_();

        E_Port=0;
        _nop_();
        _nop_();

        delay(5);
}

//Display Control Setup
#pragma disable
void Init(void)
{
        wr_cmd(0x30);         //DL=1:8-BIT interface
        wr_cmd(0x30);         //RE=0:basic instruction
        wr_cmd(0x06);         //Entire display shift right by 1
        wr_cmd(0x08);         //Display OFF,Cursor OFF,Cursor position blink OFF

        wr_cmd(0x34);         //DL=1:8-BIT interface
        wr_cmd(0x34);         //RE=0:Extend instruction
        wr_cmd(0x03);
}

#pragma disable
void DisDotsA(uchar uc_dat1,uchar uc_dat2)
{
        uchar uc_HorAddr,uc_VerAddr;
        uchar uc_VerCnt,uc_HorCnt;

        wr_cmd(0x36);
        wr_cmd(0x36);
        
        uc_VerAddr=0x80;        
        uc_HorAddr=0x80;
        for (uc_VerCnt=0;uc_VerCnt<32;uc_VerCnt++)
        {
                wr_cmd(uc_VerAddr + uc_VerCnt);
                wr_cmd(uc_HorAddr);
               
                for (uc_HorCnt=0;uc_HorCnt<16;uc_HorCnt++)
                        if ((uc_VerCnt%2) == 0)
                        {
                                wr_dat(uc_dat1);
                                wr_dat(uc_dat1);
                        }
                        else
                        {
                                wr_dat(uc_dat2);
                                wr_dat(uc_dat2);
                        };
        };
        delays();
}

#pragma disable
void DisDotsB(uchar uc_dat1,uchar uc_dat2)
{
        uchar uc_HorAddr,uc_VerAddr;
        uchar uc_VerCnt,uc_HorCnt,uc_RowNo;

        wr_cmd(0x36);
        wr_cmd(0x36);
        
        uc_VerAddr=0x80;        
        uc_HorAddr=0x80;
        uc_RowNo = 0;
        
        for (uc_VerCnt=0;uc_VerCnt<32;uc_VerCnt++)
        {
                wr_cmd(uc_VerAddr + uc_VerCnt);
                wr_cmd(uc_HorAddr);

                for (uc_HorCnt=0;uc_HorCnt<16;uc_HorCnt++)
                        if (uc_RowNo < 2)
                        {
                                wr_dat(uc_dat1);
                                wr_dat(uc_dat1);
                        }
                        else
                        {
                                wr_dat(uc_dat2);
                                wr_dat(uc_dat2);
                        };

                uc_RowNo=uc_RowNo + 1;
                if (uc_RowNo == 4)
                        uc_RowNo = 0;
        };
        delays();
}

#pragma disable
void DisBorder(void)
{
        uchar uc_HorAddr,uc_VerAddr;
        uchar uc_VerCnt,uc_HorCnt;

        wr_cmd(0x36);
        wr_cmd(0x36);

        uc_VerAddr=0x80;        
        uc_HorAddr=0x80;
        wr_cmd(uc_VerAddr);
        wr_cmd(uc_HorAddr);

        for (uc_HorCnt=0;uc_HorCnt<16;uc_HorCnt++)
        {
                wr_dat(0xFF);
                wr_dat(0xFF);
        }

        for (uc_VerCnt=1;uc_VerCnt<31;uc_VerCnt++)
        {
                wr_cmd(uc_VerAddr + uc_VerCnt);
                wr_cmd(uc_HorAddr);

                wr_dat(0x80);
               
                for (uc_HorCnt=0;uc_HorCnt<14;uc_HorCnt++)
                        wr_dat(0x00);

                wr_dat(0x01);

                wr_dat(0x80);
               
                for (uc_HorCnt=0;uc_HorCnt<14;uc_HorCnt++)
                        wr_dat(0x00);

                wr_dat(0x01);
        };

        wr_cmd(uc_VerAddr + 31);
        wr_cmd(uc_HorAddr);
        for (uc_HorCnt=0;uc_HorCnt<16;uc_HorCnt++)
        {
                wr_dat(0xFF);
                wr_dat(0xFF);
        }

        delays();
}

#pragma disable
void DisPic(xchar *xc_PicArea)
{
        uchar uc_HorAddr,uc_VerAddr;
        uchar uc_VerCnt,uc_HorCnt;

        uc_VerAddr=0x80;        
        uc_HorAddr=0x80;

        wr_cmd(0x36);
        wr_cmd(0x36);
        
        for (uc_VerCnt=0;uc_VerCnt<32;uc_VerCnt++)
        {
                wr_cmd(uc_VerAddr + uc_VerCnt);
                wr_cmd(uc_HorAddr);
               
                for (uc_HorCnt=0;uc_HorCnt<16;uc_HorCnt++)
                        wr_dat(xc_PicArea[uc_VerCnt*16 + uc_HorCnt ]);

                for (uc_HorCnt=0;uc_HorCnt<16;uc_HorCnt++)
                        wr_dat(xc_PicArea[16*32 +uc_VerCnt*16 + uc_HorCnt ]);
        };
        delays();
}

#pragma disable
void DisGBStr(xchar *CorpInf)
{
        uchar uc_GBCnt;

        wr_cmd(0x30);         //DL=1:8-BIT interface
        wr_cmd(0x30);         //RE=0:basic instruction
        wr_cmd(0x0C);         //Display OFF,Cursor OFF,Cursor position blink OFF

        wr_cmd(0x80);
        for (uc_GBCnt=0;uc_GBCnt<16;uc_GBCnt++)
        {
                wr_dat(CorpInf[2 * uc_GBCnt]);
                wr_dat(CorpInf[2 * uc_GBCnt + 1]);
        };

        wr_cmd(0x90);
        for (uc_GBCnt=0;uc_GBCnt<16;uc_GBCnt++)
        {
                wr_dat(CorpInf[2 * uc_GBCnt + 32]);
                wr_dat(CorpInf[2 * uc_GBCnt + 33]);
        };

        delays();
}

#pragma disable
void CRAM_OFF()
{
        wr_cmd(0x30);         //DL=1:8-BIT interface
        wr_cmd(0x30);         //RE=0:basic instruction
        wr_cmd(0x08);        //Display ON,Cursor OFF,Cursor position blink OFF
        wr_cmd(0x01);         //CLEAR
        delay(250);
}

void main()
{
        EA=1; //Interurupt Enabled

        IT0 = 1;//INT0 Low Level Trigger

        EX0 = 1;//INT0 Enabled

        PSB_Port =1;
        _nop_();
        _nop_();

        RST_Port =0;
        delay(250);
        delay(250);
        delay(250);
        delay(250);
        
        RST_Port =1;
        delay(250);
        delay(250);
        delay(250);
        delay(250);

        //ST7920 Init
        Init();

        while (1)
        {
                CRAM_OFF();

                DisPic(LOG12864_R);
               
                DisDotsA(0xFF,0xFF);// All Dots Display On
               
                DisDotsA(0x00,0x00);// All Dots display off

                DisBorder();               

                DisDotsA(0xFF,0x00);// Display Even Rows

                DisDotsB(0xFF,0x00);// Display Twist Rows
               
                DisDotsA(0xAA,0xAA);// Display Even Columns
               
                DisDotsA(0xCC,0xCC);// Display Twist Columns

                DisDotsA(0xAA,0x55);// Display Even Dots
               
                DisDotsA(0x00,0x00);// All Dots display off

                DisGBStr(CorpInf);
        }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 03:57 , Processed in 0.042551 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表