Вход/Регистрация
Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
вернуться

Пак Дэниэл Дж.

Шрифт:

Рис. 5.22. Функциональная схема аппаратных средств для системы кодового замка

Можно убедиться, что рассмотренные ранее по отдельности схемы подключения клавиатуры и ЖК индикатора полностью повторены, вплоть до конкретных выводов портов. Поэтому мы сможем воспользоваться ранее приведенными программами управления без каких-либо изменений.

5.8.2. Программа управления

На рис. 5.23 представлена блок-схема алгоритма управления кодовым замком. Ниже приведен полный текст программного кода программы управления, составленный по этой блок-схеме алгоритма.

Рис. 5.23. Блок-схема алгоритма управления кодовым замком

/*------------------------------------------------------------------------*/

/* filename: lock.c программа управления электронной системой доступа */

/* Число символов кода доступа равно 4. Правильная кодовая комбинация:C963*/

/* Аппаратная конфигурация: */

/* PORTB 8 линий интерфейса клавиатуры */

/*PORTP 8 линий шины данных интерфейса ЖК индикатора */

/*PORTDLC2 RD/WR, PORTDLC3 E. */

/*------------------------------------------------------------------------*/

/*подключаемые файлы*/

#include <912b32.h>

#include <stdio.h>

#include <math.h>

/*используемые функции*/

char which_key(unsigned int keypress); //определение, какая клавиша

//нажата

void delay_100us(void); //задержка 100 мкс

void delay_5ms(void); //задержка 5 мс

void initialize_lcd(void); //инициализация контроллера ЖК

//индикатора

void initialize_key(void); //инициализация портов для

//клавиатуры

void putchars(unsigned char с); //запись одного символа в индикатор

void putcommands(unsigned char d); //запись одной команды в индикатор

void lcd_print(char *string); //запись в индикатор строки символов

char keypad(unsigned int keypress, int row);

void main(void) {

 int first = 0х01; //инициализация служебных переменных для опроса

 int second = 0х02; //клавиатуры

 int third = 0х04;

 int fourth = 0х08;

 int i,j,k, count = 0;

 unsigned int keypress;

 char key;

 int length=4;

 char pin[] = {'С', '9', '6', '3'}; //задание эталонной последовательности

//символов

 char code[4]; //массив для введенной пользователем

//последовательности символов

 initialize_lcd ; //инициализация ЖК индикатора

 initialize_key; //инициализация портов для клавиатуры

 for (k=0; k<4; k++) //разрешает 4 раза ввести комбинацию из

 { //4 символов

count = 0;

putcommands(0x01);

lcd_print("Enter Code:");

while (count < length) //обработка 4 нажатий клавиатуры

{

for(i=0; i<=50; i++) //ожидание ввода символа

{

PORTB = 0х01; //опрос первого ряда клавиатуры

keypress = PORTB;

key = keypad(keypress, first);

if (key != 'Z') //если клавиша нажата

{

printf("%c", key);

  • Читать дальше
  • 1
  • ...
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: