Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_all_PCPP.doc
Скачиваний:
11
Добавлен:
20.07.2019
Размер:
1.67 Mб
Скачать

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

Тема: Вивід інформації на семисегментні світлодіодні індикатори в динамічному режимі

Мета: Ознайомлення з режимами вивводу інформації з допомогою семисегментних індикаторів

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

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

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

Рис.1 – Вигляд семисегментного світлодіодного індикатора

Конструктивно такі індикатори виконуються у вигляді окремого компонента, який має 9 сигнальних виводів. За внутрішньою схемою включення світлодіодів сегментів індикатори поділяються на індикатори зі спільним анодом та індикатори зі спільним катодом – рис.2. При підключенні індикатора зі спільним анодом на нього подається додатній потенціал, а сигнали керування подаються на катоди, при чому низький потенціал на катоді світло діода сегмента призводить до його свічення, а високий – несвічення. Для підключення індикаторів з спільним катодом – на катод подається від’ємний потенціал, а на аноди – сигнали керування. Високий потенціал – призводить до свічення відповідного сегменту, а низький – несвічення. При підключенні семи сегментних світлодіодних індикаторів послідовно з кожним світлодіодом необхідно включити струмообмежуючий резистор.

а) б)

Рис.2 – Схема включення світлодіодів семи сегментних індикаторів а) зі спільним анодом, б) зі спільним катодом

Для відображенні цифрових даних часто одного індикатора є недостатньо. В таких випадках до мікроконтролера підключають декілька індикаторів одночасно. Якщо кількість виводів є недостатня для підключення всіх індикаторів використовують режим динамічної індикації, який полягає в тому, що сигнали керування всіх індикаторів підключаються паралельно до одного з портів мікроконтролера, і з допомогою спільних анодів (або катодів) здійснюється вибір активного індикатора (індикатора на який виводяться дані). Отже при динамічній індикації розряди індикатора працюють не одночасно, а по черзі. Перемикання активних індикаторів проводиться з такою частотою, щоби візуально його не було видно, тобто частота обігання всіх розрядів індикатора повинна бути більшою ніж 50 Гц. Приклад схеми підключення чотири-розрядного індикатора в динамічному режимі до мікроконтролера представлено на рис. 3.

Рис. 3 – Схема підключення чотири-розрядного індикатора в динамічному режимі

Завдання:

Вивести на n-розрядний семисегментний світлодіодний індикатор дані отримані по послідовному інтерфейсу. Вхідні дані – цифри з в кодуванні ASCII. Параметри послідовного інтерфейсу, кількість розрядів порти підключення та тип індикаторів задаються згідно номера варіанту.

№ варіанту

1

2

3

4

5

6

7

8

9

0

Частота роботи послідовного порту

1200

2400

4800

9600

1200

2400

4800

9600

9600

4800

Порти підключені до індикатора

0, 1

1, 2

2, 3

0, 2

1, 3

0, 3

0, 1

1, 2

0, 2

0, 3

Кількість розрядів індикатора

4

8

6

8

8

6

5

4

5

6

Тип індикатора

7SEG-MPX4-CA

7SEG-MPX4-CC

7SEG-MPX6-CA

7SEG-MPX8-CA-BLUE

7SEG-MPX4-CC-BLUE

7SEG-MPX6-CC-BLUE

7SEG-COM-AN-BLUE

7SEG-MPX4-CA

7SEG-COM-CAT

7SEG-MPX8-CA-BLUE

Порядок виконання роботи

  1. Скласти схему відповідно до номера варіанту.

  2. Написати та відлагодити програму роботи мікроконтролера.

  3. Запрограмувати мікроконтролер.

  4. Перевірити функціонування схеми.

  5. Оформити звіт по лабораторній роботі.

Приклад схеми

Приклад програми на С51

#include <REGX51.H>

#include <intrins.h>

/*---------------------------------*/

#define P_DAT P0

#define P_STB P2

#define P_OUT P1

unsigned char idata position;

unsigned char idata print_line[4];

/*---------------------------------*/

#define segA 0x80

#define segB 0x04

#define segC 0x08

#define segD 0x10

#define segE 0x20

#define segF 0x40

#define segG 0x02

#define segH 0x01

#define Digit0 segA|segB|segC|segD|segE|segF

#define Digit1 segB|segC

#define Digit2 segA|segB|segD|segE|segG

#define Digit3 segA|segB|segC|segD|segG

#define Digit4 segB|segC|segF|segG

#define Digit5 segA|segC|segD|segF|segG

#define Digit6 segA|segC|segD|segE|segF|segG

#define Digit7 segA|segB|segC

#define Digit8 segA|segB|segC|segD|segE|segF|segG

#define Digit9 segA|segB|segC|segD|segF|segG

unsigned char code segm7[]={Digit0,Digit1,Digit2,Digit3,Digit4,Digit5,Digit6,Digit7,Digit8,Digit9};

/*---------------------------------*/

void init_UART(void);

void init_T0(void);

void delay(unsigned int n);

/*---------------------------------*/

void main(void)

{

init_UART();

init_T0();

print_line[0]=0;

print_line[1]=1;

print_line[2]=2;

print_line[3]=3;

EA=1;

while(1)

{

P_OUT++;

delay(200);

}

}

/*---------------------------------*/

void delay(unsigned int n)

{

unsigned int i,j;

for(j=0;j<n;j++)

for(i=0;i<0x200;i++);

}

/*---------------------------------*/

void init_UART(void)

{

SCON=0x50;

PCON=0;

TMOD=0x20;

TH1=0xFD;

TR1=1;

RI=0;

ES=1;

}

/*---------------------------------*/

void int_UART(void) interrupt 4

{

unsigned char k;

if(RI)

{

k=SBUF-'0';

if(k>9)k=9;

RI=0;

print_line[0]=print_line[1];

print_line[1]=print_line[2];

print_line[2]=print_line[3];

print_line[3]=k;

}

if(TI)TI=0;

}

/*---------------------------------*/

void init_T0(void)

{

TMOD=TMOD&0xF0;

TMOD=TMOD|0x01;

TH0=0x00;

ET0=1;

TR0=1;

}

/*---------------------------------*/

void int_T0(void) interrupt 1

{

TH0=0xFC;

TL0=0;

P_STB=0;

P_DAT=segm7[print_line[position]]^0xFF;

P_STB=(1<<position);

position++;

if(position==4)position=0;

}

/*---------------------------------*/

Результат роботи програми

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