📄 lingyanglcddisplay.txt
字号:
//IOA0_8 D0_8 数据IOA口低8位
//IOB0_2 RS RW E 控制口IOB低三位
#include<SPCE061A.h>
void delay(int count);
void sendCMD(int dat); //发送命令字
void sendDAT(char dat); //发送数据
void Initial_LCM(void);
void ClrScream(void);
void display_OneWord(int,int,char);
void Display(int ,int,char []);
unsigned int count;
void Disdata(int x,int y,unsigned long z)
//------------延迟子程序10ms----------------
void delay(int count)
{
int i,j;
for(;count>0;count--)
for(i=0;i<1;i++)
for(j=0;j<1;j++)
;
}
//-------发送命令字----//
void sendCMD(int dat)
{
*P_IOB_Data=0x0004;
*P_IOA_Data=dat;
*P_IOB_Data=0x0000;
delay(1);
}
//----------发送数据-------//
void sendDAT(char dat)
{
*P_IOB_Data=0x0001;
*P_IOB_Data=0x0005;
*P_IOA_Data=dat;
*P_IOB_Data=0x0000;
delay(1);
}
//--------液晶初始化--------//
void Initial_LCM(void)
{
delay(20);
sendCMD(0x0038); //
sendCMD(0x0004); //
sendCMD(0x000c); //
sendCMD(0x0001); //
sendCMD(0x0002);
delay(20);
}
void ClrScream(void)
{
sendCMD(0x0001);
}
//---------显示一个字符-------//
void display_OneWord(int x,int y,char data)
{
unsigned int add=0;
if(x==1)
{
add+=0x80;
}
else if(x==2)
{
add+=0xc0;
}
else
add=0;
if(y<=16&&y>=1)
{
add+=(y-1);
}
else
add=0;
if(add!=0)
{
sendCMD(add);
sendDAT(data);
}
}
//------显示一串数据----//
void Display(int x,int y,char z[])
{
int count=0;
while(z[count]!=0)
{
display_OneWord(x,y,z[count++]);
if(y<=16)
y++;
else
{
if(x=1)
{
y=1;
x++;
}
else break;
}
}
*P_Watchdog_Clear=1;
}
//------KEYSCAN-键盘扫描----// 4*4键盘 A口高位
int keyscan(void)
{
*P_IOA_Data=0x0f00;
if(*P_IOA_Data&0xf000)
{
delay(10);
if(*P_IOA_Data&0xf000)
{
*P_IOA_Data=(*P_IOA_Data&0x00ff)|0x0100;
if(*P_IOA_Data&0xf000)
{
switch(*P_IOA_Data&0xf000)
{
case 0x1000: return 1;
case 0x2000: return 2;
case 0x4000: return 3;
case 0x8000: return 0xa;
}
}
*P_IOA_Data=(*P_IOA_Data&0x00ff)|0x0200;
if(*P_IOA_Data&0xf000)
{
switch(*P_IOA_Data&0xf000)
{
case 0x1000: return 4;
case 0x2000: return 5;
case 0x4000: return 6;
case 0x8000: return 0xb;
}
}
*P_IOA_Data=(*P_IOA_Data&0x00ff)|0x0400;
if(*P_IOA_Data&0xf000)
{
switch(*P_IOA_Data&0xf000)
{
case 0x1000: return 7;
case 0x2000: return 8;
case 0x4000: return 9;
case 0x8000: return 0xc;
}
}
*P_IOA_Data=(*P_IOA_Data&0x00ff)|0x0800;
if(*P_IOA_Data&0xf000)
{
switch(*P_IOA_Data&0xf000)
{
case 0x1000: return 0xf;
case 0x2000: return 0x10;
case 0x4000: return 0xe;
case 0x8000: return 0xd;
}
}
}
}
}
void Disdata(int x,int y,unsigned long z)
{
unsigned long a=z;
Display(x,y," ");
display_OneWord(x,y+7,(z%10+0x30));
a=a/10;
if(a==0)
return;
else
display_OneWord(x,y+6,a%10+0x30);
a=a/10;
if(a==0)
return;
else
display_OneWord(x,y+5,(a%10+0x30));
a=a/10;
if(a==0)
return;
else
display_OneWord(x,y+4,(a%10+0x30));
a=a/10;
if(a==0)
return;
else
display_OneWord(x,y+3,(a%10+0x30));
a=a/10;
if(a==0)
return;
else
display_OneWord(x,y+2,(a%10+0x30));
a=a/10;
if(a==0)
return;
else
display_OneWord(x,y+1,(a%10+0x30));
a=a/10;
if(a==0)
return;
else
display_OneWord(x,y,(a%10+0x30));
}
//-------主程序-----//
void main(void)
{
*P_IOA_Attrib=0xff;
*P_IOA_Dir=0xff;
*P_IOB_Attrib=0x0007;
*P_IOB_Dir=0x0007;
Initial_LCM();
Display(2,3,"CHANINGKAN");
while(1)
{
*P_Watchdog_Clear=1;
delay(20);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -