📄 dzkzqv11.c
字号:
dis_grn[x+X1]=x64cg[x+X1];dis_grn[X1-x]=x64cg[X1-x];
dis_blu[x+X1]=x64cb[x+X1];dis_blu[X1-x]=x64cb[X1-x];
sendall();
}
delay1s(speed);
}
//*******************************
//从中间向两边闭幕
//**********************************
void mlrco(uchar speed)
{
uchar x;
for(x=X1;x<XX;x++)
{
dis_red[x]=0;dis_red[XX-1-x]=0;
dis_grn[x]=0;dis_grn[XX-1-x]=0;
dis_blu[x]=0;dis_blu[XX-1-x]=0;
sendall();
}
delay1s(speed);
}
//*******************************
//两边向中间展开
//**********************************
void lrmun(uchar speed)
{
uchar x;
for(x=XX-1;x>X1;x--)
{
dis_red[x]=x64cr[x];dis_red[XX-1-x]=x64cr[XX-1-x];
dis_grn[x]=x64cg[x];dis_grn[XX-1-x]=x64cg[XX-1-x];
dis_blu[x]=x64cb[x];dis_blu[XX-1-x]=x64cb[XX-1-x];
sendall();
}
delay1s(speed);
}
//*******************************
//两边向中间闭幕
//**********************************
void lrmco(uchar speed)
{
uchar x;
for(x=0;x<X1;x++)
{
dis_red[x]=0;dis_red[XX-1-x]=0;
dis_grn[x]=0;dis_grn[XX-1-x]=0;
dis_blu[x]=0;dis_blu[XX-1-x]=0;
sendall();
}
delay1s(speed);
}
//*******************************
//中间向两边移出
//**********************************
void mlrmov(uchar speed)
{
uint i,x;
uchar code *ROMP;
ROMP=0x2000;
for(x=0;x<XX;x++)
{
dis_red[x]=0;//清屏
dis_grn[x]=0;//清屏
dis_blu[x]=0;//清屏
}
for(i=0;i<XX/2;i++)
{
for(x=XX-1;x>X1;x--)
{
dis_red[x]=dis_red[x-1];
dis_grn[x]=dis_grn[x-1];
dis_blu[x]=dis_blu[x-1];
}
dis_red[X1]=*ROMP;ROMP++;
dis_grn[X1]=*ROMP;ROMP++;
dis_blu[X1]=*ROMP;ROMP++;
for(x=0;x<X1-1;x++)
{
dis_red[x]=dis_red[x+1];
dis_grn[x]=dis_grn[x+1];
dis_blu[x]=dis_blu[x+1];
}
dis_red[X1-1]=*ROMP;ROMP++;
dis_grn[X1-1]=*ROMP;ROMP++;
dis_blu[X1-1]=*ROMP;ROMP++;
sendall();
}
delay1s(speed);
}
//***********************************
//多彩流动
//***************************************
void qcld(uchar speed)
{
uint j,x;
uchar rs,gs,bs;
for(j=0;j<XX;j++)
{for(x=XX-1;x>0;x--)
{
dis_red[x]=dis_red[x-1];
dis_grn[x]=dis_grn[x-1];
dis_blu[x]=dis_blu[x-1];
}
dis_red[0]=x64cr[j];
dis_grn[0]=x64cg[j];
dis_blu[0]=x64cb[j];
sendall();
delay(speed);
}
delay1s(speed);
for(j=0;j<256;j++)
{
rs=dis_red[XX-1];
gs=dis_grn[XX-1];
bs=dis_blu[XX-1];
for(x=XX-1;x>0;x--)
{
dis_red[x]=dis_red[x-1];
dis_grn[x]=dis_grn[x-1];
dis_blu[x]=dis_blu[x-1];
}
dis_red[0]=rs;
dis_grn[0]=gs;
dis_blu[0]=bs;
sendall();
delay(speed);
}
//*******************************************
for(j=0;j<XX;j++)
{for(x=XX-1;x>0;x--)
{
dis_red[x]=dis_red[x-1];
dis_grn[x]=dis_grn[x-1];
dis_blu[x]=dis_blu[x-1];
}
dis_red[0]=0;
dis_grn[0]=0;
dis_blu[0]=0;
sendall();
delay(speed);
}
}
//***********************************
//七彩流动 一条一种颜色
//***************************************
void colld(uchar speed)
{
uint j,x;
uchar rs,gs,bs;
for(j=0;j<XX;j++)
{for(x=XX-1;x>0;x--)
{
dis_red[x]=dis_red[x-1];
dis_grn[x]=dis_grn[x-1];
dis_blu[x]=dis_blu[x-1];
}
dis_red[0]=col7cr[x];
dis_grn[0]=col7cg[x];
dis_blu[0]=col7cb[x];
sendall();
delay1s(speed);
}
delay1s(speed);
for(j=0;j<256;j++)
{
rs=dis_red[XX-1];
gs=dis_grn[XX-1];
bs=dis_blu[XX-1];
for(x=XX-1;x>0;x--)
{
dis_red[x]=dis_red[x-1];
dis_grn[x]=dis_grn[x-1];
dis_blu[x]=dis_blu[x-1];
}
dis_red[0]=rs;
dis_grn[0]=gs;
dis_blu[0]=bs;
sendall();
delay(speed);
}
//*******************************************
for(j=0;j<XX;j++)
{for(x=XX-1;x>0;x--)
{
dis_red[x]=dis_red[x-1];
dis_grn[x]=dis_grn[x-1];
dis_blu[x]=dis_blu[x-1];
}
dis_red[0]=0;
dis_grn[0]=0;
dis_blu[0]=0;
sendall();
delay(speed);
}
}
//******************************
//发送显示内存数据到各灯管
//*******************************
void sendall(void)
{
uchar j;
for(j=0;j<XX-1;j++)
{TB81=1;
SBUF1=j+1;while(!TI1);TI1=0;
TB81=0;
send_del(50);
//send red
SBUF1=dis_red[j];
while(!TI1);TI1=0;
send_del(50);
//send greed
SBUF1=dis_grn[j];
while(!TI1);TI1=0;
send_del(50);
//***********bluer
SBUF1=dis_blu[j];
while(!TI1);TI1=0;
send_del(50);
}
led=!led;
}
//**********************************
//延时
//*******************************
void delay1s(uint j)
{
uint i;
while(j!=0)
{
for(i=0;i<800;i++);
j--;
}
ssp=1;
}
//*******************************
void delay(uint j)
{
uint i;
while(j!=0)
{
for(i=0;i<ssp*256;i++);
j--;
}
ssp=1;
}
void send_del(uchar j)
{
while(j!=0)
{
j--;
}
}
//*******************************
void send_delay(void)
{
uchar j;
j=12;
while(j!=0)
{
j--;
}
}
//*******************************
void SomeNOP(void)
{
uchar i;
i=5;
while(i--);
}
/***************************************************************************/
void I2cDelay(unsigned int number) {
unsigned char temp;
for(;number!=0;number--) {
for(temp=112;temp!=0;temp--) {
}
}
}
/***************************************************************************/
void Start() {
SDA=1;
SCL=1;SomeNOP();
SDA=0;SomeNOP();
SCL=0;
}
/***************************************************************************/
void Stop() {
SCL=0;
SDA=0;SomeNOP();
SCL=1;SomeNOP();
SDA=1;
}
/***************************************************************************/
void Ack() {
SDA=0;
SCL=1;SomeNOP();
SCL=0;SomeNOP();
SDA=1;
}
/***************************************************************************/
void NoAck() {
SDA=1;
SCL=1;SomeNOP();
SCL=0;
}
/***************************************************************************/
bit TestAck() {
bit ErrorBit;
SDA=1;
SCL=1;
ErrorBit=SDA;SomeNOP();
SCL=0;
return(ErrorBit);
}
/***************************************************************************/
Write8Bit(unsigned char input)
{
unsigned char temp;
for(temp=8;temp!=0;temp--) {
SDA=(bit)(input&0x80);
SCL=1;
SCL=0;
input=input<<1;
}
}
/***************************************************************************/
void Write24c02(unsigned char *Wdata,unsigned char RomAddress,unsigned char number) {
Start();
Write8Bit(WriteDeviceAddress);
TestAck();
Write8Bit(RomAddress);
TestAck();
for(;number!=0;number--) {
Write8Bit(*Wdata);
TestAck();
Wdata++;
}
Stop();
I2cDelay(10);
}
/***************************************************************************/
unsigned char Read8Bit() {
unsigned char temp,rbyte=0;
for(temp=8;temp!=0;temp--) {
SCL=1;
rbyte=rbyte<<1;
rbyte=rbyte|((unsigned char)(SDA));
SCL=0;
}
return(rbyte);
}
/***************************************************************************/
void Read24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes) {
// unsigned char temp,rbyte;
Start();
Write8Bit(WriteDeviceAddress);
TestAck();
Write8Bit(RomAddress);
TestAck();
Start();
Write8Bit(ReadDviceAddress);
TestAck();
while(bytes!=1) {
*RamAddress=Read8Bit();
Ack();
RamAddress++;
bytes--;
}
*RamAddress=Read8Bit();
NoAck();
Stop();
}
//**************************************
void save(void)
{
uchar i;
uchar *sp;
sp=&send_buf[0];
for(i=0;i<16;i++)
{
Write24c02(sp,i*4,4);
sp+=4;
}
}
//*****************************************
// 串口中断服务程序
//*****************************************
void send(void) interrupt 4
{
uchar d;
if(!TI && RI && !frameok)
{RI=0;
d=SBUF;
if(pointer==0)
{if(d==ADD)
{subchk=d;send_buf[0]=d;TB8=1;senden=1;
send_delay();SBUF=d;while(!TI);TI=0;send_delay();
senden=0;SM2=0;TB8=0;pointer++;}//71
else if(d==0xff)
{subchk=d;SM2=0;pointer++;}
}
else
{if(pointer==64)
{send_buf[pointer]=d;
if(d==subchk)
{senden=1;send_delay();SBUF=subchk;while(!TI);send_delay();senden=0;TI=0;frameok=1;}
else
{senden=1;send_delay();SBUF=~subchk;while(!TI);send_delay();TI=0;senden=0;}
SM2=1;pointer=0;
}
else
{send_buf[pointer]=d;subchk+=d;pointer++;}
}
}//end if
}
//*************************************
/*
void timer1() interrupt 1
{TL0=V_TL0;
TH0=V_TH0;
ms++;
if(ms>zhepe)
{timout=1;
ms=0;
}
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -