Суббота, 27.04.2024, 03:50
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта
Реклама Google
Форма входа
Категории раздела
Это нужно знать! [17]
Изучаем AVR [30]
Программаторы [12]
Необходимое ПО [8]
Готовые устройства [73]
Справочная [38]
Инструмент [0]
Технология [8]
Литература [0]
Arduino скетчи [18]
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Микроконтроллеры - это просто!
Главная » Статьи » Изучаем AVR

Подключение семисегментного индикатора к ATTINY13
Иногда возникает необходимость увеличить количество выходов микроконтроллера. Такая ситуация может возникнуть например при работе с микроконтроллерами серии tiny, например у attiny13 всего 8 ножек и в качестве выходов работают 5(6 если RESET с помощью фьюзов сделать входом/выходом ), и подключить к нему семисигментый индикатор не получится. Так вот используя одну дополнительную микросхему можно решить эту проблему и эта микросхема 74HC595. 



74HC595 - это восьмиразрядный сдвиговый регистр с последовательным вводом и параллельным выводом информации. 

Назначение выводов: 
1-7, 15 - выходы 
10 - сброс регистра 
11 - вход для тактовых импульсов 
12 - вход «защёлкивающий» данные 
13 - вход, переводящий выходы рабочее состояние 
14 - вход данных 

Теперь коротенько, как это работает: 
наши данные подаются на вход DS одновременно с тактовыми импульсами на вход SH_CP, с каждым новым импульсом мы записываем в регистр 1 бит, сдвигая все записанные ранее. Передав 8 бит регистру, выставляем логическую 1 на вход ST_CP, и содержимое регистра выводится на выходы Qa-Qh. Все очень просто. Ну а теперь перейдем к практике: 



подключение семисигментного индикатора к attiny13 cс помощью HC595

На схеме: 
семисигментный индикатор, который подключен к выходам сдвигового регистра. Входы DS, SH_CP, ST_CP подключены к PB0-2. Получается что используя сдвиговый регистр, для подключения семисигментного индикатора нужно уже не 8 а всего 3 выхода микроконтроллера, что очень удобно. 

Ниже приведен код программы, которая выводит на семисигментный индикатор цифру 5: 


 
 #include ‹tiny13.h› 
 #include ‹delay.h› 
 #define CE PORTB.2 
 #define CL PORTB.1 
 #define DI PORTB.0 
 #define RS PORTB.3 
 #define pause delay_ms(10) 

 char data[8]={0,1,1,0,1,1,0,1}; 

 int i; 

 void main(void) 
 { 
 #pragma optsize- 
 CLKPR=0x80; 
 CLKPR=0x00; 
 #ifdef _OPTIMIZE_SIZE_ 
 #pragma optsize+ 
 #endif 
 PORTB=0x00; 
 DDRB=0xFF; 
 TCCR0A=0x00; 
 TCCR0B=0x00; 
 TCNT0=0x00; 
 OCR0A=0x00; 
 OCR0B=0x00; 
 GIMSK=0x00; 
 MCUCR=0x00; 
 TIMSK0=0x00; 
 ACSR=0x80; 
 ADCSRB=0x00; 
 

 while (1) 
 { 
 

 i=0; 
 while(i<8){ 
 DI=data[i]; 
 CL = 1; 
 RS=1; 
 pause; 
 DI=0; 
 CL = 0; 
 RS=0; 
 pause; 
 i++; 
 }; 
 CE=1; 
 
 }; 
 } 

 

Категория: Изучаем AVR | Добавил: Alex (09.02.2014)
Просмотров: 6281 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024