📄 displayled.c
字号:
read_ok= RW24XX(l_data,8,0,0xA1,M24256);
}
while(read_ok);
_nop_();
switch(l_data[2])
{
case(0x30):lum=1;break; //较亮
case(0x31):lum=2;break; //亮
case(0x32):lum=3;break; //很亮
default:lum=2;
}
switch(l_data[1])
{
case(0x30):speed=50;break; //慢
case(0x31):speed=40;break; //较慢
case(0x32):speed=30;break; //中
case(0x33):speed=20;break; //较快
case(0x34):speed=10;break; //快
default:speed=30;
}
switch(l_data[0])
{
case(0x30):move_flag=0;break; //静止
case(0x31):move_flag=1;break; //运动
case(0x32):move_flag=0;break;
case(0x33):move_flag=1;break;
default:move_flag=0;
}
start_page=toint(l_data[4])*16+toint(l_data[5]); //显示起止屏计算
end_page=toint(l_data[6])*16+toint(l_data[7])+1;
iic_flag=0; //选择AT24C256(1)
}
void time_trans()
{
uchar i;
uchar num_temp;
v_Get1381(taba); //读取HT1381当前时间
for(i=0;i<14;i++) //取时间数字字模并存储在固定区域1024-1137
{ //数字字模
if(i%2==1)
{
num_temp=taba[i/2]&0xf0;
num_temp=num_temp>>4;
}
else
{
num_temp=taba[i/2]&0x0f;
}
switch(num_temp)
{
case(0x00):num_temp=0;break;
case(0x01):num_temp=1;break;
case(0x02):num_temp=2;break;
case(0x03):num_temp=3;break;
case(0x04):num_temp=4;break;
case(0x05):num_temp=5;break;
case(0x06):num_temp=6;break;
case(0x07):num_temp=7;break;
case(0x08):num_temp=8;break;
case(0x09):num_temp=9;break;
default:num_temp=0;
}
UartBuf[13-i]=num_temp;
}
UartBuf[15]=UartBuf[13];
UartBuf[14]=UartBuf[12];
UartBuf[13]=11;
UartBuf[12]=UartBuf[11];
UartBuf[11]=UartBuf[10];
UartBuf[10]=11;
UartBuf[9]=UartBuf[9];
UartBuf[8]=UartBuf[8];
// UartBuf[7]=UartBuf[7];
// UartBuf[6]=UartBuf[6];
tabh[0]=UartBuf[4];
tabh[1]=UartBuf[5];
UartBuf[5]=10;
UartBuf[4]=tabh[1];
UartBuf[3]=tabh[0];
UartBuf[2]=10;
// UartBuf[1]=UartBuf[1];
// UartBuf[0]=UartBuf[0];
}
/*void display_time()
{
uchar i,j;
time_trans();
for(i=0;i<16;i++)
{
for(j=0;j<8;j++)
{
if(i>=8)
{taba[j]=num[UartBuf[j+8]][i-8];}
else
{taba[j]=num[UartBuf[j]][i];}
}
GATE=1;
hc595(taba);
GATE=0;
line_scan(tabb);
OE0=0; //hc595行扫描输出使能(单行显示)
delay(1);
OE0=1; //关闭行扫描hc595输出 (关闭显示)
Deal_Cmd();
}
}*/
/*****************串口初始化函数*********************/
/******波特率发生器使用定时器1方式2(自动重装)******/
/***************波特率为57600************************/
/************串口方式1(8位UART波特率可变T1)********/
void uart_ini(void)
{
AUXR=0x40; //定时器1工作在1T模式
TMOD=0x20; //定时器T1为方式2
TL1=0xe8; //重装值0x70 波特率9600
TH1=0xe8; //重装值0xE8 波特率57600
SCON=0x50; //串行口方式1
PCON=0x80; //波特率加倍 SMOD=1
TR1=1; //启动定时器1
ES=1; //串口中断允许
}
void timer0_open(void)
{
TMOD=0x21; //定时器0为方式1(16位定时)
TH0=0xb7; //10ms
TL0=0xff;
ET0=1; //T0中断允许
}
void main(void)
{
uchar i,j=0;
uchar m=0;
uchar n=0;
P1=0xff; //端口初始化
P3=0xff;
WDT_CONTR=0x00; //关闭开门狗
uart_ini(); //串口初始化
timer0_open();
PS=1; //串口中断优先
EA=1; //中断允许
t_count=1000;
t_c=0;
TR0=1; //启动定时器0
load_flag=0;
display_mode();
speed_temp=speed;
while(1)
{
while(t_c==0)
{
time_trans();
for(i=0;i<16;i++)
{
for(j=0;j<8;j++)
{
Deal_Cmd();
while (time_flag==1)
{Deal_Cmd();}
if(i>=8)
{taba[j]=num[UartBuf[j+8]][i-8];}
else
{taba[j]=num[UartBuf[j]][i];}
}
GATE=1;
hc595(taba);
GATE=0;
line_scan(tabb);
OE0=0; //hc595行扫描输出使能(单行显示)
delay(1);
OE0=1; //关闭行扫描hc595输出 (关闭显示)
}
}
if(mode_flag==1)
{
display_mode(); //读取显示模式
mode_flag=0;
}
if(move_flag==1)
{
for(s=0;s<8;s++)
{
for(i=0;i<8;i++)
{
taba[i]=0xff;
}
while(speed_temp--)
{
for(i=0;i<16;i++)
{
for(j=0;j<4;j++)
{
Deal_Cmd();
while (time_flag==1)
{Deal_Cmd();}
do{
read_ok= RW24XX(tabh,2,j*32+i*2+start_page*128,0xA1,M24256); // 每次读取两字节
}
while(read_ok);
_nop_();
for(m=0;m<2;m++)
{
l_data[j*2+m]=tabh[m];
}
}
delay(5);
transform();
GATE=1;
hc595(taba);
GATE=0;
line_scan(tabb);
OE0=0; //hc595行扫描输出使能(单行显示)
delay(lum);
OE0=1; //关闭行扫描hc595输出 (关闭显示)
}
}
speed_temp=speed;
}
flag=1;
}
for(n=start_page;n<end_page;n++) //start_page end_page
{
if(move_flag==0)
{t=1;}
else
t=8;
for(i=0;i<8;i++)
{
taba[i]=0xff;
}
for(s=0;s<t;s++)
{
while(speed_temp--)
{
for(i=0;i<16;i++)
{
for(j=0;j<4;j++) //8
{
Deal_Cmd();
while (time_flag==1)
{Deal_Cmd();}
do{
read_ok= RW24XX(tabh,2,j*32+i*2+128*n,0xA1,M24256); // 每次读取两字节
}
while(read_ok);
_nop_();
for(m=0;m<2;m++)
{
l_data[j*2+m]=tabh[m];
//taba[j*2+m]=tabh[m];
}
}
if(move_flag==1)
{
for(j=0;j<4;j++)
{
Deal_Cmd();
while (time_flag==1)
{Deal_Cmd();}
do{
read_ok= RW24XX(tabh,2,j*32+i*2+128*(n+1),0xA1,M24256);
}
while(read_ok);
_nop_();
for(m=0;m<2;m++)
{
tabc[j*2+m]=tabh[m];
}
}
}
transform();
GATE=1;
hc595(taba);
GATE=0;
line_scan(tabb);
OE0=0; //hc595行扫描输出使能(单行显示)
delay(lum);
OE0=1; //关闭行扫描hc595输出 (关闭显示)
}
}
speed_temp=speed;
}
flag=1;
}
if(load_flag==0)
{
TR0=1;
t_c=0;
}
flag=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -