ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 22
Скачиваний: 5
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ЛАБОРАТОРНАЯ РАБОТА №3
Вариант №9
Тема: Управление семи сегментным индикатором.
Цель работы: Ознакомление с принципами построения программ по визуализации информации на семи сегментных индикаторах при проектировании микропроцессорных систем на примере управления семи сегментным индикатором с помощью трех кнопок.
Задание: Разработайте электрическую схему, используя семи сегментный индикатор, кнопки, резисторы и МК. Разработайте блок-схему алгоритма для этой задачи. В заданной заготовке листинга программы создайте программу, для МК, который, в соответствии с алгоритмом работы, будет управлять семи сегментным индикатором при нажатии той или иной кнопки. Одна кнопка «PUSK DEK» включает режим декремента, другая кнопка «PUSK INK» включает режим инкремента, а третья кнопка «STOP» останавливает счет. Очередность включения кнопок «PUSK INK» и «PUSK DEK» – произвольная, после нажатия кнопки «STOP».
Ход Работы:
-
Создаем новый файл «Lab3.pdsprj», при создании выбираем мк 80С31 и компилятор ASEM-51. -
Открываем панель Schematic Capture, в пункте меню Library –> Pick parts from libraries находим нужные компоненты(три кнопки, земля, семь резисторов, осциллограф, семи сегментный индикатор и генератор тактовых импульсов) для нашей электро–схемы(Рисунок 1) и размещаем их на холсте. -
Подключим наши компоненты к порту P2. к выходу 2 подключаем кнопку S3, которая будет останавливать работу семи сегментного индикатора, к выходу 1 кнопку S2 которая будет включать режим работы убывание для семи сегментного индикатора, к выходу 0 кнопку S1 которая будет включать режим работы возрастание для семи сегментного индикатора. К порту P0 подключим семи сегментный индикатор, а к выходу 0 порта P3 подключим генератор тактовых имплуьсов. -
Нарисуем блок схему работы алгоритма для работы кнопок(Рисунок 2) -
Напишем код для работы нашей схемы(Страница 4) -
Осциллограф сломался в проекте, и не отображал своё окно во время симуляции работы МК -
Приложения:
Рисунок 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.
Ризнык