Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Звіт лабаи №3.docx
Скачиваний:
1
Добавлен:
20.11.2019
Размер:
33.59 Кб
Скачать

Лабораторна робота № 3

Тема: Дослідження засобів динамічної індикації мпс.

Мета роботи:

Вивчення схемотехнічних та програмних засобів динамічної індикації МПС. Набуття навичок розробки програмного забезпечення для відображення цифрової інформації на семисигментних динамічних індикаторах, спряжених з ОМК сімейства MCS-51

Теоретичні відомості

При побудові підсистем відображення великої кількості розрядів інформації на світлодіодних індикаторах часто використовують динамічну схему індикації, структурна схема якої наведена на рис.2.16. В динамічних схемах індикації використовується інерційна властивість людського ока, завдяки якій побачене зображення деякий час зберігається в зоровій пам‛яті. На вказаній властивості грунтується принцип демонстрації кінофільмів, де кадри змінюються 24 рази за секунду. Якщо з такою ж частотою засвічувати окремі розряди індикатора, то в цілому отримується стійке зображення всіх розрядів індикатора. Тому для відображення багаторозрядних чисел використовується один регістр даних RD, який періодично підключається до окремих розрядів на такий час, щоб інформація в усіх розрядах оновлювалась з частотою не менше 24 раза за секунду. Одночасно із зміною даних в RD в регістрі адреси RA змінюється адреса (номер) знакомісця, в яке треба вивести існуючу в RD цифру.

Таким чином, в регістрі RD зберігається цифровий код, що призначений для відображення. Вибір знакомісця (розряда) індикатора для виведення цифри здійснюється дешифратором DA, причому двійковий код адреси розряда тимчасово зберігається в регістрі RA.

Р ис.2.16. Структурна схема динамічної індикації.

Описана схема динамічної індикації реалізована в учбово-відлагоджувальному стенді. Для її реалізації кожний з індикаторів HL1÷HL4 почергово і циклічно підключається через загальну шину даних ШД та регістр даних RD до джерела інформації – портів ОМК.

При такій схемі індикації значно зменшується елементна надлишковість, але ускладнюється алгоритм керування підсистемою відображення інформації. Необхідно забезпечити достатній час світного стану одного індикатора, щоб не зменшувалась яскравість та забезпечити таку частоту перемикання, щоб не було помітне мерехтіння. Перевага цього способа є помітною при кількості індикаторів більше п`яти.

Динамічна індикація реалізована на платі розширення за допомогою чотирьохрозрядного семисегментного індикатора HL2 (Рис.2.6.), принципова схема підключення якого наведена на рис. 2.13. Керування динамічною індикацією здійснюється по лінях порту В: РВ0; РВ1; РВ2; РВ3; РВ4; РВ5; РВ6 і РВ7. Сигнали вибору відповідного індикатора (D1, D2, D3, D4) надходять по лініях порту С: РС0 і РС1 через дешифратор адреси розряду (DС 2:4).

Підготовку програм керування динамічною індикацією треба починати з розрахунку часових затримок світного стану окремих розрядів індикатора.

Виконання роботи

  1. Запишимо приклад програми керування динамічним індикатором:

ORG 0 ;розміщення програми з адреси 0000.

mov DPTR, #0A004h ;гасіння розрядів

mov A,#00Fh ;статичного індикатора.

movx @DPTR, A

Continue:

;підготовка першого ліворуч (№0) розряду HL2.

mov A, #0000b ;запис в А адреси 00 розряду №0 HL2.

mov DPTR,#8002h ;запис в DPTR адреси 8002 (порту С).

movx @DPTR, A ;вміст А записати в порт С.

;завантаження даних в розряд.

mov A,#00000110b ;запис семисегментного коду 00000110

;цифри 1 в А.

mov DPTR,#8001h ;запис в DPTR адреси 8001 порту В

movx @DPTR, A ;записати вміст А в порт В.

call DELAY10: ;затримка

;підготовка другого ліворуч (№1) розряду HL2.

mov DPTR, #8002h ;запис в DPTR адреси 8002 (порту С).

mov A,#0001b ;запис в А адреси розряду №1 індикатора HL2.

movx @DPTR, A ;вміст А записати в порт С.

;завантаження даних в розряд.

mov A,#10111111b ;запис коду 10111111 цифри 0 в А.

mov DPTR,#8001h ;запис в DPTR адреси 8001 порту В,

;звідки дані виводяться на HL2.

movx @DPTR,A ;записати вміст А за адресою, що міститься

;в DPTR, тобто засвітити сегменти A,B,C,D,E,F цифри 0,

;та сегмент H - ‘:’ для розділення годин та хвилин

call DELAY10: ;затримка

;підготовка розряду №2 індикатора HL2.

mov DPTR,#8002h ;запис у DPTR адреси 8002 (порту С).

mov A,#0010b ;запис в А адреси розряду №2 індикатора HL2.

movx @DPTR, A ;вміст А записати в порт С.

;завантаження даних в розряд.

mov A, #01101101b ;запис коду 01101101 горіння цифри 5 в А.

mov DPTR, #8001h ;запис у DPTR адреси 8001 порту В.

movx @DPTR, A ;записати вміст А за адресою, що міститься

; в DPTR, тобто в розряд №2 HL2,

call DELAY10: ;затримка.

;підготовка розряду №3 індикатора HL2.

mov DPTR,#8002h ;запис у DPTR адреси 8002 (порту С).

mov A,#0011b ;запис в А адреси розряду №3 HL2.

movx @DPTR, A ;вміст А записати в порт С.

;завантаження даних в розряд.

mov A,#001111111b ;запис коду 01111111 горіння цифри 8 в А.

mov DPTR,#8001h ;запис у DPTR адреси 8001 порту В.

movx @DPTR,A ;в розряді №3 HL2 засвітити сегменти A,B, ;C, D, E, F,G що формують цифру 8.

call DELAY10: ;затримка.

Jmp Continue ;перехід на початок програми.

2. За допомогою спеціального програмного забезпечення EV8031 виконаємо трансляцію наведеного вище прикладу програми керування динамічним індикатором. У випадку наявності помилок виправити їх.

3. Виведемо на динамічний семисегментний світлодіодний індикатор HL2 число 2012:

ORG 0 ;розміщення програми з адреси 0000.

mov DPTR, #0A004h ;гасіння розрядів

mov A,#00Fh ;статичного індикатора.

movx @DPTR, A

Continue:

;підготовка першого ліворуч (№0) розряду HL2.

mov A, #0000b ;запис в А адреси 00 розряду №0 HL2.

mov DPTR,#8002h ;запис в DPTR адреси 8002 (порту С).

movx @DPTR, A ;вміст А записати в порт С.

;завантаження даних в розряд.

mov A,# 001011011b ;запис семисегментного коду 001011011 ;цифри 2 в А.

mov DPTR,#8001h ;запис в DPTR адреси 8001 порту В

movx @DPTR, A ;записати вміст А в порт В.

call DELAY10 ;затримка

;підготовка другого ліворуч (№1) розряду HL2.

mov DPTR, #8002h ;запис в DPTR адреси 8002 (порту С).

mov A,#0001b ;запис в А адреси розряду №1 індикатора HL2.

movx @DPTR, A ;вміст А записати в порт С.

;завантаження даних в розряд.

mov A,#10111111b ;запис коду 10111111 цифри 0 в А.

mov DPTR,#8001h ;запис в DPTR адреси 8001 порту В,

;звідки дані виводяться на HL2.

movx @DPTR,A ;записати вміст А за адресою, що міститься

;в DPTR, тобто засвітити сегменти A,B,C,D,E,F цифри 0,

;та сегмент H - ':' для розділення годин та хвилин

call DELAY10 ;затримка

;підготовка розряду №2 індикатора HL2.^

mov DPTR,#8002h ;запис у DPTR адреси 8002 (порту С).

mov A,#0010b ;запис в А адреси розряду №2 індикатора HL2.

movx @DPTR, A ;вміст А записати в порт С.

;завантаження даних в розряд.

mov A, # 00000110b ;запис коду 00000110 горіння цифри 1 в А.

mov DPTR, #8001h ;запис у DPTR адреси 8001 порту В.

movx @DPTR, A

;записати вміст А за адресою, що міститься

; в DPTR, тобто в розряд №2 HL2,

call DELAY10 ;затримка.

;підготовка розряду №3 індикатора HL2.

mov DPTR,#8002h ;запис у DPTR адреси 8002 (порту С).

mov A,#0011b ;запис в А адреси розряду №3 HL2.

movx @DPTR, A ;вміст А записати в порт С.

;завантаження даних в розряд.

mov A,# 001011011b ;запис коду 001011011 горіння цифри 2 в А.

mov DPTR,#8001h ;запис у DPTR адреси 8001 порту В.

movx @DPTR,A ;в розряді №3 HL2 засвітити сегменти A,B, ;C, D, E, F,G що формують цифру 8.

call DELAY10 ;затримка.

Jmp Continue

;перехід на початок програми

DELAY10: ;затримка 10 мс

MOV R3, #01h ;0АН = 10D

TCD: LCALL DELAY1

DJNZ R3, TCD ;10 разів зовнішний цикл по 1 мс

RET

DELAY1:

MOV R1, #19h ;1 мкс, (19Н = 25D)

LREX: MOV R2, #012h ;1 мкс, (12Н = 18D)

LRIN: DJNZ R2, LRIN ;(36) мкс на 12 МГц

DJNZ R1, LREX ;25 разів внутрішній цикл по 37 мкс

MOV R0, #8h ;1 мкс,

M1: DJNZ R0, M1 ;2?8=16 мкс,

RET ;2 мкс

End

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]