Cчет импульсов - Страница 15 - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 15 из 15«12131415
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » Cчет импульсов (счет импульсов)
Cчет импульсов
DeveloperX Дата: Чт, 05.06.2008, 16:05  |                                                                                                                Сообщение # 211
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

Yrok, не помогло!!!
вот все исходники
Прикрепления: voltmeter.zip(38Kb)
ЯНДЕКС Дата: 05.06.2008
holyuser Дата: Чт, 05.06.2008, 22:28  |                                                                                                                Сообщение # 212
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 233
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Вот что у меня получилось:


Code

'****************************************************************
'*  Name    : VoltMeter.pbp                    
'*  Author  : Never Mind                    
'*  Notice  : Copyright (c) 2008 Absolutely Free                 
'*  Date    : 05.6.2008 г.                    
'*  Version : 1.0                    
'*  Notes   : PIC16F676 & LCD 16x2                    
'****************************************************************

   DEFINE  OSC 4
   DEFINE  OSCCAL_1K 1     
   DEFINE  NO_CLRWDT 1

   DEFINE  LCD_DREG    PORTC
   DEFINE  LCD_DBIT    0
   DEFINE  LCD_RSREG    PORTC
   DEFINE  LCD_RSBIT    4
   DEFINE  LCD_EREG    PORTC
   DEFINE  LCD_EBIT    5
   DEFINE  LCD_BITS    4
   DEFINE  LCD_LINES    2
   DEFINE  LCD_COMMANDUS    2000
   DEFINE  LCD_DATAUS    50

   DEFINE  ADC_BITS 10
   DEFINE  ADC_CLOCK 3
   DEFINE  ADC_SAMPLEUS 50

   voltage   VAR WORD
   i         VAR WORD
   dummy     VAR WORD
   disp      VAR WORD
   scale     CON 6826

   OPTION_REG = %10000000
   PIE1 = 0
   TRISA = %00111111
   TRISC = %00000000
   ANSEL = 1
   PORTC = 0
   CMCON = 7
   ADCON0 = %10000001
   i = 10000

begin:
   ADCIN 0,voltage
   dummy = voltage * i
   disp = DIV32 scale
   LCDOUT $FE,128,"Input Voltage > "
   LCDOUT $FE,192,"  ",#(disp DIG 3),#(disp DIG 2),","_
   ,#(disp DIG 1),#(disp DIG 0)," Volts  "
   PAUSE 1000
   GOTO begin
    
   END

Добавлено (06.06.2008, 0:17:55)
---------------------------------------------
Все работает нормально... happy

Добавлено (06.06.2008, 4:28:39)
---------------------------------------------
А вот и схема:

DeveloperX Дата: Пт, 06.06.2008, 10:43  |                                                                                                                Сообщение # 213
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

всё понятно, кроме этого:
Quote (holyuser)
i = 10000
holyuser Дата: Пт, 06.06.2008, 11:20  |                                                                                                                Сообщение # 214
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 233
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Дело в том, что в PicBasic-е - только целые числа (без знака), а WORD макс. 65535.
Чтобы получить необходимое количество разрядов в результате, и при том минимизировать неточность округления
при вычислениях, в некоторых случаях приходится прибегать к таким вот приемам.

В нашем случае константа scale = 2^n/(Uref*Kd) = 68.26666(6)
где:
n=10 - разрядность АЦП
Uref=5V - опорное напряжение (в нашем случае это VDD)
Kd=3 - коэффициент деления входного напряжения резистивным делителем: Kd=(R1+R2)/R2

Ясно, что такое значение scale непригодно для непосредственного использования в программе.
Поэтому scale нужно сначала умножить на подходящее число 10^m, и при вычислениях учитывать это,
чтобы не превысить ограничения PicBasic-а.
Вот откуда i=10000

Хотя, наверно, можно сделать и по-другому, но это вопрос вкуса...

Сообщение отредактировал holyuser - Пт, 06.06.2008, 11:24
DeveloperX Дата: Вт, 10.06.2008, 15:00  |                                                                                                                Сообщение # 215
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

holyuser, БОЛЬШУЩЕЕ спасибо!!!
всё получилось!!!
cjvjd Дата: Ср, 30.07.2008, 00:19  |                                                                                                                Сообщение # 216
Группа: Проверенные
Ранг:  Новенький
Сообщений: 3
Репутация: 0   ±
Замечания:   ±
На сайте с 17.07.2008

Статус: Offline

Здравствуйте!
Объясните, пожалуйста, программа microbasic compiler for pic ver. 7.0.0 ну ни как не хочет понимать COUNT и PULSIN или у этой программы есть другая команда? В helpe этих команд также нет. Заранее спасибо. Владимир Москва. surprised
Форум Picbasic.ru » Программирование МК » PicBasicPro » Cчет импульсов (счет импульсов)
Страница 15 из 15«12131415
Поиск: