В этой статье познакомимся с подключением семисегментного индикатора, подключим семисегментный индикатор с общим катодом, т.е общим минусом.

Для работы нашей индикации будем использовать знания которые мы уже получили прочитав первые 6 статей, плюс конечно узнаем немного нового - это то, что такое массив данных, применим его для хранения наших цифр от 0 до 9.

Начнем с алгоритма работы нашей программы!

1. При включении питания.

2. Счетчик начнет считать от 0 до 9, с интервалом в одну секунду.

3. Счетчик начнет считать от 9 до 0, с интервалом в одну секунду.

4. Цикл повторяется.

Перейдем к написанию программы и рисованию электрической схемы!

1. Создаем новый проект в Atmel Studio 7 по пути File > New > Projec..., выбираем C/C++ и тип проекта GCC C Executable Project, вводим название проекта (Name: и Solution name:).

2. Выбираем тип микроконтроллера с которым будем работать, в нашем случае Atmega8.

Программа нам выдает код в файле main.c*

Приводим его к читабельному виду, удаляем лишние комментарии.

Рисуем электрическую схему подключения семисегментного индикатора с общим катодом к микроконтроллеру:

И так схема у нас есть, на ней обозначены микроконтроллер, источник напряжения 5В, к порту PB через токоограничительные резисторы номиналом 300Ом подключен семисегментный индикатор, а также обозначены выводы для подключения программатора, вернемся к программе.

Настроим в программе ножки порта РB на выход, допишем в программе DDRB = 0b11111111;.

С настройкой портов закончили, присвоим директиве #define имя S которое будет хранить данные о задержке на 1 секунду. Добавим в программу библиотеку задержек #include <util/delay.h>, для задержки будем использовать функцию _delay_ms(), далее с помощью оператора #define укажем программе, что наш контроллер будет работать от внутреннего генератора с частой 8МГц допишем в код #define F_CPU 8000000UL.

Добавим массив int puls [10] = {}; - с цифрами от 0 до 9 и переменную int r=0; - присвоим ей значение 0.

Вот такой у нас получился код:

Запишем в наш бесконечный цикл while код, где будем переменную r увеличивать на один в цикле for через одну секунду, использовать будем уже знакомое выражение увеличения переменной на 1, как в программе Бегущие огни на Atmega8:

В данном материале мы познакомились с самым простым выводом индикации на семисегментный индикатор с общим катодом, в этом примере был использован индикатор марки SMA 420364 который имеет 4 сегмента и 4 точки, но мы использовали всего один, так как считали от 0 до 9. В следующей статье попробуем вывести уже 1,2,3 и 4 - значные цифры на индикатор, но это уже совсем другая история!

 

 

Исходный код программы Скачать архив