Помоги сайту
Поддержи наш сайт
Через WebMoney
U222865683087
R391933670808
Z877043628365
E649133782052
или пополни нашу SMS копилку
Каталог статей
Определяем цоколевку биполярных транзисторов
Code
#include <mega8.h> #include <delay.h> #asm .equ __lcd_port=0x18 #endasm #include <lcd.h> typedef unsigned char byte; byte b=0,c=0,e=0,t=0; void pd1(byte v,byte o) { //Резисторы на 270 Ом PORTD.2=(v>>2)&1; PORTD.1=(v>>1)&1; PORTD.0=v&1; DDRD.2=(o>>2)&1; DDRD.1=(o>>1)&1; DDRD.0=o&1; } void pd2(byte v,byte o) { //Резисторы на 10 КОм PORTD.5=(v>>2)&1; PORTD.4=(v>>1)&1; PORTD.3=v&1; DDRD.5=(o>>2)&1; DDRD.4=(o>>1)&1; DDRD.3=o&1; } void pd3(byte v,byte o) { //Резисторы на 100КОм PORTC.2=(v>>2)&1; PORTC.1=(v>>1)&1; PORTC.0=v&1; DDRC.2=(o>>2)&1; DDRC.1=(o>>1)&1; DDRC.0=o&1; } void pnp_b() { //Поиск базы ПНП транзистора byte p=0; pd3(0,0); pd2(0,7); pd1(3,3); if (PIND.2!=0) { b=3; p++; } pd1(5,5); if (PIND.1!=0) { b=2; p++; } pd1(6,6); if (PIND.0!=0) { b=1; p++; } if (p>1) b=0; } void pnp_ce() { //Поиск коллектора и эммитора ПНП транзистора switch (b) { case 1: pd3(0,1); pd1(4,4); pd2(0,2); if (PINC.1!=0) e=3; else c=3; pd1(2,2); pd2(0,4); if (PINC.2!=0) e=2; else c=2; break; case 2: pd3(0,2); pd1(4,4); pd2(0,1); if (PINC.0!=0) e=3; else c=3; pd1(1,1); pd2(0,4); if (PINC.2!=0) e=1; else c=1; break; case 3: pd3(0,4); pd1(2,2); pd2(0,1); if (PINC.0!=0) e=2; else c=2; pd1(1,1); pd2(0,2); if (PINC.1!=0) e=1; else c=1; } } void npn_b() { //Поиск базы НПН транзистора byte n=0; pd3(0,0); pd2(0,7); pd1(3,3); if (PIND.2==0) { b=3; n++; } pd1(5,5); if (PIND.1==0) { b=2; n++; } pd1(6,6); if (PIND.0==0) { b=1; n++; } if (n>1) b=0; } void npn_ce() { //Поиск коллектора и эммитора НПН транзистора switch (b) { case 1: pd3(1,1); pd1(0,4); pd2(2,2); if (PINC.1==0) e=3; else c=3; pd1(0,2); pd2(4,4); if (PINC.2==0) e=2; else c=2; break; case 2: pd3(2,2); pd1(0,4); pd2(1,1); if (PINC.0==0) e=3; else c=3; pd1(0,1); pd2(4,4); if (PINC.2==0) e=1; else c=1; break; case 3: pd3(4,4); pd1(0,2); pd2(1,1); if (PINC.0==0) e=2; else c=2; pd1(0,1); pd2(2,2); if (PINC.1==0) e=1; else c=1; } } void t_test() { //Тест транзистора byte tmp; t=0; b=0; c=0; e=0; pnp_b(); //Ищем базу ПНП if (b==0) { //Если не нашли базу t=1; npn_b(); //Ищем базу НПН } if (b==0) return; //Не нашли ни чего if (t==0) pnp_ce(); else npn_ce(); //Ищем все остальное //Производим проверку найденных выводов tmp=c+e; if (tmp>3) { if (c>e) tmp=c-e; else tmp=e-c; } if (tmp!=b) b=0; pd1(0,0); pd2(0,0); pd3(0,0); } void lcd_xn(byte x) { lcd_putchar('X'); lcd_putchar(x+48); } void lcd_show() { lcd_clear(); lcd_putsf("TRANZ - "); if (b!=0) { if (t==0) lcd_putsf("PNP"); else lcd_putsf("NPN"); lcd_gotoxy(0,1); lcd_putsf("E-"); lcd_xn(e); lcd_putsf(" B-"); lcd_xn(b); lcd_putsf(" C-"); lcd_xn(c); }else{ lcd_putsf("ERROR"); } } void main(void) { PORTB=0; DDRB=0; PORTC=0; DDRC=0; PORTD=0; DDRD=0; ACSR=0x80; lcd_init(16); while (1) { t_test(); //Тестируем транзистор lcd_show(); //Отображаем результат delay_ms(200); } }
Категория: Учимся работать с AVR | Добавил: HiSER (13.05.2010)
| Автор: Литвин Артём
Просмотров: 13712 | Комментарии: 13
| Теги: ATmega8 , транзистор , тест , цоколевка
| Рейтинг: 4.5 /2 |
- Оценить -
Отлично
Хорошо
Неплохо
Плохо
Ужасно
Всего комментариев: 13
Порядок вывода комментариев:
По умолчанию
Сначала новые
Сначала старые
13
Илья
(29.06.2012 03:55)
0
А я еще дипломную работу делаю по этой теме!))) Я думал что я один такой ЧАЙНИК!?!?!?!?
11
kitekat
(24.01.2012 14:45)
0
Есть такой немецкий товарищ Marcus - он сделал универсальный определитель элементов на AtMega8 (Transistometer). Проект открытый, поищите в сети. Меряет диоды, транзисторы биполярные и полевые, тиристоры, резисторы и конденсаторы.
9
KronX
(03.08.2011 20:48)
0
Подобную бы схему, но без LCD, семи сегментной индикацией например.... было бы супер
7
alexnirt12
(10.07.2011 13:31)
0
лохи все , где определение ?
0
А как определить цоколевку транзисторов большой мощности, например КТ 805, 815, 817?
0
прибор работает только с транзисторами малой и средней мощности. У КТ 805, 815, 817 выводы не определяет. А номиналы резисторов 100К и 10К как расчитывались? Может стоит их уменьшить?
0
собрал все супер.. вот еслиб еще полевики тестил..
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация |
Вход ]
Copyright My-AVR © 2024