Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
easyGamex
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 6
1

2х разрядный 7seg индикатор

06.12.2017, 00:42. Просмотров 1188. Ответов 6
Метки нет (Все метки)

Написал данную программу которая выводит числа от 0 до 99 на 2х разрядном 7seg индикаторе, но надо чтобы число выводилось кратное 3 (3 6 9 12 15 18... и т.д) вот никак не пойму как реализовать.
Была идея чтобы выводилось на первую часть индикатора цифры ( 0 0 0 1 1 1 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6... и т.д,)3 и 7 повторяется по 4 раза) а на второй (3 6 9 2 5 8 1 4 7 0 и т.д) и должно было бы получиться = ( 03 06 09 12 15 18 21 24 27 30 33 36 39 42 45 48 51 и т.д...) но опять же не пойму как реализовать, коряво получается. Помогите пожалуйста, буду очень благодарен.


от 0 до 99..
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <io.h>
#include <delay.h>
#include <stdlib.h>
#include <mega8.h>
void main(void)
{
int i, j;
int a[] = { 0b00000000,
            0b00111111,
            0b00000110,
            0b01011011,
            0b01001111,
            0b01100110,
            0b01101101,
            0b01111101,
            0b00000111,
            0b01111111,
            0b01101111  };
DDRD = 0b01111111;
DDRC = 0b00000011;
while(1)
{   for(i=0; i<=10; i++)
    {   delay_ms(10);
        for(j=0; j<=10; j++)
        {   PORTC = 0b00000010;
            PORTD = a[i];
            delay_ms(10);
            PORTC = 0b00000001;
            PORTD = a[j];
            delay_ms(10);   }}}}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2017, 00:42
Ответы с готовыми решениями:

10 разрядный 7ми сегментный индикатор - как лучше сделать
Привет всем! подскажите как лучше организовать 10 разрядный 7ми сегментный индикатор нашел много...

Как 4х разрядный 7 индикатор заменить 4 штуки одноразрядных с общим анодом?
Проект и прошивка и исходник прилагаю. По сути схема нужна.Ведь если правильно подключить то...

7seg ЖКИ
Поделитесь ссылочкой (уверен что есть инфа, только что-то не могу найти) как к МК прикрутить...

Как запихнуть 16 bit число в 4 символьный 7seg дисплей?
Приветствую! Не судите строго, мы еще совсем зеленые :) Хочу сделать тахометр с выводом показаний...

Как вывести разные цифры в 6 разрядов 7seg mpx6 ca?
ca это общий анод. Я подключил так,схему,исходник и прошивку прилагаю. Моя задача в том,что бы...

6
easyGamex
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 6
06.12.2017, 00:52  [ТС] 2
вот схема
0
Миниатюры
2х разрядный 7seg индикатор  
ValeryS
Модератор
8063 / 5947 / 788
Регистрация: 14.02.2011
Сообщений: 20,500
Завершенные тесты: 1
06.12.2017, 05:50 3
Цитата Сообщение от easyGamex Посмотреть сообщение
от 0 до 99 на 2х разрядном 7seg индикаторе, но надо чтобы число выводилось кратное 3
C
1
for(int i=3;i<100;i+=3)
1
easyGamex
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 6
06.12.2017, 06:38  [ТС] 4
Цитата Сообщение от ValeryS Посмотреть сообщение
for(int i=3;i<100;i+=3)
Да пробовал так.

C
1
2
3
PORTC = 0b00000011;
for(int i=3;i<100;i+=3)
delam_ms(10);
все равно не помогало :с
0
ValeryS
Модератор
8063 / 5947 / 788
Регистрация: 14.02.2011
Сообщений: 20,500
Завершенные тесты: 1
06.12.2017, 06:57 5
Лучший ответ Сообщение было отмечено easyGamex как решение

Решение

Цитата Сообщение от easyGamex Посмотреть сообщение
все равно не помогало :с
а что должно помочь?
Цитата Сообщение от easyGamex Посмотреть сообщение
C
1
2
for(int i=3;i<100;i+=3)
delam_ms(10);
этак ты 33 раза задержку вызываешь, и все
тебе нужно что то типа
C
1
2
3
4
5
6
7
8
9
for(int i=3;i<100;i+=3)
{
 PORTC = 0b00000010;
 PORTD = a[i/10];
  delay_ms(10);
  PORTC = 0b00000001;
  PORTD = a[i%10];
  delay_ms(10);
}
1
easyGamex
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 6
06.12.2017, 06:59  [ТС] 6
Благодарю за помощь
0
ValeryS
Модератор
8063 / 5947 / 788
Регистрация: 14.02.2011
Сообщений: 20,500
Завершенные тесты: 1
06.12.2017, 07:08 7
Лучший ответ Сообщение было отмечено easyGamex как решение

Решение

Цитата Сообщение от easyGamex Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
int a[] = { 0b00000000,
 0b00111111,
 0b00000110,
  0b01011011,
 0b01001111,
  0b01100110,
  0b01101101,
  0b01111101,
  0b00000111,
  0b01111111,
  0b01101111* };
таблицу еще пересмотри
у тебя при 0 нет вообще индикации
второе таблицу лучше вынести в флешь память
третье индикацию лучше вынести в отдельную функцию и её вызывать по прерываниям таймера, иначе промелькнут все цифры и все
а если увеличишь задержки то индикация будет рваная
1
06.12.2017, 07:08
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2017, 07:08

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Интересный семисегментный 3-х разрядный индикатор.
Приветствую! Нашел я у себя, собственно, сабж. Но вот он как-то отличается от того, что описано в...

Подключал 7seg цифру - сгорел МК?
Подключал цЫфру какого-то семисегментного светодиодного индикатора с общим анодом к МК. Теперь это...

При запуске МФУ epson l210 поочередно маргает индикатор кнопки включения и индикатор чернил
при запуске МФУ epson l210 поочередно маргает индикатор кнопки включения и индикатор чернил при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.