LCD24064显示程序,此工程直接运行。

/**********************************************************************

  • T6963C C51 Source Code
  • 240X64
  • MCU:W78E516D 12MHZ
  • LCM Controller : T6963C RA6963
    *********************************************************************/
    /
    24064A/B
    1.FG -----------------GND
    2.GND-----------------GND
    3.VDD-----------------+5.0V
    4.V0
    5.WR------------------P3.0
    6.RD------------------P3.1
    7.CE(CS)--------------P3.2
    8.CD------------------P3.3
    9.RST-----------------P3.4
    10-17.D0-D7-----------P1
    18.FS-----------------P3.5
    19.LEDA---------------+5.0V
    20.LEDK---------------GND
    */
    #include <reg52.h>
    #include <intrins.h>
    #include <stdio.h>

#define uint unsigned int
#define uchar unsigned char
#define Graphic 1
#define TXT 0
#define LcmLengthDots 240
#define LcmWidthDots 64
#define LcmDataBus P1
void Delay(uint MS);
char xdata LcmDataPort at 0x0000;
char xdata LcmCmdPort at 0x0100;

uchar code bmp1[];
uchar code str0[];
uchar code str1[];

sbit CSP = P3^2;
sbit RSP = P3^3;
sbit WRP = P3^0;
sbit RDP = P3^1;
sbit RES = P3^4;
sbit FS = P3^5;

//指令&数据读写状态
void CheckRWCD(void)
{

CSP = 0;
WRP = 1;
RSP = 1;
LcmDataBus = 0xff;
RDP = 0;
while((LcmDataBus & 0x03) != 0x03);
RDP = 1;
CSP = 1;

// while((LcmCmdPort & 0x03) != 0x03); //低电平忙
}
//数据自动写状态
void CheckAutoWrite(void)
{
CSP = 0;
WRP = 1;
RSP = 1;
LcmDataBus = 0xff;
RDP = 0;
while((LcmDataBus & 0x08) ==0 );
RDP = 1;
CSP = 1;

// while((LcmCmdPort & 0x08) == 0); //低电平忙
}
//屏读/屏考贝出错状态
void CheckScreen(void)
{
CSP = 0;
WRP = 1;
RSP = 1;
LcmDataBus = 0xff;
RDP = 0;
while(LcmDataBus & 0x40);
RDP = 1;
CSP = 1;
// while(LcmCmdPort & 0x40); //1出错,0正确
}
//一个数据子写入函数
void LcmWriteData(uchar uData)
{
CSP = 0;
RDP = 1;
RSP = 0;
LcmDataBus = uData;
WRP = 0;
WRP = 1;
CSP = 1;
LcmDataBus = 0xff;
// LcmDataPort = uData;
}
//一个数据读出函数
uchar LcmReadData( void )
{
uchar uData;
CSP = 0;
WRP = 1;
RSP = 0;
LcmDataBus = 0xff;
RDP = 0;
uData = LcmDataBus;
RDP = 1;
CSP = 1;

// uData = LcmDataPort;
return uData;
}
//无参数指令写入函数
void LcmWriteCommand(uchar Command)
{
CSP = 0;
RDP = 1;
RSP = 1;
LcmDataBus = Command;
WRP = 0;
WRP = 1;
CSP = 1;
LcmDataBus = 0xff;
// CheckRWCD(); //检测指令读写状态
// LcmCmdPort = Command;
}
//单参数指令写入函数
void LcmWriteCommandWith1Par(uchar Parameter,uchar Command)
{
LcmWriteData(Parameter);
LcmWriteCommand(Command);
// CheckRWCD(); //检测指令读写状态
// LcmDataPort = Parameter;
// CheckRWCD();
// LcmCmdPort = Command;
}
//双参数指令写入函数
void LcmWriteCommandWith2Par(uchar Parameter1,uchar Parameter2,uchar Command)
{
LcmWriteData(Parameter1);
LcmWriteData(Parameter2);
LcmWriteCommand(Command);
// CheckRWCD(); //检测指令读写状态
// LcmDataPort = Parameter1;
// CheckRWCD();
// LcmDataPort = Parameter2;
// CheckRWCD();
// LcmCmdPort = Command;
}
//LCM初始化函数
void LcmInit( void )
{
RES=0;
Delay(10);
RES=1;
Delay(30);
LcmWriteCommandWith2Par(0x00,0x00,0x40); //设置文本显示区首地址
LcmWriteCommandWith2Par(LcmLengthDots/8,0x00,0x41); //设置文本显示区宽度
LcmWriteCommandWith2Par(0x00,0x08,0x42); //设置图形显示区首地址0x0800
LcmWriteCommandWith2Par(LcmLengthDots/8,0x00,0x43); //设置图形显示区宽度
LcmWriteCommand(0xA7); //设置光标形状 8x8方块
LcmWriteCommand(0x81); //显示方式设置 文本xor图形(异或)
LcmWriteCommand(0x9C); //显示开关设置 文本开,图形开,光标闪烁关
}
//延时函数
void Delay(uint MS)
{
uchar us,usn;
while(MS!=0) //12M Crystal
{
usn = 2;
while(usn!=0)
{
us=0xf2;
while (us!=0){us–;};
usn–;
}
MS–;
}
}

//清显示存储器函数
void LcmClear( uchar FillByte )
{
uint i = 8192; //此处仅清8K RAM,如果您32K RAM都使用,请修改i=32768(后面也要改)
if(FillByte) //注意如果填充ff时,如果RAM仅使用了8K,那么8192次会写入到文本区
{ //会形成乱码.(24064出厂时候默认将R7断开,即默认使用8KRAM)
i -= 21024;//所以如果填入ff时候要扣除2K的文本区
LcmWriteCommandWith2Par(0x00,0x08,0x24); //填充0xff时候要在图形区
}
else
LcmWriteCommandWith2Par(0x00,0x00,0x24);
LcmWriteCommand(0xB0); //进入自动写
while(i–)
{
CheckAutoWrite();
LcmWriteData( FillByte );
}
LcmWriteCommand(0xB2); //退出自动写
}
//设定显示地址函数
void LocateXY(uchar x,uchar y,uchar mode)
{
uint temp;
temp= LcmLengthDots/8
y + x;
if(mode) //mode=1为Graphic
{ //如果图形模式要加上图形区首地址0x0800
temp+=0x0800;
}
LcmWriteCommandWith2Par(temp&0xff,temp/256,0x24);
}
//显示一个ASCII码函数
void PutChar(uchar x,uchar y,uchar CharByte)
{
LocateXY(x,y,TXT);
LcmWriteCommandWith1Par(CharByte-0x20,0xC4);
}
//显示一个字符串函数
void PutString(uchar x,uchar y,uchar *str)
{
while(*str != 0)
{
if(x> (LcmLengthDots/8-1)) //自动换行
{
x=0;
y++;
}
PutChar(x,y,*str);
++x;
++str;
}
}

//显示一副图片函数
void DisplayOneBmp(uchar *puts)
{
uchar i,j;
uint X=0;
LocateXY(0,0,Graphic);
LcmWriteCommand(0xB0); //进入自动写
for(i=0;i<LcmWidthDots;i++)
{
for(j=0;j<LcmLengthDots/8;j++)
{
CheckAutoWrite();
LcmWriteData(puts[X]);
X++;
}
}
LcmWriteCommand(0xB2); //退出自动写
}
//反显一副图片函数
void ReverseOneBmp( void )
{ //利用数据一次读写操作
uchar i,j,X; //只能对一段RAM取反
LocateXY(0,0,Graphic);
for(i=0;i<LcmWidthDots;i++)
{
for(j=0;j<LcmLengthDots/8;j++)
{
LcmWriteCommand(0xC5); //读数据,地址不变
CheckRWCD();
X = LcmReadData();
X = ~X;
LcmWriteCommandWith1Par(X,0xC0);
}
}
}

