помогите реализовать PIC12F629 + 74HC595

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 4
Зарегистрирован: Пн янв 11, 2010 15:26:47
Откуда: Украина

Сообщение UMIS »

Всем здравствуйте. У меня давно в голове есть проект который хотел реализовать, это механическая развертка на велосипедное колесе. Так как я любитель велосипеда, после просмотра разного рода видео на эту тему особенно на влек, я был просто опьянен данной идеей, да и круто выглядит такая штука 8) . Ну как всегда нечего толкового не получается у меня :( , не хватает знаний для реализации данного проека . Поюзал инет, относительно 74HC595, ну вроде как немного понял, как загнать в нее данные и вывести на желаемое железо, ну вот решил оборотится к вам, для полного разбора и решения данной проблемы. С англиским у меня туго, стараюсь хоть как нибудь перевести даташит, ну все коса и корява получается, так что помощи прошу от вас максимальной . Вот сома суть вопроса-
то что я смог понять на счет 74HC595
Устанавливаем нужный нам лог на выводе 14выв_DS,
заганяем саразу все нужные бити по ноге 11выв_SH и дергаем один раз за ногу 12выв_ST, для продвижения данных по регистру и вывода их на ноги Q0-Q7.
А теперь что мне не понятно, а не понятное мне многое
как вывести на один порт PIC-а, к примеру 8 бит данных “11110001″, через какое время делать RESET регистра. как я только не писал программно и не симулировал в ПРОТЕУСЕ не чего не получается у меня. Вот сам наглядная программа
LIST P=PIC12F629
#include “P12F629.INC”
__CONFIG _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON
;——————————–
ORG 0
;——————————-
BCF STATUS,RP0
MOVLW 0×07
MOVWF CMCON
BSF STATUS,RP0
MOVLW 0×00
MOVWF TRISIO
BCF STATUS,RP0
;——————————
START BSF GPIO,1 ; устанавливаем лог 1 на порте GP1 = на выаод 14 74HС595 (DATA)
BSF GPIO,4 ; устанавливаем лог 1 на порте GP4 = на выаод 10 74HС595 (RESET)
GOTO BIT
;——————————–
BIT BSF GPIO,0 ; вводим лог 1 на в регистор 74HС595 11 выв.(S_CP)
BSF GPIO,2 ; устанавливаем лог 1 на порте GP2 для продвежения
; днаннх по ригистру и вывода их на Q0
;—————————–
GOTO START
;—————————– GPIO,6;—– movwf Sec_1 mo movwDELAY ;—————————
END
По сути должна появиться логическая 1 на выводе регистра Q0, но все глухо :dont_know:
Реклама
Мявтор!
Аватара пользователя
Сообщения: 878
Зарегистрирован: Чт авг 07, 2008 09:12:38
Откуда: не скажу

Сообщение Настя »

Микроконтроллер последовательно
записывает байты в сдвиговый регистр:
1) на линии DS устанавливает очередной бит
необходимого логического уровня (0 или 1),
2) затем задним фронтом сигнала (переход из 1 в 0)
на линии CH_CP задвигает этот бит в регистр и, наконец,
3) задним фронтом на линии ST_CP инициирует появление
на выходах регистра записанных последних восьми бит.

По сути детский проект.
Кнопкой имитируем ваш датчик.
Нарастить hc595 можете больше,
рисунок печатный платы позволяет.

см прикрепленный файлы:
схема в Протеусе
проект Протеуса
прошивка с простой анимацией
рисунок платы (заготовка)
плата в Спринте

удачи
Вложения
wp - плата.GIF
рисунок платы
(28.05 КБ) 839 скачиваний
wp - плата.lay
плата в Спринте
(39.67 КБ) 681 скачивание
wp - протеус.GIF
схема в Протеусе
(27.16 КБ) 879 скачиваний
wp - протеус.rar
проект Протеуса
(13.15 КБ) 329 скачиваний
wp.rar
прошивка с простой анимацией
(519 байт) 318 скачиваний
Последний раз редактировалось Настя Вт янв 12, 2010 01:55:50, всего редактировалось 2 раза.
натуральная блондинка
Контактная информация:
Реклама
Родился
Сообщения: 4
Зарегистрирован: Пн янв 11, 2010 15:26:47
Откуда: Украина

Сообщение UMIS »

