?? 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 + -