5379

Секундомер на базе микроконтроллера МК51

Контрольная

Информатика, кибернетика и программирование

В данном курсовом проекте разработан секундомер на базе микроконтроллера МК51. Проанализированы алгоритмы работы устройства и микроконтроллера. По алгоритму работы микроконтроллера на языке Ассемблер написана программа и разработана принципиальная э...

Русский

2012-12-08

155.5 KB

149 чел.

В данном курсовом проекте разработан секундомер на базе микроконтроллера МК51. Проанализированы алгоритмы работы устройства и микроконтроллера. По алгоритму работы микроконтроллера на языке Ассемблер написана программа и разработана принципиальная электрическая схема устройства.  


ВВЕДЕНИЕ

Секундомер – прибор для измерения промежутков времени (в секундах и долях секунды, минутах, часах); механические или электронные часы с кнопочно-рычажной системой для пуска и остановки механизма и возврата указателя (стрелки, цифрового индикатора) в исходное положение.

В данном проекте разработан секундомер на базе микроконтроллера МК51. Проанализировано техническое задание, разработаны алгоритмы работы устройства и микроконтроллера. На основе алгоритма работы микроконтроллера написана программа на языке Ассемблер. Также построена принципиальная схема и рассчитаны ее элементы.


1   АНАЛИЗ ТЕХНИЧЕСКОГО ЗАДАНИЯ

В данной работе требуется разработать секундомер на основе микроконтроллера серии МК51. Микроконтроллер обеспечивает отсчёт временного интервала с отображением на индикаторах.

В соответствии с техническим заданием разрабатываемое устройство должно отображать на индикаторах минуты, секунды и сотые доли секунд. Ограничимся временем счета 100 минут. Поэтому в качестве устройства отображения информации целесообразно использовать 6 семисегментных индикаторов.

Согласно техническому заданию блок управления должен состоять из 4 кнопок.

Кнопка “Старт” используется для включения секундомера в режим счета, кнопка     “Сброс” – для перехода секундомера в начальный режим (на индикаторах высвечиваются нули, память обнуляется), кнопка “Стоп” – для остановки счета (на индикаторах высвечивается время остановки счета), кнопка “Промежуточный результат” – для вывода на индикаторы текущего времени (секундомер продолжает счет).

  1.  СТРУКТУРНАЯ СХЕМА УСТРОЙСТВА

По результатам анализа технического задания построим структурную схему разрабатываемого устройства. Структурная схема устройства изображена на рисунке 1.

Рисунок 1 – Структурная схема устройства

Блок управления состоит из четырех кнопок. С блока управления информация о нажатой кнопке подается на микроконтроллер. Микроконтроллер обрабатывает полученный сигнал и начинает выполнять определенную последовательность действий, соответствующих нажатой клавише.

Микроконтроллер ведет отсчет времени, путем счета тактовых импульсов. Данные, полученные в процессе работы микроконтроллера, передаются на устройство отображения информации.

При нажатии кнопки “Сброс” происходит сброс счетчика в ноль, при этом на индикаторах высвечиваются нули.

При нажатии кнопки “Старт” микроконтроллер начинает отсчет времени, при этом информация о текущем состоянии выводится на устройство отображения.

При нажатии кнопки “Стоп” происходит остановка счета, и вывод текущего времени на индикаторы.

При нажатии кнопки “Промежуточный результат” информация о моменте нажатия кнопки выводится на устройство отображения, счет продолжается.

  1.  АЛГОРИТМ РАБОТЫ УСТРОЙСТВА 

Опираясь на структурную схему устройства и анализ технического задания, построим алгоритм работы заданного устройства (рисунок 2).

Рисунок 2 – Алгоритм работы секундомера

  1.  АЛГОРИТМ РАБОТЫ МИКРОКОНТРОЛЛЕРА 

На основе полученного алгоритма работы устройства необходимо описать алгоритм работы микроконтроллера.

В основной программе необходимо провести инициализацию переменных и таймеров-счетчиков.

Для организации необходимых задержек необходимо воспользоваться двумя встроенными таймерами-счетчиками. Таймер-счетчик TC0 будет использоваться для организации счета, а таймер-счетчик TC1 – для динамической индикации.

Чтобы при динамической индикации не было заметно мерцание, необходимо частоту смены кадров выбрать более 50 Гц. Выберем частоту смены изображения 50 Гц. Так как, согласно анализу технического задания, в модуле индикации будут применяться шесть разрядов, то частота переключения всех разрядов составит  Гц. Именно с такой частотой таймер-счетчик TC1 должен формировать прерывания, то есть каждые 3,3 мс.

Оба таймера-счетчика настроим в качестве шестнадцатиразрядных таймеров (режим работы 1 таймеров-счетчиков), для этого необходимо в регистр TMOD записать значение #00010001b.

Частота процессора fтакт = 11,0592 МГц. Поскольку машинный цикл состоит из 12 периодов частоты синхронизации fтакт, то частота счета будет равна fтакт /12. Таким образом, на вход таймеров-счетчиков будут поступать импульсы с частотой  МГц.

Так как таймеры-счетчики настроены как 16-разрядные таймеры, то максимальное значение в них равно 65535, что соответствует максимальному времени  мс.

Чтобы таймер-счетчик TC1 обнулялся каждые 3,3 мс, необходимо, чтобы отсчитал  раза. Поэтому, начальное значение, заносимое в этот таймер-счетчик должно быть равно 65535 – 3042 = 62493 или F41Dh в шестнадцатеричной системе.

Таймер счетчик TC0 должен обеспечивать счет времени с точностью 0,01 с. Таким образом, прерывания должны формироваться каждую сотую долю секунды. Поэтому необходимо, чтобы таймер-счетчик отсчитал . Начальное значение, заносимое в TC0 должно быть равно 65535 – 9126 = 56409 или DC59 в шестнадцатеричной системе.

Используемые переменные приведены в таблице 1.

Таблица 1 – Список используемых переменных

Переменная

Назначение

Пределы изменения

start

Определяет состояние кнопки Старт

0,1

stop

Определяет состояние кнопки Стоп

0,1

sbros

Определяет состояние кнопки Сброс

0,1

pr_rez

Определяет состояние кнопки “Промежуточный результат”

0,1

doli

Счетчик сотых долей секунды

00..99

sek

Счетчик секунд

00..59

min

Счетчик минут

00..99

sch_doli

Переменные для вывода данных в режиме “Промежуточный результат”

00.99

sch_sek

00..59

sch_min

00..99

chislo

Символ, который нужно вывести на индикатор

0..9

vihod

Порт вывода информации на блок индикации

ml

Нулевой разряд переменной nomer_ind

0,1

sr

Второй разряд переменной nomer_ind

0,1

st

Третий разряд переменной nomer_ind

0,1

nomer_ind

Номер индикатора, на который необходимо вывести данные

0..5

ch0..ch9

Данные, которые необходимо передать на vihod для отображения соответствующей цифры
,

Алгоритм основной программы представлен на рисунке 3.

Рисунок 3 – Алгоритм основной программы

Алгоритм подпрограммы indicator представлен на рисунке 4.

Рисунок 4 – Алгоритм подпрограммы indicator

Алгоритм прерывания таймера-счетчика TC0 представлен на рисунке 5.

Рисунок 5 – Алгоритм прерывания таймера-счетчика TC0

Алгоритм прерывания таймера-счетчика TC1 представлен на рисунке 6.

Рисунок 6 – Алгоритм прерывания таймера-счетчика TC1

  1.  ЛИСТИНГ ПРОГРАММЫ ДЛЯ МИКРОКОНТРОЛЛЕРА

org 00h

jmp nachalo     ;переход на инициализацию

org 0bh

sjmp int0      ;прерывание Т/С0

org 1bh      

jmp int1      ;прерывание Т/С1

org 30h

;Объявление переменных

start equ p2.0

stop  equ p2.1

sbros  equ p2.2

pr_rez equ p2.3

st   equ p3.2

sr   equ p3.5

ml   equ p3.1

vihod equ p1

 

doli   equ 40h 

 sek  equ 41h

min  equ 42h

nomer_ind equ 43h

chislo equ 44h  

sch_doli equ 45h

sch_sek equ 46h

sch_min equ 47h

TH0_znach set 0DCh   ;определение начальных значений

 TL0_znach set 059h   ;Т/С0 и Т/С1

 TH1_znach set 0F4h

TL1_znach set 01Dh

ch0 set 11000000b   

ch1 set 11111001b

ch2 set 10100100b

ch3 set 10110000b

ch4 set 10011001b

ch5 set 10010010b

ch6 set 10000010b

ch7 set 11111000b

ch8 set 10000000b

ch9 set 10010000b

 

;Основная программа

nachalo:

 mov doli,#00h    ;обнуление сотых долей секунд

 mov sek,#00h    ;обнуление секунд

 mov min,#00h    ;обнуление минут

 setb EA     ;разрешение прерываний

 setb ET0     ;разрешение прерывания от Т/С0

 setb ET1     ;разрешение прерывания от Т/С1

 mov TMOD,#00010001b   ;задание режима работы Т/С0 и Т/С1

;как таймеров

 setb TR1     ;разрешение счета Т/С1

 mov TH0,#TH0_znach   ;задание начальных значений

 mov TL0,#TL0_znach   ;Т/С0 и Т/С1

 mov TH1,#TH1_znach

mov TL1,#TL1_znach

 jmp schitiv    ;переход на метку schitiv

;Подпрограмма обработки прерывания таймера-счетчика ТС0

int0:

mov TH0, #TH0_znach   ;задание начального значения

 mov TL0, #TL0_znach   ;Т/С0

inc doli     ;увеличение на сотую долю секунды

 mov A,doli

cjne A,#100d,int0_end  ;сравнение с максимальным

;значением, в случае неравенства

;переход на метку int0_end

 mov doli,#00d    ;иначе - обнуление

 inc sek     ;увеличение на 1 секунду

 mov A,sek

cjne A,#60d,int0_end  ;сравнение с максимальным

;значением, в случае неравенства

;переход на метку int0_end

 mov sek,#00d    ;иначе - обнуление

 inc min     ;увеличение на 1 минуту

 mov A,min

cjne A,#100d,int0_end  ;сравнение с максимальным

;значением, в случае неравенства

;переход на метку int0_end

 mov min,#00d    ;иначе - обнуление

int0_end:

 reti

;Подпрограмма обработки прерывания таймера-счетчика ТС1

int1:

mov TH1, #TH1_znach   ;задание начального значения

mov TL1, #TL1_znach   ;Т/С1

mov doli,sch_doli   

mov sek,sch_sek

mov min,sch_min

mov A,nomer_ind

rrc A

mov st,C

rrc A

mov sr,C

rrc A

mov ml,C

mov B,#10d

jb ml,viv_doli

jb sr,viv_sek

 

viv_min:

mov A,min

div AB

jnb st,viv_min_dr

mov chislo,B  

sjmp viv_end  

viv_min_dr:

mov chislo,A

sjmp viv_end

viv_sek:

mov A,sek

div AB

jnb st,viv_sek_dr

mov chislo,B  

sjmp viv_end  

viv_sek_dr:

mov chislo,A

sjmp viv_end

viv_doli:

mov A,doli

div AB

jnb st,viv_doli_dr

mov chislo,B  

sjmp viv_end  

viv_doli_dr:

mov chislo,A

sjmp viv_end

 

viv_end:

acall indicator

inc nomer_ind

mov A,nomer_ind

cjne A,#6d, int1_end

mov nomer_ind,#00d

int1_end:

reti

;Подпрограмма “indicator”

indicator:

mov A,chislo

n0: cjne A,#0d,n1    ;вывод на индикаторы цифры “0”

 mov vihod,#ch0

sjmp end_ind

n1: cjne A,#1d,n2    ;вывод на индикаторы цифры “1”

 mov vihod,#ch1

sjmp end_ind

n2: cjne A,#2d,n3    ;вывод на индикаторы цифры “2”

 mov vihod,#ch2

sjmp end_ind

n3: cjne A,#3d,n4    ;вывод на индикаторы цифры “3”

 mov vihod,#ch3

sjmp end_ind

n4: cjne A,#4d,n5    ;вывод на индикаторы цифры “4”

 mov vihod,#ch4

sjmp end_ind

n5: cjne A,#5d,n6    ;вывод на индикаторы цифры “5”

 mov vihod,#ch5

sjmp end_ind

n6: cjne A,#6d,n7    ;вывод на индикаторы цифры “6”

 mov vihod,#ch6

sjmp end_ind

n7: cjne A,#7d,n8    ;вывод на индикаторы цифры “7”

 mov vihod,#ch7

sjmp end_ind

n8: cjne A,#8d,n9    ;вывод на индикаторы цифры “8”

 mov vihod,#ch8

sjmp end_ind

 

n9: mov vihod,#ch9    ;вывод на индикаторы цифры “9”

end_ind:

ret

;Считывание нажатой кнопки

schitiv:      

mov p2,#00h    

setb p2.4

mov A,p2

;START

cjne A,#10001000b, schitiv1

setb TR0

sjmp schitiv

schitiv1:

;STOP

cjne A,#01001000b, schitiv2

clr TR0

sjmp schitiv

schitiv2:

;SBROS

cjne A,#00101000b, schitiv3

sjmp nachalo

schitiv3:

;PR_REZ

cjne A,#00011000b, schitiv

mov sch_doli,doli

mov sch_sek,sek

mov sch_min,min

sjmp schitiv

end

  1.  ОПИСАНИЕ ПРИНЦИПИАЛЬНОЙ ЭЛЕКТРИЧЕСКОЙ СХЕМЫ УСТРОЙСТВА

Схема электрическая принципиальная разработанного устройства  представлена в  документе К.201208.000 Э3

Основой устройства является микроконтроллер фирмы Atmel АТ89C51, полностью совместимый с MCS-51 и имеющий 4 кБ перепрограммируемой памяти, что вполне достаточно для записи разработанной программы.

Цепь сброса служит для начальной установки всех внутренних систем процессора в момент включения питания. Стандартная схема начального сброса приведена на рисунке 7.

Рисунок 7 – Схема начального сброса

При включении питания конденсатор С начинает заряжаться. При этом на вход Reset микроконтроллера поступит положительный импульс, длительность которого определяется временем зарядки конденсатора. Для этой схемы типовые значения емкости 10 мкФ, резистора – 1...10 кОм (берем 8,2 кОм).

Кварцевый резонатор служит для стабилизации частоты колебаний внутреннего тактового генератора и определяет тактовую частоту работы процессора. Для работы с последовательным портом микроконтроллера удобно взять частоту резонатора 11,0592 МГц. Стандартная схема подключения внешнего кварцевого к микроконтроллеру показана на рисунке 8.

Рисунок 8 – Схема включения кварцевого резонатора

Значения емкостей рекомендуется брать 3310 пФ.

Кроме перечисленных элементов в устройстве необходимо установить блокировочные конденсаторы в цепях питания. Номиналы блокировочных конденсаторов 10 мкФ (электролитический) и 0.1 мкФ (керамический).

Транзисторы для реализации ключей в схеме выбираются так, чтобы ток коллектора транзистора превосходил ток свечения сегмента (Iк  20 мА). Так схема включения используемого индикатора - с общим анодом, и активным является низкий уровень сигнала, то используется p-n-p транзистор. Исходя из этих условий используется транзистор KT345А.

В качестве семисегментных индикаторов используются индикаторы крас-ного цвета АЛС333Б с общим анодом, ток сегмента которого 20 мА, а падение напряжения 2В. Высота знака индикатора 11 мм.

В качестве регистра для передачи данных к индикаторам используем  регистр К555ИР27, его параметры:

 

 

 

В качестве дешифратора используем схему  К155ИД4 со следующими параметрами:     

         

             

Сопротивления R2 – R9 рассчитываются следующим образом. Так напряжение насыщения база-эмиттер транзистора равно 0,3 В, а падение напряжения на светодиоде – 2 В, падение напряжения на всей цепи 5В и ток светодиода равен 20 мА, то

=135 Ом

Таким образом, номиналы сопротивлений R2 – R9 имеют стандартное значение 130 Ом.

Расчет сопротивлений в цепи транзисторного ключа представлен ниже.

Рисунок 9 – Эквивалентная схема ключа

Из рисунка 9 видно, что общее входное сопротивление транзистора h11э определяется как параллельное соединение двух резисторов:

.

Транзистор должен открываться по низкому уровню. Чтобы транзистор открылся, потенциал эмиттера должен превышать потенциал базы больше чем на 0,6 В, т.е. напряжение база-эмиттер должно быть больше 0,6 В, оно падает на входном сопротивлении транзистора.

Для низкого уровня, которому соответствует выходное напряжение дешифратора 0,4 В (ТТЛ логика), разность потенциалов составит 5 – 0,4 = 4,6 В, а это падение напряжения на R1 и на . Напряжение насыщения база-эмиттер транзистора в справочнике составляет 0,92 – 1,1 В (на ). Пусть оно будет равно 1 В, тогда на R1 напряжение будет 4,6 – 1 = 3,6 В.

Получаем, что R1 и  относятся, как 3,6 к 1.

В случае если на выходе дешифратора единица, т.е. высокий логический уровень – более 2,4 В. В этом случае разность потенциалов составит 5 – 2,4 = 2,6 В.

Так R1 и  относятся, как 3,6 к 1, то на  падает напряжение 0,56 В. А этого напряжения недостаточно, для того чтобы транзистор открылся. Таким образом, выбранное соотношение сопротивлений верно.

Найдем значение номиналов сопротивлений R1 и R2 по этому соотношению. Входное сопротивление транзистора KT345А 600 Ом. Пусть сопротивление резистора R1 составляет 2 кОм. Из соотношения определим R2:

Получим R2 равным 7,5 КОм.

Получим номиналы сопротивлений R10, R12, R14, R16, R18 и R20 равны 2 кОм, а сопротивлений R11, R13, R15, R17, R19 и R21 -  7,5 кОм.

ЗАКЛЮЧЕНИЕ

В данном проекте разработан секундомер, соответствующий требованиям, указанным в техническом задании.

В ходе выполнения данного проекта был выполнен анализ технического задания, описана структурная схема и алгоритм работы устройства. Также рассмотрен и описан на языке Ассемблер алгоритм работы для микроконтроллера, построена и рассчитана принципиальная схема устройства, составлен перечень необходимых элементов.

СПИСОК ЛИТЕРАТУРЫ

  1.  Юшин А.М. Цифровые микросхемы для электронных устройств. Справочник:  -М: Высшая школа, 1993 г., 176 с.;
  2.  Электронный справочник по цифровым микросхемам и индикаторным устройствам, 2000г.;
  3.  Конспект лекций по микроконтроллерам MCS-51.


 

А также другие работы, которые могут Вас заинтересовать

10392. Бензен як представник ряду ароматичних вуглеводнів. Його склад, електронна і структурні формули, фізичні властивості. Хімічні властивості бензену 169 KB
  Дата: Тема: Бензен як представник ряду ароматичних вуглеводнів. Його склад електронна і структурні формули фізичні властивості. Хімічні властивості бензену€. Тип уроку: урок вивчення нового матеріалу. Навчальна мета: Ознайомити учнів з бензеном як предста...
10393. Будова електронних оболонок атомів елементів перших трьох періодів 97 KB
  Планконспект уроку з хімії На тему: Будова електронних оболонок атомів елементів перших трьох періодів Мета: Розкрити причину періодичної зміни властивостей елементів і їх сполук у світлі закономірної зміни будови електронних оболонок атомів. Розвивати пізнавальну...
10394. Відносна молекулярна маса речовини, обчислення її за хімічною формулою. Масова частка елемента у речовині. Обчислення масової частки елемента у складі речовини 6.95 MB
  Тема: Відносна молекулярна маса речовини обчислення її за хімічною формулою. Масова частка елемента у речовині. Обчислення масової частки елемента у складі речовини. Навчальна мета: 1 закріпити знання про хімічні формули й уміння обчислювати відносну молекулярну масу...
10395. Генетичний звязок між класами органічних сполук 41 KB
  Тема: Генетичний звязок між класами органічних сполук. Навчальна мета: узагальнити знання учнів про класи органічних сполук обґрунтувати твердження про єдність і взаємозв’язок усієї живої і неживої природи. Виховна мета: виховувати в учнів самостійність вміння вико...
10396. Либерализм в Европе и США, его сущность и эволюция 39 KB
  Либерализм в Европе и США его сущность и эволюция. Либерализм зародился как идеология восходящего класса буржуазии в XVII в. и окончательно оформился как идейнополитическое течение к середине XIX в. Его основной концепцией была идея индивидуальной свободы разработанная...
10397. Власть как политическое явление легитимность власти 29 KB
  Власть как политическое явление легитимность власти. Политическая власть – способность социальной единицы социальной группы класса большинства общества и представляющих её организаций и индивидов проводить свою волю по отношению к другим социальным единицам; осу
10398. Власть и общественные интересы. Формы и средства выражения в политике 28.5 KB
  Власть и общественные интересы. Формы и средства выражения в политике. Понятие власть является одним из центральных в политологии дающим ключ к пониманию политических институтов политических движений и самой политики. Под властью понимают возможность и способно
10399. Типология современных политических режимов 25.5 KB
  Типология современных политических режимов. В современной политологии различают три их основных типа: демократический авторитарный и тоталитарный. Понятие политический режим представляет собой совокупность методов средств и приемов с помощью которых властные
10400. Политические партии в обществе, их классификация и функции 26 KB
  Политические партии в обществе их классификация и функции. Партия как термин имеет латинское происхождение и означает часть группа т.е. часть более крупной общности. Политическая партия наиболее активная и организованная часть какоголибо класса или социального сл