Уважаемая Настя! А могли бы вы выложить код данной программы :roll: , так сказать, для общего понимания все картины :)
Мявтор!
Аватара пользователя
Сообщения: 878
Зарегистрирован: Чт авг 07, 2008 09:12:38
Откуда: не скажу

Сообщение Настя »

исходник №1

Код: Выделить всё

#include <pic>
// pic12f629

__CONFIG (INTIO & UNPROTECT & BOREN 
& MCLRDIS & PWRTEN & WDTDIS);

// === используемые функции
void podgot (void); // подготовка МК
extern void work (void); // отрисовка светодиодов

// === начало обработки прерывания
interrupt void xxx (void) {
// прерывание на входе
if (GPIF & GPIE)
{work();GPIF=0;}
}

// === главная функция 
void main (void){ // начало функции
podgot(); // подготовка МК
while(1){ // начало бесконечного цикла
} // конец бесконечного цикла
} // конец функции

// === подготовка МК
void podgot (void){ // начало функции
INTCON = 0; // запрет прерываний
CMCON  = 7; // отключаем аналоговый компаратор
TRISIO = 0b100000; // направление работы ножек
GPIO = 0; // чистим
GPPU = 0; // все подтягивающие R: 1 - откл., 0 - вкл.
// прерывания внешние
IOCB5 = 1; // индивидуальное разрешение
GPIE = 1; // прерывание на ногах
GPIF = 0; // опустили флаг прерывания на ногах
// общие разрешения
GIE = 1; // разрешаем прерывания
} // конец функции

исходник №2 (подключаемый)

Код: Выделить всё

#include <pic>

// сопоставляем линии
#define dat GPIO2 // линия входящих данных в hc595
#define out GPIO1 // линия управления выходами hc595
#define str GPIO0 // линия стробирования hc595

unsigned int izo=0; // изображение, которое будем выводить
unsigned char kadr=1; // счетчик кадров

void work (void); // отрисовка светодиодов

// === отрисовка светодиодов
void work (void){ // начало функции
unsigned char count; // локальный счетчик
unsigned int izo_tmp; // локальный буфер
kadr++; // инкрементируем № кадра
izo<<=1; // тупо двигаем содержимое
if (kadr <18> 32) kadr = 1; // проверка на максимум
// понеслось заполнение
count = 16; // счетчик битов
while (count-->0) // цикл заполнения
{ // начало заполнения hc595
izo_tmp = izo; // в локальный буфер
dat = (izo_tmp>>count)&1; // выставляем данные
str=1; str=0; // стробированиие
} // конец заполнения hc595
out=1; out=0; // вывод картинки
while (GPIO5==0); // ожидаем передний фронт кнопки
} // конец функции
Сука какая. Строчка в коде искажается
вместо
if (kadr <18> 32) kadr = 1; // проверка на максимум
надо
if (kadr "знак меньше" 18 ) izo=izo++; // некая логика анимации
if (kadr "знак больше" 32 ) kadr = 1; // проверка на максимум



Ну как-то так.
+ посмотрите http://www.radiokot.ru/konkurs/03/
натуральная блондинка
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 4
Зарегистрирован: Пн янв 11, 2010 15:26:47
Откуда: Украина

Сообщение UMIS »

конечно спасибо за код :) ! но увы :( , я только понимаю ассемблер :), если вы может пере конвертировать в ассемблер, буду вам при много благодарен :beer: PS я новечек в PIC-ках и асме, сильно замудренных слов не понимаю
Реклама
Мявтор!
Аватара пользователя
Сообщения: 878
Зарегистрирован: Чт авг 07, 2008 09:12:38
Откуда: не скажу

Сообщение Настя »

вот вам фарш
Вложения
wp.asm
дизасм из хекса
(6.27 КБ) 436 скачиваний
натуральная блондинка
Контактная информация:
Реклама
Родился
Сообщения: 4
Зарегистрирован: Пн янв 11, 2010 15:26:47
Откуда: Украина

Сообщение UMIS »

спасибо большое :)! буду разбирать этот фарш :))
Мявтор!
Аватара пользователя
Сообщения: 878
Зарегистрирован: Чт авг 07, 2008 09:12:38
Откуда: не скажу

Сообщение Настя »

Платы обновлены несколькими постами выше.
Была небольшая неточность - сейчас исправлено.
натуральная блондинка
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»