помогите написать программу для МЕГИ-8

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
m1sh
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пн янв 14, 2008 12:29:09
Откуда: Новомосковск

помогите написать программу для МЕГИ-8

Сообщение m1sh »

у меня есть АВР студио и WinAvr

есть примерная схема устройства..

http://pics.binary.ru/full/newg-1.gif

в зависимости от входного напряжения, на индикаторе должен отображатся параметр входного сигнала

перед выводом параметра, кратковременно показывать соркащенное наименование параметра..

сигналы 0-5 волт - каждый со свей таблицей преобразования

переключения между параметрами - кнопкой...

Назовите тему нормально! Aheir
Вложения
newg.gif
(44.42 КБ) 795 скачиваний
Аватара пользователя
mr.Kirill
Мучитель микросхем
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

А на Электрониксе тебе отказались разве помогать? Там тему уж раздули будь здоров, думаю там и дальше получил бы ответ :)
m1sh
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пн янв 14, 2008 12:29:09
Откуда: Новомосковск

Сообщение m1sh »

да не - неотказались - но там половино темы мерянье что у кого круче...
большое спасибо AVR! с его помощью и получилась такая схема..
а насчет написания = просто наверно там все профессионалы..
и оченьпросто сказать- смотри там примеры - там всё понятно...
а я сильно начинающий - и мне трудно начать написание программы с "0", без всего.
под Микроконтроллеры я особо не программировал - так, подправлял готовые проги, либо заливал уже кем-то написанные..
Аватара пользователя
mr.Kirill
Мучитель микросхем
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

Так может для начала выучить кое-какие основы и уже приступать, а потом по мере возникновения вопросов задавать их?
Аватара пользователя
Mamonth
Вымогатель припоя
Сообщения: 534
Зарегистрирован: Пн янв 16, 2006 08:00:17
Откуда: Иркутск

Сообщение Mamonth »

Я у себя на сайте выкладывал самые начальные сведения по АЦП Меги8. С индикацией. Ты почитай - может поможет. Смотри под кнопкой www.
Today fine night...
m1sh
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пн янв 14, 2008 12:29:09
Откуда: Новомосковск

Сообщение m1sh »

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

#define F_CPU 8000000UL     // Тактовая частота.
#include <avr>           
#include <util>             
#include "include.h"

//PINC = 0x20; // кнопка - PC5
//PINC = 0x01; //pc0 АЦП1
//PINC = 0x02; //pc1   ацп2
//PINC = 0x04; //pc2   ацп3
//PINC = 0x08; //pc3   ацп4
//PINC = 0x10; //pc4   ацп5

int main(void)                           // Основная функция.

{
DDRD = 0xff;                           
DDRB = 0xff;
DDRC&=0x01; // делаем входа ??
DDRC&=0x02;
DDRC&=0x04;
DDRC&=0x08;
DDRC&=0x10;
PORTC|= 0x20; //подтяжку на кнопку ????
char bin2bcd[]={                         //массив букв и цифр
  a+b+c+d+e+f,      // 0 - 0
  b+c,              // 1 -1
  a+b+d+e+g,        // 2- 2
  a+b+c+d+g,        // 3 -3
  b+c+f+g,          // 4 -4
  a+c+d+f+g,        // 5 -5
  a+c+d+e+f+g,      // 6 -6
  a+b+c,            // 7 -7
  a+b+c+d+e+f+g,    // 8
  a+b+c+d+f+g,      // 9
  a+b+c+f+e+g,      // A -10
  f+e+g+d+c,        // b - 11
  a+f+e+d,          // c - 12
  e+g+d+c+b,        // d - 13
  a+f+e+d+g,        // e - 14
  a+f+e+g+a,        // f - 15
  g,            // g - 16
  f+e+d+g,         //t    - 17
  dot,            // dot - 18
  f+a+b+e+g,       //P - 19
  };

while (1) {

PORTD = bin2bcd[1];
 }

}  // конец программы



вот пока что получилось только..
как теперь динамическую индикацию реализовать??
читал на коте - но там на ассемблере написано...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

ассемблер или Си - какая разница? главное - алгоритм, а он одинаков:
1. Настроить таймер, разрешить прерывания от него
2. Завести переменную B1, которая хранит номер разряда индикатора, массив переменных D[] "дисплей" (каждый элемент соответствует изображению на индикаторе)
3. написать обработчик прерывания от таймера, в котором сначала погасить все индикаторы соответствующим выводом в нужный порт, затем сделать B1++ и проверить, не стало ли B1 больше, чем может быть индикаторов. Если стало - обнулить В1. Потом выводим в порт D[B1], т.е. светящиеся сегменты "следующего" индикатора, после чего выводим в порт "зажигания" разряда бит (1<<B1)
4. в основном цикле в массив D[] занести нужные "символы" - см. твой массив bin2bcd - и на индикаторе все засветится :)

алгоритм примерный, только для того, чтобы ты уловил идею.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Mamonth
Вымогатель припоя
Сообщения: 534
Зарегистрирован: Пн янв 16, 2006 08:00:17
Откуда: Иркутск

Сообщение Mamonth »

m1sh писал(а):как теперь динамическую индикацию реализовать??
читал на коте - но там на ассемблере написано...


Плохо искал. Я выкладывал статью о термометре на Си, где организована динамическая индикация.
Today fine night...
m1sh
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пн янв 14, 2008 12:29:09
Откуда: Новомосковск

Сообщение m1sh »

c прерыванием кое что понял...
непонятно во что..
на индикатор вывожу так
PORTD = bin2bcd[m]; // m - это номер элемента массива, которому соответсвует буква или цифра

как записать, на какой индикатор из 3-х выводить в данный момент??

компилятор WINAVR...
Я только учусь..
Аватара пользователя
Mamonth
Вымогатель припоя
Сообщения: 534
Зарегистрирован: Пн янв 16, 2006 08:00:17
Откуда: Иркутск

Сообщение Mamonth »

Смотря как ты схему сделал.
Если так как у меня, то выводом в соответствующий порт единички в нужный разряд.
Today fine night...
m1sh
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пн янв 14, 2008 12:29:09
Откуда: Новомосковск

Сообщение m1sh »

с этим тоже разобрался...
только вот в протеусе на симуляции цыфры носятся как бешеные..
Я только учусь..
m1sh
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пн янв 14, 2008 12:29:09
Откуда: Новомосковск

Сообщение m1sh »

замерил частотомеом в протеусе - частота 10 гц.... :shock:
Я только учусь..
Аватара пользователя
Mamonth
Вымогатель припоя
Сообщения: 534
Зарегистрирован: Пн янв 16, 2006 08:00:17
Откуда: Иркутск

Сообщение Mamonth »

m1sh писал(а):с этим тоже разобрался...
только вот в протеусе на симуляции цыфры носятся как бешеные..


Просто Протеус работает с графикой, и мерцание - нормальное явление.

10 Гц - это частота чего? Мерцания индикатора? Если да - то этого мало. Нужно минимум 60 Гц. Иначе глаз видит мерцание боковым зрением, а это плохо влияет...
Today fine night...
m1sh
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пн янв 14, 2008 12:29:09
Откуда: Новомосковск

Сообщение m1sh »

c помощью ARV (большое ему спасибо за ответы на мои глупые вопросы) уже со многим разобрался...

теперь по нажатию на кнопук прога переключает заголовки показаний..

осталось теперь сделать 5 каналов АЦП и вывести всё это на индикатор :))
Я только учусь..
Закрыто

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