Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB_WORKS.doc
Скачиваний:
2
Добавлен:
06.11.2018
Размер:
710.66 Кб
Скачать

4.2. Подпрограммы мeхатронного объекта.

ФАЙЛ DEV_LIS.H.

[1] /*##############################################*/

[2] /*

[3] Copyright (C) 2009 by A.E.Stefanovich tel. 236-2729, 268-3916

[4] Moscow State University of Instrument-making and Computer Sciences.

[5] (MGUPI).

[6] Chair TI-1.

[7] */

[8] /*##############################################*/

[9] /* File: DEV_LIS.H

[10] Imitator of the schemes electronics. [ DEMO version ].

[11] */

[12] /*############################################# PROGRAME */

[13] #ifndef DEV_LIS_

[14] #define DEV_LIS_

[15] /*============================= Declarations */

[16] int Title_sheet();

[17] int Dev_pct(int mode); /* Picture */

[18] int Dev_logD(int kx, int ky); /* Logic [ DEMO version ]. */

[19] /*============================= Device constants */

[20] /*-------- Dimention of the picture [draft] (row, column) */

[21] #define ROW_D 40

[22] #define COL_D 50

[23] /*============================= Device variables */

[24] /*-------- Device */

[25] unsigned int X0,X1,X2; /* Entrances */

[26] unsigned int Y0,Y1,Y2; /* Invert. Entrances */

[27] unsigned int DD2or,DD3and,DD4and; /* 1 range */

[28] unsigned int DD5or,DD6or,DD7and; /* 2 range */

[29] /*============================= Text */

[30] /*-------- Text (title sheet) */

[31] char *Title_1=

[32] " Moscow State University of Instrument-making and Computer Sciences ";

[33] char *Title_2=

[34] " I M I T A T O R - L I S ";

[35] char *Title_2a=

[36] "(Imitator of the schemes electronic)";

[37] char *Title_3=

[38] " Student: Livanov I. S. ";

[39] char *Title_4=

[40] " Group: TI-1-08-03 (d); Code: 94505 ";

[41] char *Title_5=

[42] " Discipline: Programming (3401) ";

[43] char *Title_6=

[44] " Specialty: 220301 ";

[45] char *Title_7=

[46] " Chair TI-1 ";

[47] char *Title_8=

[48] " Teacher: A.E. Stefanovich ";

[49] char *Title_9=

[50] " Year: 2009 ";

[51] /*------------- Text (device) */

[52] char *Title_10=

[53] " Z0 = (X1 | X2) | (Y0 & Y1) ";

[54] char *Title_11=

[55] " Z1 = (Y2 & X0) | (X1 | X2) ";

[56] char *Title_12=

[57] " Z2 = (Y0 & Y1) & (Y2 & X0) ";

[58] /*------------- Demo (ON/OFF) */

[59] extern int Demo;

[60] /*############################### SUBPROGRAMS */

[61] /*IIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/

[62] int Title_sheet()

[63] {

[64] /*-------- Variables */

[65] int x,y;

[66] int kx; /* Scale axis X */

[67] int ky; /* Scale axis Y */

[68] /*-------- Graph. initialisation */

[69] Graph_regime();

[70] /*-------- Scale axis X & axis Y */

[71] kx=Maxx/COL;

[72] ky=Maxy/ROW;

[73] /*-------- Title 1 */

[74] settextjustify(CENTER_TEXT,CENTER_TEXT);

[75] settextstyle(SMALL_FONT,HORIZ_DIR,5);

[76] setcolor(YELLOW);

[77] setbkcolor(BLACK);

[78] x=Maxx/2+1*kx;

[79] y=1*ky;

[80] outtextxy(x,y,Title_1); /* MGUPI */

[81] /*-------- Frame */

[82] setlinestyle(SOLID_LINE,0,NORM_WIDTH);

[83] setcolor(WHITE);

[84] setbkcolor(BLACK);

[85] x=0; /* 0*kx */

[86] y=2*ky;

[87] Rectangle2(x,y,Maxx,Maxy);

[88] setfillstyle(SOLID_FILL,BLUE);

[89] x=Maxx/2;

[90] y=Maxy/2;

[91] floodfill(x,y,WHITE);

[92] /*-------- Text */

[93] settextjustify(CENTER_TEXT,CENTER_TEXT);

[94] /**/

[95] settextstyle(SMALL_FONT,HORIZ_DIR,5);

[96] setcolor(YELLOW);

[97] x=Maxx/2;

[98] y=4*ky;

[99] outtextxy(x,y,Title_7); /* TI-1 */

[100] /**/

[101] settextstyle(TRIPLEX_FONT,HORIZ_DIR,0);

[102] setusercharsize(1,1,3,2);

[103] x=Maxx/2;

[104] y=11*ky;

[105] setcolor(BLACK);

[106] outtextxy(x,y,Title_2); /* IMITATOR */

[107] setcolor(WHITE);

[108] outtextxy(x+4,y+4,Title_2);

[109] /**/

[110] settextstyle(SMALL_FONT,HORIZ_DIR,7);

[111] setcolor(WHITE);

[112] x=Maxx/2;

[113] y=14*ky;

[114] outtextxy(x,y,Title_2a); /* (imitator) */

[115] /**/

[116] settextstyle(SMALL_FONT,HORIZ_DIR,7);

[117] setcolor(YELLOW);

[118] x=Maxx/2;

[119] y=18*ky;

[120] outtextxy(x,y,Title_3); /* Student */

[121] /**/

[122] settextstyle(SMALL_FONT,HORIZ_DIR,7);

[123] setcolor(YELLOW);

[124] x=Maxx/2;

[125] y=19*ky;

[126] outtextxy(x,y,Title_4); /* Group, Code */

[127] /**/

[128] settextstyle(SMALL_FONT,HORIZ_DIR,5);

[129] setcolor(LIGHTGRAY);

[130] x=Maxx/2;

[131] y=21*ky;

[132] outtextxy(x,y,Title_6); /* Speciality */

[133] /**/

[134] settextstyle(SMALL_FONT,HORIZ_DIR,5);

[135] setcolor(LIGHTGRAY);

[136] x=Maxx/2;

[137] y=22*ky;

[138] outtextxy(x,y,Title_5); /* Discipline... */

[139] /**/

[140] settextstyle(SMALL_FONT,HORIZ_DIR,5);

[141] setcolor(LIGHTGRAY);

[142] x=Maxx/2;

[143] y=23*ky;

[144] outtextxy(x,y,Title_8); /* Teacher */

[145] /**/

[146] settextstyle(SMALL_FONT,HORIZ_DIR,5);

[147] setcolor(LIGHTGRAY);

[148] x=Maxx/2;

[149] y=24*ky;

[150] outtextxy(x,y,Title_9); /* Year */

[151] /*-------- Happy work */

[152] settextstyle(SMALL_FONT,HORIZ_DIR,7);

[153] x=Maxx/2;

[154] y=16*ky;

[155] while(bioskey(1)==0)

[156] {

[157] setcolor(random(16));

[158] outtextxy(x,y," HAPPY WORK ");

[159] delay(50);

[160] }

[161] bioskey(0);

[162] /*-------- Return to text mode */

[163] Text_regime();

[164] /**/

[165] return 0;

[166] }

[167] /*IIIIIIIIIIIIIIIIIIIIIIIIIIIII*/

[168] int Dev_pct(int mode)

