Проект tinyAVR 17. Крестики-нолики

December 1, 2014 by admin Комментировать »

Это устройство позволяет двум людям играть в крестики-нолики. Его блок- схема изображена на рис. 4.23.

Рис. 4.23. Блок-схема устройства

Спецификация проекта

Цель проекта — создать графический интерфейс для игры в крестики-нолики. Пользователь размещает свой знак при помощи кнопок. Игра заканчивается либо ничьей, либо победой одного из игроков. Устройство отслеживает количество сыгранных игр и счет. Питание реализовано от батареек.

Описание устройства

Схема аналогична проекту температурного регистратора. В этом проекте задействовано три из имеющихся четырех кнопок: кнопки "вверх/вниз", "вправо/влево" и "ввод". На рис. 4.24 и 4.25 изображен дисплей, показывающий различные стадии игры.

Программирование

Откомпилированный исходный код (вместе с файлом MAKEFILE) можно скачать по ссылке: www.avrgenius.com/tinyavrl.

Тактовая частота равна 8 МГц. Контроллер запрограммирован при помощи STK500 в режиме программирования ISP. Логика игры — та же самая, что и в игре, обсуждавшейся в проекте 13. Единственное отличие состоит в том, что нет начального выбора цветов. Одному пользователю назначаются крестики, другому — нолики. Шаблоны "крестик” и "нолик" хранятся в памяти программ. В отличие от предыдущей версии, здесь предусмотрено запоминание числа побед и проигрышей каждого пользователя (до десяти побед). В конце каждой игры результат и общий счет пользователей отображается на дисплее. Листинг 4.8 иллюстрирует наиболее важные фрагменты кода.

^Листинг 4.8                                                                            ‘     7’ J         ‘.7 V

while(1)

{

cli() ;

cursorxy(б,2); putstr(DISPLAY); while(PINA&OxOl);

_delay_ms(30) ; while (1 (PINA&OxOl));

_delay_ms (3 0); sei () ;

TIMSK1 = 0x01;

//Прерывание по переполнению активировано reset (); while(1)

{

playerturn(1); checkwin(); if(disl==10)

{

disl=0; dis2=0; break;

}

playerturn (2) checkwin(); if(dis2==10)

{

disl=0; dis2=0.; break;

}

}

}

Это главный бесконечный цикл программы. Он выводит на экран слова "TIC ТАС ТОЕ" и ждет нажатия пользователем кнопки (для запуска игры). После начала игры вызывается функция playerturn, аргументом которой является номер игрока. Эта функция позволяет пользователю поместить его символ. Затем вызывается функция checkwin, чтобы проверить, не выиграл ли игрок, разместивший последний символ. Переменные disi и dis2 отслеживают число выигрышей игроков.

Работа устройства

Чтобы включить устройство, подайте питание на схему. Сначала возможность выставить свой символ получает первый игрок, потом — второй и т. д.

Источник: Гадре, Д., Занимательные проекты на базе микроконтроллеров tinyAVR / Дхананья Гадре, Нигул Мэлхотра: Пер. с англ. — СПб.: БХВ-Петербург, 2012. — 352 с.: ил. — (Электроника)

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты