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

Модератор: boogyman

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

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

#1

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

Здесь обсуждаем статью "Использование библиотеки для работы с семисегментным индикатором. Делаем простые часы."
Ссылка на статью https://radioparty.ru/programming/avr/c ... nt-library

По просьбам пользователей переделал библиотеку под 6-ти разрядный индикатор, к часам добавилось отображение секунд. На будущее можно переделать и под 8-ми разрядный индикатор. Проект AVRStudio и Proteus во вложении. Качайте и оценивайте что получилось.
Вложения
7segment_6digits.rar
Проект AVRStudio и Proteus
(67.54 КБ) 3323 скачивания

Аватара пользователя
foxhant
Новичок
Сообщения: 1
Зарегистрирован: 30 мар 2012, 19:01

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

#2

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

Большое спасибо за ответ. Благодаря вашей статье, познакомился с работой библиотеки - очень удобная штука и разводка платы сильно упрощается. :D :D :D

Аватара пользователя
BoRtO
Новичок
Сообщения: 2
Зарегистрирован: 25 мар 2013, 02:14

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

#3

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

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

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

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

#4

Сообщение AntonChip » 25 мар 2013, 08: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


Аватара пользователя
BoRtO
Новичок
Сообщения: 2
Зарегистрирован: 25 мар 2013, 02:14

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

#5

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

В прошивке общий анод, то я просто экспериментировал. Поменял содержимое display.h, все откомпилировалось, но также само буквы "Г"

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

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

#6

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

Проверял в Протеусе, все работает, держи исправленный проект
Вложения
clock.rar
Исправленный проект(ОА)
(65.85 КБ) 3169 скачиваний

Аватара пользователя
Sanyo95
Новичок
Сообщения: 1
Зарегистрирован: 24 мар 2014, 14:42

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

#7

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

Здраствуйте. Извините за некоректный вопрос. Меня интересует как добавить будильник в такие часы, чтобы при его включении срабатывало релле например? Нужен только код, со схемой разберусь. За рание спасибо).

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

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

#8

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

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

Аватара пользователя
a_sergeevich
Новичок
Сообщения: 1
Зарегистрирован: 18 мар 2015, 21:57

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

#9

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

igor_yalta писал(а):а как использовать точку отдельно ??? при выводи просто чисел например 15.4 или 1.82 для других нужд не для часов
надо написать динамическую индикацию самому, а не пользоваться чужими библиотеками и сидеть ждать когда автор переделает её под твои нужды.
Вот пример как можно выводить на 7ми сегментники, что угодно:
ter_voltm_.rar
(75.84 КБ) 2553 скачивания
Это программа ещё не дописана, я её начал писать как таймер пауз для дворников в УАЗ ( именно часть управляющая дворниками и не дописана ) и решил добавить в это устройство вольтметр и термометр. В архиве проект для протеуса, проект для авр студии 6, исходник полностью от комментирован так, что вопросов возникнуть не должно.

Аватара пользователя
mastech
Новичок
Сообщения: 4
Зарегистрирован: 30 июл 2012, 23:18

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 КБ) 1911 скачиваний

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

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

#11

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

Если прибавлять 7 то значение перескакивает через 100

Аватара пользователя
mastech
Новичок
Сообщения: 4
Зарегистрирован: 30 июл 2012, 23:18

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

#12

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

почему при увеличении 5 до 7 начинают работать(после исправления библиотеки до 8ми индикаторов) все восемь индикаторов, а после компиляции и убавления 7ки до 5 все восемь индикаторов работают исправно, и при убавлении до 2 ( b + 2) работают три индикатора? -- почему изменение этого значения влияет на количество индикаторов?

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

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

#13

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

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

set_brightness(5) brightness = 100
set_brightness(100) brightness = 5

Аватара пользователя
stells47
Новичок
Сообщения: 1
Зарегистрирован: 11 авг 2016, 12:28

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

#14

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

Хорошая библиотека.Только вот в железе яркость до нуля не убирается.Это можно поправить?

Аватара пользователя
bashsat
Новичок
Сообщения: 1
Зарегистрирован: 29 окт 2015, 22:17

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

#15

Сообщение bashsat » 15 янв 2019, 16:29

Здравствуйте! Хочу собрать часы с термометром. Использовал занятия с проектами на DS1307 и DS18b20 и библиотеку для работы с семисегментными индикаторами. Вывод часов отображается нормально, а вот вывести температуру через эту библиотеку не получается. Проверял и в схеме, и в Протеусе.

Ответить