МиНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра систем автоматического управления
Лабораторная работа №1
по дисциплине
«Микропроцессорный устройства систем управления»
Вариант 9
Студента гр. 8491 |
|
Авраменок Д.А. Пшебельская Р.С. |
Преподаватель |
|
Голик С.Е. |
Санкт-Петербург
2020
Цель работы: Программирование процедур вывода информации на семисементный индикатор с использованием параллельного порта.
Задание: Рассчитать и с паузой в 1 сек вывести последовательно на индикатор 20 членов числовой последовательности, сформированной по формуле арифметической прогрессии
x(i+1) = x(i) + d
Номер варианта |
x(0) |
d |
9 |
4 |
2 |
С
хема
макета, относящегося к заданию:
Рис.1.
Схема макета.
Б
1
лок-схема алгоритма программы:
//задание 20 элементов в прогрессии
//цикл вывода элемента массива на 5 семисегментников
//выделяем очередной разряд
1
//подача «схемы» числа
//подача напряжения на необходимый разряд семисегментника
//отключение неиспользуемых разрядов семисегментника
//уменьшаем число в 10 раз
//следующий элемент последовательности
Текст программы на языке С:
#include <mega128a.h>
#include <delay.h>
void main(void)
{
unsigned char x,d,xr,kol;
unsigned char i,j;
unsigned char nums[10]=
{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
DDRC = 0xFF; DDRA = 0xFF; //объявление портов на выход
PORTC = 0x00; PORTA = 0x00; //подаем напряжение на порты
while(1)
{
x = 4;
d = 2;
for(i = 0; i < 20; i++) //задание 20 элементов в прогрессии
{
xr = x;
for(j = 5; j!=0&& xr!=0; j--) //цикл вывода элемента массива на 5 семисегментников
{
kol = xr%10; //выделяем очередной разряд
PORTC = nums[kol]; //подача «схемы» числа
PORTA |= (1 << j); //подача напряжения на необходимый разряд семисегментника
PORTA &= ~(1 << j); //отключение неиспользуемых разрядов семисегментника
delay_us(2);
xr/=10; //уменьшаем число в 10 раз
}
delay_ms(1000);
x = x + d; //следующий элемент последовательности
}
PORTC = 0x00;
PORTA = 0x00;
delay_us(2);
}
}
Вывод: Был выполнено программирование процедур вывода информации на семисементный индикатор с использованием параллельного порта. Рассчитан и с паузой в 1 сек выведены последовательно на индикатор 20 членов числовой последовательности, сформированной по формуле арифметической прогрессии.