这个是我再买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);
}
}
|