📄 led.c
字号:
if(*(++tx_pointer)!='\0')
SBUF=* tx_pointer;
else tx_complete=1; //发送完毕后,置发送完成标志位!
}
}
///////////////////////////////
// 发送命令子函数 //
// //
///////////////////////////////
void tx_string(uchar * buff)
{
uint i=0;
tx_pointer=buff;
SBUF=buff[0];
while(tx_complete!=1){delay(1); ++i; //等待命令字节发送完毕!
if(i>500)break;
}
}
/**************************************************/
/* 读数据到显示缓存
/**************************************************/
void DATA_TO_dispBUF(uchar number)
{
uchar i,j;
for(i=0;i<16;i++)
for(j=0;j<number;j++)
{
dispBUF[i*(number*2)+j*2]=MY_DATA[(number-j-1)*32+(i*2)+1];
dispBUF[i*(number*2)+j*2+1]=MY_DATA[(number-j-1)*32+(i*2)];
}
}
/***************************************************/
/* 主函数
/***************************************************/
main()
{ uchar i,j,t=0;
uchar a,b,c,d,e,f; //'L''E''D''N''R'':'
uchar L_R=1;
uchar time=0;
uchar N=0,M=0;
uchar x=0;
// init_com();
// I_write(0,34);
// lager=I_read(0);
// L_R=I_read(1);
// for(i=0;i<(lager*32);i++)
// rx_buff[i]=I_read(i+2);
P0=time;
DATA_TO_dispBUF(3); //装载
/* for(i=0;i<16;i++)
{
dispBUF[i*4]=rx_buf[i*2+65];
dispBUF[i*4+1]=rx_buf[i*2+64];
dispBUF[i*4+2]=rx_buf[i*2+33];
dispBUF[i*4+3]=rx_buf[i*2+32];
dispBUF[i*4+4]=rx_buf[i*2+1];
dispBUF[i*4+5]=rx_buf[i*2];
} */
while(1)
{
if(rx_over==1)
{tx_string(OK);
I_write(0,lager);
if(LEFT==1)I_write(1,1);
else if(RIGHT==1)I_write(1,0);
lager=I_read(0);
L_R=I_read(1);
// for(i=0;i<(lager*32);i++)
// I_write(i+2,rx_buff[i]);
rx_over=0;
}
/******************************************/
/* 显示部分
/******************************************/
{time=15;
for(i=15;i>0;i--)
{
a=i*6;
SCLK=0;
send_8bit(dispBUF[a+2],8);
send_8bit(dispBUF[a+3],8);
send_8bit(dispBUF[a+4],8);
send_8bit(dispBUF[a+5],8);
SCLK=1;
P0=time;
time--;
}
time=0;
SCLK=0;
send_8bit(dispBUF[0+2],8);
send_8bit(dispBUF[0+3],8);
send_8bit(dispBUF[0+4],8);
send_8bit(dispBUF[0+5],8);
SCLK=1;
P0=time;
/*********************************************/
/* 消阴部分:关闭底部一行显示
/*********************************************/
SCLK=0;
send_8bit(0XFF,8);
send_8bit(0XFF,8);
send_8bit(0XFF,8);
send_8bit(0XFF,8);
SCLK=1;
}
/***********************************************/
/* 向左移动
/***********************************************/
for(i=0;i<16;i++)
{ if(L_R==1)
{
a=i*6;
dispBUF[a+5]<<=1; dispBUF[a+5]=dispBUF[a+5]|(dispBUF[a+4]>>7);
dispBUF[a+4]<<=1; dispBUF[a+4]=dispBUF[a+4]|(dispBUF[a+3]>>7);
dispBUF[a+3]<<=1; dispBUF[a+3]=dispBUF[a+3]|(dispBUF[a+2]>>7);
dispBUF[a+2]<<=1; dispBUF[a+2]=dispBUF[a+2]|(dispBUF[a+1]>>7);
dispBUF[a+1]<<=1; dispBUF[a+1]=dispBUF[a+1]|(dispBUF[a]>>7);
dispBUF[a]<<=1; dispBUF[a]=dispBUF[a]|(dispBUF[a+5]>>7);
}
else
{ dispBUF[i*6]>>=1; dispBUF[i*6]=dispBUF[i*6]|(dispBUF[i*6+1]<<7);
dispBUF[i*6+1]>>=1; dispBUF[i*6+1]=dispBUF[i*6+1]|(dispBUF[i*6+2]<<7);
dispBUF[i*6+2]>>=1; dispBUF[i*6+2]=dispBUF[i*6+2]|(dispBUF[i*6+3]<<7);
dispBUF[i*6+3]>>=1; dispBUF[i*6+3]=dispBUF[i*6+3]|(dispBUF[i*6+4]<<7);
dispBUF[i*6+4]>>=1; dispBUF[i*6+4]=dispBUF[i*6+4]|(dispBUF[i*6+5]<<7);
dispBUF[i*6+5]>>=1; dispBUF[i*6+5]=dispBUF[i*6+5]|(dispBUF[i*6]<<7);
}
}
/************************************************************/
/* 功能: 每移动16位送一组汉字码,
/* 说明: 把要显示的汉字码解码后送入显示缓存的第3个字中
/************************************************************/
N++;
if(N%16==0){M++;
if(M==lager){N=0;M=0;}
for(i=0;i<16;i++){
// dispBUF[i*6]= rx_buff[i*2+65+(M*32)];
// dispBUF[i*6+1]=rx_buff[i*2+64+(M*32)];
dispBUF[i*6]= MY_DATA[i*2+65+(M*32)];
dispBUF[i*6+1]=MY_DATA[i*2+64+(M*32)];
}
}
/******************************************************/
if(N==0)
for(x=0;x<3;x++)
{ for(j=0;j<50;j++)
{ time=0;
for(i=0;i<16;i++)
{
SCLK=0;
send_8bit(xin1[i*4+3],8);
send_8bit(xin1[i*4+2],8);
send_8bit(xin1[i*4+1],8);
send_8bit(xin1[i*4+0],8);
SCLK=1;
P0=time;
time++;
}
}
for(j=0;j<50;j++)
{time=0;
for(i=0;i<16;i++)
{
SCLK=0;
send_8bit(xin2[i*4+3],8);
send_8bit(xin2[i*4+2],8);
send_8bit(xin2[i*4+1],8);
send_8bit(xin2[i*4+0],8);
SCLK=1;
P0=time;
time++;
}
}
for(j=0;j<50;j++)
{time=0;
for(i=0;i<16;i++)
{
SCLK=0;
send_8bit(xin3[i*4+3],8);
send_8bit(xin3[i*4+2],8);
send_8bit(xin3[i*4+1],8);
send_8bit(xin3[i*4+0],8);
SCLK=1;
P0=time;
time++;
}
}
}
/*********************************************************/
delay2(1200);
}
/*for(i=0;i<16;i++)
{
/***********************************************/
/* 向左移动
/***********************************************/
/* dispBUF[i*6+5]<<=1; dispBUF[i*6+5]=dispBUF[i*6+5]|(dispBUF[i*6+4]>>7);
dispBUF[i*6+4]<<=1; dispBUF[i*6+4]=dispBUF[i*6+4]|(dispBUF[i*6+3]>>7);
dispBUF[i*6+3]<<=1; dispBUF[i*6+3]=dispBUF[i*6+3]|(dispBUF[i*6+2]>>7);
dispBUF[i*6+2]<<=1; dispBUF[i*6+2]=dispBUF[i*6+2]|(dispBUF[i*6+1]>>7);
dispBUF[i*6+1]<<=1; dispBUF[i*6+1]=dispBUF[i*6+1]|(dispBUF[i*6]>>7);
dispBUF[i*6]<<=1; dispBUF[i*6]=dispBUF[i*6]|(dispBUF[i*6+5]>>7);
}
/***********************************************/
/* 向右移动
/***********************************************/
/* dispBUF[i*6]>>=1; dispBUF[i*6]=dispBUF[i*6]|(dispBUF[i*6+1]<<7);
dispBUF[i*6+1]>>=1; dispBUF[i*6+1]=dispBUF[i*6+1]|(dispBUF[i*6+2]<<7);
dispBUF[i*6+2]>>=1; dispBUF[i*6+2]=dispBUF[i*6+2]|(dispBUF[i*6+3]<<7);
dispBUF[i*6+3]>>=1; dispBUF[i*6+3]=dispBUF[i*6+3]|(dispBUF[i*6+4]<<7);
dispBUF[i*6+4]>>=1; dispBUF[i*6+4]=dispBUF[i*6+4]|(dispBUF[i*6+5]<<7);
dispBUF[i*6+5]>>=1; dispBUF[i*6+5]=dispBUF[i*6+5]|(dispBUF[i*6]<<7);
/*************************************************/
/* 向上移动
/*************************************************/
/* if(i==0)
{
a=dispBUF[i*6+5];
b=dispBUF[i*6+4];
c=dispBUF[i*6+3];
d=dispBUF[i*6+2];
e=dispBUF[i*6+1];
f=dispBUF[i*6];
}
if(i<15)
{dispBUF[i*6+5]=dispBUF[(i+1)*6+5];
dispBUF[i*6+4]=dispBUF[(i+1)*6+4];
dispBUF[i*6+3]=dispBUF[(i+1)*6+3];
dispBUF[i*6+2]=dispBUF[(i+1)*6+2];
dispBUF[i*6+1]=dispBUF[(i+1)*6+1];
dispBUF[i*6]=dispBUF[(i+1)*6];
}
if(i==15)
{
dispBUF[i*6+5]=a;
dispBUF[i*6+4]=b;
dispBUF[i*6+3]=c;
dispBUF[i*6+2]=d;
dispBUF[i*6+1]=e;
dispBUF[i*6]=f;
}
/****************************************************/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -