Приветствую Вас ГостьСреда, 2020-10-28, 03.49.47

Мой сайт


Каталог схем


Две игры на микроконтроллере PIC16F688
2015-03-07, 11.35.17
Кто не любил эти всем давно известные игры как "Змейка" и "Тетрис". 

Змейка - компьютерная игра, возникшая в середине или в конце 1970-х годов.
Игрок управляет длинным, тонким существом, напоминающим змею, которое ползает по плоскости (как правило, ограниченной стенками), собирая еду (или другие предметы), избегая столкновения с собственным хвостом и краями игрового поля. В некоторых вариантах на поле присутствуют дополнительные препятствия. Каждый раз, когда змея съедает кусок пищи, она становится длиннее, что постепенно усложняет игру. Игрок управляет направлением движения головы змеи (обычно 4 направления: вверх, вниз, влево, вправо), а хвост змеи движется следом. Игрок не может остановить движение змеи.

Тетрис - компьютерная игра, изобретённая в СССР Алексеем Пажитновым и представленная общественности 6 июня 1984 года. Идею «Тетриса» ему подсказала купленная им игра в пентамино.
Правила игры, думаю, не стоит описывать.

Итак, в устройстве реализованы две широко известные игры "Змейка " и "Тетрис". Игровое поле 8x16 образовано двумя светодиодными матрицами. 
     
Основой устройства, схема которого показана на рис. 1, служит микроконтроллер D2.- PIC16F688Программа для него написана на языке ассемблера в среде MPLAB. Тактовая частота 8 МГц задана внутренним RC-генератором. Вывод информации на светодиодные матрицы 8x8 Н1 и Н2 в динамическом режиме происходит с помощью регистров DD1, DD3 и DD4. Выходы регистров DD3 и DD4 подключены через токоограничивающие резисторы R14—R29 к анодам светодиодов матриц. Катоды светодиодов этих матриц подключены к коллекторам транзисторов VT1—VT8, управляющие сигналы на базы которых поступают с выходов регистра DD1. Микроконтроллер загружает коды в регистр DD1, при заполнении которого сигнал с его вывода Q7 (вывод 9) поступает на вход SER регистра DD4 и далее данные передаются в DD3 Изображение на дисплее обновляется с частотой 100 Гц. 



     После подачи питающего напряжения на игровом поле отображается заставка игры "Змейка" — в верхней его части высвечивается цифра 1, в нижней — изображение фрагмента игры. При кратковременном нажатии на кнопку SB5 "Старт/Стоп" выполняется переход в меню игры и в верхней части поля цифрами от 1 до 9 отображается уровень игры Его изменяют нажатиями на кнопку SB 1 "Вверх". Каждое нажатие приводит к последовательному увеличению уровня на единицу. После девятого уровня происходит возврат на первый. От уровня игры зависит начальная длина "змейки". Для первого её длина — три точки, для девятого — 11 точек. В нижней части игрового поля отображается информация о скорости движения "змейки”, её устанавливают нажатиями на кнопку SB4 "Вниз”. Цифре 1 соответствует минимальная скорость, цифре 9 — максимальная. 
     Свечение светодиодов по периметру поля в меню означает, что выбран режим игры с границами. В этом режиме выход "змейки" за пределы игрового поля означает проигрыш. Если в меню светодиоды по периметру поля погашены, выбран режим игры без границ. В этом случае при выходе за пределы игрового поля голова "змейки” появляется с противоположной стороны поля. Выбирают режим игры с границами или без них с помощью кнопок SB2 "Вправо" и SB3 "Влево". По умолчанию в программе установлены первый уровень, первая скорость и режим с границей. 



     После всех установок нажатием на кнопку SB5 "Старт/Стоп" начинают игру. На игровом поле появляются "змейка” и светящаяся точка. Нажатие на любую из кнопок SB1, SB2 или SB3 приводит "змейку” в движение. После этого становится доступной кнопка SB4 "Вниз". При "наезде” на светящуюся точку длина "змейки" увеличивается. После набора 14 точек происходит переход на следующий уровень. После девятого уровня — снова на первый. В случае "наезда” "змейки" на собственное "туловище" или выхода за пределы поля в режиме наличия границ наступает проигрыш. После трёх проигрышей происходит возврат в меню игры, где указаны её текущие уровень и скорость. 
     В процессе игры кратковременными нажатиями на кнопку SB5 "Старт/Стоп" можно приостановить и возобновить игру. Для выхода из меню игры необходимо удерживать кнопку SB5 нажатой более одной секунды. На игровом поле высветится заставка игры. Нажатием на любую из кнопок SB1—SB4 выбирают игру, при этом на игровом поле высвечивается её заставка. 



     В верхней части заставки игры "Тетрис" высвечивается цифра 2, в нижней части — фрагмент игры. Переход в меню игры выполняют нажатием на кнопку SB5. В верхней части отображается число баллов, набранных игроком. Один балл начисляется за каждую удалённую строку. Счётчик баллов ведёт счёт до 99, затем обнуляется и начинает его заново. В начале каждой новой игры счётчик также обнуляется. В нижней части поля отображается информация о скорости движения фигур, которую можно изменить, нажимая на кнопку SB1 или SB4. 
     Игра начинается после нажатия на SB5. В верней части поля поочерёдно появляются различные фигуры, которые можно перемещать вправо или влево нажатиями на кнопки SB2 и SB3 соответственно. Каждое нажатие на SB1 "Вверх" поворачивает фигуру на 90° по часовой стрелке. Удерживая нажатой кнопку SB4 "Вниз”, можно ускорить движение фигуры вниз. Игра заканчивается, когда новая фигура не помещается на игровом поле. После этого происходит переход в меню, где выводится информация о набранных баллах. Если в течение четырёх минут не была нажата ни одна из кнопок, устройство переходит в режим пониженного энергопотребления, микроконтроллер отключает светодиодные матрицы и переходит в спящий режим. Устройство "просыпается" после нажатия на кнопку SB5 и возвращается в прежнее состояние.



     Все детали, кроме источника питания, установлены на печатной плате из фольгированного с двух сторон стеклотекстолита толщиной 1,5...2 мм. Её чертёж показан на рис. 2 и рис. 3. В устройстве применены резисторы и керамические конденсаторы (С2, СЗ) для поверхностного монтажа типоразмера 1206, оксидный конденсатор — импортный. Светодиодные матрицы TOM-1Q88BG-B можно заменить матрицами TC15-11YWA, но при этом потребуется корректировка печатной платы, поскольку расстояния между группами выводов у них различны. Кнопки — SWT 6x6-7, TS-A3PS-130 или серии ПКн159. В отверстия, залитые на рис. 2 и рис. 3 чёрным, вставлены отрезки лужёной медной проволоки и припаяны с двух сторон. Вид смонтированной платы приведён на рис. 4. Источником питания может быть стабилизированный сетевой блок питания напряжением 3,7...5 В или батарея из трёх гальванических элементов типоразмера АА или ААА. Устройство сохраняет работоспособность при снижении напряжения питания до 3,3 В, но при этом существенно уменьшается яркость свечения светодиодных матриц. 


Исходный код программы на ассемблере и прошивка для микроконтроллера: скачать

Автор: Р. МУХУТДИНОВ, д. Султановка Кигинского р-на, Башкортостан 
Материал взят из: Журнала Радио 2014 №2.

 
Категория: Игрушки с микроконтроллерным управлением | Добавил: serega | Теги: PIC16F688, Тетрис, микроконроллер, игра, змейка
Просмотров: 2506 | Загрузок: 0 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
ИК-управление моделью
Р/у моделями
Игрушки с микроконтроллерным управлением
Имитатор звука мотора автомашины
Светоуправление моделью
Создаем лазер
Электромагнитная пушка
Микроконтроллеры
Шуточное устройство AGGRAVATOR
Подрывная машинка
Шахматные часы
Музыкальный карандаш
Звуковые устройства
Мини-чат
251
Статистика

Онлайн всего: 2
Гостей: 2
Пользователей: 0
Вход на сайт

Поиск
Друзья сайта