//屏读功能演示
void ScreenReadDemo( void )
{ //利用屏读
//能对当前屏幕反显,包括合成内容(本函数仅读文本到图形)
//但是写入后的内容都在图形区
//可以将文本区内容读出以图形方式写到图形区
uchar i,j,X;
//使用屏读屏考时候必须设置宽度为40(硬件已决定)
//所以如确定要用到屏读屏考的话最后初始化时就设40
LcmWriteCommandWith2Par(0x28,0x00,0x41); //设置文本显示区宽度=40
LcmWriteCommandWith2Par(0x28,0x00,0x43); //设置图形显示区宽度=40
PutString(0,0,str1); //0,0不会受到宽度改变的影响
for(i=0;i<8;i++) //屏幕较慢,就以一行文本做演示
{
LcmWriteCommandWith2Par((0x28i+0x800)&0xff,(0x28i+0x800)/256,0x24);
for(j=0;j<LcmLengthDots/8;j++)
{
LcmWriteCommand(0xE0);
CheckScreen();
CheckRWCD();
X = LcmReadData();
X = ~X;
LcmWriteCommandWith1Par(X,0xC0);
}
}
//屏读需要一点时间,运行速度比较慢,运行过程中由于文本图形互补的关系,屏幕全黑
LcmWriteCommand(0x98); //关闭文本区看显示效果
Delay(30); //DelayKey(3);
LcmWriteCommand(0x9C); //恢复文本区显示
LcmWriteCommandWith2Par(LcmLengthDots/8,0x00,0x41); //宽度改回原值
LcmWriteCommandWith2Par(LcmLengthDots/8,0x00,0x43);
LcmClear(0); //清屏
}
//显示点阵子函数
void DisplayDots(uchar DotByte,uchar n)
{
uchar i,j;
LocateXY(0,0,Graphic);
LcmWriteCommand(0xB0); //进入自动写
for(i=0;i<LcmWidthDots/n;i++)
{
for(j=0;j<LcmLengthDots/8*n;j++)
{
CheckAutoWrite();
LcmWriteData(DotByte);
}
DotByte=~DotByte;
}
LcmWriteCommand(0xB2); //退出自动写
}

//主函数
void main(void)
{
uchar i;
FS =0;
Delay(60);
LcmInit();
LcmClear(0);
while(1)
{
DisplayOneBmp(bmp1); //显示一副图片
Delay(1000);
ReverseOneBmp(); //反显当前图片
Delay(1000);
LcmClear(0); //清屏,此处不清屏且同时打开文本和图形可观察文本xor图形的显示效果

	LcmWriteCommand(0x94);		//仅开文本,关图形,这种情况下有可能英文字库出现错误
	for(i=0;i<8;i++) 		//显示一屏字符串
		PutString(0,i,str0);
	Delay(1000); 
	
	LcmWriteCommand(0x9C);		//开文本图形
	LcmClear(0);
	LcmClear(0xff);		//全黑检测
	Delay(1000); 

	ScreenReadDemo();      //屏读演示,函数内包含了延时
	DisplayDots(0x55,1);
	Delay(1000); 

	DisplayDots(0xaa,1);
	Delay(1000); 

	DisplayDots(0x33,2);
	Delay(1000); 

	DisplayDots(0xcc,2);
	Delay(1000); 

	DisplayDots(0xF0,4);
	Delay(1000); 

	DisplayDots(0x0F,4);
	Delay(1000); 
}

}

//代码区
uchar code str0[]= “ShenZhen_YaBin_Electronic_INC”; //减去0x20即可
uchar code str1[]= {//“ShenZhen_YaBin_Electronic_INC”;
0x33,0x48,0x45,0x4E,0x3A,0x48,0x45,0x4E,0x3F,0x39,0x41,0x22,0x49,0x4E,
//S h e n Z h e n _ Y a B i n
0x3F,0x25,0x4C,0x45,0x43,0x54,0x52,0x4f,0x4E,0x49,0x43,0x3F,0x29,0x2E,0x23,0x00
//_ E l e c t r o n i c _ I N C /0
};
uchar code bmp1[]={
////
//
转换的文件:E:!Program!BmpSample\24064.bmp
//
源图形宽度 * 高度:240 * 64
//
调整后宽度 * 高度:240 * 64
//
字模格式:横向取模,冗余模式,字节正序,正色取模,
//
点阵转换时间:2004/12/ 3 8:25:40
//
位图点阵占用1920字节
//
******************************//

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x04,0xFF,0x80,0x00,
0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
0x00,0x01,0x80,0x00,0x0E,0x00,0x00,0x06,0x60,0x00,0x04,0x10,0x80,0x00,0x33,0x00,
0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x01,0x80,0x00,0x00,0x00,0x01,
0x80,0x00,0x1F,0x00,0x00,0x0C,0x30,0x00,0x1F,0x90,0x80,0x00,0x61,0x80,0x00,0x07,
0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0xF8,0x00,0x00,0x04,0x01,0x80,0x00,
0x33,0x80,0x00,0x19,0x30,0x00,0x04,0x20,0x80,0x00,0x64,0xC0,0x00,0x0E,0x60,0x00,
0x00,0x00,0x00,0x04,0x07,0xB0,0x01,0xFF,0xFE,0xBF,0xFC,0x01,0x80,0x00,0x61,0xC0,
0x00,0x33,0x98,0x00,0x04,0x29,0x00,0x00,0xCE,0x60,0x00,0x1C,0x30,0x00,0x00,0x00,
0x06,0x01,0x4D,0xFF,0xE0,0x7F,0xFF,0xFF,0xFC,0x01,0x80,0x00,0xCC,0xE0,0x00,0x67,
0x98,0x00,0x05,0x46,0x00,0x00,0xCF,0x30,0x00,0x39,0x98,0x00,0x00,0x00,0x07,0xE6,
0xBB,0xFF,0xE0,0x3F,0xFF,0xFF,0xFC,0x01,0x80,0x01,0x8E,0x70,0x00,0x67,0xDC,0x70,
0x06,0x80,0x00,0x71,0xDF,0x30,0x00,0x73,0x8C,0x00,0x00,0x00,0x07,0x1C,0x7F,0xFF,
0xC0,0x07,0xFF,0xFF,0xFC,0x01,0x80,0x01,0x1E,0x38,0x00,0xCF,0xCD,0xFC,0x1C,0x7F,
0x01,0xFD,0x9F,0x98,0x00,0xE3,0xC4,0x00,0x00,0x00,0x18,0x79,0xEF,0xBF,0x80,0x01,
0xFF,0xFF,0xFC,0x01,0x80,0x01,0x3F,0x3F,0xFF,0xCF,0xCF,0x0E,0x04,0x41,0x03,0x87,
0x9F,0x9F,0xFF,0xE7,0xE4,0x00,0x00,0x01,0x08,0xE3,0xFD,0xC0,0x00,0x03,0xFD,0xFE,
0xFC,0x01,0x80,0x03,0x3F,0x1F,0xFF,0x8F,0xC4,0x07,0x04,0x41,0x07,0x01,0x1F,0x8F,
0xFF,0xC7,0xE6,0x00,0x00,0x00,0xE7,0xC5,0x5F,0x00,0x00,0x07,0xEB,0xFF,0xEC,0x01,
0x80,0x02,0x3F,0x0F,0xFF,0x0F,0xC4,0x03,0x04,0x41,0x06,0x01,0x1F,0x87,0xFF,0x87,
0xE2,0x00,0x00,0x00,0x17,0x1F,0xFF,0xC0,0x00,0x1F,0x37,0xF7,0xFC,0x01,0x80,0x02,
0x3F,0x00,0x00,0x00,0x07,0xE1,0x14,0x7F,0x04,0x3F,0x00,0x00,0x00,0x07,0xE2,0x00,
0x00,0x02,0xFE,0x3B,0xFB,0xE0,0x00,0xFF,0x37,0xFF,0x7C,0x01,0x80,0x04,0x00,0x08,
0x00,0x80,0x07,0xAD,0x88,0x41,0x0D,0xAF,0x00,0x08,0x00,0x80,0x01,0x00,0x00,0x01,
0xEC,0xEE,0xDF,0xF0,0x05,0xCF,0xBF,0xB4,0x80,0x01,0x80,0x06,0x00,0x24,0x01,0x20,
0x06,0xA9,0x80,0x00,0x0C,0xAB,0x00,0x24,0x01,0x20,0x03,0x00,0x00,0x03,0xD0,0xDF,
0xE1,0xF8,0x07,0xE7,0x77,0xC0,0x00,0x01,0x80,0x06,0x07,0xD0,0x00,0x5F,0x06,0xA9,
0x00,0x00,0x04,0xAB,0x07,0xD0,0x00,0x5F,0x03,0x00,0x00,0x01,0xA3,0xBE,0x70,0x7C,
0x13,0x6F,0xBF,0x80,0x00,0x01,0x80,0x0C,0x00,0x20,0x00,0x20,0x06,0xA1,0x00,0x01,
0x04,0x2B,0x00,0x20,0x00,0x20,0x01,0x80,0x00,0x12,0x5D,0xFE,0x38,0x38,0x39,0xEF,
0x9F,0x80,0x00,0x01,0x80,0x0C,0x03,0xC0,0x00,0x1E,0x02,0x03,0x0F,0x81,0x06,0x02,
0x03,0xC0,0x00,0x1E,0x01,0x80,0x00,0x12,0xEF,0x78,0x00,0x00,0x39,0xE7,0xBE,0x00,
0x00,0x01,0x80,0x0C,0x04,0x20,0x00,0x21,0x03,0x03,0x08,0x81,0x06,0x06,0x04,0x20,
0x00,0x21,0x01,0x80,0x00,0x00,0xCD,0xF0,0x00,0x00,0x00,0xE7,0xDE,0x00,0x00,0x01,
0x80,0x1C,0x09,0x90,0x00,0x4C,0x83,0x03,0x0F,0xBF,0xC6,0x06,0x09,0x90,0x00,0x4C,
0x81,0xC0,0x01,0x21,0x7B,0xE0,0x00,0x00,0x00,0x0F,0xE4,0x00,0x00,0x01,0x80,0x18,
0x0B,0xD0,0x00,0x5E,0x81,0x01,0x08,0x83,0x04,0x04,0x0B,0xD0,0x00,0x5E,0x80,0xC0,
0x00,0x01,0x9F,0xC0,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x01,0x80,0x18,0x09,0x90,
0x00,0x4C,0x81,0x81,0x08,0x83,0x04,0x0C,0x09,0x90,0x00,0x4C,0x80,0xC0,0x02,0x04,
0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x18,0x04,0x20,0x00,0x21,
0x01,0x81,0x8F,0x85,0x0C,0x0C,0x04,0x20,0x00,0x21,0x00,0xC0,0x00,0xA4,0xF7,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x18,0x03,0xC0,0x00,0x1E,0x01,0x81,
0x88,0x85,0x0C,0x0C,0x03,0xC0,0x00,0x1E,0x00,0xC0,0x08,0x09,0x6E,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x18,0x00,0x00,0x00,0x00,0x01,0x81,0x88,0x89,
0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x11,0xBE,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x80,0x18,0x00,0x00,0x00,0x00,0x09,0x80,0x8F,0x91,0x08,0x0C,
0x80,0x00,0x00,0x00,0x00,0xC0,0x10,0x9D,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0x80,0x1C,0x80,0x00,0x20,0x0F,0xF1,0x81,0xC0,0x21,0x1C,0x0C,0x7F,0x80,
0x20,0x00,0x09,0xC0,0x0A,0xAB,0x6B,0x80,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x1C,0x7F,0xE0,0x7C,0x10,0x01,0x93,0xC4,0x81,0x1E,0x4C,0x00,0x41,0xF0,0x3F,
0xF1,0xC0,0x2D,0x77,0xBF,0xA0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x1C,
0x00,0x10,0x7C,0x00,0x09,0x93,0xC4,0x49,0x1E,0x4C,0x80,0x01,0xF0,0x40,0x01,0xC0,
0x16,0xB5,0xFF,0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x0C,0x40,0x00,
0x7C,0x0F,0xF1,0x03,0x88,0x46,0x0E,0x04,0x7F,0x81,0xF0,0x00,0x11,0x80,0x37,0xDB,
0x7F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x0E,0x3F,0xE0,0x30,0x10,
0x09,0x03,0xC0,0x00,0x1E,0x04,0x80,0x40,0x60,0x3F,0xE3,0x80,0x3B,0x7F,0xBF,0xFF,
0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x0E,0x40,0x10,0x30,0x01,0xF2,0x03,
0x80,0x00,0x0E,0x02,0x7C,0x00,0x60,0x40,0x13,0x80,0x3F,0xED,0xFF,0xFF,0xFF,0xE0,
0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x07,0x3F,0x80,0x68,0x06,0x02,0x01,0x80,0x89,
0x0C,0x02,0x03,0x00,0xB0,0x0F,0xE7,0x00,0x37,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x80,0x03,0x80,0x60,0xC8,0x08,0x06,0x00,0x83,0x09,0x08,0x03,
0x00,0x80,0x98,0x30,0x0E,0x00,0x3C,0x07,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0x80,0x03,0x80,0x10,0x84,0x00,0x0C,0x01,0x8D,0x7F,0xCC,0x01,0x80,0x01,
0x08,0x40,0x0E,0x00,0x3D,0xFF,0xF7,0xCF,0xFF,0xC7,0x83,0xE7,0x81,0xF8,0x00,0x01,
0x80,0x01,0xC0,0x03,0x83,0x00,0x0C,0x01,0x04,0x89,0x04,0x01,0x80,0x06,0x0E,0x00,
0x1C,0x00,0x3D,0xFF,0xF7,0x9F,0xFF,0xE7,0x87,0xC7,0x81,0xF8,0x00,0x01,0x80,0x00,
0xE0,0x1F,0x01,0xE0,0x3C,0x03,0x03,0x09,0x06,0x01,0xE0,0x3C,0x07,0xC0,0x38,0x00,
0x3D,0xFF,0xE7,0x9F,0xFF,0xE7,0x8F,0x87,0x83,0xFC,0x00,0x01,0x80,0x00,0xF0,0x3C,
0x00,0xE0,0xFC,0x03,0x0C,0x80,0x06,0x01,0xF8,0x38,0x01,0xE0,0x78,0x00,0x3D,0xFF,
0x87,0x9E,0x01,0xE7,0x9F,0x07,0x83,0xFC,0x00,0x01,0x80,0x00,0xFC,0x00,0x00,0x03,
0xF8,0x02,0x01,0xBF,0x82,0x00,0xFE,0x00,0x00,0x01,0xF8,0x00,0x21,0xEF,0xC7,0x9E,
0x01,0xE7,0xBE,0x07,0x87,0x9E,0x00,0x01,0x80,0x00,0xFE,0x00,0x00,0x1F,0xF0,0x02,
0x02,0xA4,0x82,0x00,0x7F,0xC0,0x00,0x03,0xF8,0x00,0x01,0xE7,0xE7,0x9E,0x01,0xE7,
0xFC,0x07,0x87,0x9E,0x00,0x01,0x80,0x00,0xFF,0xE0,0x0F,0xFF,0xE0,0x04,0x0C,0xA4,
0x81,0x00,0x3F,0xFF,0x80,0x3F,0xF8,0x00,0x01,0xE3,0xF7,0x9E,0x01,0xE7,0xFC,0x07,
0x8F,0x0F,0x00,0x01,0x80,0x01,0xBF,0xFF,0xFF,0xFF,0xF0,0x0E,0x01,0xBF,0x83,0x80,
0x7F,0xFF,0xFF,0xFF,0xEC,0x00,0x01,0xE1,0xFF,0x9E,0x01,0xE7,0xBE,0x07,0x8F,0xFF,
0x00,0x01,0x80,0x01,0x9F,0xFF,0xFF,0xFF,0xF0,0x0E,0x02,0xA4,0x83,0x80,0x7F,0xFF,
0xFF,0xFF,0xCC,0x00,0x01,0xE0,0xFF,0x9E,0x01,0xE7,0x9F,0x07,0x9F,0xFF,0x80,0x01,
0x80,0x01,0x0F,0xFF,0xFF,0xFF,0xF0,0x0C,0x0C,0xA4,0x81,0x80,0x7F,0xFF,0xFF,0xFF,
0x84,0x00,0x01,0xE0,0x7F,0x9F,0xFF,0xE7,0x8F,0x87,0x9F,0xFF,0x80,0x01,0x80,0x03,
0x00,0xFF,0xFF,0xFF,0xF0,0x0E,0x02,0xBF,0x83,0x80,0x7F,0xFF,0xFF,0xF8,0x06,0x00,
0x01,0xE0,0x3F,0x9F,0xFF,0xE7,0x87,0xC7,0xBC,0x03,0xC0,0x01,0x80,0x03,0x00,0xBF,
0xFF,0xBC,0xE0,0x0E,0x01,0x20,0x83,0x80,0x39,0xEF,0xFF,0xE8,0x06,0x00,0x01,0xE0,
0x1F,0x8F,0xFF,0xC7,0x83,0xE7,0xBC,0x03,0xC0,0x01,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于STM32的LCD1602显示时钟程序主要分为硬件连接和软件编程两部分。 硬件连接方面,首先需要将STM32单片机与LCD1602进行连接。将LCD1602的VCC引脚与STM32的5V引脚相连,将LCD1602的GND引脚与STM32的GND引脚相连。将LCD1602的RS引脚与STM32的GPIO引脚相连,LCD1602的RW引脚与STM32的GND引脚相连,LCD1602的E引脚与STM32的GPIO引脚相连。将LCD1602的D0-D7引脚与STM32的GPIO引脚相连。 软件编程方面,首先需要在STM32编程软件中创建一个工程,初始化LCD1602的引脚和时钟配置。然后编写相应的程序逻辑来实现时钟的显示和更新。 程序的逻辑如下: 1. 定义变量来存储时、分、秒的数值。 2. 在主循环中读取实时时、分、秒的数值,并将其转化为字符形式。 3. 将时、分、秒的字符写入指定的LCD1602的显示区域。 4. 延时一段时间后进行下一次更新。 具体的代码实现如下(以Keil MDK为例): ``` #include "stm32f10x.h" #include "lcd1602.h" int main(void) { SystemInit(); // 系统初始化 LCD1602_Init(); // 初始化LCD1602 while(1) { uint8_t hour, minute, second; // 获取实时的时、分、秒的数值,并转换为字符 hour = RTC_GetHour(); minute = RTC_GetMinute(); second = RTC_GetSecond(); char hour_str[3], minute_str[3], second_str[3]; sprintf(hour_str, "%02d", hour); sprintf(minute_str, "%02d", minute); sprintf(second_str, "%02d", second); // 在LCD1602的指定位置显示时、分、秒 LCD1602_SetCursor(0, 0); // 设置光标位置为第一行第一列 LCD1602_WriteString(hour_str); LCD1602_WriteString(":"); LCD1602_WriteString(minute_str); LCD1602_WriteString(":"); LCD1602_WriteString(second_str); Delay(1000); // 延时1秒 } } ``` 以上就是基于STM32的LCD1602显示时钟程序的简单实现。当然,具体的实现细节还需要根据具体的STM32型号和编程软件进行相应的调整和修改。 ### 回答2: 基于 STM32 的 LCD1602 显示时钟程序是一种通过 STM32 微控制器控制 LCD1602 模块,实现显示时间的应用程序。 实现该程序的一般步骤如下: 1. 硬件连接:将 STM32 微控制器与 LCD1602 模块进行连接,包括数据线和控制线的连接。 2. 引入相关库文件:在代码中引入 STM32 的相关库文件,以便能够使用相应的函数和变量。 3. 初始化 LCD1602:通过调用相关函数进行 LCD1602 模块的初始化,包括设置显示模式、光标开关、光标位置等。 4. 获取时间:通过调用 STM32 提供的时钟函数,获取当前的时间并保存到变量中。 5. 更新显示:将获取到的时间信息通过调用 LCD1602 的相关函数进行显示,包括设置光标位置和显示内容。 6. 循环更新:通过使用一个无限循环结构,程序将不断获取当前时间并更新显示,以实现实时时钟的功能。 该程序的原理是利用 STM32 微控制器与 LCD1602 模块进行通信和控制,通过不断获取时间并更新显示,实现了一个简单的时钟应用。 需要注意的是,该程序只是一个简单的示例,具体实现需要依据具体的 STM32 型号和使用的开发环境进行不同的适配和调试。此外,程序中还可以添加其他功能,如温度、湿度等的显示,以满足更多的需求。 ### 回答3: 基于STM32的LCD1602显示时钟程序是一种利用STM32开发板和LCD1602液晶模块来显示实时时钟的程序。下面我将简单介绍如何实现这个程序。 首先,我们需要准备以下硬件材料: 1. STM32开发板 2. LCD1602液晶模块 3. 电阻 4. 连接线 然后,我们需要进行以下步骤: 1. 接线:将STM32开发板的引脚与LCD1602液晶模块相连接。具体连接方式可以参考开发板和液晶模块的引脚定义和连接图。 2. 配置STM32开发环境:使用Keil MDK等开发环境进行STM32开发板的初始化配置,包括引脚定义和时钟配置等。 3. 编写程序代码:在主函数中,我们需要使用相应的库函数来初始化LCD1602液晶模块,并且通过定时器中断来实现每秒更新显示的功能。 4. 实现时钟显示功能:在中断函数中,获取当前时间,通过LCD1602模块的控制命令来设置显示位置,并利用库函数将时间信息进行显示。 5. 烧录程序:将编写好的程序通过JTAG或者SWD等方式烧录到STM32开发板上,使得开发板可以正常运行。 通过以上步骤,我们就可以实现基于STM32的LCD1602显示时钟程序了。当程序烧录完成后,液晶模块将显示当前的实时时钟,并且每秒更新一次。这样,我们就可以在LCD1602显示屏上方便地看到当前的时间信息了。 当然,这只是一个简单的实现思路,具体的实现过程可能还需要考虑其他细节问题,比如时钟精度、按键功能等。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值