[169] {

[170] /*-------- Variables */

[171] int x,y;

[172] int kx; /* Scale axis X */

[173] int ky; /* Scale axis Y */

[174] /*-------- Graph. initialisation */

[175] Graph_regime();

[176] /*-------- Scale axis X & axis Y */

[177] kx=Maxx/COL_D;

[178] ky=Maxy/ROW_D;

[179] /*-------- Frame */

[180] setbkcolor(BLACK);

[181] setcolor(LIGHTGRAY);

[182] setlinestyle(SOLID_LINE,0,NORM_WIDTH);

[183] rectangle(0,0,Maxx,Maxy);

[184] /*-------- Title */

[185] settextjustify(CENTER_TEXT,CENTER_TEXT);

[186] settextstyle(SMALL_FONT,HORIZ_DIR,9);

[187] setcolor(CYAN);

[188] outtextxy(36*kx,2*ky,Title_2);

[189] /**/

[190] setcolor(MAGENTA);

[191] outtextxy(36*kx-1,2*ky-1,Title_2);

[192] /**/

[193] setcolor(YELLOW);

[194] outtextxy(36*kx-2,2*ky-2,Title_2);

[195] /*-------- Devices */

[196] setbkcolor(BLACK);

[197] settextjustify(CENTER_TEXT,CENTER_TEXT);

[198] settextstyle(SMALL_FONT,HORIZ_DIR,6);

[199] setlinestyle(SOLID_LINE,0,NORM_WIDTH);

[200] /*-------- Devices Invertors */

[201] /* invertor (NOT) DD1.1 */

[202] setcolor(LIGHTGRAY);

[203] outtextxy(10*kx,1*ky,"DD1.1");

[204] setcolor(WHITE);

[205] RectangleN(8*kx,2*ky,12*kx,6*ky,3);

[206] setcolor(YELLOW);

[207] outtextxy(10*kx,4*ky,"NOT");

[208] /* invertor (NOT) DD1.2 */

[209] setcolor(LIGHTGRAY);

[210] outtextxy(10*kx,7*ky,"DD1.2");

[211] setcolor(WHITE);

[212] RectangleN(8*kx,8*ky,12*kx,12*ky,3);

[213] setcolor(YELLOW);

[214] outtextxy(10*kx,10*ky,"NOT");

[215] /* invertor (NOT) DD1.3 */

[216] setcolor(LIGHTGRAY);

[217] outtextxy(10*kx,13*ky,"DD1.3");

[218] setcolor(WHITE);

[219] RectangleN(8*kx,14*ky,12*kx,18*ky,3);

[220] setcolor(YELLOW);

[221] outtextxy(10*kx,16*ky,"NOT");

[222] /*-------- Devices Range 1 */

[223] /* DD2 OR */

[224] setcolor(LIGHTGRAY); outtextxy(28*kx,17*ky,"DD2");

[225] setcolor(WHITE); RectangleN(26*kx,18*ky,30*kx,22*ky,3);

[226] setcolor(YELLOW);

[227] outtextxy(28*kx,20*ky,"OR");

[228] /* DD3 AND */

[229] setcolor(LIGHTGRAY); outtextxy(28*kx,23*ky,"DD3");

[230] setcolor(WHITE); RectangleN(26*kx,24*ky,30*kx,28*ky,3);

[231] setcolor(YELLOW);

[232] outtextxy(28*kx,26*ky,"AND");

[233] /* DD4 AND */

[234] setcolor(LIGHTGRAY); outtextxy(28*kx,29*ky,"DD4");

[235] setcolor(WHITE); RectangleN(26*kx,30*ky,30*kx,34*ky,3);

[236] setcolor(YELLOW);

[237] outtextxy(28*kx,32*ky,"AND");

[238] /*-------- Devices Range 2 */

[239] /* DD5 OR */

[240] setcolor(LIGHTGRAY); outtextxy(40*kx,17*ky,"DD5");

[241] setcolor(WHITE); RectangleN(38*kx,18*ky,42*kx,22*ky,3);

[242] setcolor(YELLOW);

[243] outtextxy(40*kx,20*ky,"OR");

[244] /* DD6 OR */

[245] setcolor(LIGHTGRAY); outtextxy(40*kx,23*ky,"DD6");

[246] setcolor(WHITE); RectangleN(38*kx,24*ky,42*kx,28*ky,3);

[247] setcolor(YELLOW);

[248] outtextxy(40*kx,26*ky,"OR");

[249] /* DD7 AND */

[250] setcolor(LIGHTGRAY); outtextxy(40*kx,29*ky,"DD7");

[251] setcolor(WHITE); RectangleN(38*kx,30*ky,42*kx,34*ky,3);

[252] setcolor(YELLOW);

[253] outtextxy(40*kx,32*ky,"AND");

[254] /*-------- Text */

[255] settextjustify(CENTER_TEXT,CENTER_TEXT);

[256] settextstyle(SMALL_FONT,HORIZ_DIR,6);

[257] /**/

[258] setcolor(LIGHTGREEN);

[259] outtextxy(2*kx,37*ky,"X2");

[260] outtextxy(4*kx,37*ky,"X1");

[261] outtextxy(6*kx,37*ky,"X0");

[262] /**/

[263] setcolor(LIGHTGREEN);

[264] outtextxy(14*kx,37*ky,"Y0");

[265] outtextxy(16*kx,37*ky,"Y1");

[266] outtextxy(18*kx,37*ky,"Y2");

[267] /**/

[268] setcolor(WHITE);

[269] outtextxy(4*kx,39*ky,"ENTRY");

[270] outtextxy(16*kx,39*ky,"INVERT");

[271] /**/

[272] setcolor(LIGHTGREEN);

[273] outtextxy(32*kx,37*ky,"A2");

[274] outtextxy(34*kx,37*ky,"A1");

[275] outtextxy(36*kx,37*ky,"A0");

[276] /**/

[277] settextjustify(CENTER_TEXT,TOP_TEXT);

[278] settextstyle(SMALL_FONT,VERT_DIR,6);

[279] setcolor(YELLOW);

[280] /**/

[281] outtextxy(32*kx,38*ky,"DD4");

[282] outtextxy(34*kx,38*ky,"DD3");

[283] outtextxy(36*kx,38*ky,"DD2");

[284] /**/

[285] settextjustify(CENTER_TEXT,CENTER_TEXT);

[286] settextstyle(SMALL_FONT,HORIZ_DIR,6);

[287] setcolor(LIGHTGREEN);

[288] /**/

[289] outtextxy(45*kx,32*ky,"Z2");

[290] outtextxy(45*kx,26*ky,"Z1");

[291] outtextxy(45*kx,20*ky,"Z0");

[292] /**/

[293] settextjustify(CENTER_TEXT,CENTER_TEXT);

[294] settextstyle(SMALL_FONT,VERT_DIR,6);

[295] setcolor(WHITE);

[296] outtextxy(48*kx,26*ky,"EXIT");

[297] /**/

[298] settextjustify(CENTER_TEXT,TOP_TEXT);

[299] setcolor(WHITE);

[300] settextstyle(SMALL_FONT,VERT_DIR,6);

[301] outtextxy(28*kx,35*ky,"LEVEL A");

[302] outtextxy(40*kx,35*ky,"LEVEL Z");

[303] /*-------- Formules */

[304] settextjustify(LEFT_TEXT,CENTER_TEXT);

[305] settextstyle(SMALL_FONT,HORIZ_DIR,7);

[306] setcolor(WHITE);

[307] /**/

[308] outtextxy(21*kx,5*ky,Title_10); /* Z0=... */

[309] outtextxy(21*kx,7*ky,Title_11); /* Z1=... */

[310] outtextxy(21*kx,9*ky,Title_12); /* Z2=... */

[311] /*-------- Wires */

[312] setcolor(LIGHTGRAY);

[313] /* X2 */

[314] line(2*kx,34*ky,2*kx,4*ky);

[315] line(2*kx,4*ky,8*kx,4*ky);

[316] /* X1 */

[317] line(4*kx,34*ky,4*kx,10*ky);

[318] line(4*kx,10*ky,8*kx,10*ky);

[319] /* X0 */

[320] line(6*kx,34*ky,6*kx,16*ky);

[321] line(6*kx,16*ky,8*kx,16*ky);

[322] /* Y0 */

[323] line(14*kx,34*ky,14*kx,16*ky);

[324] line(14*kx,16*ky,12*kx,16*ky);

[325] /* Y1 */

[326] line(16*kx,34*ky,16*kx,10*ky);

[327] line(16*kx,10*ky,12*kx,10*ky);

[328] /* Y2 */

[329] line(18*kx,34*ky,18*kx,4*ky);

[330] line(18*kx,4*ky,12*kx,4*ky);

[331] /*-------- To Range 1 */

[332] /* To DD2 */

[333] circle(2*kx,19*ky,2);

[334] line(2*kx,19*ky,26*kx,19*ky);

[335] circle(4*kx,21*ky,2);

[336] line(4*kx,21*ky,26*kx,21*ky);

[337] /* To DD3 */

[338] circle(6*kx,25*ky,2);

[339] line(6*kx,25*ky,26*kx,25*ky);

[340] circle(18*kx,27*ky,2);

[341] line(18*kx,27*ky,26*kx,27*ky);

[342] /* To DD4 */

[343] circle(16*kx,31*ky,2);

[344] line(16*kx,31*ky,26*kx,31*ky);

[345] circle(14*kx,33*ky,2);

[346] line(14*kx,33*ky,26*kx,33*ky);

[347] /*-------- Devices Kommutator */

[348] setfillstyle(SOLID_FILL, LIGHTGRAY);

[349] bar(20*kx,18*ky,24*kx,34*ky);

[350] setcolor(BLACK);

[351] settextstyle(SMALL_FONT,VERT_DIR,6);

[352] outtextxy(21*kx,26*ky,"COMMUTATOR");

[353] /*-------- Wires Exits DD4, DD3, DD2 */

[354] setcolor(LIGHTGRAY);

[355] line(32*kx,34*ky,32*kx,18*ky); /* A2 */

[356] line(34*kx,34*ky,34*kx,18*ky); /* A1 */

[357] line(36*kx,34*ky,36*kx,18*ky); /* A0 */

[358] /**/

[359] line(30*kx,32*ky,32*kx,32*ky); /* to A2 */

[360] circle(32*kx,32*ky,2);

[361] line(30*kx,26*ky,34*kx,26*ky); /* to A1 */

[362] circle(34*kx,26*ky,2);

[363] line(30*kx,20*ky,36*kx,20*ky); /* to A0 */

[364] circle(36*kx,20*ky,2);

[365] /*-------- Range 2 */

[366] circle(32*kx,19*ky,2); /* to DD5 OR */

[367] line(32*kx,19*ky,38*kx,19*ky);

[368] circle(36*kx,21*ky,2);

[369] line(36*kx,21*ky,38*kx,21*ky);

[370] circle(36*kx,25*ky,2); /* to DD6 OR */

[371] line(36*kx,25*ky,38*kx,25*ky);

[372] circle(34*kx,27*ky,2);

[373] line(34*kx,27*ky,38*kx,27*ky);

[374] circle(34*kx,31*ky,2); /* to DD7 AND */

[375] line(34*kx,31*ky,38*kx,31*ky);

[376] circle(32*kx,33*ky,2);

[377] line(32*kx,33*ky,38*kx,33*ky);

[378] /*-------- Exit */

[379] line(42*kx,20*ky,44*kx,20*ky); /* Z0 */

[380] line(42*kx,26*ky,44*kx,26*ky); /* Z0 */

[381] line(42*kx,32*ky,44*kx,32*ky); /* Z0 */

[382] /*-------- Logic */

[383] if(mode==WORK) Dev_logD(kx,ky);

[384] /*-------- STOP */

[385] STOP;

[386] /*-------- Return to text mode */

[387] Text_regime();

[388] /**/

[389] return 0;

[390] }

