• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
Искать на DESSY.RU
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Интересно
Немного подработать
Есть свободное время?
Можешь немного подработать.
Загрузка...
Друзья JR



JUNIOR RADIO





xTimer на регистре сдвига4094



Статьи публикуются по мере поступления. Для упорядоченного тематического
поиска воспользуйтесь блоком  "Карта сайта"








Новая схема xTimerа с использованием CMOS регистра сдвига 4094 для управления 7-сегментным LED напрямую. Оригинальная версия xTimer использует MAX7219 . Моя схема использует дешевый КМОП регистр сдвига 4094 для светодиодного интерфейса, без необходимости впаивания ограничительных резисторов. Левый блок выполняет функцию таймера с выходом звуковой сигнализации. Правый для отображения часов.

 

Рисунок 1: xTimer V1.0 с использованием регистра сдвига 4094.

 

Рисунок. 2 показывает полную аппаратную схему. U2 это ATMEL 89C2051 работает на 24MHz XTAL. Оригинальная версия использует 11.0592 МГц, но мне нужно точное время, поэтому я выбрал 24MHz.  Для получения 100Гц прерывания таймера, мы можем использовать значение перезагрузки для Timer0 с 65536-20000 = 45536.

Входа клавиатуры для установки таймера key1 и key 4 привязаны к P3.2 P3.5. Для использования внутренней подтягивающей. P3.0 и п. P3.1 подключены два зуммера через буфер 7407. Активный Выход имеет низкий уровень. Выхода 1 и 4 с открытым коллектором. Мы можем использовать их для управления небольшого 12V реле  напрямую.

 


Рисунок 2: Схема xTimer V1.0.

 

U3, U5, U7, U9, U12, U14, U16 и U18 регистры сдвига КМОП 4094 выходного порта. Каждый чип управляет сегментами напрямую.  Все 64-разрядные КМОП выхода управляется тремя сигналами, DATA - P1.6, STROBE - P1.5 и CLK -  P1.7.

 

 

Рисунок 3: Управление 7-сегментным индикатором с помощью CMOS регистра сдвига 4094.

64-битовый поток данных сдвигается в U3 pin2 по фронту CLK сигнала. QS - выходной бит, который связывает прием ввода данных. STROBE и сигнал CLK привязаны к каждому 4094 чипу. Когда все 64-бит завершают смещаться, STROBE выводит их на выход (одновременно). 

Программное обеспечение

Скорость прерывания 100 Гц. XTAL 24MHz. Timer0 получает 24MHz / 12 = 2 МГц. Для получения 100Гц, значение перезагрузки будет равняться 65536-20000 = 45536 или 0xB1E0. Все задачи будут выполняться каждые 10 мс.

КОД

void timer_isr(void) interrupt 1 using 1
{
TH0 |= 0xb1; // reload value with 24MHz Xtal
TL0 |= 0xe0;
cputick++;
clock(); // update realtime clock
set_timer();
run_timer();
key_release();
updatedisplay();
ring1();
ring2();
}

Я заменил функцию таймера оригинальной схемы часами. Теперь блок timer 3 - HOUR, а timer4 - MIN. Ниже показан новый макет. Теперь кнопками Key3 и Key4 можно настроить текущее время в часах и минутах.


Сигналы SPI: DIN, CLK и STROBE используют P1.6 P1.7 и P1.5. Функция write_LED () взаимодействует с восьмью 4094. Функция заключена в циклы, использующие переменные I и J.  Внутренний цикл сдвигает 8-бит от переменной буфера с buffer[0] в буфер [7].  Это делается путем ORing с 0x80.

КОД

sbit CLK = P1^7;
sbit DIN = P1^6;
sbit strobe = P1^5;
// write 64-bit data to 4094 x 8, COMS shift regsiter
// The output of each register was tied to common chathod 7-segment LED
// data was shifted with rising edge, 0-to-1 CLK signal
// all bits are sent to the output with 1-to-0 STROBE signal
void write_led()
{
char i,j;
for(j=0; j<8; j++)
{
for(i=0;i<8; i++)
{
if(buffer[j]&0x80) DIN = 1; // set bit data line
else DIN=0; // clear bit data line
CLK= 1; // make clock high
buffer[j] <<=1; // shift 1 bit left
CLK = 0; // make clock low
}
}
strobe = 1; // make strobe high
;
strobe = 0; // then low
}
}

 

 

Пользователь может нажать СБРОС, чтобы войти в режим ожидания в Timer1 и Таймер2, не нарушая отображения часов. При компиляции исходного кода, вы должны включить файл запуска в файле проекта. 

Звуковой сигнал

Пример

unsigned char code busy_pattern[4]= {1,20,0,100}; // on 20ticks, off 100ticks
unsigned char code busy_pattern2[4]= {1,20,0,20}; // on 20ticks, off 20ticks

Скачать

 

МАТЕРИАЛЫ К СТАТЬЕ

 







Просмотров: 1096 | Добавил: Chinas | Рейтинг: 0.0/0








Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 288



          

Радио для всех© 2018