NOKIA 3310 ЖКИ и ИК пульт с RC5

  • user warning: Table './drupal/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(sid) AS count FROM sessions WHERE timestamp >= 1773390864 AND uid = 0 in /var/www/fendercustomsh/data/www/avrlab.com/includes/session.inc on line 119.
  • user warning: Table './drupal/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT DISTINCT u.uid, u.name, s.timestamp FROM users u INNER JOIN sessions s ON u.uid = s.uid WHERE s.timestamp >= 1773390864 AND s.uid > 0 ORDER BY s.timestamp DESC in /var/www/fendercustomsh/data/www/avrlab.com/modules/user/user.module on line 764.

Проект симбиоза библиотеки для работы с ЖКИ от NOKIA 3310 и декодера сигналов протокола RC5.
Программа принимает сигналы от инфракрасного пульта работающего по протоколу RC5, пульт подходит от бытовой техники. Мой пульт от спутникового ТВ тюнера Sky Star II.
Для нормальной работы необходимо иметь в наличии приемник ИК лучей из серии TSOP1736. Для конкретного пульта лучше конечно подобрать свой приемник со своей несущей частотой.

Принципе работы программы:
При нажатии кнопок на пульте 5,9,0,7 на экране ЖКИ от NOKIA 3310 ,будет отрисовываться пиксель(точка).
Нажатие на кнопку 8 будет очищать экран дисплея.
Текст главного файла программы находится ниже:

  1. /*
  2. Дисплей - МК
  3. 1-+
  4. 2-pb5
  5. 3-pb3
  6. 4-pb1
  7. 5-pb2
  8. 6--
  9. 7-конденсатор
  10. 8-pb4
  11. */
  12.  
  13. // В настройках проекта обязательно правильно укажите свою тактовую частоту
  14. #include <avr/io.h>
  15. #include <util/delay.h>
  16. #include <avr/pgmspace.h>
  17. #include<avr/interrupt.h>
  18.  
  19. #include "n3310.h"
  20. #include "picture.h"
  21. #include "rc5_german.h"
  22. #include "rc5_german_c.c"
  23.  
  24. void pixel (void);
  25.  
  26. void pause_ (unsigned int a);
  27.  
  28. int a;
  29. int l;
  30.  
  31. void pixel (void)
  32. {
  33. LcdPixel(a,l,PIXEL_ON);
  34. LcdUpdate();
  35. }
  36.  
  37. int main()
  38. {
  39.  
  40. uint i;
  41.  
  42. TCCR0 = 1<<CS02; //Деление тактовой частоты на 256
  43. TIMSK = 1<<TOIE0; //Разрешаем прерывание по таймеру
  44.  
  45. sei(); //Разрешаем глобально прерывания
  46.  
  47. LcdInit();
  48.  
  49. LcdClear();
  50. LcdImage(Picture);
  51. LcdUpdate();
  52. _delay_ms(1000);
  53.  
  54. LcdClear();
  55. LcdPixel(a,l,PIXEL_ON);
  56. LcdUpdate();
  57. _delay_ms(1000);
  58. LcdClear();
  59.  
  60. sei();
  61.  
  62. //Начальные координаты
  63. a=47; l=25;
  64.  
  65. for(;;) //Главный цикл
  66. {
  67. cli(); //запрет прерывания
  68. i = rc5_data; //Читаем два байта из прерывания
  69. rc5_data = 0;
  70.  
  71. sei();//разрешаем прерывания
  72.  
  73. if( i )
  74. {
  75. int n = ((i & 0x3F)|(~i >> 7 & 0x40)); //Выделяем только код команды
  76.  
  77. switch (n) //Проверяем что выполнять в зависимости от команды
  78. {
  79. case 5: l=l-1; pixel (); break;
  80. case 9: a=a+1; pixel (); break;
  81. case 7: a=a-1; pixel (); break;
  82. case 0: l=l+1; pixel (); break;
  83. case 8: LcdClear(); LcdUpdate(); break;
  84. }
  85. }
  86. }
  87.  
  88. }

декодер RC5

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

Скачать проект для AVR Studio