В этой статье познакомимся с подключением семисегментного индикатора, подключим семисегментный индикатор с общим катодом, т.е общим минусом.
Для работы нашей индикации будем использовать знания которые мы уже получили прочитав первые 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 - значные цифры на индикатор, но это уже совсем другая история!