Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 21.02.2013, 19:27  
Dimitrij
Временная регистрация
 
Регистрация: 26.02.2005
Сообщений: 78
Сказал спасибо: 15
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
Dimitrij на пути к лучшему
По умолчанию Как совместить управление LCD, LED через 74hc595 в CVAVR

Решил добавить в основную программу на ATMEGA16 и отображением информации на LCD еще и управление 4-х разрядным индикатором через 2 регистра сдвига 74HC595 (Есть у меня заводская плата). Для проверки нашел в интернете небольшую тестовую програмку:
PHP код:
#define SH_CP PORTC.5   
#define ST_CP PORTC.6   
#define DS PORTC.7 

unsigned char led_table[10]={0b00000011,0b10011111,0b00100101,0b00001101,0b10  011001,0b01001001,0b01000001,0b00011111,0b00000001  ,0b00001001}; 
unsigned long show_data=1234//Отображаемая цифра 
unsigned long dig_data=0
unsigned char dig_number=0//Отображаемый разряд 

void show_dig() { 
unsigned char data[2]; 
unsigned char i;
ST_CP=0
if (
dig_number==0dig_data=show_data//Если показываем первую цифру обнавляем переменную 
data[0]=dig_data%10//Получаем разряд 
dig_data/=10
data[0]=led_table[data[0]]; //Получаем данные для сигментов 
data[1]=1‹‹dig_number
for (
i=0;i8;i++) { 
DS=data[1]&1
SH_CP=1
SH_CP=0
data[1]››=1

for (
i=0;i8;i++) { 
DS=data[0]&1
SH_CP=1
SH_CP=0
data[0]››=1

dig_number++; 
if (
dig_number3dig_number=0
ST_CP=1

и добавил ее в основную программу.
Запускаю функцию в непрерывном цикле. Все работает, только цифры отображаются не одновременно, а поочередно. Ставил максимальную частоту (16MHz), тогда все цифры мигают. Можно ли сделать, что бы цифры на LED высвечивались постоянно, и изменялись только со сменой информации? Если да, то как? В программировании я не очень силен.
Реклама:
Dimitrij вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Появилась идея - LCD->LED LCD Easyrider83 Видеотехника 129 25.05.2013 14:31
lcd wh1202a И cvavr axel2609 Микроконтроллеры, АЦП, память и т.д 6 09.07.2011 03:18
AVR. Как правильно совместить LCD и ISP на PORTB? Serg3621 Микроконтроллеры, АЦП, память и т.д 8 04.02.2010 14:03
Как совместить S26MD01 и BT138(BT152) IOPA4 Микроконтроллеры, АЦП, память и т.д 5 13.05.2009 23:47
Как совместить два вала? daddymb Делимся опытом 3 27.02.2009 11:25


Часовой пояс GMT +4, время: 09:17.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot