Файл: Управление семи сегментным индикатором.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 07.11.2023

Просмотров: 22

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.




ЛАБОРАТОРНАЯ РАБОТА №3

Вариант №9

Тема: Управление семи сегментным индикатором.

Цель работы: Ознакомление с принципами построения программ по визуализации информации на семи сегментных индикаторах при проектировании микропроцессорных систем на примере управления семи сегментным индикатором с помощью трех кнопок.

Задание: Разработайте электрическую схему, используя семи сегментный индикатор, кнопки, резисторы и МК. Разработайте блок-схему алгоритма для этой задачи. В заданной заготовке листинга программы создайте программу, для МК, который, в соответствии с алгоритмом работы, будет управлять семи сегментным индикатором при нажатии той или иной кнопки. Одна кнопка «PUSK DEK» включает режим декремента, другая кнопка «PUSK INK» включает режим инкремента, а третья кнопка «STOP» останавливает счет. Очередность включения кнопок «PUSK INK» и «PUSK DEK» – произвольная, после нажатия кнопки «STOP».

Ход Работы:

  1. Создаем новый файл «Lab3.pdsprj», при создании выбираем мк 80С31 и компилятор ASEM-51.

  2. Открываем панель Schematic Capture, в пункте меню Library –> Pick parts from libraries находим нужные компоненты(три кнопки, земля, семь резисторов, осциллограф, семи сегментный индикатор и генератор тактовых импульсов) для нашей электро–схемы(Рисунок 1) и размещаем их на холсте.

  3. Подключим наши компоненты к порту P2. к выходу 2 подключаем кнопку S3, которая будет останавливать работу семи сегментного индикатора, к выходу 1 кнопку S2 которая будет включать режим работы убывание для семи сегментного индикатора, к выходу 0 кнопку S1 которая будет включать режим работы возрастание для семи сегментного индикатора. К порту P0 подключим семи сегментный индикатор, а к выходу 0 порта P3 подключим генератор тактовых имплуьсов.

  4. Нарисуем блок схему работы алгоритма для работы кнопок(Рисунок 2)

  5. Напишем код для работы нашей схемы(Страница 4)

  6. Осциллограф сломался в проекте, и не отображал своё окно во время симуляции работы МК

  7. Приложения:




Рисунок 1 – Электрическая схема к лабораторной работе №3, управление светодиодами с помощью трёх кнопок (После нажатия кнопки S1)


Рисунок 2 – Блок схема алгоритма работы устройства

Код программы управления семи-сегментным индикатором с помощью трёх кнопок:

;====================================================================

; Main.asm file generated by New Project wizard

;

; Created: Вт май 23 2023

; Processor: 80C31

; Compiler: ASEM-51 (Proteus)

;====================================================================
$NOMOD51

$INCLUDE (8051.MCU)
;====================================================================

; DEFINITIONS

;====================================================================

;====================================================================

; VARIABLES

;====================================================================

;====================================================================

; RESET and INTERRUPT VECTORS

;====================================================================

; Reset Vector

jmp Start

;====================================================================

; CODE SEGMENT

;====================================================================
;====================================================================

; Справка

;====================================================================

; p3.0 выход подключённый к генератору тактовых импульсов

; p2.0 выход подключёный к кнопке S1 (включить индикатор (возрастающие цифры)), при нажатии которой поступает сигнал 0

; p2.1 выход подключённый к кнопке S2 (включить индикатор (убывающие цифры)), при нажатии которой поступает сигнал 0

; p2.0 выход подключённый к кнопке S3 (Поставить на паузу изменения индикатора), при нажатии которой поступает сигнал 0

; ii... - метки используемые для работы индикатора в режиме возрастание

; id... - метки используемые для работы индикатора в режиме убывание

; is../ds.. - метки используемые в режиме пауза

;====================================================================

Start:

mov p3, #00000000b

mov p2, #00000111b ;включить кнопки s1, s2, s3

mov p1, #01111110b ;0 по умолчанию

ii:

jnb p2.0, ii1 ;Если не нажата кнопка, S1 (++) перейти на метку id

jmp id

;--------------------------------------------------------------------------------------------------

ii1:

mov p2, #00000110b ;выключить кнoпку S1

;==========================================================================

jb p2.2, ii11 ;Если кнопка S3(stop) не нажата, перейти к метке ii11

mov p2, #00000011b ;Выключить кнопку S3

is1:

jb p2.0, is12 ;Если кнопка S1 не нажата, перейти на is12



mov p2, #00000110b ;Выключить кнопку S1

jmp ii12

is12:

jb p2.1, is1 ; Если кнопка S2 не нажата, перейти на is1

mov p2, #00000101b ;Выключить кнопку S2

jmp id12

;==========================================================================

ii11:

jb p2.1, ii12 ;Если нажата кнопка S2 (--) то выключить её и перейти на метку id0(отображает цифру 1)

