- Мой профиль
- Гости
- Опубликовать
10:20 Игральная кость на микроконтроллере PIC16F88 | |
"Игральная кость" – это простой пример применения PIC микроконтроллера. Схема генерирует случайное число и отображает его на светодиодах, сгруппированных в соответствии с расположением точек на игральной кости. При сборке устройства можно установить режим медленного или быстрого вращения кости. Перечень компонентов схемыКомпонентНоминалКоличествоРезистор220 Ом7Резистор10 кОм1Резистор4.7 кОм1Движковый переключатель 1Кнопка 1Держатель 4-х батарей AA 1Батарея AA 4СветодиодКрасный7Панелька для микросхемы18 выводов1МикроконтроллерPIC16F881 Принципиальная схема Размещение компонентовНадписи на схемеMicro-Dice SchematicСхема электронной игральной костиTo +6V for slow roll to +0V for fast rollПодключить к +6 В для медленного вращения кости подключить к 0 В для быстрого вращения костиSlide SwitchДвижковый переключательPlacement DiagramСхема размещения компонентов Описание Это чисто цифровая схема, и описание ее работы мы будем вести в терминах «высокий уровень» и «низкий уровень». При питании схемы от 6 В, «высокий уровень» означает диапазон напряжений от 5 до 6 В, а «низкий уровень» – напряжение меньше 1 В. В микроконтроллере есть два регистра ввода/вывода (PORTA, PORTB). Путем соответствующего конфигурирования регистров, чтения из них, или записи, можно получать сложные результаты, не создавая сложной схемы. В нашей схеме используются все 8 выводов порта PORTB (выводы микроконтроллера 6, 7, 8, 9, 10, 11, 12, 13), которым присваиваются обозначения от PORTB.0 до PORTB.7. PORTB.0 сконфигурирован входом для проверки факта отпускания кнопки. Выводы от PORTB.1 до PORTB.7 – это выходы, к которым, через резисторы 220 Ом, подключены светодиоды. Светодиоды подключены к + 6 В, и загораются при появлении низкого уровня на соответствующем выводе микроконтроллера. Расположение зажигаемых светодиодов соответствует расположению точек на игральной кости. Это обеспечивается соответствующим кодированием. Исходное состояние вывода PORTB.0 поддерживается в низком уровне с помощью резистора 10 кОм, подключенного между этим выводом и 0 В. При нажатии кнопки, на выводе PORTB.0 устанавливается высокий уровень, т.к. кнопка подключена к +6 В. В схеме используется и один вывод PORTA: PORTA.6. Он используется для того, чтобы задавать быстрый или медленный режим вращения кости. Для этого резистор 10 кОм надо припаять к 0 В, или к +6 В. Для упрощения схемы используется внутренний тактовый генератор PIC16F88. Вход «Сброс» микроконтроллера (вывод 4) подключен к +6 В через резистор 4.7 кОм, чтобы наводки по этому входу не приводили к перезапуску микросхемы. Программаprogram LED_Dice_decaydim portb_bit as byte dim porta_bit as byte 'Объявление переменныхdim counter as integer main: TRISB = %00000001 ' Конфигурирование всех выводов PORTA, кроме вывода 0, как выходов TRISA = %11111111 PORTB = %11111110 'Выключение светодиодов ' PORTA = %00000000 counter = 1 eloop: 'Начало цикла portb_bit = PORTB.0 'Проверка статуса кнопки if portb_bit = 1 then 'Кнопка нажата counter = counter + 1 end if porta_bit = PORTA.6 'Проверка установленной скорости вращения кости (медленная/быстрая) if porta_bit = 1 then 'Режим медленного вращения delay_ms(300) end ifif counter = 7 then 'Обработка ошибки counter = 1 end ifselect case counter 'Включение соответствующих светодиодов case 1 PORTB = %11101110 case 2 PORTB = %11010110 ' 0 = ВКЛЮЧЕНО case 3 PORTB = %11000110 case 4 PORTB = %01010100 ' 1 = ВЫКЛЮЧЕНО case 5 PORTB = %01000100 case 6 PORTB = %00010000 end select goto eloop ' Оставаться в цикле end Источник: cdselectronics.com | |
|
Всего комментариев: 0 | |