thiết kế máy chấm bài trắc nghiệm, chương 8

Chia sẻ: Nguyen Van Dau | Ngày: | Loại File: PDF | Số trang:18

0
64
lượt xem
10
download

thiết kế máy chấm bài trắc nghiệm, chương 8

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Thư viện Drive là một trong số những thư viện được viết để xây dựng phần mềm điều khiển máy chấm điểm trắc nghiệm. Thư viện này được viết bằng ngôn ngữ lập trình PalCaL, bao gồm 11 thủ tục con, dùng để điều khiển hoạt động của động cơ và truy xuất dữ liệu hệ thống. Thư viện này sử dụng một Unit tên Va_COM, là thư viện chứa các hằng, biến toàn cục của chương trình. Cụ thể: UNIT Va_COM; INTeACE {Khai báo tên Unit cần tạo}......

Chủ đề:
Lưu

Nội dung Text: thiết kế máy chấm bài trắc nghiệm, chương 8

  1. Chương 8: XAÂY DÖÏNG SÔ ÑOÀ KHOÁI THÖ VIEÄN DRIVER Thö vieän Driver laø moät trong soá nhöõng thö vieän ñöôïc vieát ñeå xaây döïng phaàn meàm ñieàu khieån maùy chaám ñieåm traéc nghieäm. Thö vieän naøy ñöôïc vieát baèng ngoân ngöõ laäp trình PASCAL, bao goàm 11 thuû tuïc con, duøng ñeå ñieàu khieån hoaït ñoäng cuûa ñoäng cô vaø truy xuaát döõ lieäu heä thoáng. Thö vieän naøy söû duïng moät Unit teân VAR_COM, laø thö vieän chöùa caùc haèng, bieán toaøn cuïc cuûa chöông trình. Cuï theå: UNIT VAR_COM; {Khai baùo teân Unit caàn taïo} INTERFACE {Khai baùo chung} TYPE File_Name_Type = String[16]; XY_Type = Record Hor : Word; Vert : Word; End; CONST L_Horizontal = 600; (*Chieàu daøi toái ña tín hieäu ñieàu khieån caàn queùt*) L_Scan = 100; (*Chieàu daøi toái ña tín hieäu ñieàu khieån queùt *) On = True; Off = False; Right = True; Left = False;
  2. Up = True; Down = False; VAR Sys_Error : Byte; DataA, DataB : Byte; DataC, CL, CH : Byte; Error : Boolean; (*PC3 : tín hieäu loãi Error *) Page : Boolean; (*PC2 : tín hieäu loãi Page *) Vert : Boolean; (*PC1 : tín hieäu Veritical *) Hor : Boolean; (*PC0 : tín hieäu Horizontal*) V_Count, H_Count, Sc_Count : Integer; Add_Port : Array [0..2] of Word; (* Add_Port 0 : Address Port A Add_Port 1 : Address Port B Add_Port 2 : Address Port C *) DataA_Bit : Array[0..7] of Boolean; (* Bit 0 : Clock Vertical Bit 1 : Up/Down Vertical Bit 2 : Clock Scan Bit 3 : Up/Down Scan Bit 4 : Clock Horizontal Bit 5 : Up/Down Horizontal Bit 6 : Motor DC 1st Bit 7 : Motor DC 2nd
  3. *) T_DL_CK : Word; (*Thôøi gian Delay cuûa xung CK*) T_DL_MDC : Word; (*Thôøi gian Delay cuûa Motro DC*) F_XY, (*File löu tröõ toïa ñoä XY*) F_Data, (*File löu tröõ traû lôøi maãu*) F_Sys, (*File löu tröõ traïng thaùi*) F_Ans : File; (*File löu tröõ keát quaû*) F_Error : Boolean; W_Data, (*Chieàu roäng döõ lieäu*) L_Data : Byte; (*Chieàu daøi döõ lieäu *) XY_Name : File_Name_Type; (*Teân môû roäng File toïa ñoä XY*) XY_Count : Word; (*Soá caëp toïa ñoä XY*) XY_Data : Array [1..500] of XY_Type;(*Maõng döõ lieâu, toái ña 500*) IMPLEMENTATION {Thi haønh} BEGIN END. {Keát thuùc thö vieän} Caùc thuû tuïc ta xaây döïng sô ñoà khoái trong chöông naøy laø: 1. ProceDure ReadC; 2. ProceDure CK; 3. ProceDure MDC(DC1,DC2:Boolean); 4. ProceDure Run_SM(Motor:Byte;Step:Integer); 5. ProceDure SM_Standar(SM_H,SM_SC:Boolean); 6. ProceDure Page_Out; 7. ProceDure Page_In;
  4. 8. ProceDure GoXY(H,V:Integer); 9. ProceDure ResetData; ProceDure ReadB; 10. ProceDure Scan; Trong sô ñoà khoái coù caùc töø vieát taét nhö:BA07 (vieát taét cuûa bieán DataA_Bit[0..7]), PA07 (vieát taét cuûa bieán DataA[0..7]). Thuû tuïc ReadC Sta r Read PortCL Bit C0 = 1 S S S S Bit C1 = 1 Bit C2 = 1 Bit C3 = 1 Ñ Ñ Ñ Ñ Hor=True Vert=True Page=True Error=True Hor=False Vert=False Page=False Error=False End
  5. Thuû tuïc naøy coù chöùc naêng ñoïc döõ lieäu töø Port C vaøo, tín hieäu PortCL, sau ñoù laøm chuaån laïi tín hieäâu (chæ laáy 04 bit thaáp PC04) baèng caùch AND vôùi $0FH (15D). Sau khi ñaõ laøm chuaån tín hieäu, tuøy giaù trò cuûa töøng bit (laø [0] hay [1]) maø gaùn traïng traùi cuûa baùo cuûa côø töông öùng (HOR, VERT, PAGE, ERROR) laø [True] hay [False].
  6. Thuû tuïc CK Star PA05=0 I=1 BAi=true S Ñ DataA or(1 shl i) I+1 S I>5 Ñ BA0,2,4 = False PortA = DataA DataA or $D5 Delay PortA = DataA End
  7. Thuû tuïc naøy coù nhieäm vuï taïo moät xung Ck cho maïch giaõi maõ ñieàu khieån. Noù seõ truyeàn tín hieäu ñieàu khieån ñeán maïch ñieàu khieån thoâng qua Port A- Tuøy theo yù nghóa cuûa töøng côø bit (DataA_Bit07, BA07) maø Data A ñöôïc ñieàu cheá töông öùng. Thuû tuïc MDC Star BA6=DC1 BA7=DC2 S S DC1=true DC2=true Ñ Ñ DataA DataA or $40 or $80 DataA DataA and $BF and $7F Ck End
  8. Thuû tuïc MDC vôùi hai tham soá ñöa vaøo laø DC1 vaø DC2 (daïng logic, Boolean). Tham soá ñöa vaøo seõ laøm bieán ñoåi hai côø traïng thaùi Data_Bit[6] (BA6) vaø Data_Bit[7] (BA7). Tuøy theo côø traïng naøy (laø [true] hay [false]) maø bit töông öùng cuûa DataA thay ñoåi theo (laø [1] hay [0]). Sau khi ñieàu cheá xong tín hieäu döõ lieäu DataA, truyeàn döõ lieäu naøy qua Port A baèng caùch goïi thuû tuïc CK.
  9. Thuû tuïc Run_SM Star I=1 S I
  10. cô keùo caàn queùt (Hor). Soá böôùc ñöa vaøo ñöôïc khoáng cheá bôûi caùc möùc giôùi haïn.
  11. Thuû tuïc SM_Standar Star SM_H S S SM_Sc =true =true Ñ Ñ ReadC ReadC BAÏ5= BA3= Right Down Not S Not S Error Error Ñ Ñ Run_SM Run_SM (2,1) (1,1) ReadC ReadC BA5= BA3= Left Up Run_SM Run_SM (2,1) (1,1) H_Count Sc_Count =1 =1 E nd
  12. Thuû tuïc SM_Standar coù chöùc naêng chuyeån motor keùo caàn queùt vaø motor keùo ñaàu queùt veà vò trí chuaån. Nhaän hai tín hieäu H_SM vaø Sc_SM (daïng tín hieäu logic) ñeå nhaän bieát caàn chuyeån motor naøo veà möùc chuaån. Ñeå thöïc hieän ñuùng chöùc naêng naøy, tín hieäu Error nhaän töø ngoaøi vaøo laø chuaån ñeå nhaän bieát ñieåm chuaån. Tín hieäu Error töø ngoaøi vaøo ñöôïc ñieàu cheá moät laàn ñeå nhaän bieát tín hieäu thaät töø motor naøo gôûi ñeán. Thuû tuïc Page Out Star MDC (Off,On) BD1=Up ReadC Page S =true Ñ Run_SM (0,1) ReadC I=1 S I
  13. Thuû tuïc Page In Star MDC (On,Off) BD1=Up ReadC Page S =false Ñ Run_SM (0,1) ReadC I=1 S I
  14. Thuû tuïc GoXY Star X= H-H_Count Y= V-V_Count S S X
  15. Thuû tuïc GoXY duøng ñeå di chuyeån caàn queùt ñeán moät toïa ñoä xy töông öùng theo H_Count vaø V_Count cuõng nhö toïa ñoä chuaån (V_Count=1, H_Count=1). Söû duïng thuû tuïc Run_SM di chuyeån hai motor ñeå caàn ñoïc ñeán ñuùng vò trí. Beân caïnh, xöû lyù caùc vuøng toïa ñoä vaø toïa ñoä caàn di chuyeån ñeán ñeå nhaän bieát höôùng di chuyeån ñuùng cuûa ñoäng cô. Thuû tuïc ABS(x) laø thuû tuïc toaùn hoïc trong Pascal duøng ñeå laáy giaù trò tuyeät ñoái cuûa x. Thuû tuïc Page Out vaø Page In laø hai thuû tuïc duøng ñeå cho giaáy ra hay laáy giaáy vaøo maùy. Nguyeân taéc laøm vieäc cuûa hai thuû tuïc naøy laø döïa vaøo tín hieäu Page ñoïc vaøo töø thuû tuïc ReadC. Ñoái vôùi thuû tuïc Page Out, nhaän dieän traïng thaùi coù giaáy (Page=True) vaø thöïc hieän vieäc cuoán giaáy ra (Step_Motor Vert Up, Motor Dc2 On) cho ñeán khi nhaän dieän traïng thaùi khoâng coù giaáy. Ñoái vôùi thuû tuïc Page In, nhaän dieän traïng thaùi khoâng giaáy (Page=False) vaø thöïc hieän vieäc cuoán giaáy vaøo (Step_Motor Vert Up, Motor Dc1 On) cho ñeán khi nhaän dieän traïng thaùi coù giaáy. Khi heát chu trình moãi leänh coù theâm moät soá böôùc ñeå cuoán heát giaáy ra khoûi maùy, ñoäng cô DC ñöôïc duy trì traïng thaùi hoaït ñoäng moät thôøi gian. Thuû tuïc ResetData Star Port C=$00
  16. Thuû tuïc Reset Data duøng ñeå xoùa döõ lieäu vaø laäp laïi traïng thaùi ban ñaàu cho IC 74LS164. Khi söû duïng, thuû tuïc naøy gôûi ra Port C (CH) giaù trò $00 (00000000B) taïo xung xuoáng taùc ñoäng möùc [0] vaøo chaân CLR cuûa 74LS164, sau ñoù laäp laïi traïng thaùi chôø baèng caùch gôûi ra Port C (CH) giaù trò $10 (00010000B) taïo xung leân taùc ñoäng möùc aùp [1] vaøo chaân CLR cuûa 74LS164. Thuû tuïc Scan Star Port C=$30 Port C=$10 End
  17. Thuû tuïc Scan duøng ñeå ñoïc döõ lieäu queùt vaøo IC 74LS164. Khi söû duïng, thuû tuïc naøy gôûi ra Port C (CH) giaù trò $30 (00110000B) taïo xung leân taùc ñoäng möùc [1] vaøo chaân CLK cuûa 74LS164, laøm cho IC naøy ñoïc döõ lieäu ôû hai chaân AB (luùc naøy mang gia trò cuûa ñaàu queùt gôûi ñeán) vaøo vaø ñoàng thôøi dòch chuyeån thanh ghi beân trong noù, sau ñoù gôûi ra Port C (CH) giaù trò $10 (00010000B) taïo xung leân taùc ñoäng möùc aùp [0] vaøo chaân CLK cuûa 74LS164 taïo xung xuoáng ñeå keát thuùc moät xung ñoïc döõ lieäu. Thuû tuïc ReadB Star DataB =Port B ResetData End Thuû tuïc ReadB duøng ñeå ñoïc döõ lieäu queùt töø IC 74LS164 vaøo maùy. Khi söû duïng, thuû tuïc naøy ñoïc giaù trò cuûa 74LS164 thoâng qua Port B vaøo bieán DataB. Sau khi ñoïc döõ lieäu vaøo bieán DataB
  18. roài, tieán haønh gôûi xung ra ñeå xoùa döõ lieäu trong IC 74LS164 vaø thieát laäp traïng thaùi ban ñaàu cho noù baèng thuû tuïc Reset Data.
Đồng bộ tài khoản