[391] /*IIIIIIIIIIIIIIIIIIIIIIIIIIIII*/

[392] int Dev_logD(int kx, int ky)

[393] {

[394] /*-------- Entry */

[395] delay(1);

[396] if(Demo==ON)

[397] {

[398] settextjustify(CENTER_TEXT,CENTER_TEXT);

[399] settextstyle(SMALL_FONT,HORIZ_DIR,5);

[400] setcolor(CYAN);

[401] EllipseN(23*kx,14*ky,0,360,4*kx,2*ky,3);

[402] setcolor(WHITE);

[403] outtextxy(23*kx,14*ky,"ENTRY-INV");

[404] siren_0(1);

[405] }

[406] /**/

[407] Bit(2*kx,35*ky,X2); /* bit X2 */

[408] Bit(4*kx,35*ky,X1); /* bit X1 */

[409] Bit(6*kx,35*ky,X0); /* bit X0 */

[410] /*-------- Devices Inventors DD1.1, DD1.2, DD1.3 */

[411] Y2=~X2&1;

[412] Y1=~X1&1;

[413] Y0=~X0&1;

[414] Bit(18*kx,35*ky,Y2); /* bit DD1.1 (Y2) */

[415] Bit(16*kx,35*ky,Y1); /* bit DD1.2 (Y1) */

[416] Bit(14*kx,35*ky,Y0); /* bit DD1.3 (Y0) */

[417] /*-------- Devices Range 1 */

[418] delay(1);

[419] if(Demo==ON)

[420] {

[421] settextjustify(CENTER_TEXT,CENTER_TEXT);

[422] settextstyle(SMALL_FONT,HORIZ_DIR,5);

[423] setcolor(WHITE);

[424] EllipseN(34*kx,14*ky,0,360,4*kx,2*ky,3);

[425] setcolor(WHITE);

[426] outtextxy(34*kx,14*ky,"LEVEL A");

[427] scale_0(MODERATO/25);

[428] }

[429] DD2or=X1 | X2;

[430] DD3and=Y2 & X0;

[431] DD4and=Y0 & Y1;

[432] Bit(31*kx,21*ky,DD2or); /* bit DD2*/

[433] Bit(31*kx,27*ky,DD3and); /* bit DD3*/

[434] Bit(31*kx,33*ky,DD4and); /* bit DD4 */

[435] /**/

[436] Bit(32*kx,35*ky,DD4and); /* bit DD4 on A2 */

[437] Bit(34*kx,35*ky,DD3and); /* bit DD3 on A1 */

[438] Bit(36*kx,35*ky,DD2or); /* bit DD2 on A0 */

[439] /*-------- Devices Range 2 */

[440] delay(1);

[441] if(Demo==ON)

[442] {

[443] settextjustify(CENTER_TEXT,CENTER_TEXT);

[444] settextstyle(SMALL_FONT,HORIZ_DIR,5);

[445] setcolor(RED);

[446] EllipseN(45*kx,14*ky,0,360,4*kx,2*ky,3);

[447] setcolor(WHITE);

[448] outtextxy(45*kx,14*ky,"LEVEL Z");

[449] sonata17(ALLEGRO);

[450] }

[451] DD5or= DD2or | DD4and;

[452] DD6or= DD3and | DD2or;

[453] DD7and= DD4and & DD3and;

[454] Bit(43*kx,21*ky,DD5or); /* bit DD5 */

[455] Bit(43*kx,27*ky,DD6or); /* bit DD6 */

[456] Bit(43*kx,33*ky,DD7and); /* bit DD7 */

[457] /**/

[458] return 0;

[459] }

[460] #endif /* DEV_LIS_ */

[461] /*######################################################*/

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]