⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gongjiaochechengxu.txt

📁 公交车语音报站及显示全部代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
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;
       case 5:     //若为“第5站”
         if(Word_Number<7)  //判断已显示字数
           {if(Word_Number<4)  //若未显示完“前方到站”
              {for(m=0;m<32;m++)
                   next[m]=QFDZ[Word_Number][m];}  //依次换字显示“前方到站”
      &nbs


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -