Современная электроника №1/2020

ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 79 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 1 2020 чений выполняется в цикле for , в первом проходе которого картинка выводится на дисплей матрицыначиная со второ- го столбца. Далее при помощи опера- ции <<1 производится сдвиг столбцов на одну позицию вправо. При этом значе- ния строк остаются неизменными. Таким образом, во втором проходе картинка будет выводиться начиная с третьего столбца. Аналогичным образом выпол- няются следующие шесть проходов, после чего повторяется цикл while(1) . В 7-м проходе будут подсвечены 5 све- тодиодов в 8-м столбце. В результате на дисплее точечнойматрицыбудет непре- рывно отображаться картинка, последо- вательно сдвигающаяся вправо. Часовые диаграммы работы схемы управления cветодиодной матрицей, полученные с помощью логического анализатора, представлены на рисун- ке10. СигналысвыводовРС0–РС7микро- контроллераотображенынаграфическом экранеанализатора зелёнымцветом, сиг- налы, полученные с выводов PD0–PD7 – синимцветом. Подключениелогического анализатораксхеме управлениясветоди- однойматрицейпоказанона рисунке 9. Последовательный вывод символов на матричном индикаторе разрешением 16 × 16 Соберём в рабочей области проек- та схему с использованием микро- контроллера ATmega16 и матрично- го индикатора зелёного цвета разре- шением 16 × 16. Подсоединим верхние выводы микросхемы светодиодной матрицы к линиям PА0–PА6, а нижние к линиям PВ0–PВ4 микроконтроллера ATmega16, как показано на рисунке 11. Листинг 3 #include <mega16.h> // подключение заголовочных файлов #include <delay.h> unsigned short column2, column3, column45, column6, column7, num; void main(void) { PORTD=PORTC=0x00; // инициализация портов DDRD=0xff; // порт PD работает на вывод данных DDRC=0xff; // порт PC работает на вывод данных while(1) { // начало цикла // начальные значения переменных column2 = 0b00000010; // активизация 2-го столбца точечной матрицы column3 = 0b00000100; // активизация 3-го столбца column45 = 0b00011000; // активизация 4-го и 5-го столбцов column6 = 0b00100000; // активизация 6-го столбца column7 = 0b01000000; // активизация 7-го столбца for (num=0; num<8; num++) { // перебор столбцов матрицы от 1-го до 8-го PORTC=0b10110000; // вывод первого столбца символа «5» PORTD = column2; // запись значения переменной column2 в порт PD delay_ms(20); // задержка PORTC=0b00110000; // вывод второго столбца символа «5» PORTD = column3; // запись значения переменной column3 в порт PD delay_ms(20); // задержка PORTC=0b01111010; // вывод 3-го и 4-го столбцов символа «5» PORTD = column45; // запись значения переменной column45 в порт PD delay_ms(20); PORTC=0b00000010; // вывод 5-го столбца символа «5» PORTD = column6; // запись значения переменной column6 в порт PD delay_ms(20); PORTC=0b10000111; // вывод 6-го столбца символа «5» на дисплей индикатора PORTD = column7; // запись значения переменной column7 в порт PD delay_ms(20); column2 = column2<<1; // сдвиг первого столбца символа «5» column3 = column3<<1; // сдвиг второго столбца символа «5» column45 = column45<<1; // сдвиг третьего и четвертого столбца символа «5» column6 = column6<<1; // сдвиг пятого столбца символа «5» column7 = column7<<1; // сдвиг шестого столбца символа «5» }}} Рис. 9. Формирование изображения с эффектом бегущей строки на дисплее светодиодной матрицы разрешением 8 × 8 Рис. 10. Часовые диаграммы работы схемы управления светодиодной матрицей разрешением 8 × 8 Рис. 11. Сопряжение микроконтроллера ATmega16 и микросхемы светодиодной матрицы разрешением 16 × 16

RkJQdWJsaXNoZXIy MTQ4NjUy