Библиотека для работы с семисегментными индикаторами

Модератор: boogyman

Библиотека для работы с семисегментными индикаторами

Сообщение:#1  Сообщение AntonChip » 14 фев 2013, 07:24

Здесь обсуждаем статью "Использование библиотеки для работы с семисегментным индикатором. Делаем простые часы."
Ссылка на статью http://radioparty.ru/index.php/prog-avr/program-c/365-lesson-7segment-library

По просьбам пользователей переделал библиотеку под 6-ти разрядный индикатор, к часам добавилось отображение секунд. На будущее можно переделать и под 8-ми разрядный индикатор. Проект AVRStudio и Proteus во вложении. Качайте и оценивайте что получилось.
Вложения
7segment_6digits.rar
Проект AVRStudio и Proteus
(67.54 КБ) Скачиваний: 2646
Аватара пользователя
AntonChip
Администратор
 
Сообщения: 190
Зарегистрирован: 24 дек 2011, 21:11
Откуда: Киров
ТегиБиблиотека, семисегментный, индикатор, Atmega8

Re: Библиотека для работы с семисегментными индикаторами

Сообщение:#2  Сообщение foxhant » 15 фев 2013, 16:46

Большое спасибо за ответ. Благодаря вашей статье, познакомился с работой библиотеки - очень удобная штука и разводка платы сильно упрощается. :D :D :D
Аватара пользователя
foxhant
Новичок
 
Сообщения: 1
Зарегистрирован: 30 мар 2012, 18:01

Re: Библиотека для работы с семисегментными индикаторами

Сообщение:#3  Сообщение BoRtO » 25 мар 2013, 01:19

Здравствуйте. Решил собрать эти часы, сделал разводку, и под нее переделал библиотеку дисплея. Все откомпилировалось, зашил МК но в результате получил только буквы "Г" на всех 4 сегментах. Что это может быть? Файлы проекта в архиве.
Заранее спасибо.
P.S. В протеусе проверить не могу, так как отказывается работать на семерке :(
Вложения
Desktop.rar
(102.89 КБ) Скачиваний: 2383
Аватара пользователя
BoRtO
Новичок
 
Сообщения: 2
Зарегистрирован: 25 мар 2013, 01:14

Re: Библиотека для работы с семисегментными индикаторами

Сообщение:#4  Сообщение AntonChip » 25 мар 2013, 07:45

В файле dicplay.c не выбрал то что у тебя дисплей с ОА:
Код: Выделить всё
// Выбираем тип подключения дисплея OA или OK
// common anode
#define SET_DIGIT sbi
#define CLEAR_DIGIT cbi
#define SET_SEGMENT cbi
#define CLEAR_SEGMENT sbi

// common cathode
//#define SET_DIGIT cbi
//#define CLEAR_DIGIT sbi
//#define SET_SEGMENT sbi
//#define CLEAR_SEGMENT cbi


В фале display.h попутал с ножками, судя по твоей печатке надо так:
Код: Выделить всё
// Segment A: PD2
#define A_DDR  DDRD
#define A_PORT PORTD
#define A_BIT  PD2
#define A   0
// Segment B: PC1
#define B_DDR DDRC
#define B_PORT PORTC
#define B_BIT  PC1
#define B   1
// Segment C: PD2
#define C_DDR DDRB
#define C_PORT PORTB
#define C_BIT  PB0
#define C   2
// Segment D: PD5
#define D_DDR DDRD
#define D_PORT PORTD
#define D_BIT  PD5
#define D   3
// Segment E: PD7
#define E_DDR DDRD
#define E_PORT PORTD
#define E_BIT  PD7
#define E   4
// Segment F: PD1
#define F_DDR DDRD
#define F_PORT PORTD
#define F_BIT  PD1
#define F   5
// Segment G: PB3
#define G_DDR DDRB
#define G_PORT PORTB
#define G_BIT  PB3
#define   G   6
// Segment DP: PD6
#define DP_DDR DDRD
#define DP_PORT PORTD
#define DP_BIT  PD6
#define   DP   7

// Digit 1: PD3
#define DIGIT1_DDR DDRD
#define DIGIT1_PORT PORTD
#define DIGIT1_BIT  3
// Digit 2: PC4
#define DIGIT2_DDR DDRC
#define DIGIT2_PORT PORTC
#define   DIGIT2_BIT   4
// Digit 3: PC3
#define DIGIT3_DDR DDRC
#define DIGIT3_PORT PORTC
#define DIGIT3_BIT   3
// Digit 4: PC0
#define DIGIT4_DDR DDRC
#define DIGIT4_PORT PORTC
#define   DIGIT4_BIT   0

Аватара пользователя
AntonChip
Администратор
 
Сообщения: 190
Зарегистрирован: 24 дек 2011, 21:11
Откуда: Киров

Re: Библиотека для работы с семисегментными индикаторами

Сообщение:#5  Сообщение BoRtO » 25 мар 2013, 10:28

В прошивке общий анод, то я просто экспериментировал. Поменял содержимое display.h, все откомпилировалось, но также само буквы "Г"
Аватара пользователя
BoRtO
Новичок
 
Сообщения: 2
Зарегистрирован: 25 мар 2013, 01:14

Re: Библиотека для работы с семисегментными индикаторами

Сообщение:#6  Сообщение AntonChip » 25 мар 2013, 11:33

Проверял в Протеусе, все работает, держи исправленный проект
Вложения
clock.rar
Исправленный проект(ОА)
(65.85 КБ) Скачиваний: 2516
Аватара пользователя
AntonChip
Администратор
 
Сообщения: 190
Зарегистрирован: 24 дек 2011, 21:11
Откуда: Киров

Re: Библиотека для работы с семисегментными индикаторами

Сообщение:#7  Сообщение Sanyo95 » 24 мар 2014, 13:48

Здраствуйте. Извините за некоректный вопрос. Меня интересует как добавить будильник в такие часы, чтобы при его включении срабатывало релле например? Нужен только код, со схемой разберусь. За рание спасибо).
Аватара пользователя
Sanyo95
Новичок
 
Сообщения: 1
Зарегистрирован: 24 мар 2014, 13:42

Re: Библиотека для работы с семисегментными индикаторами

Сообщение:#8  Сообщение igor_yalta » 15 мар 2015, 02:41

а как использовать точку отдельно ??? при выводи просто чисел например 15.4 или 1.82 для других нужд не для часов
Аватара пользователя
igor_yalta
Новичок
 
Сообщения: 1
Зарегистрирован: 15 мар 2015, 02:35

Re: Библиотека для работы с семисегментными индикаторами

Сообщение:#9  Сообщение a_sergeevich » 18 мар 2015, 22:36

igor_yalta писал(а):а как использовать точку отдельно ??? при выводи просто чисел например 15.4 или 1.82 для других нужд не для часов

надо написать динамическую индикацию самому, а не пользоваться чужими библиотеками и сидеть ждать когда автор переделает её под твои нужды.
Вот пример как можно выводить на 7ми сегментники, что угодно:
ter_voltm_.rar
(75.84 КБ) Скачиваний: 1863

Это программа ещё не дописана, я её начал писать как таймер пауз для дворников в УАЗ ( именно часть управляющая дворниками и не дописана ) и решил добавить в это устройство вольтметр и термометр. В архиве проект для протеуса, проект для авр студии 6, исходник полностью от комментирован так, что вопросов возникнуть не должно.
Аватара пользователя
a_sergeevich
Новичок
 
Сообщения: 1
Зарегистрирован: 18 мар 2015, 21:57

Re: Библиотека для работы с семисегментными индикаторами

Сообщение:#10  Сообщение mastech » 20 май 2015, 14:57

как работает этот кусок кода, как я понял он завязан на епром, зачем там использовать епром?
Код: Выделить всё
uint8_t set_brightness( uint8_t b)
{
if (b > 100) b = 100;
b = 100 - b;

brightness = b + 5;
return b;
}


brightness = b + 5; - почему при увеличении 5 до 7 начинают работать(после исправления библиотеки до 8ми индикаторов) все восемь индикаторов, а после компиляции и убавления 7ки до 5 все восемь индикаторов работают исправно, и при убавлении до 2 ( b + 2) работают три индикатора?
Вложения
Новый текстовый документ.rar
8 индикаторов
(2.34 КБ) Скачиваний: 1275
Аватара пользователя
mastech
Новичок
 
Сообщения: 4
Зарегистрирован: 30 июл 2012, 22:18

Re: Библиотека для работы с семисегментными индикаторами

Сообщение:#11  Сообщение AntonChip » 20 май 2015, 18:52

Если прибавлять 7 то значение перескакивает через 100
Аватара пользователя
AntonChip
Администратор
 
Сообщения: 190
Зарегистрирован: 24 дек 2011, 21:11
Откуда: Киров

Re: Библиотека для работы с семисегментными индикаторами

Сообщение:#12  Сообщение mastech » 20 май 2015, 19:14

почему при увеличении 5 до 7 начинают работать(после исправления библиотеки до 8ми индикаторов) все восемь индикаторов, а после компиляции и убавления 7ки до 5 все восемь индикаторов работают исправно, и при убавлении до 2 ( b + 2) работают три индикатора? -- почему изменение этого значения влияет на количество индикаторов?
Аватара пользователя
mastech
Новичок
 
Сообщения: 4
Зарегистрирован: 30 июл 2012, 22:18

Re: Библиотека для работы с семисегментными индикаторами

Сообщение:#13  Сообщение AntonChip » 20 май 2015, 20:54

Проверяете в железе? Кусок кода просто инвертирует значение

set_brightness(5) brightness = 100
set_brightness(100) brightness = 5
Аватара пользователя
AntonChip
Администратор
 
Сообщения: 190
Зарегистрирован: 24 дек 2011, 21:11
Откуда: Киров

Re: Библиотека для работы с семисегментными индикаторами

Сообщение:#14  Сообщение stells47 » 11 авг 2016, 12:32

Хорошая библиотека.Только вот в железе яркость до нуля не убирается.Это можно поправить?
Аватара пользователя
stells47
Новичок
 
Сообщения: 1
Зарегистрирован: 11 авг 2016, 12:28


Вернуться в Микроконтроллеры AVR

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Rambler's Top100