nsl 发表于 2017-3-28 17:10:22

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

这个是我再买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
#defineuchar unsigned char
#defineuint unsigned int
#definexchar 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);

                for (uc_HorCnt=0;uc_HorCnt<16;uc_HorCnt++)
                        wr_dat(xc_PicArea);
      };
      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);
                wr_dat(CorpInf);
      };

      wr_cmd(0x90);
      for (uc_GBCnt=0;uc_GBCnt<16;uc_GBCnt++)
      {
                wr_dat(CorpInf);
                wr_dat(CorpInf);
      };

      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);
      }
}
页: [1]
查看完整版本: 怎么将这个程序改为适用2560的?求帮忙!