Перейти к содержанию

Статическая Индикация На Сдвиговых Регистрах В Прерываниях.


Рекомендуемые сообщения

Здравствуйте. Прошу помощи в теме статитическая индикация 6 разрядного 7ми сегментного индикатора по 2м проводам Data и Clock.

Есть такой код для 3х разрядного индикатора в CVavr Си

Хочу закидывать данные в каждый разряд отдельно, и выводить эти функции в прерываниях avr микроконтроллера.

// cd4094 control example by kalobyte.com 2009
#include <avr/io.h>
#define F_CPU 1000000UL
#include <util/delay.h>
#define REG_PORT PORTB
#define REG_DDR DDRB
#define REG_PIN_DATA 3
#define REG_PIN_CLK 4
//---
#define REG_DATA_ON REG_PORT|=1<<REG_PIN_DATA;
#define REG_DATA_OFF REG_PORT&=~(1<<REG_PIN_DATA);
#define REG_CLK {REG_PORT|=1<<REG_PIN_CLK;REG_PORT&=~(1<<REG_PIN_CLK);}
unsigned char digs[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; // katode
// unsigned char digs[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; //anode
void cd4094_init(void){
char i=0;
while(i!=24){

REG_CLK
i++;
}
}
void cd4094(int dig){
char i,tmp,j;
//dig = 123;
int div[4];
div[1] = digs[dig%10];
dig = dig/10;
div[2] = digs[dig%10];
div[3] = digs[dig/10];

for(j=3;j>0;j--){

tmp = div[j];
for(i=8;i>0;i--){

if(tmp & 0x80){ REG_DATA_ON } else {REG_DATA_OFF}

tmp <<=1;
REG_CLK
}

}
}

int main(void){
int i=1;
REG_DDR = (1<<REG_PIN_DATA)|(1<<REG_PIN_CLK);
REG_PORT = (0<<REG_PIN_DATA)|(0<<REG_PIN_CLK);
cd4094_init();
//cd4094(2);
while(i<999){
_delay_ms(1000);
cd4094(i);
i++;
}

return 0;
}

Вот такая схема

post-198720-0-45583600-1456081668_thumb.gif

Изменено пользователем Дмитрий Т87
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...