Крестики-нолики на микроконтроллере PIC16F628A |
В предложенном устройстве реализована широко известная игра "крестики-нолики". В игре принимают участие два соперника, но предусмотрен вариант, в котором игрок может сыграть против "электронного интеллекта” микроконтроллера. Игровое поле 3x3 образовано двухцветными светодиодами. Собрана игра на микроконтроллере PIC16F628A.
Устройство (рис. 1) содержит микроконтроллер DD1, два регистра DD2 и DD3 и девять двухцветных светодиодов, поэтому в данном случае эту игру можно назвать "красный-зелёный”. Питающее напряжение на аноды светодиодов HL1—HL9 поступает с выходов регистров DD2, DD3 и линий RB6, RB7 микроконтроллера DD1. Катоды всех светодиодов подключены к коллектору транзистора VT1, которым по линии RB5 управляет микроконтроллер.
Микроконтроллер DD1 загружает данные в регистр DD2, при переполнении которого информация с выхода восьмого разряда (вывод 13) передаётся на информационные входы регистра DD3. После загрузки регистров на базу транзистора VT1 поступает открывающее напряжение, тем самым катоды светодиодов подключаются к общему проводу. В результате загораются те из них, на анодах которых присутствует напряжение. Светодиод HL4 подключён непосредственно к микроконтроллеру, так как все выходы регистров заняты. Резисторы R3—R21 — токоограничивающие. Микроконтроллер работает на тактовой частоте 4 МГц от встроенного генератора.
После подачи питания устройство переходит в режим игры, в котором противником игрока является "электронный интеллект" микроконтроллера. При этом на игровом поле высвечивается символ "+" (плюс) зелёного цвета. Игрок может играть только "крестиками", которым присвоен красный цвет. Микроконтроллер играет "ноликами", которым соответствует зелёный цвет. При выборе этого режима игры первый ход делает игрок, в следующей партии первый ход за микроконтроллером, затем опять за игроком. Таким образом, право первого хода передаётся по очереди.
Ход крестиками осуществляют нажатием на кнопку SB1. После кратковременного нажатия светодиод HL1 начинает мигать красным цветом с частотой 1 Гц, тем самым указывая клетку игрового поля, на которую можно "поставить крестик". При повторном нажатии на кнопку SB1 светодиод HL1 гаснет и начинает мигать светодиод HL2. При последующих нажатиях поочерёдно мигают остальные светодиоды поля, а после светодиода HL9 снова мигает HL1.
Чтобы сделать ход ("поставить крестик") на выбранную клетку, необходимо удерживать кнопку SB1 нажатой более одной секунды, после чего светодиод перестанет мигать и станет постоянно гореть красным цветом. После хода микроконтроллера игрок выбирает необходимую клетку, как было описано выше, и делает ход сам. Во время выбора клетки игроком уже занятая пропускается, вместо неё мигает следующая свободная.
В случае победы игрока, через секунду после того как сделан последний ход, на игровом поле высвечивется символ "X" (крестик) красного цвета. Если побеждает микроконтроллер, то высвечивается символ "0” (нолик) зелёного цвета. Ничья отображается символом "Н" (ничья) оранжевого цвета, т. е. в каждом светодиоде зажигаются оба кристалла, красный и зелёный. Для начала новой игры необходимо нажать на кнопку SB1.
Для переключения режима игры нужно одновременно удерживать нажатыми более секунды кнопки SB1 и SB2. Переключение возможно после подачи питания, а также после завершения каждой партии в обоих режимах. После перехода в режим игры для двух игроков на игровом поле высвечивается символ "+" (плюс) красного цвета. Для начала игры необходимо нажать на кнопку SB1 или SB2, соответственно, первым ходит тот игрок, кто раньше нажмёт на кнопку. То же правило справедливо для начала любой следующей партии. Здесь также кнопкой SB1 осуществляется ход крестиками, которым присвоен красный цвет, а кнопкой SB2 — ноликами, соответственно, зелёного цвета свечения.
Выбор клетки для крестиков описан выше, для ноликов справедливы те же действия, с одной разницей — после нажатия на кнопку SB2 начинает мигать светодиод HL9, при следующем нажатии — HL8, т. е. светодиоды переключаются в обратном направлении. Отображение результатов, как в первом режиме. Если в течение четырёх минут нажатий на кнопки не было, устройство переходит в режим пониженного энергопотребления, микроконтроллер отключает все светодиоды и переходит в спящий режим. Он "просыпается" после нажатия на кнопку SB1, и устройство возвращается в прежнее состояние.
Все детали смонтированы на двусторонней печатной плате из фольгированного текстолита толщиной 1,5...2 мм, чертёж которой показан на рис. 2. В устройстве применены резисторы для поверхностного монтажа типоразмера 1206, оксидный конденсатор — импортный, С2 — керамический К10-17. Светодиоды L-59EGW можно заменить двухцветными с общим катодом и диаметром корпуса 5 мм. Кнопки SB1, SB2 — тактовые SWT 6x6-7, TS-A3PS-130 или серии ПКн159. Внешний вид смонтированной платы приведён на рис. 3. Источник питания — стабилизированный сетевой блок питания напряжением 3,7...5 В или батарея из трёх гальванических элементов типоразмера АА или ААА. В архиве по этой ссылке - исходный код программы на ассемблере и прошивка для микроконтроллера PIC16F628A. Источник: Радио 2013 №9
C этой схемой также часто просматривают: |
Генератор видеосигнала на микроконтроллере PIC16F84 Электронные часы с будильником на микроконтроллере AT90S2313-10PI Схема новогодней гирлянды на микроконтроллере Полицейская крякалка своими руками на PIC-микроконтроллере Паяльная станция на микроконтроллере (Цифровой ПИД регулятор температуры) Программируемый цифровой таймер Микроконтроллер управляет 7 сегментным индикатором Светодиодный КУБ 5x5x5 Неугомонная шестеренка на PIC16F84
| |
Подключение энкодера к микроконтроллеру PIC Счётчик людей в помещении, управляющий освещением Велокомпьютер на микроконтроллере PIC16F628A Устройство ввода-вывода на микроконтроллера Два термометра на PIC16F628A и DS18B20 Светодиодные часы с циферблатом Двоичные часы Два вывода микроконтроллера PIC управляют шестью светодиодами Цифровой программируемый таймер на микроконтроллере PIC16F628A Устройство рисования в воздухе на ATtiny2313 |