Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Анонсы журнала "Лаборатория электроники и программирования" Новые статьи 24 и 25 номера


10. Примеры программ на С++ для персональных компьютеров.

                Рассмотрим пример создания приложения - терминальной программы для  RS232/485, Назовем приложение, например «Terminal_232_485». Тип приложения выберем на основе диалоговых окон.

Работа с COM портом подробно была освещена в журнале №6 (статья 7) и №20 (статья 4).

В тех примерах программ использовались фиксированные настройки порта, которые пользователь не мог изменить. Сейчас сделаем их изменяемыми пользователем.

 

1. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Матричная клавиатура.

Рассмотрим работу с матричной клавиатурой. Такая клавиатура позволяет использовать меньше выводов микроконтроллера по сравнению с вариантом, когда каждая кнопка подключена к отдельному выводу. При матричном подключении на строки клавиатуры подается «бегущий ноль» (или «бегущая единица»), а со столбцов клавиатуры считываются сигналы. Если какая либо кнопка нажата, то изменяется считанный сигнал. Т.о. определяется нажатие на кнопку. Сканирование (считывание состояния и формирование сигнала «бегущий ноль»)  обычно осуществляется с помощью таймера.

                Схема подключения клавиатуры:

... 

Поскольку клавиатура требует для подключения обычных портов ввода-вывода, то ее подключение при разработке принципиальной схемы можно оставить на самый последний этап, когда уже другие устройства подключены, т.е. подключить на оставшиеся выводы. Поэтому пример программы сделан «универсально», есть специальные константы, которые задают порты и биты портов подключения и настройки. Для управления сбросом и установкой бит используются макросы «CLEAR_BIT» и «SET_BIT», идущие с  компилятором.

 

2. Программирование на языке С++ на примере микроконтроллера ATmega328.  Кнопка с обработкой дребезга и автоповтором нажатия, работающая с использованием прерываний.

Рассмотрим пример программы, в котором используется кнопка, при нажатии на которую производится определенное действие. Этим действием будет мигание светодиода на основе программы, рассмотренной в номере 24 (статья 7). Изменения в программе выделены серым цветом. Для обработки дребезга и автоповтора созданы специальные программные счетчики:

volatile unsigned int debounce_cnt; // счетчик времени дребезга, мс

volatile unsigned int repeat_cnt; // счетчик времени автоповтора, мс

                После обработки дребезга устанавливается флаг нажатия кнопки:

volatile unsigned char Key_Pressed = 0; // флаг обработки нажатия кнопки, 1 - нужно обработать,

который сбрасывается после отработки нужного действия.

Пример программы (скетча) приведен для «Arduino IDE» [2].

… 

http://journal.electroniclab.ru/journal_content_024.htm 

http://journal.electroniclab.ru/journal_content_025.htm  


В избранное