Hiện nay, do số lượng sinh viên, học sinh của các trường đại học, cao đẳng, trung học, . . . mỗi
năm m ột tăng . Việc chấm bài thi vào những kỳ tuyển sinh, thi học kỳ, thi lại, . . . là một công việc nặng nhọc
cho giáo viên . Vì phải đòi hỏi kết quả của việc chấm thi phải đáp ứng về độ chính xác và về thời gian .
Như vậy, với các yếu tố :
- Số lượng bài thi nhiều .
- Thời gian chấm thi không kéo dài .
- Kết quả chấm thi cần chính xác .
từ đây, ta thấy rằng :
. Nếu hình thức là thi viết, thì ch ắc rằng khó mà đạt được cả hai yêu cầu song song là thời gian và
sự chính xác .
. Nếu hình thức thi là trắc nghiệm, thì với cách chấm thủ công trước đây cũng phải vất vã về thời
gian .
. Vã lại hiện nay do sự tiến triển của máy vi tính thì hầu hết các cơ quan, trường học, xí nghiệp, . . .
đều sử dụng máy vi tính trong công việc quản lý, tính toán, thiết kế, . . . Hầu hết các trường học, người ta đều
dùng máy vi tính để quản lý hồ sơ, điểm, học bạ, . . . của sinh viên . Do vậy, với hai hình th ức chấm thi ở trên thì
công việc đòi hỏi là phải nhập điểm của từng thí sinh vào máy . Công đoạn nầy mất thời gian và có nhiều sai sót
trong quá trình nhập điểm .
Như vậy, nếu ta thiết kế một máy chấm thi trắc nghiệm sao cho kết quả chấm thi đó tự ghi vào dữ liệu
điểm của từng thí sinh tương ứng thì th ật là thú vị - đây cũng là mục đích của việc thiết kế . Đối với mạch thiết
kế nầy, giáo viên chấm thi có thể ghi điểm trên bài làm của thí sinh để lưu trữ nhờ vào dữ liệu điểm trên máy vi
tính hoặc sự thể hiện của LED 7 đoạn trên máy chấm thi .
29 trang |
Chia sẻ: lvbuiluyen | Lượt xem: 2278 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Dùng máy vi tính thiết kế máy chấm thi trắc nghiệm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC BÁCH KHOA TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
Bộ MÔN PHẦN CỨNG
________________
LUẬN VĂN TỐT NGHIỆP
ĐỀ TÀI :
DÙNG MÁY VI TÍNH THIẾT KẾ MÁY
CHẤM THI TRẮC NGHIỆM
GVHD : PHAN ĐÌNH MÃI
SVTH : TÔ OAI HÙNG
TRẦN NGỌC TRÁC
LỚP : KỸ SƯ II
- 1997 –
2
CHƯƠNG I :
MỤC ĐÍCH THIẾT KẾ
MÁY CHẤM THI TRẮC NGHIỆM
I . MỤC ĐÍCH :
Hiện nay, do số lượng sinh viên, học sinh của các trường đại học, cao đẳng, trung học, . . . mỗi
năm một tăng . Việc chấm bài thi vào những kỳ tuyển sinh, thi học kỳ, thi lại, . . . là một công việc nặng nhọc
cho giáo viên . Vì phải đòi hỏi kết quả của việc chấm thi phải đáp ứng về độ chính xác và về thời gian .
Như vậy, với các yếu tố :
- Số lượng bài thi nhiều .
- Thời gian chấm thi không kéo dài .
- Kết quả chấm thi cần chính xác .
từ đây, ta thấy rằng :
. Nếu hình thức là thi viết, thì chắc rằng khó mà đạt được cả hai yêu cầu song song là thời gian và
sự chính xác .
. Nếu hình thức thi là trắc nghiệm, thì với cách chấm thủ công trước đây cũng phải vất vã về thời
gian .
. Vã lại hiện nay do sự tiến triển của máy vi tính thì hầu hết các cơ quan, trường học, xí nghiệp, . . .
đều sử dụng máy vi tính trong công việc quản lý, tính toán, thiết kế, . . . Hầu hết các trường học, người ta đều
dùng máy vi tính để quản lý hồ sơ, điểm, học bạ, . . . của sinh viên . Do vậy, với hai hình thức chấm thi ở trên thì
công việc đòi hỏi là phải nhập điểm của từng thí sinh vào máy . Công đoạn nầy mất thời gian và có nhiều sai sót
trong quá trình nhập điểm .
Như vậy, nếu ta thiết kế một máy chấm thi trắc nghiệm sao cho kết quả chấm thi đó tự ghi vào dữ liệu
điểm của từng thí sinh tương ứng thì thật là thú vị - đây cũng là mục đích của việc thiết kế . Đối với mạch thiết
kế nầy, giáo viên chấm thi có thể ghi điểm trên bài làm của thí sinh để lưu trữ nhờ vào dữ liệu điểm trên máy vi
tính hoặc sự thể hiện của LED 7 đoạn trên máy chấm thi .
So với việc chấm thi trước đây thì máy chấm thi có những ưu điểm sau :
- Nhanh .
- Kết quả điểm được ghi chính xác vào vi tính .
- Rất ít tốn công .
Tuy nhiên, để đạt được các điều trên, thí sinh phải làm bài trên một mẫu giấy nhất định và phải tuân theo
một số qui tắc khi làm bài . Xét cho cùng, những yêu cầu nầy không có gì phiền toái và khó thực hiện mà chúng
ta sẽ thấy dưới đây .
II . NHỮNG YÊU CẦU VÀ LƯU Ý :
Sau đây là những yêu cầu đối với thí sinh :
1. Phải đánh dấu câu trả lời trên mẫu được qui định sẵn như trang sau :
3
Họ và tên : ...................................................................................
Số ký danh : .................................................................................
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
O O O O O O O O O O O O O O O O O O O O
O O O O O O O O O O O O O O O O O O O O
O O O O O O O O O O O O O O O O O O O O
a b c d a b c d a b c d a b c d
1 O O O O 26 O O O O 51 O O O O 76 O O O O
2 O O O O 27 O O O O 52 O O O O 77 O O O O
3 O O O O 28 O O O O 53 O O O O 78 O O O O
4 O O O O 29 O O O O 54 O O O O 79 O O O O
5 O O O O 30 O O O O 55 O O O O 80 O O O O
6 O O O O 31 O O O O 56 O O O O 81 O O O O
7 O O O O 32 O O O O 57 O O O O 82 O O O O
8 O O O O 33 O O O O 58 O O O O 83 O O O O
9 O O O O 34 O O O O 59 O O O O 84 O O O O
10 O O O O 35 O O O O 60 O O O O 85 O O O O
11 O O O O 36 O O O O 61 O O O O 86 O O O O
12 O O O O 37 O O O O 62 O O O O 87 O O O O
13 O O O O 38 O O O O 63 O O O O 88 O O O O
14 O O O O 39 O O O O 64 O O O O 89 O O O O
15 O O O O 40 O O O O 65 O O O O 90 O O O O
16 O O O O 41 O O O O 66 O O O O 91 O O O O
17 O O O O 42 O O O O 67 O O O O 92 O O O O
18 O O O O 43 O O O O 68 O O O O 93 O O O O
19 O O O O 44 O O O O 69 O O O O 94 O O O O
20 O O O O 45 O O O O 70 O O O O 95 O O O O
21 O O O O 46 O O O O 71 O O O O 96 O O O O
22 O O O O 47 O O O O 72 O O O O 97 O O O O
23 O O O O 48 O O O O 73 O O O O 98 O O O O
24 O O O O 49 O O O O 74 O O O O 99 O O O O
25 O O O O 50 O O O O 75 O O O O 100 O O O O
7
2. Điền họ và tên trên mẫu, sau đó ghi mã thí sinh trên 3 hàng đầu tiên (gồm sáu dãy ô)
của mẫu . Với 6 dãy ô nầy cho phép phân biệt được 1.000.000 sinh viên . Nghĩa là dữ liệu
của một trường có thể là 1 triệu sinh viên đang thi . Cách ghi mã thí sinh là chỉ việc tô đen
những ô có số tương ứng phía trên mỗi dãy .
Ví dụ : Thí sinh có tên là Nguyễn Văn A, mã số là 012345 . Có thể ghi như sau :
Họ và tên : Nguyễn Văn A
Số ký danh :
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
Hoặc có thể ghi :
Họ và tên : Nguyễn Văn A
Số ký danh :
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
Như vậy, trong mã thí sinh số 0 có thể tô đen hay bỏ trống, và việc tô số
theo thứ tự từ trên xuống và từ dãy ô phía trái sang phía phải, mỗi dãy chỉ ghi 1 số mà thôi -
tương ứng với các ký số trong mã thí sinh từ trái sang phải . Ta có thể mô tả các vị trí số
trong sáu dãy ô như sau :
hàng trăm ngàn hàng chục ngàn
hàng ngàn hàng trăm
hàng chục hàng đơn vị
Sau khi đã ghi mã thí sinh xong, thí sinh có thể chọn câu trả lời là a, b, c hay d ứng với
câu có thứ tự đã ghi bên cạnh .
Ví dụ : Với câu số 1, nếu câu trả lời được chọn là b thì ta làm như sau :
a b c d
1
3. Thí sinh khi thi phải đem theo bút chì loại 2B, tẩy và chuốt chì .
4. Khi tô mã thí sinh hoặc chọn câu trả lời nên lưu ý các kiểu tô như sau :
Đúng Sai Sai Sai Sai
8
Các hình thức sai :
- : Tô ngoài vòng tròn của ô .
- : Không nên tô chọn kiểu nầy .
- : Khi bỏ tô chọn lúc trước không nên đánh tréo mà phải tẩy .
- : Khi tô không nên chừa vùng trắng phía trong ô .
Việc tô đậm ô được chọn nhằm đảm bảo cho LED hồng ngoại hoạt động tốt, tránh
trường hợp sai khi mạch hoạt động .
5 . Khi câu trả lời bị bỏ trống hoặc có từ hai đánh dấu chọn trở lên ( ) sẽ không
được tính điểm .
Khi một câu được chọn, nếu đúng với đáp án thì điểm của thí sinh tăng lên 1 . Như vậy
với số lượng là 100 câu, điểm tối đa của thí sinh là 100 điểm . Việc qui đổi ra thang điểm 10
hay những hình thức cho khác cũng dễ dàng thực hiện bằng phần mềm .
9
CHƯƠNG II
SƠ LƯỢC VỀ LED HỒNG NGOẠI
LED hồng ngoại còn được gọi là nguồn phát sóng hồng ngoại (Infrared
emitters) . Vật liệu dùng để chế tạo nó là GaAs . LED hồng ngoại có hiệu suất lượng tử cao
hơn so với LED phát ra ánh sáng thấy được . Mặt dưới của diốt được chế tạo sao cho như
một gương để phản chiếu tia hồng ngoại phát ra từ lớp chuyển tiếp pn .
p
n-GaAs Si
n-GaAs
Trong phổ tần số của sóng điện từ, sóng hồng ngoại chiếm một khoảng rộng nhất .
Nhưng cho đến nay nó chưa được ứng dụng rộng rãi như các sóng khác có tần số thấp hơn .
Từ ánh sáng ta đến hồng ngoại gần, hồng ngoại trung bình, hồng ngoại xa và hồng ngoại rất
xa .
Sóng hồng ngoại rất xa Sóng HN xa TB Gần
1mm 500 200 100 50 20 10 5 2 1m
Từ 770 nm . . . 1 mm
I . ÁNH SÁNG MẶT TRỜI VÀ TIA HỒNG NGOẠI :
Tia nằng ấm, bao gồm chủ yếu là ánh sáng thấy được, thành phần hồng ngoại
gần như rất ít, hồng ngoại bị bầu khí quyễn hấp thu phần lớn . Sóng hồng ngoại có độ dài
(1.2m; 1.6m; 2.2m và 4m) xuyên suốt bầu khí quyễn đến mặt đất, trong khi các độ dài
sóng khác , sóng hồng ngoại bị hấp thu gần như hoàn toàn .
II . NGUỒN PHÁT SÓNG HỒNG NGOẠI :
Hồng ngoại gần được ứng dụng rộng rãi trong công nghệ thông tin hiện đại,
trong sự tự động hoá trong công nghiệp . Các nguồn sóng nhân tạo thường chứa nhiều sóng
hồng ngoại . Sóng hồng ngoại cũng có những đặc tính quang học giống như ánh sáng ( Sự
hội tụ qua thấu kính, tiêu cự . . .) . Ánh sáng và sóng hồng ngoại khác nhau rất rõ qua sự
xuyên suốt vật chất . Có những vật mắt ta thấy (phản chiếu ánh sáng thấy được) nhưng với
tia hồng ngoại nó là những vật phản chiếu rất ít (hay không phản chiếu) . Có những vật ta
thấy nó có màu xám đục nhưng với ánh sáng hồng ngoại nó trở nên trong suốt . Điều nầy
giải thích tại sao LED hồng ngoại có hiệu suất cao hơn so với LED phát ra ánh sáng thấy
được . Vì rằng vật liệu bán dẫn “trong suốt” đối với sóng hồng ngoại, tia hồng ngoại không
bị yếu đi khi nó phải vượt qua các lớp bán dẫn để đi ra ngoài .
Đời sống của LED hồng ngoại dài đến 100.000 giời (hơn 11 năm) . LED hồng
ngoại không phát sáng nên nó cho lợi điểm trong các thiết bị kiểm soát vì không gây sự chú ý
. Trong mạch thiết kế, chúng ta dùng LED hồng ngoại nhằm tránh nhiễu dẫu có ánh sáng
mặt trời hay ánh sáng của đèn lọt qua máy chấm thi .
III . ĐẶC TRƯNG KỸ THUẬT CỦA MỘT SỐ LED HỒNG NGOẠI :
10
11
IV . LINH KIỆN THU SÓNG HỒNG NGOẠI :
Người ta có thể dùng quang điện trở, phototransistor, photodiôt để thu sóng
hồng ngoại gần . Để thu sóng hồng ngoại trung bình và xa phát ra từ cơ thể con người, vật
nóng người ta dùng loại detector với vật liệu Lithiumtitanat hay tấm chất dẽo PVDF
(polyvinyl - Lidendifluorid) . Cơ thể con người phát ra tia hồng ngoại với độ dài sóng từ 8 .
. . 10 m .
1 . PHOTODIÔT :
Tùy theo chức năng và cấu trúc, có thể phân photodiot ra làm nhiều loại :
1. Diôt quang pn .
2. Diôt quang pin .
3. Diôt quang loại Schockley .
Photodiôt có các đặc tính :
- Rất tuyến tính .
- Ít nhiễu .
- Dải tần số rộng .
- Nhẹ và có sức bền cơ học cao .
- Có đời sống dài .
2. MỘT SỐ PHOTODIỐT THÔNG DỤNG :
15
CHƯƠNG III
CƠ CHẾ HOẠT ĐỘNG CỦA MẠCH
I. SƠ Đồ KHốI :
1. Bộ phận đèn LED hồng ngoại (1) :
Bộ phận đèn LED hồng ngoại sẽ thay đổi mức điện áp ở những ô có
đánh dấu đen hoặc không có của từng hàng trên tờ giấy thi . Mức điện áp thay đổi nầy được
truyền về bộ phận Chỉnh xung thành tín hiệu số (2) . Tín hiệu truyền về (2) có 2 loại là dữ
liệu và mã điều khiển .
- Dữ liệu : Bao gồm mã số thí sinh dự thi và nội dung bài thi .
- Mã điều khiển : Bao gồm mã kiểm tra đầu hàng và cuối hàng, mã phân biệt
hàng nào là mã số thí sinh hàng nào là nội dung bài làm, và mã kết thúc bài thi .
Giấy thi
LED hồng
ngoại(1)
Chỉnh
Dữ liệu xung Tín hiệu
thành dữ liệu
tín Computer
Mã đkhiển hiệu (4)
số Tín hiệu
(2) điều khiển
Tín
hiệu Điều
đkhiển khiển
Kiểm soát
- Loa và
- Mô tơ điều khiển
- Đèn (3) Địa chỉ
16
2. Bộ phận chỉnh xung thành tín hiệu số (2) :
Nhận tín hiệu từ LED hồng ngoại chỉnh dạng thành tín hiệu số. Sau đó truyền
một số tính hiệu điều khiển như: tín hiệu kiểm tra đầu hàng và cuối hàng, tính hiệu phân biệt
mã số thí sinh về bộ phận Kiểm soát và điều khiển (3) . Còn tín hiệu kết thúc bài thi, tín hiệu
dữ liệu được đưa vào Máy vi tính (4) để xử lý .
3. Bộ phận kiểm soát và điều khiển (3) :
Bộ phận nầy sẽ báo về loa, mô tơ và đèn báo nếu giấy thi bị lệch hàng (xéo), khi
đó dữ liệu sẽ không đựơc đưa về máy tính . Hoặc chấp nhận nếu trường hợp ngược lại .
4 . Máy vi tính (4) :
Nhận tín hiệu dữ liệu và một số tín hiệu điều khiển của (2) kiểm tra và xử lý .
Sau đó xuất ra tín hiệu điều khiển về (3) tại địa chỉ xác định để (3) thực hiện các chức năng của
nó .
II . SƠ ĐỒ TỔNG QUÁT VÀ HOẠT ĐỘNG CỦA MẠCH :
1. Sơ đồ tổng quát :
18
2. Hoạt động của mạch : (Xem sơ đồ tổng quát )
Bài thi được đưa vào máy, ô có tô đen cho mạch mức 1, ngược lại là
mức 0 . Nếu mép giấy đưa vào máy chưa nằm ngang sẽ làm cho cổng AND 1 có
mức ra 0, khi đó đèn ERROR sẽ sáng (có mức 1 nhờ cổng NOT 1 ) và làm IC
555 dao động ( với chu kỳ T = 0 693 1010 8200 2 150006. * . * ( ( * )) = 0.265 1/4
giây) phát tín hiệu ra loa . Như vậy, khi không có giấy hoặc đưa giấy vào chưa cân
bằng hai mép thì đèn ERROR sáng và loa phát tiếng kêu .
Trong trường hợp ngược lại, hai mép giấy đã thẳng hàng thì cổng AND 1 có
mức ra là 1 khi đó đèn READY sáng . Điều nầy sẽ làm cho cổng AND 2 có
một đường vào với mức là 1, như vậy nếu đường vào còn lại có mức là 1 nữa thì sẽ
làm cho mô tơ quay (để cuộn giấy lên) nhờ cổng OR 1 . Ta xét cổng vào còn lại
nầy : cổng nầy được nối với mã đầu và cuối hàng qua cổng ĐảO 2
, nếu mã đầu hàng và cuối hàng thẳng hàng thì cổng AND 3 có mức ra là 1 .
Trong trường hợp ngược lại, nghĩa là khi mã đầu hàng và cuôí hàng không thẳng
hàng hoặc khi LED hồng ngoại ở bất kỳ vị trí nào trên các vùng trống giữa các hàng
với nhau sẽ làm cho cổng AND 3 có mức ra là 0, lúc đó NOT 2 có mức ra là 1 -
đây cũng là mức của cổng vào còn lại nầy . Như vậy mức ra của cổng AND 2
nầy là 1 sẽ làm cho mô tơ quay đẩy giấy lên . Vậy, sau khi đưa giấy vào ngay ngắn,
thì mô tơ sẽ tự động đẩy giấy lên , và nó sẽ dừng khi gặp phải bất kỳ dấu đầu hàng
và cuối hàng đầu tiên . ( lúc đó cổng VÀ 2 2 có mức ra là 0 và hẳn nhiên là
ta phải dùng lệnh xuất OUT PC6, 0 trong chương trình để làm cho mức ra của cổng
HOẶC 1 chỉ phụ thuộc vào mức ra của cổng VÀ 2 mà thôi) .
Tóm lại : Sau khi đưa giấy ngay ngắn thì mô tơ tự động đẩy giấy lên và
dừng lại khi gặp dấu đầu và cuối hàng đầu tiên để CPU đọc dữ liệu .
Trong mạch, ta dùng IC 8255 để giao tiếp với CPU, nó được lập trình ở MODE
0 với cổng A,B và C thấp là nhập và C cao là xuất . CPU sẽ tạo một vòng lặp kiểm
tra xem nếu PC0 có mức là 1 (ngay dấu đầu và cuối hàng) thì sẽ lấy dữ liệu từ cổng
A và B . Nhưng để phân biệt được dữ liệu nào là mã thí sinh , dữ liệu nào là nội
dung bài thi ta chỉ cần thêm một dấu hiệu - tạm gọi là “dấu mã thí sinh” ở đầu những
hàng dàng riêng cho việc ghi mã thí sinh (có 3 hàng) . Khi gặp dấu mã thí sinh thì
cổng AND 4 có mức ra là 1 sẽ điều khiển hai IC 74245 làm cho IC 74245(1) đưa
dữ liệu từ đường ra của hai IC 74147 vào CPU và vô hiệu hóa IC 74245(2) .
Khi không còn dấu hiệu mã thí sinh nữa (từ hàng thứ 4 trở đi) thì dữ liệu chỉ
qua IC 74245(2) và đi vào CPU mà thôi .
Sau mỗi lần đọc dữ liệu từ cổng A và B của IC 8255, CPU sẽ xuất ra PC6 mức
1 để mô tơ đẩy giấy hoạt động . Và nó sẽ kiểm tra xem vị trí của LED hồng ngoại
có lệch khỏi dấu đầu và cuối hàng chưa thông qua PC0 . Nếu PC0 = 0 thì CPU sẽ
xuất mức 0 cho PC6 . Vì rằng nếu không xuất lại mức 0 cho PC6 thì cổng HOẶC 1
sẽ luôn luôn có mức ra là một sau khi CPU đọc dữ liệu lần đầu tiên, điều đó sẽ làm
cho mô tơ quay mãi mà nó sẽ không dừng lại dẫu có gặp dấu đầu và cuối hàng .
Tóm lại : Ở giai đoạn nầy là sự dừng lại của mô tơ khi gặp dấu đầu và cuối hàng để
đọc dữ liệu, sau đó đẩy giấy lên hàng kế . Quá trình cứ diễn ra như thế cho đến khi gặp dấu kết
thúc bài thi .
Dấu kết thúc bài thi sẽ làm cho cổng VÀ 5 có mức ra là 1 đi vào PC1 , vậy nếu
PC1 = 1 thì kết quả điểm của bài thi đó sẽ được ghi vào mẫu tin hiện thời từ bộ nhớ . Khi đó
CPU sẽ bắt đầu cho vòng lặp mới .
Trong quá trình đọc dữ liệu, nếu có câu nào đó của thí sinh đúng với đáp án thì CPU sẽ
kích cho IC 7490 một xung âm qua cổng PC7 để làm tăng giá trị điểm trên mặt đèn LED 7
19
đoạn . Giáo viên chấm thi có thể không cần nhìn trên màn hình máy vi tính để ghi điểm lên bài
thi mà chỉ cần nhìn trên các LED nầy . Với mỗi lần gặp dấu mã thí sinh của bài mới thì giá trị
của các IC 7490 được thiết lặp bằng 0 .
3 . Phát thảo chương trình cho CPU :
a) Chương trình chấm diểm :
- Đầu vòng lặp .
- Xuất PC6 mức 0 .
- Nếu PC0 =1 đọc từ cổng A và B của IC 8255 .
- Mỗi khi đọc xong 1 hàng (2 byte) xuất ra PC6 mức 1 để kích mô tơ quay và
xét xem PC0 có bằng 0 chưa . Nếu PC0 = 0 (lệch khỏi mã đầu hàng và cuối hàng) thì xuất lại
PC6 mức 0 để giao điều khiền cho mạch của máy .
- Nếu bộ đệm đủ 6 byte đầu tiên (mã thí sinh) thì xử lý và truy tìm mã trong cơ
sở dữ liệu . Nếu không có báo lỗi lên màn hình, nếu có nhảy đến mẫu tin đó .
- Từ byte thứ 7 trở đi là nội dung bài làm, mỗi hàng (2 byte) có 4 câu, nếu câu
trả lời đúng với đáp án thì kích xung cho PC7 và tăng 1 vào biến điểm trong bộ đệm .
- Nếu PC1 = 1 thì ghi trị của biến điểm vào mẫu tin hiện thời và xuất PC6 lên
mức 1 để đẩy mô tơ và kết thúc một bài thi.
- Trở lại đầu vòng lặp .
b) Chương trình đọc đáp án :
- Xuất PC6 mức 0 .
- Khởi tạo biến đếm = 0 .
- Đầu vòng lặp (để bỏ qua phần mã thí sinh - không đọc).
- Đếm >=3 chưa ? Nếu thoả thì nhảy đến READATA, nếu không thoả thì làm
các lệnh kế .
- Xét xem PC0 = 1 chưa, nếu PC0 = 1 (có mã đầu hàng và cuối hàng) xuất PC6
mức 1 để kích mô tơ quay.
- Xét PC0 = 0 chưa, nếu PC0 = 0 thì xuất PC6 mức 0 .
- Đếm = đếm +1 .
- Cuối vòng lặp
- READATA : Đọc dữ liệu từ cổng A và B của IC 8255 mỗi khi có PC0 = 1 .
Tương tự như phần chấm điểm nhưng không truy tìm câu nào đúng hay sai mà chỉ đọc vào khi
đũ số byte cần thiết (hay PC1 = 1 - mã cho biết cuối giấy) sau đó ghi lên thành tập tin trên điã .
Phần chương trình nầy sẽ được viết cụ thể ở các trang sau .
III . SƠ ĐỒ CHI TIẾT :
45
46
PHẦN CHƯƠNG TRÌNH CHINH
Set Talk Off
Set Default To C:\Test
Set Safe Off
Close All
Clear All
!Lt8255
Do While .T.
Clear
@0,0 To 24,79 Double Color Gr+
Tua='CHUONG TRINH TEST PHAN CUNG CHAM THI TRAC NGHIEM'
@ 3,(80-Len(Tua))/2-2 To 5,(80-Len(Tua))/2+Len(Tua)+2 Double Color R+/B
@ 4,(80-Len(Tua))/2 Say Tua Color G+
@ 11,28 To 15,50 Double Color RB/W
@ 12,30 Prompt ' 1- NHAP DAP AN '
@ 13,30 Prompt ' 2- CHAM DIEM THI '
@ 14,30 Prompt ' 3- KET THUC '
Menu To C
Do Case
Case C=1
Do Dapan
Case C=2
Do Chamdiem
Case C=3
Do Exit
EndCase
EndDo
Set Talk On
Return
*---------------------------------------------------------
Procedure Dapan
!Dung
i=1
Do While i<=3
!PC0_1
!Dayhang
i=i+1
EndDo
i=1
Z=''
Wait " BAT DAU DOC NOI DUNG BAI THI!" Windows Timeout 1
Do While i<=25
!Doc_da
W=Fopen('CauDA.txt')
U=Fgets(W)
=Fclose(W)
??U
Z=Z+U
!Dayhang
47
i=i+1
EndDo
W=Fcreate('Dapan.txt')
=Fwrite(W,Z)
=Fclose(W)
Wait "DAY PHIM BAT KY DE TIEP TUC !" Window
!Day
Return
*----------------------------------------------------------
Procedure Chamdiem
Use Diem
Index On Masv To Mssv
Do While .T.
!Dung
M_diem=0
i=1
M=''
Do While i<=3
!Docma
X=Fopen('Masv.Txt')
K=Fgets(X)
=Fclose(X)
M=M+K
!Dayhang
i=i+1
EndDo
@22,1 Say M
Ma=Val(M)
Seek(Ma)
If Found()
@16,20 Say " MASV"+Space(8)+"HO"+Space(9)+"TEN"
@18,20 Say " "+Str(Masv,6)+' '+Ho+Ten
Do Traloi
Repl Diem With M_diem
@18,20 Say " "+Str(Masv,6)+' '+Ho+Ten+Str(Diem,3)
Else
Wait "KHONG CO MA SINH VIEN NAY!" Windows
EndIf
Wait "CHAM DIEM TIEP KHONG ?(Y/N)" To Tiep Windows
If Upper(Tiep)='N'
Clear
Exit
EndIf
Clear
@0,0 To 24,79 Double Color Gr+
Tua='DANG CHAM DIEM TIEP TUC'
@ 3,(80-Len(Tua))/2-2 To 5,(80-Len(Tua))/2+Len(Tua)+2 Double Color
R+/B
@ 4,(80-Len(Tua))/2 Say Tua Color G+
48
EndDo
Return
*---------------------------------------------------------
Procedure Traloi
Cau=1
Y=Fopen('Dapan.Txt')
T=Fgets(Y)
=Fclose(Y)
Do While Cau<=25
!Bailam
X=Fopen('Traloi.Txt')
D=Fgets(X)
=Fclose(X)
CauDA=SubStr(T,((Cau-1)*4)+1,4)
i=1
Do While i<=Len(D)
TL=SubStr(D,i,1)
DA=SubStr(CauDA,i,1)
If TL=DA
!Chodiem
M_diem=M_diem+1
EndIf
i=i+1
EndDo
If Cau=25
Wait " " Timeout 2
EndIf
!Dayhang
Cau=Cau+1
EndDo
!Day
Return
*---------------------------------------------------------
Procedure Exit
!Dung
Set Talk On
Close All
Quit
Return
-----------------------------------------------------------------------------------------------
PHẦN CHƯƠNG TRÌNH BANG ASSEMBLY
DOC_DA.ASM:
Include Macro.Asm
Code Segment Para Public 'Code'
Assume CS:Code,DS:Data
PC0_1 Proc
49
Lap:
Mov DX,PortC
In AL,DX
And AL,01
Mov DL,AL
Add DL,30h
Cmp DL,31h
Je Thoat
Jmp Lap
Thoat:
Ret
PC0_1 EndP
DELAY Proc
Mov CX,1000
Dela:
Loop Dela
DELAY EndP
DOC Proc
Mov DX,PortA
In AL,DX
Mov BL,AL
Mov Xport,'A'
Bitthap:
Mo