Показано с 1 по 10 из 111

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Эмулятор и сниффер головного устройства для псевдографических дисплеев.

    Первый эмулятор я делал для дисплея на автомобиле Hover , через LPT порт, теперь это газдо проще сделать на arduino (Arduino).
    Для чего он нужен?
    Эмулятор нужен для того чтобы расшифровать какими битами включаются сегменты псевдографического дисплея, чтобы на основе этой дешифровки можно было бы подключить головное устройство к компьютеру , а родной дисплей заменить на VGA. Мои исследования показали что принцип работы всех псевдографических дисплеев одинаков, за исключением колличества сегментов и используемых чипов.
    Также можно дешифровать данные идущие на дисплей климат контроля и прочие устройства с псевдоргафическими дисплеями.

    Линия шины CLK подключается к пину 13 на arduino
    Линия шины DI подключается к пину 12 на arduino
    Линия шины CE подключается к пину 11 на arduino

    Скачать программу.

    Код для эмулятора на Arduino
    PHP код:
    //http://compcar.ru 

    int CLK 13;    
    int DI 12;
    int CE 11;
    int ADDR 130;
    byte ReadByte[20];
    int i;
      
    void setup()
    {
      
    pinMode(CLKOUTPUT);  
      
    pinMode(DIOUTPUT);
      
    pinMode(CEOUTPUT);  
      
    Serial.begin(115200);    
      
      
    digitalWrite(CLKLOW); 
      
    digitalWrite(DILOW);   
      
    digitalWrite(CELOW);    
      
    delay(1000);  
    }

    //===================================================
    void loop()
    {
      if (
    Serial.available() > 19
      { 
        for (
    020i++) 
          {
            (
    ReadByte[i]) = Serial.read() ;       // принимаем данные с компа в массив
          
    }
             
    Serial.flush();                     //очистить входной буфер USB
          
          
    Send_Adress();                         // отправляем адрес устройства
          
    for (020i++) 
          {
            
    Byte_Out(DICLKReadByte[i]);      //отправляем данные в шину в шину
          
    }  
         
    digitalWrite(CELOW);                  // запретить прием данных подчиненым  
      
    }  
     
    delay(500); 
    }
    //==================================================
    void Send_Adress()
    {        
        
    Byte_Out(DICLKADDR);
        
    delayMicroseconds(5);
      
    digitalWrite(CEHIGH); 
      
    }
    //==================================================
    void Byte_Out(uint8_t DIuint8_t CLK,  byte val)
    {        
         
    int idx;        
        for (
    idx 0idx 8idx++)               
            {  
              
    delayMicroseconds(10); 
     if  (((
    val << idx) & B10000000)  == 128)  digitalWrite(DIHIGH);  else  digitalWrite(DILOW);         
           
    //   digitalWrite(DI, val & (1 << idx));  /
              
    digitalWrite(CLKHIGH);                // педний фронт синхроимульса
              
    delayMicroseconds(15);         
              
    digitalWrite(CLKLOW);                  // задний фронт синхроимульса          
            
    }

    Вложения Вложения
    Последний раз редактировалось Chip; 19.03.2017 в 02:38.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •