Dùng máy vi tính thiết kế máy chấm thi trắc nghiệm

  • Số trang: 29 |
  • Loại file: PDF |
  • Lượt xem: 14 |
  • Lượt tải: 0
nganguyen

Đã đăng 34173 tài liệu

Mô tả:

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 – 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 : 2 Họ và tên : ................................................................................... Số ký danh : ................................................................................. 0                             2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2 3 4 5 6 7 8 9 0 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 1 1 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 b 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 c 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 d 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 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 b 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 c 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 3 2 3 4 5 6 7 8 9 O O O O O O O O OO  O O O O O O O O OO  O O O O O O O O OO  d 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 1 a 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 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 b 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 c 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 d 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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 a b 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 c 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 d 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                          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 0 Hoặc có thể ghi : Họ và tên : Nguyễn Văn A Số ký danh : 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 đơn vị hàng chục 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 7 Sai Sai 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 . 8 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 . 1mm Sóng hồng ngoại rất xa 500 200 100 Sóng HN xa TB Gần 50 20 10 5 2 1m 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.2m; 1.6m; 2.2m và 4m) 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 : 9 10 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 : 11 CHƯƠNG III CƠ CHẾ HOẠT ĐỘNG CỦA MẠCH I. SƠ Đồ KHốI : Giấy thi LED hồng ngoại(1) Dữ liệu Mã đkhiển Chỉnh xung thành tín hiệu số (2) Tín hiệu đkhiển Kiểm soát và điều khiển (3) - Loa - Mô tơ - Đèn Tín hiệu dữ liệu Computer (4) Tín hiệu điều khiển Điều khiển Địa chỉ 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 . 15 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 : 16 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 6 555 dao động ( với chu kỳ T = 0.693 * 1010 . * (8200  (2 * 15000)) = 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 18 đ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 : 19 45 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 46 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+ 47 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 48 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: Mov Bcao,'0' Mov DL,AL And DL,0FH Sosanh: Cmp DL,00000001B Je Luu_a Cmp DL,00000010B Je Luu_b Cmp DL,00000100B Je Luu_c Cmp DL,00001000B Je Luu_d Jmp Luu_? Luu_a: Mov DL,'a' Mov [SI],DL Jmp Xetbit Luu_b: Mov DL,'b' Mov [SI],DL Jmp Xetbit Luu_c: Mov DL,'c' Mov [SI],DL Jmp Xetbit Luu_d: 49 Mov DL,'d' Mov [SI],DL Jmp Xetbit Luu_?: Mov DL,'?' Mov [SI],DL Xetbit: Inc SI Cmp Bcao,'1' Je XetportB Mov Bcao,'1' Mov DL,BL Mov CL,4 Shr DL,CL Jmp Sosanh XetportB : Cmp Xport,'B' Je Hetdoc Mov DX,PortB In AL,DX Mov BL,AL Mov Xport,'B' Jmp Bitthap Hetdoc: Ret DOC EndP Main Proc Mov AX,Data Mov DS,AX Mov SI,Offset Buffer Call PC0_1 Mov AX,Data Mov DS,AX Call DELAY Mov AX,Data Mov DS,AX Call DOC Taofile: Create Finame,20h JB Error Mov Handle,AX Write Handle,Buffer,Buflen JB Error Close BX JB Error Exit: Mov AX,4C00h Int 21h Ret Error: 50 Puts ErrMess Jmp Short Exit Main EndP Code EndS Data Segment Public 'Data' Finame DB 'C:\Test\CauDA.txt',0 ErrMess DB 'LOI TAO/GHI FILE !$' Handle DW ? BasAdr Equ 300H PortA Equ BasAdr PortB Equ BasAdr+1 PortC Equ BasAdr+2 Xport DB ? Bcao DB ? Buflen Equ 4 Buffer DB Buflen Dup(?) Data EndS End Main ----------------------------------------------------------------------------------------------DOCMA.ASM: Include Macro.asm Code Segment Para Public 'Code' Assume CS:Code,DS:Data PC0_1 Proc 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 Ret DELAY EndP DOCMA Proc Mov DX,PortA In AL,DX Not AL Mov BL,AL 51 Mov DL,BL And DL,7FH Mov CL,4 Shr DL,CL Add DL,30h Mov [SI],DL Inc SI Mov DL,BL And DL,07H Add DL,30h Mov [SI],DL Inc SI Ret DOCMA EndP Main Proc Mov AX,Data Mov DS,AX Mov SI,Offset Buffer Lapdem: Call PC0_1 Mov AX,Data Mov DS,AX Call DELAY Mov AX,Data Mov DS,AX Call DOCMA Create Finame,20h JB Error Mov Handle,AX Write Handle,Buffer,Buflen JB Error Close BX JB Error Exit : Mov AX,4C00h Int 21h Ret Error : Puts Errmess JMP Short Exit Main EndP Code EndS Data Segment Para Public 'Data' Finame DB 'C:\Test\Masv.txt',0 Errmess DB 'File I/O Error !$' Buflen Equ 2 Buffer DB Buflen Dup(?) Handle DW ? BasAdr EQU 300H PortA EQU BasAdr PortC EQU BasAdr+2 52
- Xem thêm -