Перейти к содержанию

crazz

Рекомендуемые сообщения

В хелпе на МикроСи есть всё, надо просто чуток внимательней читать. Ну, а чтобы было понятней вот пример вывода в МикроСи чисел на ЖК:


//Термометр с датчиком на DS18B20, МК PIC16F877A, F = 20 Мгц
//Предел измерения от - 55 до + 125
//Точность +- 0.1
//Проект сделан с помощью Alex с форума forum.cxem.net
int main (void)
{
   unsigned char byte0,byte1,z; //байты приёма 0,1 z - знак
   signed int tm; //tm - для соединения 0 и 1 байтов
   signed char  eden;
   unsigned char des;

   ADCON1 = 0xFF;
   PORTA = 0x00;
   TRISA = 0x02;  //RA1 - вход, все остальные выходы
   PORTC = TRISC = 0x00;
   OPTION_REG = 0x7F;
   PORTB = 0xFF;
   TRISB = 0xD8; // выходы для ЖК
   Lcd_Custom_Config ( &PORTB, 5, 2, 1, 0, &PORTC, 0, 1, 5);//Иниц.ЖКИ
   Lcd_Custom_Cmd ( Lcd_CURSOR_OFF ); // Выключить курсор

   Lcd_Custom_Out ( 1,3,"PIC Foreva" ); //Начальная надпись
   Delay_ms ( 1000 );
   Lcd_Custom_Cmd(Lcd_Clear); //Очистка ЖКИ

   while ( 1 )
   {
         Ow_Reset ( &PORTA,1 ); //Сброс, начало команд
         Ow_Write ( &PORTA,1,0xCC );  //Пуск
         Ow_Write ( &PORTA,1,0x44 );  //Пуск
         Delay_ms ( 750 );            //Задержка по даташиту для замера тем-ры
         Ow_Reset ( &PORTA,1 );   	//Сброс, начало новой команды
         Ow_Write ( &PORTA,1,0xCC );  //Чтение тем-ры
         Ow_Write ( &PORTA,1,0xBE );  //Чтение тем-ры
         byte0 = Ow_Read ( &PORTA,1 );  //Младший байт тем-ры
         byte1 = Ow_Read ( &PORTA,1 ); //Старший байт тем-ры

         tm = byte0 + (int)(byte1 << 8 ); //Соединяем байты в одну переменную

         if ( ( tm & 0x8000 ) ) { tm = -tm; z = '-'; }//отриц или положительная
         else z = '+';
         eden = tm >> 4;  // Делим на 16. Вычеслили целое значение
         des = ((char)(tm)) & 0b1111; // Выделяем отсечёные 4 бита
         des = ( des * 10 ) >> 4; // Приводим их к целым (*10) и так-же делим на 16

         Lcd_Custom_Chr ( 1,3,z ); //выводим знак

         if ( eden <= 9 )  // а это блоки вывода значения тем-ры
           {           	//в зависимости от величины тем-ры
        	Lcd_Custom_Chr ( 1,7,' ' );
        	Lcd_Custom_Chr ( 1,4,eden + 0x30 );
           }
         if ((eden >= 10) && (eden < 100) )
           {
           Lcd_Custom_Chr ( 1,8,' ' );
           Lcd_Custom_Chr ( 1,4, ((eden/10)%10) + 0x30 );//0х30 для правильного отображения чисел
           Lcd_Custom_Chr_Cp ( ((eden/1)%10) + 0x30 );
           }
         if (eden >= 100 )
           {

           Lcd_Custom_Chr ( 1,4, ((eden/100)%10) + 0x30 );
           Lcd_Custom_Chr_Cp ( ((eden/10)%10) + 0x30 );
           Lcd_Custom_Chr_Cp ( ((eden/1)%10) + 0x30 );
           }
         Lcd_Custom_Chr_Cp ( '.' );  //вывод разделителя
         Lcd_Custom_Chr_Cp ( des + 0x30 ); //вывод десятых

	}
}


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

Можно также использовать функции преобразования чисел в строки, но это расходует ресурсы МК, так что в данном случае ни к чему.

Изменено пользователем a_sergeevich

Будьте проще и люди к вам потянутся.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Спасибо огромное Сергеич и Алекс, почти все получилось. Просто я новенький, а сделать хочется сразу все)

Разобраться бы еще, правда, зачем к числу прибавлять 48))

А русские буквы он только в протеусе не выводит, а в железе будет, или тут тоже хитрость есть?

Изменено пользователем Redya

Все свои проекты я тестирую на плате контроллера PIC32MX от CedarLab.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Разобраться бы еще, правда, зачем к числу прибавлять 48))
ASCII кодировка понимаешьли.
я разве какую-то глупость написал?
Нет, просто " недоглядели.))

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Подскажите пожалуйста, кто знает. Какая предельная частота PWM у Пиков. Какой Пик имеет самую высокую частоту PWM?

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

На вебинаре мы представили информацию не только по линейкам аккумуляторной продукции EVE, но и по решениям для управления ею, что поможет рассмотреть эти ХИТ в качестве дополнительной альтернативы для уже выпускающихся изделий. Также рассмотрели нюансы работы с производителем и сервисы, предоставляемые Компэл по данной продукции. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Но в даташите я отчетливо видел запись: PWM max frequency 20 kHz. Вот поэтому и спрашиваю насчет всех остальных МК.

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

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Есть конечно. Но обычно их называют PLL - на старых материнках есть специализированные. Принцип прост - Сравнивается фаза опорной частоты и фаза сигнала с перестраиваемого генератора частота которого поделена в N раз и подается на фазовый компаратор. компаратор этот для цифрового сигнала является не что иное как логический элемент "исключающее ИЛИ" выход с него пропускается через НЧ фильтр и подается на перестраиваемый генератор. Таким образом, в схеме наступает равновесие тогда и только тогда когда частота перестраиваемого генератора в точности равна опорной частоте помноженной на N с точностью до фазы(это в идеале, на самом деле есть некоторый джиттер что стави определенные трудности в построении схем с большим N).

Если не ошибаюсь, типичный представитель - LM7000

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Сложновато умножение, поделить всегда проще :)

А что вы думаете по поводу предельной частоты PWM? У всех она одинаковая?

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

Ссылка на комментарий
Поделиться на другие сайты

Глупые какие-то вопросы задаешь... открыл бы даташит, посмотрел бы как устроен модуль PWM (он ведь типовой) и выяснил бы чем ограничена верхняя частота. Если используешь модуль на все 8 бит, то максимальная частота не может быть больше чем тактовая/256 для кристалла с тактированием 20Мгц тактовая для счетчика будет составлять 5Мгц(синхронно машинным циклам, так уж устроены таймеры в ПИК-ах) - после деления на 256 остается около 19.5кГц

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Alexeyslav, позволю себе немного Вас поравить :rolleyes:

Частота дискретизации ШИМа равна не Fosc/4, а именно Fosc. Т.е. тактируется не по машинным циклам.

Сносочка из ДШ

post-48853-0-29419400-1308590764_thumb.jpg

Значение периода сравнивается со значением таймера TMR2. По этому период = 0x3F. А 2 младших бита периода находятся в регистре CCPCON (биты 5:4). Они как раз и "помогают" сделать частоту дискретизации в 4 раза больше частоты приращения таймера.

Изменено пользователем Alex
Ссылка на комментарий
Поделиться на другие сайты

Вот так новина! За 14 минут PWM вырос на 1000%! Уже до 200 кГц, правда дискретизация упала.

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

Ссылка на комментарий
Поделиться на другие сайты

pic16f628a

в даташите написано память программ 2*14 кб. пишу программу, размер привалил 2к, перестало компилица..как сделать что бы код писался во вторые 2к?

Где-то вычитал, что просто каждая функция должна быть не больше 2к.

Попробовал загнать часть main() в новую функцию time()

time()
{
код
}
main()
{
time();
}

Результатов не дало

Компилятор MIKROC ломаный, демо не пишет, на pic18 разрешает писать более 2к...выручите?)

Изменено пользователем Redya

Все свои проекты я тестирую на плате контроллера PIC32MX от CedarLab.

Ссылка на комментарий
Поделиться на другие сайты

pic16f628a

на pic18 разрешает писать более 2к...выручите?)

ну и где ты в даташите нашел вторые 2К???

если их там всего 2К

для особо одаренных МК может запомнить 2048 команд (длинна команды 14бит)

Ссылка на комментарий
Поделиться на другие сайты

Значит эти чуваки попутали меня:

имелось в виду, что у 16 пикс размер любой функции не может превышать 2к слов.

Если быть более точным, это является следствием условия непересечения функцией границы страницы (page).

это из-за того, что в пиках 16-й серии инструкции GOTO имеют 11разрядное поле указания адреса и поэтому возможны только "короткие" переходы в пределах сегмента 2к, а "дальние"нет

в этом вся и беда. Из-за этого же самого, помнится, файлы с расширением .сом , не имевшие внутри себя дальних инструкций, не могли превышать 64к, в отличие от .ехе , где такого ограничения не было

да

разбей на функции

http://www.microchip.su/showthread.php?t=3568&page=2 от сюда.

...я поэтому и подумал что это 14 по 2k

будем пытаться сокращать прогу...

Изменено пользователем Redya

Все свои проекты я тестирую на плате контроллера PIC32MX от CedarLab.

Ссылка на комментарий
Поделиться на другие сайты

Учитывайте еще необходимый размер RAM. Я слышал, если объем не влезает, то часть операций (переменных) переносится в память программ, которая может использоваться как RAM. Но это решает сам компилятор в процессе создания кода.

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

Ссылка на комментарий
Поделиться на другие сайты

Память программ не может быть использована как RАМ, разве что регистры.

Т.к. программа не может записывать ничего в программную память! Это может делать только загрузчик.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

pic16f628a

Блин, ну почему в даташите написан регистр OPTION..а оказывается через два часа моего мучения, что в микроси он пишется option_reg, причем увидел это где-то случайно на какомто форуме

Все свои проекты я тестирую на плате контроллера PIC32MX от CedarLab.

Ссылка на комментарий
Поделиться на другие сайты

В папке defs хранилище всех инклуд фаилов, открывая нужный фаил можно посмотреть написание всех регистров и даже отдельных битов.

 // OPTION_REG bits
   const register unsigned short int NOT_RBPU = 7;
   sbit  NOT_RBPU_bit at OPTION_REG.B7;
   const register unsigned short int INTEDG = 6;
   sbit  INTEDG_bit at OPTION_REG.B6;
   const register unsigned short int T0CS = 5;
   sbit  T0CS_bit at OPTION_REG.B5;
   const register unsigned short int T0SE = 4;
   sbit  T0SE_bit at OPTION_REG.B4;
   const register unsigned short int PSA = 3;
   sbit  PSA_bit at OPTION_REG.B3;
   const register unsigned short int PS2 = 2;
   sbit  PS2_bit at OPTION_REG.B2;
   const register unsigned short int PS1 = 1;
   sbit  PS1_bit at OPTION_REG.B1;
   const register unsigned short int PS0 = 0;
   sbit  PS0_bit at OPTION_REG.B0;

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

Нет, именно регистры. В них программа может хранить число, хоть их и так немного.

Как раз такое "хранение" и нежелательно, поскольку может изменить конфигурацию МК, например активизировать какой-нибудь периферийный модуль. Что может привести к короткому замыканию на чипе, если предварительно порт модуля использовался в качестве порта ввода или имел высокий (или наоборот - низкий) уровень.

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...