Измерительное оборудование Осциллографы, мультиметры, анализаторы и другая измерительная техника необходимая каждому разработчику. |
04.11.2005, 00:54
|
|
Прописка
Регистрация: 23.06.2005
Сообщений: 166
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
|
Кто нибудь делал вольтметр на ПИК - откликнитесь
Нужно с помощью 18F452 измерять напряжение с индикацией на HD44780, вход - 15 вольт постоянки.
Нужен алгоритм, или примеры кода преобразования данных АЦП для индикации. Желательно на асме, может кому попадалось ?
__________________
Главный парадокс: Оптимист верит в то, что живет в лутшем из миров - пессемист боится, что так оно и есть....
|
|
|
|
04.11.2005, 13:55
|
|
Прописка
Регистрация: 27.08.2004
Сообщений: 107
Сказал спасибо: 0
Сказали Спасибо 21 раз(а) в 20 сообщении(ях)
|
Re: Кто нибудь делал вольтметр на ПИК - откликнитесь
Сообщение от AnB
|
Нужно с помощью 18F452 измерять напряжение с индикацией на HD44780, вход - 15 вольт постоянки.
Нужен алгоритм, или примеры кода преобразования данных АЦП для индикации. Желательно на асме, может кому попадалось ?
|
вообще-то задача-то простенькая. конфигурируешь ацп, пишешь алгоритм индикации на HD44780 и потом преобразовать результат ацп в десятичное представление. что именно интересует?
|
|
|
|
04.11.2005, 14:07
|
|
Прописка
Регистрация: 23.06.2005
Сообщений: 166
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
|
Да не работает правильно индикация никак в младшей цифре после запятой - бред какой - то...
Вот программа конвертации, не моя, пока, тестируя отображаю на семисгментном индикаторе, - т.е. двоично десятичное в порт, а там дешифраторы, так вот - с цифрами после запятой - не пойму в чем дело
Код:
|
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---- |
__________________
Главный парадокс: Оптимист верит в то, что живет в лутшем из миров - пессемист боится, что так оно и есть....
|
|
|
|
04.11.2005, 15:08
|
|
Прописка
Регистрация: 27.08.2004
Сообщений: 107
Сказал спасибо: 0
Сказали Спасибо 21 раз(а) в 20 сообщении(ях)
|
мдя, кода-то скока...
вот пример преобразования 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 |
потом тока запятую поставить где надо...
|
|
|
|
04.11.2005, 15:26
|
|
Прописка
Регистрация: 23.06.2005
Сообщений: 166
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
|
Пробовал таким способом, не получается, результат с АЦП, умноженный на константу - 16 bit... блин, что то делаю не так и не могу въехать что ? 8O
__________________
Главный парадокс: Оптимист верит в то, что живет в лутшем из миров - пессемист боится, что так оно и есть....
|
|
|
|
04.11.2005, 22:29
|
|
Прописка
Регистрация: 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---- |
|
Уфф.. все... разобрался, код стопудово рабочий !
Ошибка была здесь
Код:
|
;---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---- |
__________________
Главный парадокс: Оптимист верит в то, что живет в лутшем из миров - пессемист боится, что так оно и есть....
|
|
|
|
24.11.2005, 00:37
|
|
Прописка
Регистрация: 29.08.2005
Сообщений: 139
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Я правда на Си тренеруюсь, не могу разобраться как правильно результаты преобразования в вольты перевести?
|
|
|
|
24.11.2005, 22:26
|
|
Прописка
Регистрация: 27.08.2004
Сообщений: 107
Сказал спасибо: 0
Сказали Спасибо 21 раз(а) в 20 сообщении(ях)
|
пропорцией.
пусть 5В максимум и 10 бит в преобразователе,
тогда 5/1024=х/Conv
где Conv - это то, что в преобразователе.
|
|
|
|
25.11.2005, 10:03
|
|
Прописка
Регистрация: 23.06.2005
Сообщений: 166
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
|
Сообщение от xelos
|
пропорцией.
пусть 5В максимум и 10 бит в преобразователе,
тогда 5/1024=х/Conv
где Conv - это то, что в преобразователе.
|
Извините но это не есть правильно..
Правильно 5/1023(!) = х/Conv
__________________
Главный парадокс: Оптимист верит в то, что живет в лутшем из миров - пессемист боится, что так оно и есть....
|
|
|
|
26.11.2005, 00:11
|
|
Прописка
Регистрация: 31.03.2005
Сообщений: 223
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 14 сообщении(ях)
|
Вечер всем добрый! Может вопрос и не совсем по теме, но тем не менее интересует схема вольтметра, имеряющего TRUE RMS (т. е. истинное значение измеряемого напряжения, вне зависмости от его формы). Буду благодарен за любую информацию.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:45.
|
|