mov p2, #00000101b ; Выключить кнопку S2

jmp id0

;==========================================================================

ii12:

jb p3.0, ii1 ;Перейти на метку ii1, если генератор тактового импульса сейчас даёт 1

mov p1, #00000110b ;1

;--------------------------------------------------------------------------------------------------

ii2:

jb p2.2, ii21

mov p2, #00000011b
is2:

jb p2.0, is21

mov p2, #00000110b

jmp ii21

is21:

jb p2.1, is2

mov p2, #00000101b

jmp id02

;==========================================================================

ii21:

jb p2.1, ii22

mov p2, #00000101b

jmp id9

ii22:

jnb p3.0, ii2 ;Перейти на метку ii2, если генератор тактового импульса сейчас даёт 0

mov p1, #01101101b ;2

;--------------------------------------------------------------------------------------------------

ii3:

jb p2.2, ii31

mov p2, #00000011b

is3:

jb p2.0, is31

mov p2, #00000110b

jmp ii31

is31:

jb p2.1, is3

mov p2, #00000101b

jmp id92

;==========================================================================

ii31:

jb p2.1, ii32

mov p2, #00000101b

jmp id8

ii32:

jb p3.0, ii3

mov p1, #01001111b ;3

;--------------------------------------------------------------------------------------------------

ii4:

jb p2.2, ii41

mov p2, #00000011b

is4:

jb p2.0, is41

mov p2, #00000110b

jmp ii41

is41:

jb p2.1, is4

mov p2, #00000101b

jmp id82

;==========================================================================

ii41:

jb p2.1, ii42

mov p2, #00000101b

jmp id7

ii42:

jnb p3.0, ii4

mov p1, #00010111b ;4

;--------------------------------------------------------------------------------------------------

ii5:

jb p2.2, ii51

mov p2, #00000011b

is5:

jb p2.0, is51

mov p2, #00000110b

jmp ii51

is51:

jb p2.1, is5

mov p2, #00000101b

jmp id72

;==========================================================================

ii51:

jb p2.1, ii52

mov p2, #00000101b

jmp id6

ii52:

jb p3.0, ii5

mov p1, #01011011b ;5

;--------------------------------------------------------------------------------------------------

ii6:

jb p2.2, ii61

mov p2, #00000011b

is6:

jb p2.0, is61

mov p2, #00000110b

jmp ii61

is61:

jb p2.1, is6

mov p2, #00000101b

jmp id62

;==========================================================================

ii61:

jb p2.1, ii62

mov p2, #00000101b

jmp id5

ii62:

jnb p3.0, ii6

mov p1, #01111011b ;6

;--------------------------------------------------------------------------------------------------

ii7:

jb p2.2, ii71

mov p2, #00000011b

is7:

jb p2.0, is71

mov p2, #00000110b

jmp ii71

is71:

jb p2.1, is7

mov p2, #00000101b

jmp id52

;==========================================================================

ii71:

jb p2.1, ii72

mov p2, #00000101b

jmp id4

ii72:

jb p3.0, ii7

mov p1, #00001110b ;7

;--------------------------------------------------------------------------------------------------

ii8:

jb p2.2, ii81

mov p2, #00000011b

is8:

jb p2.0, is81

mov p2, #00000110b

jmp ii81

is81:


jb p2.1, is8

mov p2, #00000101b

jmp id42

;==========================================================================

ii81:

jb p2.1, ii82

mov p2, #00000101b

jmp id3

ii82:

jnb p3.0, ii8

mov p1, #01111111b ;8

;--------------------------------------------------------------------------------------------------

ii9:

jb p2.2, ii91

mov p2, #00000011b

is9:

jb p2.0, is91

mov p2, #00000110b

jmp ii91

is91:

jb p2.1, is9

mov p2, #00000101b

jmp id32

;==========================================================================

ii91:

jb p2.1, ii92

mov p2, #00000101b

jmp id2
ii92:

jb p3.0, ii9

mov p1, #01011111b ;9

;--------------------------------------------------------------------------------------------------

ii0:

jb p2.2, ii01

mov p2, #00000011b

is0:

jb p2.0, is01

mov p2, #00000110b

jmp ii01

is01:

jb p2.1, is0

mov p2, #00000101b

jmp id22

;==========================================================================

ii01:

jb p2.1, ii02

mov p2, #00000101b

jmp id1

ii02:

jnb p3.0, ii0

mov p1, #01111110b ;0

;--------------------------------------------------------------------------------------------------

;==================================================================================================

;--------------------------------------------------------------------------------------------------

id:

jnb p2.1, id1 ;Если не нажата кнопка, S2 (--) перейти на метку ii

jmp ii

;--------------------------------------------------------------------------------------------------

;==================================================================================================

;--------------------------------------------------------------------------------------------------

id1:

mov p2, #00000101b ;выключить кнoпку S2

jb p2.2, id11

mov p2, #00000011b

ds1:

jb p2.0, ds11

mov p2, #00000110b

jmp id11

ds11:

jb p2.1, ds1

mov p2, #00000101b

jmp ii12

;==========================================================================

id11:

jb p2.0, id12

mov p2, #00000110b

jmp ii0

id12:

jb p3.0, id1

mov p1, #01111110b ;0

;--------------------------------------------------------------------------------------------------

id2:

jb p2.2, id21

mov p2, #00000011b

ds2:

jb p2.0, ds21

mov p2, #00000110b

jmp id21

ds21:

jb p2.1, ds2

mov p2, #00000101b

jmp ii02

;==========================================================================

id21:

jb p2.0, id22

mov p2, #00000110b

jmp ii9

id22:

jnb p3.0, id2

mov p1, #01011111b ;9

;--------------------------------------------------------------------------------------------------

id3:

jb p2.2, id31

mov p2, #00000011b

ds3:

jb p2.0, ds31

mov p2, #00000110b

jmp id31

ds31:

jb p2.1, ds3

mov p2, #00000101b

jmp ii92

;==========================================================================

id31:

jb p2.0, id32

mov p2, #00000110b

jmp ii8

id32:

jb p3.0, id3

mov p1, #01111111b ;8

;--------------------------------------------------------------------------------------------------

id4:

jb p2.2, id41

mov p2, #00000011b

ds4:

jb p2.0, ds41

mov p2, #00000110b

jmp id41

ds41:

jb p2.1, ds4

mov p2, #00000101b

jmp ii82

;==========================================================================

id41:

jb p2.0, id42

mov p2, #00000110b

jmp ii7

id42:

jnb p3.0, id4

mov p1, #00001110b ;7

;--------------------------------------------------------------------------------------------------

id5:

jb p2.2, id51

mov p2, #00000011b

ds5:

jb p2.0, ds51

mov p2, #00000110b

jmp id51


ds51:

jb p2.1, ds5

mov p2, #00000101b

jmp ii72

;==========================================================================

id51:

jb p2.0, id52

mov p2, #00000110b

jmp ii6

id52:

jb p3.0, id5

mov p1, #01111011b ;6

;--------------------------------------------------------------------------------------------------

id6:

jb p2.2, id61

mov p2, #00000011b

ds6:

jb p2.0, ds61

mov p2, #00000110b

jmp id61

ds61:

jb p2.1, ds6

mov p2, #00000101b

jmp ii62

;==========================================================================

id61:

jb p2.0, id62

mov p2, #00000110b

jmp ii5
id62:

jnb p3.0, id6

mov p1, #01011011b ;5

;--------------------------------------------------------------------------------------------------

id7:

jb p2.2, id71

mov p2, #00000011b

ds7:

jb p2.0, ds71

mov p2, #00000110b

jmp id71

ds71:

jb p2.1, ds7

mov p2, #00000101b

jmp ii52

;==========================================================================

id71:

jb p2.0, id72

mov p2, #00000110b

jmp ii4

id72:

jb p3.0, id7

mov p1, #00010111b ;4

;--------------------------------------------------------------------------------------------------

id8:

jb p2.2, id81

mov p2, #00000011b

ds8:

jb p2.0, ds81

mov p2, #00000110b

jmp id81

ds81:

jb p2.1, ds8

mov p2, #00000101b

jmp ii42

;==========================================================================

id81:

jb p2.0, id82

mov p2, #00000110b

jmp ii3

id82:

jnb p3.0, id8

mov p1, #01001111b ;3

;--------------------------------------------------------------------------------------------------

id9:

jb p2.2, id91

mov p2, #00000011b

ds9:

jb p2.0, ds91

mov p2, #00000110b

jmp id91

ds91:

jb p2.1, ds9

mov p2, #00000101b

jmp ii32

;==========================================================================

id91:

jb p2.0, id92

mov p2, #00000110b

jmp ii2

id92:

jb p3.0, id9

mov p1, #01101101b ;2

;--------------------------------------------------------------------------------------------------

id0:

jb p2.2, id01

mov p2, #00000011b

ds0:

jb p2.0, ds01

mov p2, #00000110b

jmp id01

ds01:

jb p2.1, ds0

mov p2, #00000101b

jmp ii22

;==========================================================================
id01:

jb p2.0, id02

mov p2, #00000110b

jmp ii1

id02:

jnb p3.0, id0

mov p1, #00000110b ;1

;--------------------------------------------------------------------------------------------------

jmp ii

is:

mov p2, #00000111b ;включить все кнопки (Остановить смену цифр)

jmp ii
;====================================================================

END
Вывод: на практике были закреплены теоретические знания по работе со средой автоматизированного проектирования Proteus 8.7.


Ризнык