📄 led.c
字号:
void LS154ON_H(uint16 row)
{
IO1CLR=(0xFF<<16);
IO1SET |= (row<<16); //使用P1.16-P1.20做154译码
LS154_0N;
Delay1ms(1);
}
/********************************************************************************************************
** 函数名称 :LEDPrintOneChinese()
** 函数功能 :显示一个汉字
** 入口参数 :
** 出口参数 :无
********************************************************************************************************/
void LEDPrintOneChinese(uint8 col,uint8 *s)
{
int16 data;
int8 dat1,dat2,row;
LS138ON(col);
for(row=0;row<16;row++)
{
dat1=*s;
s++;
dat2=*s;
s++;
data=(dat2<<8)+dat1;
LS154_0FF;
LEDPrintOneROW_16(data);
LS154ON(row);
LEDFangdian_16();
}
}
/********************************************************************************************************
** 函数名称 :void LEDPrintchinese(uint8 *s)
** 函数功能 :显示一组汉字
** 入口参数 :str为显示汉字的个数,*s为字库指针
** 出口参数 :无
********************************************************************************************************/
void LEDPrintchinese(uint8 str,uint8 *s)
{
uint16 i;
uint8 key;
for(;str>0;)
{
if(str!=1) //显示的字数为偶数个时
{
for(i=0;i<500;i++) //每两个字显示100次后再显示后面两个字
{
LEDPrintOneChinese(0,s);
LEDPrintOneChinese(1,(s+32));
key=key_jiance();
if(key==1) break;
}
}
else
{
for(i=0;i<500;i++) //显示最后一个字
LEDPrintOneChinese(0,s);
key=key_jiance();
if(key==1) break;
}
s = s + 64;
str -= 2;
key=key_jiance();
if(key==1) break;
}
}
/********************************************************************************************************
** 函数名称 :LEDPrintOneChinese()
** 函数功能 :横向显示一个汉字
** 入口参数 :
** 出口参数 :无
********************************************************************************************************/
void LEDPrintOneChinese_H(uint8 col,uint8 *s)
{
int16 data;
int8 dat1,dat2,row;
LS138ON(col);
for(row=0;row<16;row++)
{
dat1=*s;
s++;
dat2=*(s+15);
data=(dat2<<8)+dat1;
LS154_0FF;
LEDPrintOneROW_16(data);
LS154ON_H(row);
LEDFangdian_16();
}
}
/********************************************************************************************************
** 函数名称 :void LEDPrintchinese(uint8 *s)
** 函数功能 :横向显示一组汉字
** 入口参数 :str为显示汉字的个数,*s为字库指针
** 出口参数 :无
********************************************************************************************************/
void LEDPrintchinese_H(uint8 str,uint8 *s)
{
uint16 i;
uint8 key;
for(;str>0;)
{
if(str!=1) //显示的字数为偶数个时
{
for(i=0;i<500;i++) //每两个字显示100次后再显示后面两个字
{
LEDPrintOneChinese_H(1,s);
LEDPrintOneChinese_H(0,(s+32));
key=key_jiance();
if(key==1) break;
}
}
else
{
for(i=0;i<500;i++) //显示最后一个字
LEDPrintOneChinese_H(1,s);
key=key_jiance();
if(key==1) break;
}
s = s + 64;
str -= 2;
key=key_jiance();
if(key==1) break;
}
}
/********************************************************************************************************
** 函数名称 :LEDPrintOneROW_8(uint8 data)
** 函数功能 :送出一行数据(8位)供377锁存的函数 data为8为的列信号
** 入口参数 :
** 出口参数 :无
********************************************************************************************************/
void LEDPrintOneROW_8(uint8 data)
{
NOP();
IO0SET |= data;
CP_ON;
NOP();
CP_OFF;
IO0CLR = 0xFF;
}
/********************************************************************************************************
** 函数名称 :void LEDFangdian_16()
** 函数功能 :送出一行数据(8位)供377锁存的函数 data为8为的列信号
** 入口参数 :
** 出口参数 :无
********************************************************************************************************/
void LEDFangdian_16( void )
{
NOP();
IO0CLR = 0xFF;
CP_ON;
NOP();
CP_OFF;
}
/********************************************************************************************************
** 函数名称 : void LEDPrintOneChar(uint8 x,uint8 y,uint8 *s)
** 函数功能 :显示一个字符的函数
** 入口参数 :x:行标,y:列标,char1:字符
** 出口参数 :无
********************************************************************************************************/
void LEDPrintOneChar(uint8 x,uint8 y,uint8 char1)
{
uint16 char2,ptr;
uint8 row,char3;//*ZIMUptr;
ptr=(char1 & 0x7f)-0x20;
ptr=ptr*16; //寻找字符在字库中的起始指针
//*ZIMUptr =Char[ptr];
//x=x*8; //显示起始的行
LS138ON(y/2); //138片选
if((y%2)==0) //偶数位置显示字母,起始位置为0,认为是偶数
{
for(row=0;row<16;row++)
{
LS154_0FF;
char3=Char[ptr++];
LEDPrintOneROW_8(char3);
LS154ON(row);
}
}
else
{
for(row=0;row<16;row++)
{
LS154_0FF;
char2=Char[ptr++]<<8;
LEDPrintOneROW_16(char2);
LS154ON(row);
}
}
LEDFangdian_16();
//LEDFangdian_16();
/*
for(row=0;row<8;row++)
{
LS154_0FF;
char2=Char[ptr]+(Char[(8+ptr)]<<8);
LEDPrintOneROW_16(char2);
LS154ON((x+row));
ptr++;
}*/
}
/********************************************************************************************************
** 函数名称 :void LEDPrintChar(uint8 x,uint8 y,uint8 *s)
** 函数功能 :显示一串字符的函数
** 入口参数 :x:行标,y:列标,*s:字符指针
** 出口参数 :无
********************************************************************************************************/
void LEDPrintChar(uint8 x,uint8 y,uint8 *s)
{
uint8 i,l=0,key;
uint16 j;
while(s[l]>0x10){l++;};
x=0;
for(;l>0;)
{
if(l>3)
{
for(j=0;j<250;j++)
{
for(i=0;i<4;i++)
{
LEDPrintOneChar(0,i,s[i]);
key=key_jiance();
if(key==1) break;
}
}
}
else
{
for(j=0;j<250;j++)
{
for(i=0;i<l;i++)
{
LEDPrintOneChar(0,i,s[i]);
key=key_jiance();
if(key==1) break;
}
}
}
key=key_jiance();
if(key==1) break;
s +=4;
l -=4;
y=0;
key=key_jiance();
if(key==1) break;
}
/*
for(;l>0;)
{
for(j=0;j<500;j++)
{
for(i=0;i<4;i++)
{
LEDPrintOneChar(0,i,s[i]);
key=key_jiance();
if(key==1) break;
}
}
key=key_jiance();
if(key==1) break;
s +=4;
l -=4;
y=0;
key=key_jiance();
if(key==1) break;
}
*/
}
/********************************************************************************************************
** 函数名称 : void LEDPrintOneChar_H(uint8 x,uint8 y,uint8 *s)
** 函数功能 :横向显示一个字符的函数
** 入口参数 :x:行标,y:列标,char1:字符
** 出口参数 :无
********************************************************************************************************/
void LEDPrintOneChar_H(uint8 x,uint8 y,uint8 char1)
{
uint16 char3,ptr;
uint8 row;//*ZIMUptr;
ptr=(char1 & 0x7f)-0x20;
ptr=ptr*16; //寻找字符在字库中的起始指针
//*ZIMUptr =Char[ptr];
//x=x*8; //显示起始的行
if(y<2)
LS138ON((y/2+1)); //138片选
else
LS138ON((y/2-1));
if((y%2)==0) //偶数位置显示字母,起始位置为0,认为是偶数
{
for(row=0;row<8;row++)
{
LS154_0FF;
char3=Char_H[ptr]+(Char_H[(ptr+8)]<<8);
LEDPrintOneROW_16(char3);
LS154ON_H(row);
ptr++;
}
}
else
{
for(row=8;row<16;row++)
{
LS154_0FF;
char3=Char_H[ptr]+(Char_H[(ptr+8)]<<8);
LEDPrintOneROW_16(char3);
LS154ON_H(row);
ptr++;
}
}
LEDFangdian_16();
//LEDFangdian_16();
/*
for(row=0;row<8;row++)
{
LS154_0FF;
char2=Char[ptr]+(Char[(8+ptr)]<<8);
LEDPrintOneROW_16(char2);
LS154ON((x+row));
ptr++;
}*/
}
/********************************************************************************************************
** 函数名称 :void LEDPrintChar(uint8 x,uint8 y,uint8 *s)
** 函数功能 :横向显示一串字符的函数
** 入口参数 :x:行标,y:列标,*s:字符指针
** 出口参数 :无
********************************************************************************************************/
void LEDPrintChar_H(uint8 x,uint8 y,uint8 *s)
{
uint8 i,l=0,key;
uint16 j;
while(s[l]>0x10){l++;};
x=0;
for(;l>0;)
{
if(l>3)
{
for(j=0;j<500;j++)
{
for(i=0;i<4;i++)
{
LEDPrintOneChar_H(0,i,s[i]);
key=key_jiance();
if(key==1) break;
}
}
}
else
{
for(j=0;j<500;j++)
{
for(i=0;i<l;i++)
{
LEDPrintOneChar_H(0,i,s[i]);
key=key_jiance();
if(key==1) break;
}
}
}
key=key_jiance();
if(key==1) break;
s +=4;
l -=4;
y=0;
key=key_jiance();
if(key==1) break;
}
}
/********************************************************************************************************
** 函数名称 : void LEDPrintTime(void)
** 函数功能 :显示时间的函数
** 入口参数 :
** 出口参数 :无
********************************************************************************************************/
void LEDPrintTime( void )
{
uint8 i;
//LEDPrintOneChar(0,0,Time[8]); //显示星期
for(i=0;i<4;i++)
{
LEDPrintOneChar(0,i,Time[i]);
}
//LEDPrintOneChar(0,0,Time[9]); //显示小时
//LEDPrintOneChar(0,1,Time[10]);
//LEDPrintOneChar(0,2,Time[11]); //显示分钟
//LEDPrintOneChar(0,3,Time[12]);
//LEDPrintOneChar(1,2,Time[13]); //显示秒钟
//LEDPrintOneChar(1,3,Time[14]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -