📄 project.c
字号:
}
//***************************读一字节数据****************************//
//从从地址为Slave的IIC器件的Address地址处读一字节数据
uchar Read_1byte(uchar Slave,uchar Address)
{uchar data0,x;
do{
Start(); //开始信号
Write_Byte(Slave); //写I2C器件地址
Check_Ack(); //检查应答位
}while(Ack_Flag);
do{
Write_Byte(Address); //写寄存器地址
Check_Ack(); //检查应答位
}while(Ack_Flag);
do{
Start(); //开始
Write_Byte(Slave+1); //写I2C器件地址(+1表示为读操作)
Check_Ack(); //检查应答位
}while(Ack_Flag);
data0=Read_Byte(); //读1字节
Nack(); //读完发送一个Not Ack应答
Stop(); //停止
return data0; //返回读取数据
}
//***************************数字显示程序****************************//
void Led_Display(uchar Number)
{uchar d0,d1;
d0=Number/10; //取站数的个位
d1=Number%10; //取站数的十位
Write_2byte(0x70,0x20,d1,d0); //从显示位0开始连续显示两位
}
//***************************换下一个字显示**************************//
void change()
{unsigned char m;
if(!Pre_Flag) //报站情形
{switch(State) //判断站名
{case 1: //若为第1站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第1站”,则
{for(m=0;m<32;m++) //依次换字显示“第1站”
next[m]=State1[Word_Number][m];}
else
for(m=0;m<32;m++) //依次换字显示“到了”
next[m]=DL[Word_Number-3][m];
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 2: //若为第2站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第2站”,则
{for(m=0;m<32;m++) //依次换字显示“第2站”
next[m]=State2[Word_Number][m];}
else //否则
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 3: //若为第3站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第3站”,则
{for(m=0;m<32;m++)
next[m]=State1[Word_Number][m];} //依次换字显示“第3站”
else
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 4: //若为第4站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第4站”,则
{for(m=0;m<32;m++)
next[m]=State2[Word_Number][m];} //依次换字显示“第4站”
else //否则
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 5: //若为第5站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第5站”,则
{for(m=0;m<32;m++)
next[m]=State1[Word_Number][m];} //依次换字显示“第5站”
else //否则
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 6: //若为第6站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第6站”,则
{for(m=0;m<32;m++)
next[m]=State2[Word_Number][m];} //依次换字显示“第6站”
else //否则
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 7: //若为第7站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第7站”,则
{for(m=0;m<32;m++)
next[m]=State1[Word_Number][m];} //依次换字显示“第7站”
else //否则
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 8: //若为第8站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第8站”,则
{for(m=0;m<32;m++)
next[m]=State2[Word_Number][m];} //依次换字显示“第8站”
else //否则
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 9: //若为第9站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第1站”,则
{for(m=0;m<32;m++)
next[m]=State1[Word_Number][m];} //依次换字显示“第9站”
else //否则
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 10: //若为第10站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第10站”,则
{for(m=0;m<32;m++)
next[m]=State2[Word_Number][m];} //依次换字显示“第10站”
else //否则
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 11: //若为第11站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第11站”,则
{for(m=0;m<32;m++)
next[m]=State1[Word_Number][m];} //依次换字显示“第11站”
else //否则
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 12: //若为第12站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第12站”,则
{for(m=0;m<32;m++)
next[m]=State2[Word_Number][m];} //依次换字显示“第12站”
else //否则
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 13: //若为第13站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第13站”,则
{for(m=0;m<32;m++)
next[m]=State1[Word_Number][m];} //依次换字显示“第13站”
else //否则
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 14: //若为第14站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第14站”,则
{for(m=0;m<32;m++)
next[m]=State2[Word_Number][m];} //依次换字显示“第14站”
else //否则
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 15: //若为第15站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第15站”,则
{for(m=0;m<32;m++)
next[m]=State1[Word_Number][m];} //依次换字显示“第15站”
else //否则
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;
case 16: //若为第16站
if(Word_Number<5) //判断已显示字数
{if(Word_Number<3) //若未显示完“第16站”,则
{for(m=0;m<32;m++)
next[m]=State2[Word_Number][m];} //依次换字显示“第16站”
else //否则
for(m=0;m<32;m++)
next[m]=DL[Word_Number-3][m]; //依次换字显示“到了”
Word_Number++;} //显示字数+1
else //若全部显示完,则
Word_Number=0; //显示字数清0
break;}}
else //预报站情形
{switch(State) //判断站数
{case 1: //若为“第1站”
if(Word_Number<7) //判断已显示字数
{if(Word_Number<4) //若未显示完“前方到站”
{for(m=0;m<32;m++)
next[m]=QFDZ[Word_Number][m];} //依次换字显示“前方到站”
else //若显示完“前方到站”
for(m=0;m<32;m++)
next[m]=State1[Word_Number-4][m]; //依次换字显示“第1站”
Word_Number++;} //显示字数+1
else //若全部显示完
Word_Number=0; //显示字数清0
break;
case 2: //若为“第2站”
if(Word_Number<7) //判断已显示字数
{if(Word_Number<4) //若未显示完“前方到站”
{for(m=0;m<32;m++)
next[m]=QFDZ[Word_Number][m];} //依次换字显示“前方到站”
else //若显示完“前方到站”
for(m=0;m<32;m++)
next[m]=State2[Word_Number-4][m]; //依次换字显示“第2站”
Word_Number++;} //显示字数+1
else //若全部显示完
Word_Number=0; //显示字数清0;
break;
case 3: //若为“第3站”
if(Word_Number<7) //判断已显示字数
{if(Word_Number<4) //若未显示完“前方到站”
{for(m=0;m<32;m++)
next[m]=QFDZ[Word_Number][m];} //依次换字显示“前方到站”
else //若显示完“前方到站”
for(m=0;m<32;m++)
next[m]=State1[Word_Number-4][m]; //依次换字显示“第1站”
Word_Number++;} //显示字数+1
else //若全部显示完
Word_Number=0; //显示字数清0
break;
case 4: //若为“第4站”
if(Word_Number<7) //判断已显示字数
{if(Word_Number<4) //若未显示完“前方到站”
{for(m=0;m<32;m++)
next[m]=QFDZ[Word_Number][m];} //依次换字显示“前方到站”
else //若显示完“前方到站”
for(m=0;m<32;m++)
next[m]=State2[Word_Number-4][m]; //依次换字显示“第2站”
Word_Number++;} //显示字数+1
else //若全部显示完
Word_Number=0; //显示字数清0;
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -