Страница 2 из 5

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Сб май 21, 2011 22:29:25
LawManiak
Если таймер настроить на счетчик, то в нем будет число боле 256, как его преобразовать в двоично-десятичное?

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Сб май 21, 2011 22:49:59
Jack_A
LawManiak писал(а):Если таймер настроить на счетчик, то в нем будет число боле 256, как его преобразовать в двоично-десятичное?
Сто раз этот вопрос в форуме перетирали. Разделить на единицы - десятки - сотни и т.д., преобразовать в код индикатора -- и на табло.
Строчка "Преобразование в двоично-десятичный" в поисковике дает много разумного и полезного.

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Вс май 22, 2011 00:39:40
LawManiak
Поискал, вразумительного нашел не много. Я в ассблере вообще не очень.
Может есть какой-то конкретный пример?

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Вс май 22, 2011 10:11:08
Jack_A
Могу, но только для AVR. Под 51-й почти никогда не пис'ал.

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Вс май 22, 2011 11:13:32
МитяРа
LawManiak, в поисковике лучше набрать строчку BIN BCD MCS51 вариантов масса..

Можешь вот тут почитать: http://radiokot.ru/forum/viewtopic.php?f=20&t=17812 :)

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Вс май 22, 2011 17:44:32
LawManiak
В таком случае такой вопрос. Ведь команду div мы можем применять только к A и B.
Какое максимальное число можно вместить в них?
могу я допустим 4х байтовое число записать в аккумулятор?

Jack_A
Если не сложно, хоть посмотрю логику...

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Вс май 22, 2011 20:23:36
Jack_A
Написано для младших моделей AVR, у которых нет аппаратного деления.

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

 ; Исходное число в R25(ст),R24(мл) .
 ; Результат - 5 байт по указателю Z (ст -> мл) .
 ; В массиве числа - НЕ СИМВОЛЫ !
 ; R25,R24 не сохраняются.
subt:	push	r16
	push	r17
	push	r18
	tst	r24
	brne	st1
	st	z+,r24
	st	z+,r24
	rjmp	part2
 ; Если R24=0, первые две цифры = 0,
 ; переход на 2-ю часть
	;
st1:	ldi	r18,high(10000)
	ldi	r17,low(10000)
	rcall	st_s ; выделили десятки тысяч
	ldi	r18,high(1000)
	ldi	r17,low(1000)
	rcall	st_s ; выделили тысячи
part2:	ldi	r18,high(100)
	ldi	r17,low(100)
	rcall	st_s ; выделили единицы
	;
	ldi	r16,0
st10:	subi	r24,10
	brcs	st15
	inc	r16
	rjmp	st10
st15:	subi	r24,-10
	st	z+,r16 ; распилили R24 на десятки - единицы
	st	z+,r24
	pop     r18
	pop     r17
	pop     r16
	ret
 ; ====
st_s:	ldi	r16,0    ; Подпрограмма деления `
sts05:	sub	r24,r17  ; R25,R24 на R18,R17
	sbc	r25,r18  ; Частное в R16 -> [Z+]
	brcs	sts10    ; Остаток в R25,R24
	inc	r16
	rjmp	sts05
sts10:	add	r24,r17
	adc	r25,r18
	st	z+,r16
	ret
	;
LawManiak писал(а):В таком случае такой вопрос. Ведь команду div мы можем применять только к A и B.
Какое максимальное число можно вместить в них?
могу я допустим 4х байтовое число записать в аккумулятор?
А можно в один стакан налить молоко, сок, водку и рассол , каждого по 200гр?
Моя прога для 2-байтового числа. Если надо 4 байта, ее надо модифицировать.

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Вс май 22, 2011 20:48:15
LawManiak
А теперь самый глупый вопрос. Сколько мне нужно выделять байт под 4х разрядное число в пределах 1к?

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Пн май 23, 2011 01:11:07
LawManiak
Вот тут нашел в одной книге пример использования в двоично-десятичный код, но не могу разобраться как же это реализовать в моей программе...
Допустим я получаю число 876 и записываю его в какую-то переменную tmp, как мне разбить его для индикации?...

Изображение
Изображение
Изображение
Изображение

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Пн май 23, 2011 11:42:22
Jack_A
LawManiak писал(а):А теперь самый глупый вопрос. Сколько мне нужно выделять байт под 4х разрядное число в пределах 1к?
Даю умный ответ на глупый вопрос : для 4-значного десятичного числа 0...9999 в его двоичном виде нужно 2 байта ( 0...0х270F ), которые обеспечат даже больший диапазон 0...65535
:)

Посмотрел вышеприведенный код - с моим практически 1 : 1. Только в части "десятки - единицы" не догоняю, бо практики с 51-ми почти не было.

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Чт июн 02, 2011 11:23:04
LawManiak
Подскажите, пожалуйста назначение этой схемы и из каких соображений для неё рассчитываются элементы? Мне её поставили знающие люди, сказали что так нада, что оно работает, но объяснять не стали... Оно у меня стоит на входе, с неё сигнал поступает на порт микроконтроллера...
Изображение

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Чт июн 02, 2011 11:29:04
МитяРа
Это входной усилитель сигнала с ограничением по входу..
Двухсторонний ограничитель собран на VD1 и VD2, на VT1 собран усилитель-инвертор, R4 задаёт рабочую точку для транзистора, а заодно обеспечивает ООС..
С8 - развязка по постоянному току..

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Чт июн 02, 2011 11:36:53
LawManiak
Можно поподробнее как в таком случае рассчитывается коэффициент усиления, зачем стоит R2 и почему именно 100 Ом и для чего 470 Ом на питании?

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Чт июн 02, 2011 12:01:36
МитяРа
LawManiak писал(а):470 Ом на питании?
Так не говорят, R5 является нагрузкой для VT1, т.е. на нём будет усиленный по амплитуде и проинвертированный входной сигнал..
LawManiak писал(а):ачем стоит R2
R2 это защитное и ограничивающее сопротивление, оно стоит последовательно со входом.
При больших входных сигналах /больше прямого напряжения на VD1 и VD2 примерно 0.6 вольта/ эти диоды открываются и начинают ограничивать напряжение на базе транзистора, а лишнее напряжение рассеивается на R2, заодно R2 ограничивает ток через диоды что-бы их не пробило..

Коэффициент усиления зависит от Кусиления транзистора и отношений R4 и R5..

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Чт июн 02, 2011 12:17:43
МитяРа
Да вот ещё:
R4 должен быть со звёздочкой, т.е. его при настройке надо будет подбирать..
от номинала C8 зависит частотный диапазон твоего прибора, а т.к. у тебя кГц, то ёмкость надо увеличить..
Вот можешь тут посмотреть-почитать.. http://www.qrz.ru/schemes/contribute/co ... /ch2.shtml

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Чт июн 02, 2011 13:08:49
LawManiak
Таким образом входной сигнал будет отграничен примерно в пределах +/- 0.6В?
Я тут поднял свои старые записи, пришел к выводу, что коэффициент усиления в этой схеме зависит фактически только от R4 и R2, тобишь Uвых=Uвх*Rос/Rг
правильно я понимаю? в этом случае коэффициент усиления получается 470, да? но тогда что определяет сопротивление коллектора... По идее оно задает ток питания транзистора, но как его рассчитать...
Параметры транзистора:
Наимен. КТ315А
тип n-p-n
Uкбо(и),В 25
Uкэо(и), В 25
Iкmax(и), мА 100
Pкmax(т), Вт 0.15
h21э 30-120
Iкбо, мкА 0.5
fгр., МГц 250

И почему R2 100, это какое-то стандартное значение?

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Чт июн 02, 2011 13:30:57
МитяРа
LawManiak писал(а):Таким образом входной сигнал будет отграничен примерно в пределах +/- 0.6В?
Не входной сигнал, а сигнал на базе транзистора..
LawManiak писал(а):только от R4 и R2
Нет.. R2 тут вообще не при чём..
LawManiak писал(а):что определяет сопротивление коллектора... По идее оно задает ток питания транзистора, но как его рассчитать...
Нет понятия "ток питания транзистора", есть - ток коллектора..
Он не расчитывается, а при расчётах его просто задают..
Вот смотри:
Входной уровень единицы для микросхемы максимальный, берём 3 вольта, это напряжение нам надо получить когда на вход усилителя ничего не подаётся../измеряемый сигнал в смысле/
Т.е. на коллекторе транзистора относительно корпуса мы должны получить 3 вольта../этот уровень устанавливается подбором R4/
На R5 тогда будет 5-3=2 вольта, ток коллектора транзистора будет 2/470=4.25мА

Когда у нас будет подаваться входной сигнал, то на коллекторе напряжение будет относительно 3-х вольт туда-сюда колебаться, например от 0.5 до 5 вольт...

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Чт июн 02, 2011 13:48:22
LawManiak
так... теперь я снова в тупике...
как же мне рассчитать коэффициент усиления для этого упт?
просто мне нужно сделать расчет всех элементов этой схемы и указать почему они тут стоят и для чего...

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Чт июн 02, 2011 14:23:54
МитяРа
LawManiak писал(а):просто мне нужно сделать расчет всех элементов этой схемы и указать почему они тут стоят и для чего..
Для чего мя те вроде про всё написал, а насчёт расчётов - ищи расчёт этой схемы включения транзистора..
Блин, даже щас и не вспомню, как это включение называется.. :cry:

Re: Цифровой частотомер на x51 (AT89S51)

Добавлено: Чт июн 02, 2011 15:06:52
LawManiak
Вообще я предполагал что здесь вот эта схема включения:
Изображение
но ты говоришь что по другому, так что я даже не знаю...