Микропроцессорный контроллер кодового замка - Коммуникации, связь, цифровые приборы и радиоэлектроника курсовая работа
Общее описание восьмиразрядного высокопроизводительного однокристального микроконтроллера. Порты ввода-вывода. Разработка структурно-функциональной схемы. Выбор элементной базы, основные используемые процедуры. Описание алгоритма программы, ее листинг.
посмотреть текст работы
скачать работу можно здесь
полная информация о работе
весь список подобных работ
Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
2. Краткое описание микроконтроллера
2.1 Общее описание микроконтроллера
2.3 Разработка структурно-функциональной схемы
Целью данной курсовой работы является разработка схемы устройства - «Микропроцессорный контроллер кодового замка» с использованием микроконтроллера.
Разрабатываемое устройство будет иметь следующие возможности:
в дежурном режиме устройство работает как часы, отображая текущее время.
в режиме замка устройство позволяет по паролю осуществлять открытие дверей, если введенный пароль верен для соответствующей двери. Если введенный пароль не верный, то на ЖКИ выдается сообщение: ошибка. Если неправильный пароль вводится 3 раза, срабатывает сигнализация.
режим программирования: при вводе мастер-пароля можно 1) редактировать пароли; 2) просмотреть информацию о последних введенных паролях и времени ввода пароля; 3) устанавливать новое время.
2. Краткое описание микроконтроллера
Восьмиразрядный высокопроизводительный однокристальный микроЭВМ КР1816ВЕ51 выполнен по высококачественной n-МОП технологии. Содержит масочно-программирумое в процессе изготовления кристалла ПЗУ памяти программ емкостью 4096 байт и рассчитан на применение в массовой продукции.
центральный восьмиразрядный процессор;
четыре восьмиразрядных програмируемых канала ввода-вывода;
два 16-битовых многореиных таймера-счетчика;
систему прерываний с пятью векторами и двумя уровнями;
8-разрядный двунаправленный порт Р1. Вход адреса А0-А7 при проверке внутреннего ПЗУ (РПЗУ).
Сигнал общего сброса. Вывод резервного питания ОЗУ от внешнего источника.
8-ми разрядный двунаправленный порт Р3 с дополнительными функциями.
Последовательные данные приемника - RxD.
Последовательные данные передатчика - TxD.
Выход стробирующего сигнала при записи во внешнюю память данных - WR.
Выход стробирующего сигнала при чтении из внешней памяти данных - RD.
Выводы для подключения кварцевого резонатора.
8-разрядный двунаправленный порт Р2. Выход адреса А8-А15 в режиме работы с внешней памятью. В режиме проверки внутреннего ПЗУ выводы Р2.0-Р2.6 используются как вход адреса А8-А14.
Вывод Р2.7 - разрешение чтения ПЗУ - Е.
Выходной сигнал разрешения фиксации адрса. При программировании РПЗУ сигнал - PROG.
Блокировка работы с внутренней памятью. При программировании РПЗУ подается сигнал UPR
8-разрядный двунаправленный порт Р0. Шина адреса / данных при работе с внешней памятью. Выход данных D7-D0 в режиме проверки внутреннего ПЗУ (РПЗУ).
Вывод питания от источника напряжения +5В
Память данных предназначена для приема, хранения и выдачи информации, используемой в процессе выполнения программы. Память данных, расположенная на кристалле ОМЭВМ, состоит из регистра адреса ОЗУ, дешифратора, ОЗУ и указателя стека.
Регистр адреса ОЗУ предназначен для приема и хранения адреса выбираемой с помощью дешифратора ячейки памяти, которая может содержать как бит, так и байт информации.
ОЗУ представляет собой 128 восьмиразрядных регистров, предназначенных для приема, хранения и выдачи различной информации.
Указатель стека представляет собой регистр, предназначенный для приема и хранения адреса ячейки стека, к которой было последнее обращение.
В ОМЭВМ предусмотрена возможность расширения памяти данных путем подключения внешних устройств емкостью до 64 Кбайт.
Память программ предназначена для хранения программ и имеет отдельное от памяти данных адресное пространство объемом до 64 Кбайт, причем часть памяти программ с адресами 0000h-0fffh расположена на кристалле ОМЭВМ. Память программ, расположенная на кристалле, состоит из 12-разрядного дешифратора и ПЗУ емкости 4К*8 бит. Запись программ в ПЗУ происходит во время изготовления кристаллов.
Порты Р1-Р3 имеют идентичные характеристики. Данные, записанные в них, статически фиксируются и не изменяются до перезаписи.
В режиме работы с внешней памятью программ порт Р2 служит для выдачи сигналов старших разрядов адреса и статически фиксирует их до момента изменения.
Для перевода любой линии портов Р1-Р3 на прием входной информации необходимо в соответствующий фиксатор-защелку порта записать «1» с помощью команд выдачи данных. Сигнал RST устанавливает все порты на прием входной информации.
Порт Р0 - восьмиразрядный двунаправленный порт с тремя состояниями. Информация, выдаваемая портом Р0 с помощью команд выдачи сопровождается строб-импульсом WR.
При записи информации в порт Р0 с помощью команд приема вырабатывается строб-импульс RD.
Кроме операция ввода-вывода информации предусмотрена возможность выполнения логических операция И, ИЛИ и исключающее ИЛИ непосредственно на фиксаторах портов Р0-Р3.
В режиме работы с внешней памятью программ порт Р0 служит для выдачи младших разрядов адреса памяти программ и приема кодов команд. В режиме работы с внешним ОЗУ данных порт Р0 служит для выдачи адреса внешнего ОЗУ данных и приема-выдачи данных при обмене с внешним ОЗУ.
При работе с последовательным портом ОМЭВМ линии Р3.0 и Р3.1 используются, соответственно, как вход и выход последовательного канала.
2.3 Разработка структурно-функциональной схемы
Устройство состоит из следующих функциональных блоков:
Осуществляет функционирование микроконтроллера. Состоит из следующих элементов:
схема тактового генератора. Осуществляет выработку внешнего сигнала тактирования микроконтроллера частотой 12МГц.
схема первоначального сброса микроконтроллера. Обеспечивает корректный запуск.
Осуществляет подключение матрицы из 12 кнопок к 7 выводам микроконтроллера. Код строки матрицы выдается в младших трех битах порта P2, код столбца матрицы выдается в старших четырех битах порта Р2. В узлах полученной матрицы из 3 строк по 4 столбца расположены кнопки. На 3 младших бита порта подается логическая «1». На старшие 4 бита подается 0. Как только нажата клавиша (происходит переключение), состояние бита строки, соответствующей столбцу, перейдет в «0».
Осуществляет подключение LCD-панели к порту Р0 и порту Р3 (биты Р3.0, Р3.1, Р3.2) микроконтроллера.. Отображает дополнительную информацию на LCD-экране.
Состоит из транзисторной пары и открывает или закрывает двери посредством реле или электромагнита вдвигающего язычок.
При разработке устройства были использованы следующие электронные компоненты:
Микроконтроллер КР1816ВЕ51. Этот микроконтроллер был выбран по причине хорошего соответствия поставленной задаче и низкой стоимости.
LCD Hitachi HD44870. Данный контроллер фактически является промышленным стандартом и широко применяется при производстве алфавитно-цифровых ЖКИ-модулей. АЦ ЖКИ-модули представляют собой недорогое и удобное решение, позволяющее сэкономить время и ресурсы при разработке новых изделий, при этом обеспечивают отображение большого объема информации при хорошей различимости и низком энергопотреблении.
В дежурном режиме (пока не нажата клавиша) работы устройства на ЖКИ отображается текущее время.
В этот режим работы устройство автоматически, если нажата управляющая клавиша ВВОД. Далее осуществляется вывод строки «Введите пароль» на ЖКИ и ожидается нажатие клавиши. Далее вводим клавиши и подтверждаем ввод кнопкой ВВОД. Если такой пароль существует, открывается дверь. Если пароль не совпадает с зарегистрированными, то выдается сообщение об ошибке. Если ввод неправильного пароля повторяется 3 раза, после третьего раза выдается сообщение об ошибке и подается звуковой сигнал.
Если введен мастер-пароль, можно редактировать старые пароли или установить новое время. Выдается строка «Введите №». Дальше ожидается нажатие клавиши.
Если нажата клавиша ОК, осуществляется установка нового времени. Выводится сообщение «Введите время». После этого ждем нажатия клавиш. Вводятся цифры нового времени, которые затем выводятся на ЖКИ с символом «:»;
Если нажата одна из цифровых клавиш, начинается процедура ввода нового пароля. Сначала выводится сообщение «Введите пароль» и ожидается нажатие клавиш. Вводятся цифры нового пароля, которые затем отображаются на ЖКИ.
Процедура-обработчик прерываний таймера.
В ней осуществляется проверка нажатия клавиши, особенно контролируется нажатие управляющих клавиш ПАРОЛЬ и ОК, а также осуществляем подсчет секунд, минут и часов.
Процедуры вывода сообщений: выводят сообщения на ЖКИ ВВЕДИТЕ, НОВЫЙ, ПАРОЛЬ, ВРЕМЯ, ОШИБКА, ПОВТОРИТЕ.
Процедура вывода времени на ЖКИ: выводит текущее время на ЖКИ.
Процедура вывода номера пароля и времени ввода на ЖКИ. Процедура выводит на ЖКИ номер и время введенного ранее пароля. Доступна, если набран мастер-пароль.
Процедура вывода на ЖКИ. Осуществляет вывод данных, помещаемых в буфер на ЖКИ.
Процедура поиска пароля. Ищет пароль среди известных 10 паролей. Одновременно проверяет введенный пароль на мастер пароль. Если введен мастер-пароль, происходит переход в процедуру программирования.
Процедура программирования. Работает, если введен мастер-пароль.
Позволяет редактировать уже введенные пароли, устанавливать время, просматривать номера и время введенных ранее паролей.
После начала работы процедуры выводится сообщение: введите номер. В зависимости от нажатой клавиши, будет выбран тот или иной режим работы процедуры.
Если нажата клавиша ОК - осуществляется установка нового времени.
Если нажата клавиша ПАРОЛЬ - мы может просмотреть 10 ранее введенных паролей и время ввода.
Если нажата одна из цифровых клавиш - начитает работать режим редактирования одного из ранее запрограммированных паролей.
В ней устанавливаются режимы работы таймерф, инициализируется ЖКИ, показания часов устанавливаются в 00:00:00.
init: procedure; /*пpоцедуpа инициализации*/
tmod=00000001b;/*пеpвый pежим для 0 о таймеpа */
it0=1;/*пpеpывание по фpонту сигнала пеpеполнения*/
th0,tl0=0;tr0=1; /*обнуляем счетчики и pазpешаем pаботу 0 таймеpa*/
et0=1;/*pазpешаем пpеpывания Т0 T1*/
P2=00111111b; st=0;/* скан 1 столбца*/
flH=0;fl_r1=0;fl_r2=0;fl_r3=0;fl_r4=0; flN=0;
/*устаналиваем значения по умолчанию*/
/* объявление основных переменных и флагов */
str_vvedite(*) byte (42h,0b3h,65h,0e3h,0b8h,0bfh,65h,20h),/*стр Введите*/
str_time(*) byte (0b3h,70h,65h,0bch,0c7h,20h),/*стр время*/
str_nov(*) byte(0bdh,6fh,0b3h,0c3h,0b9h,20h),/*стр новый*/
str_parol(*) byte(0a8h,61h,70h,6fh,0BBh,0c4h,20h),/*стр пароль*/
str_ohibka(*) byte (4fh,0c1h,0b8h,0b2h,0bah,61h,20h),/*стр ошибка*/
str_povtor(*) byte (0beh,0b3h,0bfh,0bfh,06fh,070h,0b8h,0bfh,65h,20h), /*стр повторите*/
mastert_pasvord(10)byte constant(1,9,4,6,2,0,2,4,3,8),/*пароль программирования*/
pasv_buf(10),/*буфер введенного пароля*/
pasv(100) byte,/* массив добавляемых паролей*/
reg(75) byte, /*массив последних 10 введ паролей*/
LCD_Ini (*) byte constant(08h,02h,0fh,01h), /*команды инициализации ЖКИ*/
Ind(56) bute ,/* содержимое индикатора */
(i,ip,jp,per,s,np,st,timN,nreg,pl) byte,/* переменные для работы */
(flag,fl_p,flH,fl_key,fl_pasv,fl_ok,fl_ind) byte,/*флаги определения режима работы */
n_key byte, /*номер нажатой клавиши */
(k1_old) byte,/*номер последней нажатой клавиши */
(sek,min,chas) word;/*секунды,минуты и часы*/
declare rs literally 'P3.0',/* RS линия связи с LCD*/
rw literally 'P3.1',/*RW линия связи с LCD*/
timer_int: procedure interrupt 1; /*---Обработчик прерывания таймера---------------*/
if st=0 then P2=10111111; /*установка сканируемого столбца*/
if st=4 then do; /*если нет нажат клавиш сброс флага нажатия иначе утанавливаем */
if n_key=0 then do; fl_key=0;key_old=0;end
else key_old=n_key;/*предшеств кл */
if (p2.0=0b) then do n_key=st*3+1; fl_key=1; end;
if (p2.1=0b) then do n_key=st*3+2; fl_key=1; end;
if (p2.2=0b) then do n_key=st*3+3; fl_key=1; end;
if fl_key=1 then do/*обработка нажатий на определенныке клавиши*/
if (n_key=11)and(n_key<>key_old) then fl_pasv=1;/*флаг ввода пароля на вход*/
if (n_key=12)and(n_key<>key_old) then fl_ok=1;/*флаг установки подтверждения*/
per=per+1; /* увеличиваем счетчик переполнений */
if per>=15 then do; /*отсчет времени*/
if sek>=60 then do; min=min+1;sek=0;/*минут*/
if min=60 then do; chas=chas+1; if chas=24 then chas=0;end;end;/*часов*/
flag=1;/*флаг необходимости обновления изображения индикатора*/
tf0=0; /* сброс флага переполнения */
vvod_ind:procedure; /* вывод Введите*/
i=0;j=1; do while str_vvedite(i)<>20h; ind(j)=str_vvedite(i);
nov_ind:procedure; /* вывод новый*/
i=0; do while str_nov(i)<>20h; ind(j)=str_nov(i);
parol_ind:procedure; /* вывод пароль*/
i=0;do while str_parol (i)<>20h; ind(j)=str_parol(i);
ohibka_ind:procedure; /* вывод Ошибка*/
i=0; do while str_ohibka(i)<>20h;ind(j)=str_ochibka (i);
povtor_ind:procedure; /* вывод Ошибка*/
i=0; do while str_povtor(i)<>20h;ind(j)=str_povtor(i);
i=0; do while str_time(i)<>20h;ind(j)=str_time(i);
time_ind:procedure; /* вывод времени*/
ind(j)=(chas/10)+30h;ind(j+1)=(chas mod 10)+30h; ind(j+2)=0d0h;
ind(j+3)=(min/10)+30h;ind(j+4)=(min mod 10)+30h; ind(j+5)=0d0h;
ind(j+6)=(sek/10)+30h;ind(j+7)=(sek mod 10)+30h;j=j+7;
timep_ind:procedure;/*выводим номер и время введенного пароля*/
ind(j+2)=(reg(pl+1)/10)+30h;ind(j+3)=(reg(pl+1) mod 10)+30h; ind(j+4)=0d0h;
ind(j+5)=(min/10)+30h;ind(j+6)=(min mod 10)+30h;
out_ind: procedure; /*вывод буфера на жки*/
call time(20);rs,rw=0; P0=1;/*очистка ЖКИ*/
Do I=0 to 55; ind(i)=20h;end;/*очистка буфера индикатора*/
/*процедурa поиска введенногo пароля*/
fl_p=0;Ip=0;/*флаг перехода в режим программирования*/
do while (Ip<=9) and (pasv_buf(ip)=master_pasvord(ip));
if Ip=9 then call progr;/*введен пароль программирования, вызов процедуры */
Do nr=0 to 9;/*проверяем весь массив паролей
Do ip=0 to 9;/*сравниваем введенный пароль с установленными*/
do while (Ip<=9) and (pasv_buf(ip)=pasv(ip));
if Ip=9 then np=nr;/*введеный пароль совпадает с записанным по номеру nr*/
progr:procedure;/*программирование нового пароля*/
call vvod_ind;ind(j)=4eh;call out_ind;/*Выводим строку Ведите№*/
do while n_key<>0;end;/*ждем отпускания клавиши*/
do while n_key=0;end; /*ждем нажатия клавиши*/
if (n_key=12) then do;/*установка параметров времени*/
call vvod_ind; call time;j=44;call out_ind; /*выводим строку введите время*/
do while n_key<>0;end;/*ждем отпускания клавиши*/
pasv_buf(ip)=n_key;ind(j+ip)=n_key+30h;call out_ind;/* ввод инф и выв на индикатор*/
chas= rol(pasv_buf(0),4)+ pasv_buf(1);/*устанавливаем часы*/
min= rol(pasv_buf(2),4)+ pasv_buf(3);/*устанавливаем минуты секунды*/
sek = rol(pasv_buf(4),4)+ pasv_buf(5);/*устанавливаем часы*/
if (n_key=11) then do;/*просмотр лога введенных паролей*/
do while n_key<>12;/*пока не нажат ОК можем просматривать лог*/
call vvod_int; ind(j)=4eh;j=41; call out_ind; /*выводим строку введите N*/
do while n_key<>0;end;/*ждем отпускания клавиши*/
if n_key=10 then do; pl=n_key; call timep; end;
if n_key<11 then do;/*ввод пароля*/
call vvod_ind;call parol_ind; out_ind;/* выводим строку введите пароль*/
do while (ip<10)and(n_key<>12);/*цикл ввода пароля*/
do while n_key<>0;end;/*ждем отпускания клавиши*/
do while n_key=0;end;/*ждем нажатия следующей клавиши*/
pasv_buf(ip)=n_key;ind(j+ip)=n_key+30h;call out_ind;/* ввод инф и выв на индикатор*/
init: procedure; /*пpоцедуpа инициализации*/
tmod=00010001b;/*пеpвый pежим для 0 и 1 го таймеpа */
it0=1;/*пpеpывание по фpонту сигнала пеpеполнения*/
th0,tl0=0;tr0=1; /*обнуляем счетчики и pазpешаем pаботу 0 таймеpa*/
et0=1;/*pазpешаем пpеpывания Т0 T1*/
P2=00111111b; st=0;/* скан 1 столбца*/
flH=0;fl_r1=0;fl_r2=0;fl_r3=0;fl_r4=0; flN=0;
/*устаналиваем значения по умолчанию*/
do while flag=0; end;/*ждем пока не пройдет секунда*/
call time_ind; /*Строка Время 12:19:33 */
call vvod_ind;call parol_ind; out_ind;/* выводим строку введите пароль*/
do while (ip<10)and(n_key<>12);/*цикл ввода пароля*/
do while n_key<>0;end;/*ждем отпускания клавиши*/
do while n_key=0;end;/*ждем нажатия следующей клавиши*/
pasv_buf(ip)=n_key;ind(j+ip)=23h;/* ввод инф и выв на индикатор #####*/
call poisk_pasv;/*проверяем пароль */
if np<11 then p3.3=1 /*открываем замок */
else do;j=0;call ohibka;call povtor;call out_ind;end;/*сообщаем об ошибке*/
do I=1 to 12; call time(255);end;/*удержание паузы 3 сек*/
reg(n)=np;reg(n+1)=chas;reg(n+2)=min;/* фиксируем лог N, часы,мин*/
n=n+3;if n>29 then n=0;/*увеличиваем и проверяем указатель лога*/
Разработка и описание структурно-функциональной схемы к динамику. Принципы построения устройства синтезатора звуковых сообщений, работа с таймером микроконтроллера. Выбор элементной базы. Разработка программного обеспечения, алгоритм и листинг программы. курсовая работа [387,9 K], добавлен 24.12.2012
Функциональная спецификация, описание объекта, структура системы и ресурсов микроконтроллера. Ассемблирование, программирование микроконтроллера и разработка алгоритма работы устройства, описание выбора элементной базы и работы принципиальной схемы. курсовая работа [2,2 M], добавлен 02.01.2010
Принцип работы кодового замка. Проектирование кодового замка с возможностью звуковой сигнализации при попытке подбора кода, на базе микроконтроллера с архитектурой MCS-51. Функциональная схема устройства, составление программы для микроконтроллера. курсовая работа [3,2 M], добавлен 14.11.2010
Синтез функциональной схемы. Строение функциональной схемы. Выбор элементной базы и реализация функциональных блоков схемы. Назначение основных сигналов схемы. Описание работы принципиальной схемы. Устранение помех в цепях питания. Описание программы. курсовая работа [85,7 K], добавлен 15.09.2008
Особенности микроконтроллера ATTINY семейства AVR. Описание ресурсов микроконтроллера ATTINY12: описание процессора, порты ввода/вывода, периферийные устройства, архитектура ядра. Разработка устройства со световыми эффектами на базе микроконтроллера. курсовая работа [2,1 M], добавлен 24.06.2013
Разработка микроконтроллера для контроля ритма дыхания больного в реанимационной палате. Структурная и принципиальная схемы микропроцессорного контроллера. Модули процессора, памяти, ввода и вывода, режимы индикации. Описание работы, принципиальная схема. курсовая работа [197,6 K], добавлен 06.12.2013
Использование помехоустойчивого кодирования в системах передачи информации. Построение структурной схемы восьмиразрядного микроконтроллера M68HC11. Разработка алгоритма кодирования и декодирования информации. Подключение внешних портов ввода/вывода. курсовая работа [1,7 M], добавлен 05.09.2014
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .
© 2000 — 2021
Микропроцессорный контроллер кодового замка курсовая работа. Коммуникации, связь, цифровые приборы и радиоэлектроника.
Дипломная работа по теме Непереводимость текстов с иностранного языка
Курсовая работа по теме Производство видеоролика
Реферат: Комплекс утренней гигиенической гимнастики (зарядка). Скачать бесплатно и без регистрации
Курсовые Разницы При Покупке Товара
Курсовая работа: Модели транзакций
Реферат: Организация вексельного обращения в коммерческом банке
Бухгалтерская Прибыль Курсовая
Сочинение О Своих Домашних Делах
Дипломная работа по теме Проектирование пальто женского для женщин младшей возрастной группы
Сочинение По Русскому Языку Молодость Вся Жизнь
Контрольная работа по теме Культурне відродження в Україні
Курсовая Работа На Тему Создание Игровой Программы "Шашки" Для Игры Между Человеком И Компьютером На Языке С++ Builder
Контрольная работа: Определение параметров косинусного излучателя. Скачать бесплатно и без регистрации
Виды Контроля Качества Продукции Реферат
Мировой Рынок Драгоценных Металлов Курсовая
Контрольная работа по теме Структура предприятия, планирование и управление деятельностью
Курсовая работа по теме Историческое краеведение как элемент современного исторического образования
Зачем Человеку Труд Сочинение
Реферат по теме Феномен мнимой экзальтации
Реферат: Лабораторная работа № 16
Учет и анализ материально-производственных запасов в ООО "Стройиндустрия" - Бухгалтерский учет и аудит дипломная работа
Теоретические основы местного самоуправления - Государство и право контрольная работа
Понятие, признаки и состав административного правонарушения - Государство и право контрольная работа