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

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

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

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

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

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

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

 
Опции темы
Непрочитано 04.11.2005, 00:54  
AnB
Прописка
 
Регистрация: 23.06.2005
Сообщений: 166
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
AnB на пути к лучшему
По умолчанию Кто нибудь делал вольтметр на ПИК - откликнитесь

Нужно с помощью 18F452 измерять напряжение с индикацией на HD44780, вход - 15 вольт постоянки.
Нужен алгоритм, или примеры кода преобразования данных АЦП для индикации. Желательно на асме, может кому попадалось ?
Реклама:
__________________
Главный парадокс: Оптимист верит в то, что живет в лутшем из миров - пессемист боится, что так оно и есть....
AnB вне форума  
Непрочитано 04.11.2005, 13:55  
xelos
Прописка
 
Регистрация: 27.08.2004
Сообщений: 107
Сказал спасибо: 0
Сказали Спасибо 21 раз(а) в 20 сообщении(ях)
xelos на пути к лучшему
По умолчанию Re: Кто нибудь делал вольтметр на ПИК - откликнитесь

Сообщение от AnB
Нужно с помощью 18F452 измерять напряжение с индикацией на HD44780, вход - 15 вольт постоянки.
Нужен алгоритм, или примеры кода преобразования данных АЦП для индикации. Желательно на асме, может кому попадалось ?
вообще-то задача-то простенькая. конфигурируешь ацп, пишешь алгоритм индикации на HD44780 и потом преобразовать результат ацп в десятичное представление. что именно интересует?
xelos вне форума  
Непрочитано 04.11.2005, 14:07  
AnB
Прописка
 
Регистрация: 23.06.2005
Сообщений: 166
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
AnB на пути к лучшему
По умолчанию

Да не работает правильно индикация никак в младшей цифре после запятой - бред какой - то...

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

Код:
conv1:
; one HEX-byte to two DEC-byte
; in b1- hex; MSB(b1)-sign
; out b2-decH MSB(b2)-sign, b1-decL 
        clrf    b2
        clrf    bin_flag
        btfsc   b1, 7
        bsf     bin_flag, 7
        bcf     b1, 7
s_1:
        incf    b2, rf
        movlw   0x0A
        subwf   b1, rf
        btfsc   STATUS, 0
        goto    s_1             ;›=0
        btfsc   STATUS, 2
        goto    s_1             ;›=0
        nop                     ;‹0
        decf    b2, rf          ;restore H
        movlw   0x0A
        addwf   b1, rf          ;restore L
        btfsc   bin_flag, 7
        bsf     b2, 7
        return

Подпрограмма для преобразования байта дробной части
conv2:
;Fraction: one byte to two DEC-byte
;in b1
;out b2-h, b3-l
;resourse - cicl
        clrf    b2
        clrf    b3
        clrf    b4
        clrf    b5
        clrf    b6
        clrf    b7
        clrf    b8
        clrf    b9

        btfss   b1, 7
        bra     conv2_6
        movlw   0x05    ;+0.5
        movwf   b2
conv2_6:
        btfss   b1, 6
        bra     conv2_5
        movlw   0x05    ;+0.25
        movwf   b3
        movlw   0x02
        addwf   b2, rf
conv2_5:
        btfss   b1, 5
        bra     conv2_4
        movlw   0x05    ;+0.125
        movwf   b4
        movlw   0x02
        addwf   b3, rf
        incf    b2, rf
conv2_4:
        btfss   b1, 4
        bra     conv2_3
        movlw   0x05    ;+0.0625
        movwf   b5
        movlw   0x02
        addwf   b4, rf
        movlw   0x06
        addwf   b3, rf
conv2_3:
        btfss   b1, 3
        bra     conv2_2
        movlw   0x05    ;+0.03125
        movwf   b6
        movlw   0x02
        addwf   b5, rf
        incf    b4, rf
        movlw   0x03
        addwf   b3, rf
conv2_2:
        btfss   b1, 2
        bra     conv2_1
        movlw   0x05    ;+0.015625
        movwf   b7
        movlw   0x02
        addwf   b6, rf
        movlw   0x06
        addwf   b5, rf
        movlw   0x05
        addwf   b4, rf
        incf    b3, rf
conv2_1:
        btfss   b1, 1
        bra     conv2_0
        movlw   0x05    ;+0.0078125
        movwf   b8
        movlw   0x02
        addwf   b7, rf
        incf    b6, rf
        movlw   0x08
        addwf   b5, rf
        movlw   0x07
        addwf   b4, rf
conv2_0:
        btfss   b1, 0
        bra     conv2_05
        movlw   0x05    ;0.00390625
        movwf   b9
        movlw   2
        addwf   b8, rf
        movlw   6
        addwf   b7, rf
        movlw   9
        addwf   b5, rf
        movlw   3
        addwf   b4
conv2_05:               ;tst digit›9
        movlw   9
        cpfsgt  b5
        bra     conv2_04
        movlw   10
        subwf   b5, rf
        incf    b4, rf
        bra     conv2_05
conv2_04:
        movlw   9
        cpfsgt  b4
        bra     conv2_03
        movlw   10
        subwf   b4, rf
        incf    b3, rf
        bra     conv2_04
conv2_03:
        movlw   9
        cpfsgt  b3
        bra     conv2_end
        movlw   10
        subwf   b3, rf
        incf    b2, rf
        bra     conv2_03
conv2_end:
        return

   Используя эти подпрограммы преобразование выглядит так:
   (V_H=0x04,V_L=0xFE -› bi_4,bi_3,bi_2,bi_1)
;---asm---
    movff    V_H, b1
    call     conv1
    movff    b2, bi_4
    movff    b1, bi_3
    movff    V_L, b1
    call     conv2
    movff    b2, bi_2
    movff    b1, bi_1
;--- asm over----
__________________
Главный парадокс: Оптимист верит в то, что живет в лутшем из миров - пессемист боится, что так оно и есть....
AnB вне форума  
Непрочитано 04.11.2005, 15:08  
xelos
Прописка
 
Регистрация: 27.08.2004
Сообщений: 107
Сказал спасибо: 0
Сказали Спасибо 21 раз(а) в 20 сообщении(ях)
xelos на пути к лучшему
По умолчанию

мдя, кода-то скока...

вот пример преобразования 8-битного

Код:
;*************************************************  ****************
;       BIN2BCD (8 bit binary to BCD conversion subroutine)
;
;       This routine converts the 8 bit number in W to its BCD
;	equivalent with values 0 - 9 stored in HUND, TEN, & ONE
;	registers.
;
;	Usefull when binary data is to be converted into a user
;	readable format (use BCD2ASC to convert BCD values to
;	ASCII characters for display on a LCD or for serial 
;	transmission)
;
;	Input: 8 bit binary number in W register
;	Output: BCD values in HUND, TEN, & ONE registers
;
;	Requires: HUND, TEN, & ONE registers defined. 
;
;	Executed by:
;
;	MOVF	[REGISTER NAME],W
;	CALL	BIN2BCD
;
;	or
;
;	MOVLW	0xNN
;	CALL	BIN2BCD
;
;	DH MicroSystems, Inc.
;	WWW.DHMICRO.COM
;
;*************************************************  ****************
BIN2BCD	MOVWF	ONE
	CLRF	TEN
	CLRF	HUND		; init registers

H1	MOVLW	0x64		; 100
	SUBWF	ONE,F		; subtract 100 from number
	BTFSC	STATUS,C	; negative result?
	GOTO	H2		; no? goto H2
	GOTO	H3		; yes? goto H3 (100's done)
H2	INCF	HUND,F		; increment HUND register
	GOTO	H1		; & loop back for another test
H3	MOVLW	0x64		; 100
	ADDWF	ONE,F		; add 100 back to number

T1	MOVLW	0x0A		; 10
	SUBWF	ONE,F		; subtract 10 from number
	BTFSC	STATUS,C	; negative result?
	GOTO	T2		; no? goto T2
	GOTO	T3		; yes? goto T3 (10's done)
T2	INCF	TEN,F		; increment TEN register
	GOTO	T1		; & loop back for another test
T3	MOVLW	0x0A		; 10
	ADDWF	ONE,F		; add 10 back to number

	RETLW	0
потом тока запятую поставить где надо...
xelos вне форума  
Непрочитано 04.11.2005, 15:26  
AnB
Прописка
 
Регистрация: 23.06.2005
Сообщений: 166
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
AnB на пути к лучшему
По умолчанию

Пробовал таким способом, не получается, результат с АЦП, умноженный на константу - 16 bit... блин, что то делаю не так и не могу въехать что ? 8O
__________________
Главный парадокс: Оптимист верит в то, что живет в лутшем из миров - пессемист боится, что так оно и есть....
AnB вне форума  
Непрочитано 04.11.2005, 22:29  
AnB
Прописка
 
Регистрация: 23.06.2005
Сообщений: 166
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
AnB на пути к лучшему
По умолчанию

Сообщение от AnB
Да не работает правильно индикация никак в младшей цифре после запятой - бред какой - то...

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

Код:
conv1:
; one HEX-byte to two DEC-byte
; in b1- hex; MSB(b1)-sign
; out b2-decH MSB(b2)-sign, b1-decL 
        clrf    b2
        clrf    bin_flag
        btfsc   b1, 7
        bsf     bin_flag, 7
        bcf     b1, 7
s_1:
        incf    b2, rf
        movlw   0x0A
        subwf   b1, rf
        btfsc   STATUS, 0
        goto    s_1             ;›=0
        btfsc   STATUS, 2
        goto    s_1             ;›=0
        nop                     ;‹0
        decf    b2, rf          ;restore H
        movlw   0x0A
        addwf   b1, rf          ;restore L
        btfsc   bin_flag, 7
        bsf     b2, 7
        return

Подпрограмма для преобразования байта дробной части
conv2:
;Fraction: one byte to two DEC-byte
;in b1
;out b2-h, b3-l
;resourse - cicl
        clrf    b2
        clrf    b3
        clrf    b4
        clrf    b5
        clrf    b6
        clrf    b7
        clrf    b8
        clrf    b9

        btfss   b1, 7
        bra     conv2_6
        movlw   0x05    ;+0.5
        movwf   b2
conv2_6:
        btfss   b1, 6
        bra     conv2_5
        movlw   0x05    ;+0.25
        movwf   b3
        movlw   0x02
        addwf   b2, rf
conv2_5:
        btfss   b1, 5
        bra     conv2_4
        movlw   0x05    ;+0.125
        movwf   b4
        movlw   0x02
        addwf   b3, rf
        incf    b2, rf
conv2_4:
        btfss   b1, 4
        bra     conv2_3
        movlw   0x05    ;+0.0625
        movwf   b5
        movlw   0x02
        addwf   b4, rf
        movlw   0x06
        addwf   b3, rf
conv2_3:
        btfss   b1, 3
        bra     conv2_2
        movlw   0x05    ;+0.03125
        movwf   b6
        movlw   0x02
        addwf   b5, rf
        incf    b4, rf
        movlw   0x03
        addwf   b3, rf
conv2_2:
        btfss   b1, 2
        bra     conv2_1
        movlw   0x05    ;+0.015625
        movwf   b7
        movlw   0x02
        addwf   b6, rf
        movlw   0x06
        addwf   b5, rf
        movlw   0x05
        addwf   b4, rf
        incf    b3, rf
conv2_1:
        btfss   b1, 1
        bra     conv2_0
        movlw   0x05    ;+0.0078125
        movwf   b8
        movlw   0x02
        addwf   b7, rf
        incf    b6, rf
        movlw   0x08
        addwf   b5, rf
        movlw   0x07
        addwf   b4, rf
conv2_0:
        btfss   b1, 0
        bra     conv2_05
        movlw   0x05    ;0.00390625
        movwf   b9
        movlw   2
        addwf   b8, rf
        movlw   6
        addwf   b7, rf
        movlw   9
        addwf   b5, rf
        movlw   3
        addwf   b4
conv2_05:               ;tst digit›9
        movlw   9
        cpfsgt  b5
        bra     conv2_04
        movlw   10
        subwf   b5, rf
        incf    b4, rf
        bra     conv2_05
conv2_04:
        movlw   9
        cpfsgt  b4
        bra     conv2_03
        movlw   10
        subwf   b4, rf
        incf    b3, rf
        bra     conv2_04
conv2_03:
        movlw   9
        cpfsgt  b3
        bra     conv2_end
        movlw   10
        subwf   b3, rf
        incf    b2, rf
        bra     conv2_03
conv2_end:
        return

   Используя эти подпрограммы преобразование выглядит так:
   (V_H=0x04,V_L=0xFE -› bi_4,bi_3,bi_2,bi_1)
;---asm---
    movff    V_H, b1
    call     conv1
    movff    b2, bi_4
    movff    b1, bi_3
    movff    V_L, b1
    call     conv2
    movff    b2, bi_2
    movff    b1, bi_1
;--- asm over----
Уфф.. все... разобрался, код стопудово рабочий !
Ошибка была здесь
Код:
;---asm---
    movff    V_H, b1
    call     conv1
    movff    b2, bi_4
    movff    b1, bi_3
    movff    V_L, b1
    call     conv2
    movff    b2, bi_2
    movff    b1, bi_1
;--- asm over----
Надо так
Код:
;---asm---
    movff    V_H, b1
    call     conv1
    movff    b2, bi_4
    movff    b1, bi_3
    movff    V_L, b1
    call     conv2
    movff    b2, bi_2
    movff    b3, bi_1
;--- asm over----
__________________
Главный парадокс: Оптимист верит в то, что живет в лутшем из миров - пессемист боится, что так оно и есть....
AnB вне форума  
Непрочитано 24.11.2005, 00:37  
vovan_zh
Прописка
 
Регистрация: 29.08.2005
Сообщений: 139
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
vovan_zh на пути к лучшему
По умолчанию

Я правда на Си тренеруюсь, не могу разобраться как правильно результаты преобразования в вольты перевести?
vovan_zh вне форума  
Непрочитано 24.11.2005, 22:26  
xelos
Прописка
 
Регистрация: 27.08.2004
Сообщений: 107
Сказал спасибо: 0
Сказали Спасибо 21 раз(а) в 20 сообщении(ях)
xelos на пути к лучшему
По умолчанию

пропорцией.
пусть 5В максимум и 10 бит в преобразователе,
тогда 5/1024=х/Conv

где Conv - это то, что в преобразователе.
xelos вне форума  
Непрочитано 25.11.2005, 10:03  
AnB
Прописка
 
Регистрация: 23.06.2005
Сообщений: 166
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
AnB на пути к лучшему
По умолчанию

Сообщение от xelos
пропорцией.
пусть 5В максимум и 10 бит в преобразователе,
тогда 5/1024=х/Conv

где Conv - это то, что в преобразователе.
Извините но это не есть правильно..
Правильно 5/1023(!) = х/Conv
__________________
Главный парадокс: Оптимист верит в то, что живет в лутшем из миров - пессемист боится, что так оно и есть....
AnB вне форума  
Непрочитано 26.11.2005, 00:11  
Grey_Cat
Прописка
 
Регистрация: 31.03.2005
Сообщений: 223
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 14 сообщении(ях)
Grey_Cat на пути к лучшему
По умолчанию

Вечер всем добрый! Может вопрос и не совсем по теме, но тем не менее интересует схема вольтметра, имеряющего TRUE RMS (т. е. истинное значение измеряемого напряжения, вне зависмости от его формы). Буду благодарен за любую информацию.
Grey_Cat вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Может кто делал лазерный дальномер на микроконтроллере? andron13 Микроконтроллеры, АЦП, память и т.д 14 08.04.2016 07:47
Соеденение микроконтролера через FastEthernet - кто делал ? expolit Микроконтроллеры, АЦП, память и т.д 13 29.12.2007 22:51
Кто делал GSM-pager на PIC? колитесь double_dash Микроконтроллеры, АЦП, память и т.д 44 18.07.2007 00:18
Кто делал DC-DC наTDA2004? FOLKSDOICH Источники питания и свет 13 14.09.2006 15:41
Кто-нибудь сталкивался? megavolt Аудиотехника 9 24.09.2005 01:06


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


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