Стенд для прозвонки 210 цепей состоит, в основном, из 4 плат (1 Плата-А и 3 Плата-Б), блока питания +5В, разъемов подключения тестируемых устройств, тумблера включения питания и кнопки сброса. Плата-А имеет 30 контрольных цепей и интерфейс RS-232 для связи с управляющей программой на компьютере. Плата-В имеет 60 контрольных цепей. Все платы соединены последовательно цепями TX, RX контроллеров и имеют одинаковую прошивку, которая написана на C и может быть портирована на контроллер другого типа с учетом корректировки периферии.
Компьютерная программа ConnTest написана на C# Visual Studio. DEPLOY Reliase содержит папку DotNetFX 26,5 Мб для поддержки Visual Studio и два файла setup.exe 473 Кб и Setup1.msi 488 Кб.
Загрузить архив проекта STAND_K210_PROJECT.rar можно здесь:
STAND_K210_PROJECT.rar (184 Загрузки)Программа устанавливается легко, даже под Win 11.
Но, COM-port?
Между прочим, в пульте-имитаторе используется микросхема FT232RL, которая через разъем мини-USB X21 открывает на компьютере COM3: Управление матричной клавиатурой и светодиодами
ComUSB-STLabs (85 Загрузок)Плата А
Плата Б
Скачать схемы в формате P-CAD 2006 можно здесь:
Схемы стенда К210 P-CAD 2006 (70 Загрузок)P-CAD 2006, помнится, последняя версия до Altium Designer, (337 Мб) можно скачать здесь:
PCAD_2006 (74 Загрузки)Может понадобится P-CAD 2004, так он здесь:
INSTALL (79 Загрузок)Программа на C для всех 7-ми контроллеров
#include <reg52.h>
#include <stdio.h>
sbit P0_0 = P0^0;
sbit P0_1 = P0^1;
sbit P0_2 = P0^2;
sbit P0_3 = P0^3;
sbit P0_4 = P0^4;
sbit P0_5 = P0^5;
sbit P0_6 = P0^6;
sbit P0_7 = P0^7;
sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit P1_2 = P1^2;
sbit P1_3 = P1^3;
sbit P1_4 = P1^4;
sbit P1_5 = P1^5;
sbit P1_6 = P1^6;
sbit P1_7 = P1^7;
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;
sbit P2_4 = P2^4;
sbit P2_5 = P2^5;
sbit P2_6 = P2^6;
sbit P2_7 = P2^7;
sbit P3_0 = P3^0;
sbit P3_1 = P3^1;
sbit P3_2 = P3^2;
sbit P3_3 = P3^3;
sbit P3_4 = P3^4;
sbit P3_5 = P3^5;
sbit P3_6 = P3^6;
sbit P3_7 = P3^7;
bit pin0(char io) {if (io==0) P0_0=0 ; else P0_0=1; return P0_0;}
bit pin1(char io) {if (io==0) P0_1=0 ; else P0_1=1; return P0_1;}
bit pin2(char io) {if (io==0) P0_2=0 ; else P0_2=1; return P0_2;}
bit pin3(char io) {if (io==0) P0_3=0 ; else P0_3=1; return P0_3;}
bit pin4(char io) {if (io==0) P0_4=0 ; else P0_4=1; return P0_4;}
bit pin5(char io) {if (io==0) P0_5=0 ; else P0_5=1; return P0_5;}
bit pin6(char io) {if (io==0) P0_6=0 ; else P0_6=1; return P0_6;}
bit pin7(char io) {if (io==0) P0_7=0 ; else P0_7=1; return P0_7;}
bit pin8(char io) {if (io==0) P1_0=0 ; else P1_0=1; return P1_0;}
bit pin9(char io) {if (io==0) P1_1=0 ; else P1_1=1; return P1_1;}
bit pin10(char io) {if (io==0) P1_2=0 ; else P1_2=1; return P1_2;}
bit pin11(char io) {if (io==0) P1_3=0 ; else P1_3=1; return P1_3;}
bit pin12(char io) {if (io==0) P1_4=0 ; else P1_4=1; return P1_4;}
bit pin13(char io) {if (io==0) P1_5=0 ; else P1_5=1; return P1_5;}
bit pin14(char io) {if (io==0) P1_6=0 ; else P1_6=1; return P1_6;}
bit pin15(char io) {if (io==0) P1_7=0 ; else P1_7=1; return P1_7;}
bit pin16(char io) {if (io==0) P2_7=0 ; else P2_7=1; return P2_7;}
bit pin17(char io) {if (io==0) P2_6=0 ; else P2_6=1; return P2_6;}
bit pin18(char io) {if (io==0) P2_5=0 ; else P2_5=1; return P2_5;}
bit pin19(char io) {if (io==0) P2_4=0 ; else P2_4=1; return P2_4;}
bit pin20(char io) {if (io==0) P2_3=0 ; else P2_3=1; return P2_3;}
bit pin21(char io) {if (io==0) P2_2=0 ; else P2_2=1; return P2_2;}
bit pin22(char io) {if (io==0) P2_1=0 ; else P2_1=1; return P2_1;}
bit pin23(char io) {if (io==0) P2_0=0 ; else P2_0=1; return P2_0;}
bit pin24(char io) {if (io==0) P3_2=0 ; else P3_2=1; return P3_2;}
bit pin25(char io) {if (io==0) P3_3=0 ; else P3_3=1; return P3_3;}
bit pin26(char io) {if (io==0) P3_4=0 ; else P3_4=1; return P3_4;}
bit pin27(char io) {if (io==0) P3_5=0 ; else P3_5=1; return P3_5;}
bit pin28(char io) {if (io==0) P3_6=0 ; else P3_6=1; return P3_6;}
bit pin29(char io) {if (io==0) P3_7=0 ; else P3_7=1; return P3_7;}
code bit (code *arpin[])(char)={pin0, pin1, pin2, pin3, pin4, pin5, pin6, pin7,
pin8, pin9, pin10, pin11, pin12, pin13, pin14,
pin15, pin16, pin17, pin18, pin19, pin20, pin21,
pin22, pin23, pin24, pin25, pin26, pin27, pin28,
pin29};
#define ini 248 //0xF8 11111000
#define dataread 250 //0xFA 11111010
data unsigned char i, receive = 255, num, mynum, prev, j, k, l, m;
data unsigned char buftrans[10];
bdata unsigned char buf[5];
sbit b2 = buf[2]^0;
sbit b3 = buf[3]^0;
static unsigned long overflow_count = 0;
// TIMER_0 INTERRUPT ROUTINE ********************************************
static void timer_0 (void) interrupt 1 //using 2
{
overflow_count++;
}
//*************************************************************************
void crc() //счётчик CRC8
{
l = 0;
for (j = 0; j < 4; j++)
{
m = buf[j];
for (k = 0; k < 8; k++)
{
if ((m ^ l) & 1) {l ^= 0x18; l >>= 1; l |= 0x80;}
else l >>= 1;
m >>= 1;
}
}
buf[4] = l;
}
//*************************************************************************
void delay(unsigned long ticks)
{
while(ticks--);
}
//*************************************************************************
char putch (char c) {
while (!TI);
TI = 0;
return (SBUF = c);
}
//*************************************************************************
void main(void)
{
TMOD = 0x20 | 2; // Baud rate for timer_1 | timer_0 with reload
TH1 = 0xFD; // Baud rate
PCON ^= 0x80; // 0x0D0H for AT89C51
SCON = 0x50;
TR1 = 1; // start timer_1
TH0 = 256 - 184;
TL0 = TH0;
TI = 1;
buftrans[j++] = 7;
TR0 = 1;
ET0 = 1;
EA = 1
while (overflow_count < 10000)// ES = 1;
{
if (RI)
{
RI = 0;
buftrans[j] = SBUF;
--buftrans[j];
if (j < 9) j++; else j = 0;
}
delay(1000);
if (TI && (i != j) && !RI)
{
TI = 0;
SBUF = buftrans[i];
if (i < 9) i++; else i = 0;
}
}
EA = 0;
ET0 = 0;
TR0 = 0;
TI = 1;
while(1)
{
receive = _getkey();
if (receive == dataread)
{
putch(receive); prev = mynum*5;
buf[0] = P0; buf[1] = P1;
buf[2] = P2; b3 = b2;
for (i=0; i < 7; i++) {buf[2] >>= 1; buf[3] <<= 1; b3 = b2;}
buf[2] = buf[3];
buf[3] = (P3 >> 2) | 0xC0; crc();
while (prev) {putch(_getkey()); prev--;}
for (i = 0; i < 5; i++) putch(buf[i]);
}
else
{
if (receive < 210)
{
putch(receive);
P0 = 0xFF;
P1 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;
num = receive/30;
if (num == mynum) {num = receive % 30; arpin[num](0);}
}
else if (receive == ini)
{
putch(receive);
mynum = _getkey(); putch(mynum + 1);
}
}
receive = 255;
}
}
HELP компьютерной программы ConnTest