Đề tài Thiết kế mạch Mạch game đố vui sử dụng ledmatrix

Đề tài “mạch game đố vui sử dụng ledmatrix” đã giúp chúng em có những trải nghiệm vô cùng quý giá, chúng em có dịp ôn lại những kiến thức đã học, đồng thời tích lũy thêm cho mình môt số kiến thức, kỹ năng mới về lập trình vi xử lý. Tuy nhiên do khả năng và thời gian có hạn nên đề tài khi hoàn thành vẫn còn găp một số hạn chế nhất định như:

doc40 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2450 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đề tài Thiết kế mạch Mạch game đố vui sử dụng ledmatrix, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 1: GIỚI THIỆU HOẠT ĐỘNG CỦA MẠCH Mạch game đố vui sử dụng ledmatrix thể hiện 2 khả năng cơ bản nhất của các bảng điểm điện tử trong các chương trình gameshow đó là thể hiện đội nào giành được quyền trả lời và thể hiện phương án trả lời của các đội. Đây cũng là 2 chế độ hoạt động của mạch. Chế độ 1: đối với các dạng câu hỏi buộc các đội phải nhấn nút để giành quyền trả lời. Đội nào nhấn trước thì sẽ được ưu tiên đồng thời màn hình led của đội đó sẽ sang lên, các đội nhấn nút sau sẽ không có tác dụng đồng nghĩa với việc kô giành được quyền trả lời. Chế độ 2: đối với các dạng câu hỏi trắc nghiệm. Ở mỗi đội sẽ có 4 nút nhấn thể hiện 4 phương án trả lời A,B,C,D; các đội sẽ nhấn nút tương ứng để chọn đáp án của mình. Lưu ý: việc chọn chế độ hoạt động của mạch (giành quyền trả lời hay trắc nghiệm) sẽ được thực hiện bởi người dẫn chương trình (MC), nhờ 2 nút nhấn để chọn chế độ được đặt tại bàn của MC. CHƯƠNG 2: GIỚI THIỆU MỘT SỐ LINH KIỆN CHÍNH CỦA MẠCH IC phân kênh 74154: được sử dụng để quét ledmatrix. Sau đây là sơ đồ chân và True Table của IC 74154 Ledmatix: được dùng để thể hiện phương án trả lời của các đội. Sau đây là sơ đồ chân của ledmatrix Lưu ý: đây là loại led 2 màu xanh, đỏ nhưng do chỉ sử dụng các led màu đỏ nên có môt số chân không được sử dụng. Vi điều khiển 89C51: Dùng để lậptrình điều khiển cho mạch. CHƯƠNG 3: GIỚI THIỆU VI ĐIỀU KHIỂN 89C51: 3.1) TỔNG QUÁT: MCS-51 là họ vi điều khiển của hãng Intel. Vi mạch tổng quát của họ MCS-51 là chip 8051. Chip 8051 có một số đặc trưng cơ bản sau: - Bộ nhớ chương trình bên trong: 4 KB (ROM) - Bộ nhớ dữ liệu bên trong: 128 byte (RAM) - Bộ nhớ chương trình bên ngoài: 64 KB (ROM) - Bộ nhớ dữ liệu bên ngoài: 64 KB (RAM) - 4 port xuất nhập (I/O port) 8 bit - 2 bộ định thời 16 bit - Mạch giao tiếp nối tiếp - Bộ xử lý bit (thao tác trên các bit riêng lẻ) - 210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit - Nhân / Chia trong 4 us Ngoài ra, trong họ MCS-51 còn có một số chip vi điều khiền khác có cấu trúc tương đương như: Chip ROM trong RAM trong Bộ định thời 8031 0 KB 128 byte 2 8032 0 KB 256 byte 3 8051 4 KB PROM 128 byte 2 8052 8 KB PROM 256 byte 3 8751 4 KB UV-EPROM 128 byte 2 8752 8 KB UV-EPROM 256 byte 3 8951 4 KB FLASH ROM 128 byte 8952 8 KB FLASH ROM 256 byte 3 - CPU (Central Processing Unit): Đơn vị xử lý trung tâm _ tính toán và điều khiển quá trình hoạt động của hệ thống. - OSC (Oscillator): Mạch dao động _ tạo tín hiệu xung clock cung cấp cho các khối trong chip hoạt động. - Interrupt control: Điều khiển ngắt _ nhận tín hiệu ngắt từ bên ngoài (INT0\, INT1\), từ bộ định thời (TIMER0, TIMER1) và từ cổng nối tiếp (SERIAL PORT), lần lượt đưa các tín hiệu ngắt này đến CPU để xử lý. - Other registers: Các thanh ghi khác _ lưu trữ dữ liệu của các port xuất/nhập, trạng thái làm việc của các khối trong chip trong suốt quá trình hoạt động của hệ thống. - RAM (Random Access Memory): Bộ nhớ dữ liệu trong chip _ lưu trữ các dữ liệu. - ROM (Read Only Memory): Bộ nhớ chương trình trong chip _ lưu trữ chương trình hoạt động của chip. - I/O ports (In/Out ports): Các port xuất/nhập _ điều khiển việc xuất nhập dữ liệu dưới dạng song song giữa trong và ngoài chip thông qua các port P0, P1, P2, P3. - Serial port: Port nối tiếp _ điều khiển việc xuất nhập dữ liệu dưới dạng nối tiếp giữa trong và ngoài chip thông qua các chân TxD, RxD. - Timer 0, Timer 1: Bộ định thời 0, 1 _ dùng để định thời gian hoặc đếm sự kiện (đếm xung) thông qua các chân T0, T1. - Bus control: Điều khiển bus _ điều khiển hoạt động của hệ thống bus và việc di chuyển thông tin trên hệ thống bus. - Bus system: Hệ thống bus _ liên kết các khối trong chip lại với nhau. SƠ ĐỒ CHÂN VÀ CHỨC NĂNG CỦA IC 89C51: 3.2.1. Port 0: - Port 0 (P0.0 – P0.7) có số chân từ 32 – 39. - Port 0 có hai chức năng: • Port xuất nhập dữ liệu (P0.0 - P0.7) _ không sử dụng bộ nhớ ngoài. • Bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7) _ có sử dụng bộ nhớ ngoài. Lưu ý: Khi Port 0 đóng vai trò là port xuất nhập dữ liệu thì phải sử dụng các điện trở kéo lên bên ngoài. - Khi lập trình cho ROM trong chip thì Port 0 đóng vai trò là ngõ vào của dữ liệu (D0 – D7). 3.2.2. Port 1: - Port 1 (P1.0 – P1.7) có số chân từ 1 – 8. - Port 1 có một chức năng: • Port xuất nhập dữ liệu (P1.0 – P1.7) _ sử dụng hoặc không sử dụng bộ nhớ ngoài. - Khi lập trình cho ROM trong chip thì Port 1 đóng vai trò là ngõ vào của địa chỉ byte thấp (A0 – A7). 3.2.3. Port 2: - Port 2 (P2.0 – P2.7) có số chân từ 21 – 28. - Port 2 có hai chức năng: • Port xuất nhập dữ liệu (P2.0 – P2.7) _ không sử dụng bộ nhớ ngoài. • Bus địa chỉ byte cao (A8 – A15) _ có sử dụng bộ nhớ ngoài. - Khi lập trình cho ROM trong chip thì Port 2 đóng vai trò là ngõ vào của địa chỉ byte cao (A8 – A11) và các tín hiệu điều khiển. 3.2.4. Port 3: - Port 3 (P3.0 – P3.7) có số chân từ 10 – 17. - Port 0 có hai chức năng: • Port xuất nhập dữ liệu (P3.0 – P3.7) _ không sử dụng bộ nhớ ngoài hoặc các chức năng đặc biệt. • Các tín hiệu điều khiển _ có sử dụng bộ nhớ ngoài hoặc các chức năng đặc biệt. - Khi lập trình cho ROM trong chip thì Port 3 đóng vai trò là ngõ vào của các tín hiệu điều khiển. - Chức năng của các chân Port 3: 3.2.5. Chân PSEN\: - PSEN (Program Store Enable): cho phép bộ nhớ chương trình, chân số 29. - Chức năng: • Là tín hiệu cho phép truy xuất (đọc) bộ nhớ chương trình (ROM) ngoài. • Là tín hiệu xuất, tích cực mức thấp. PSEN\ = 0 _ trong thời gian CPU tìm-nạp lệnh từ ROM ngoài. PSEN\ = 1 _ CPU sử dụng ROM trong (không sử dụng ROM ngoài). - Khi sử dụng bộ nhớ chương trình bên ngoài, chân PSEN\ thường được nối với chân OE\ của ROM ngoài để cho phép CPU đọc mã lệnh từ ROM ngoài. 3.2.6. Chân ALE: - ALE (Address Latch Enable): cho phép chốt địa chỉ, chân số 30. - Chức năng: • Là tín hiệu cho phép chốt địa chỉ để thực hiện việc giải đa hợp cho bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7). • Là tín hiệu xuất, tích cực mức cao. ALE = 0 _ trong thời gian bus AD0 – AD7 đóng vai trò là bus D0 – D7. ALE = 1 _ trong thời gian bus AD0 – AD7 đóng vai trò là bus A0 – A7. - Khi lập trình cho ROM trong chip thì chân ALE đóng vai trò là ngõ vào của xung lập trình (PGM\). Lưu ý:fALE = → có thể dùng làm xung clock cho các mạch khác. - Khi lệnh lấy dữ liệu từ RAM ngoài (MOVX) được thực hiện thì 1 xung ALE bị bỏ qua. 3.2.7. Chân EA\: - EA (External Access): truy xuất ngoài, chân số 31. - Chức năng: • Là tín hiệu cho phép truy xuất (sử dụng) bộ nhớ chương trình (ROM) ngoài. • Là tín hiệu nhập, tích cực mức thấp. EA\ = 0 → Chip 8051 sử dụng chương trình của ROM ngoài. EA\ = 1 →Chip 8051 sử dụng chương trình của ROM trong. - Khi lập trình cho ROM trong chip thì chân EA đóng vai trò là ngõ vào của điện áp lập trình (Vpp = 12V/89xx, 21V/80xx,87xx). Lưu ý: Chân EA\ luôn luôn phải được nối lên Vcc (sử dụng chương trình của ROM trong) hoặc xuống Vss (sử dụng chương trình của ROM ngoài). 3.2.8. Chân XTAL1, XTAL2: - XTAL (Crystal): tinh thể thạch anh, chân số 18-19. - Chức năng: • Dùng để nối với thạch anh hoặc mạch dao động tạo xung clock bên ngoài, cung cấp tín hiệu xung clock cho chip hoạt động. • XTAL1 → ngõ vào mạch tạo xung clock trong chip. • XTAL2 → ngõ ra mạch tạo xung clock trong chip. Lưu ý: fTYP: tần số danh định fOSC: tần số mạch dao động trên chip fCLK: tần số mạch dao động bên ngoài 3.2.9. Chân RST: - RST (Reset): thiết lập lại, chân số 9. - Chức năng: • Là tín hiệu cho phép thiết lặp (đặt) lại trạng thái ban đầu cho hệ thống. • Là tín hiệu nhập, tích cực mức cao. RST = 0 → Chip 8051 hoạt động bình thường. RST = 1 → Chip 8051 được thiết lặp lại trạng thái ban đầu. Lưu ý: tRESET: thời gian reset TOSC: chu kỳ dao động TMACHINE: chu kỳ máy 3.2.10. Chân Vcc, GND: - Vcc, GND: nguồn cấp điện, chân số 40-20. - Chức năng: • Cung cấp nguồn điện cho chip 8051 hoạt động. • Vcc = +5V ± 10%. • GND = 0V. 3.3) TỔ CHỨC CỦA CHIP 8051: - Bộ vi xử lý có không gian nhớ chung cho cả chương trình và dữ liệu → chương trình và dữ liệu nằm chung trên RAM. - Bộ vi điều khiển có không gian nhớ riêng cho dữ liệu và chương trình. →chương trình và dữ liệu nằm riêng trên ROM và RAM. Tổ chức bộ nhớ của chip 8051: Tổ chức nhớ trong chip 8051: 3.3.1) Bộ nhớ chương trình (ROM): - Dùng để lưu trữ chương trình điều khiển cho chip 8051 hoạt động. - Chip 8051 có 4 KB ROM trong, địa chỉ truy xuất: 000H – FFFH. 3.3.2) Bộ nhớ dữ liệu (RAM): - Dùng để lưu trữ các dữ liệu. - Chip 8051 có 128 byte RAM trong, địa chỉ truy xuất: 00H – 7FH. - RAM trong của chip 8051 được chia ra: • RAM đa chức năng: • RAM định địa chỉ bit: → cho phép xử lý từng bit dữ liệu riêng lẻ mà không ảnh hưởng đến các bit khác trong cả byte. • Các dãy thanh ghi: → cho phép truy xuất dữ liệu nhanh, lệnh truy xuất đơn giản và ngắn gọn. + Lưu ý: Ở chế độ mặc định thì dãy thanh ghi tích cực (đang được sử dụng) là dãy 0 và các thanh ghi trong dãy lần lượt có tên là R0 - R7. Có thể thay đổi dãy tích cực (xem phần thanh ghi PSW). 3.3.4) Một số thanh ghi chức năng đặc biệt: 3.3.4.1) Thanh ghi A: 3.3.4.2) Thanh ghi B: - Phép nhân 2 số 8 bit không dấu _ kết quả là số 16 bit. • Byte cao _ chứa vào thanh ghi B. • Byte thấp _ chứa vào thanh ghi A. - Phép chia 2 số 8 bit _ thương số và số dư là số 8 bit. • Thương số _ chứa vào thanh ghi A. • Số dư _ chứa vào thanh ghi B. 3.3.4.3) Thanh ghi định thời: 3.4) Sơ lược về hoạt động của bộ định thời: • Tần số: tần số xung ngõ ra bằng tần số xung ngõ vào chia cho 2N. • Giá trị: giá trị nhị phân trong các FF của bộ định thời là số đếm của các xung clock tại ngõ vào từ khi bộ định thời bắt đầu đếm. • Tràn: xảy ra hiện tượng tràn (cờ tràn = 1) khi số đếm chuyển từ giá trị lớn nhất xuống giá trị nhỏ nhất của bộ định thời. Ví dụ: Bộ định thời 16 bit (chứa 16 FF bên trong). *Tần số: *Giá trị: số đếm nằm trong khoảng 0 (0000H) _ 65535 (FFFFH). *Tràn: cờ tràn bằng 1 khi số đếm từ FFFFH chuyển xuống 0000H. Hình minh họa đơn giản hoạt động của bộ định thời 3 bit: • Ứng dụng định thời gian (TIMER): bộ định thời được lập trình sao cho sẽ tràn sau một khoảng thời gian đã qui định và khi đó cờ tràn của bộ định thời sẽ bằng 1. • Ứng dụng đếm sự kiện (COUNTER): để xác định số lần xuất hiện của một kích thích từ bên ngoài tới 1 chân của chip 8051 (kích thích chuyển trạng thái từ 1 xuống 0). 3.4.1) Thanh ghi chế độ định thời (TMOD): • Thanh ghi TMOD (Timer Mode Register) chứa các bit dùng để thiết lập chế độ hoạt động cho bộ định thời 0 và bộ định thời 1. • Thanh ghi TMOD được nạp giá trị một lần tại thời điểm bắt đầu của chương trình để qui định chế độ hoạt động của các bộ định thời. • Cấu trúc thanh ghi TMOD: 3.4.2) Thanh ghi điều khiển định thời (TCON): • Thanh ghi TCON (Timer Control Register) chứa các bit dùng để điều khiển và báo trạng thái của bộ định thời 0 và bộ định thời 1. • Cấu trúc thanh ghi TCON: 3.4.3) Chế độ định thời 13bit (Chế độ 0): Chế độ 0 (Mode 0): • Chế độ định thời 13 bit. • Sử dụng 8 bit của thanh ghi THx và 5 bit thấp của thanh ghi TLx để tạo ra bộ định thời. • Số đếm: 0000H → 1FFFH nghĩa là từ 0 → 8191. Thời gian định thời: từ 0 → (213–1)TTimer nghĩa là từ 0 → 8191TTimer. • Thanh ghi THx và TLx chứa giá trị của bộ định thời. • Khi có xung clock, bộ định thời bắt đầu đếm lên từ giá trị chứa trong THx/TLx. • Xảy ra tràn (cờ tràn TFx=1) khi số đếm chuyển từ 1FFFH sang 0000H và việc đếm sẽ tiếp tục đếm lên từ giá trị 0000H. 3.4.4) Chế độ định thời 16bit (Chế độ 1): Chế độ 1 (Mode 1): • Chế độ định thời 16 bit. • Sử dụng thanh ghi THx và TLx để tạo ra bộ định thời. • Số đếm: 0000H → FFFFH nghĩa là từ 0 → 65535. Thời gian định thời: từ 0 → (216–1)TTimer nghĩa là từ 0 → 65535TTimer. • Thanh ghi THx và TLx chứa giá trị của bộ định thời. • Khi có xung clock, bộ định thời bắt đầu đếm lên từ giá trị chứa trong THx/TLx. • Xảy ra tràn (cờ tràn TFx=1) khi số đếm chuyển từ FFFFH sang 0000H và việc đếm sẽ tiếp tục đếm lên từ giá trị 0000H. 3.4.5) Chế độ định thời 8bit tự nạp lại (Chế độ 2): Chế độ 2 (Mode 2): • Chế độ định thời 8 bit tự nạp lại. • Sử dụng thanh ghi TLx để tạo ra bộ định thời. • Số đếm: 00H → FFH nghĩa là từ 0 → 255. Thời gian định thời: từ 0 → (28–1)TTimer nghĩa là từ 0 → 255TTimer. • Thanh ghi TLx chứa giá trị của bộ định thời và thanh ghi THx chứa giá trị sẽ được dùng để nạp lại cho bộ định thời. • Khi có xung clock, bộ định thời bắt đầu đếm lên từ giá trị chứa trong TLx. • Xảy ra tràn (cờ tràn TFx=1) khi số đếm chuyển từ FFH sang 00H và việc đếm sẽ tiếp tục đếm lên từ giá trị chứa trong thanh ghi THx. 3.4.6) Chế độ định thời chia xẻ (Chế độ 3): Chế độ 3 (Mode 3) là: • Chế độ định thời chia xẻ. * Bộ định thời 0 được chia ra: + Bộ định thời 8 bit thứ I: → Sử dụng thanh ghi TL0 để tạo ra bộ định thời. → Số đếm: 00H → FFH nghĩa là từ 0 → 255. Thời gian định thời: từ 0 → (28–1)TTimer nghĩa là từ 0 → 255TTimer . → Thanh ghi TL0 chứa giá trị của bộ định thời. → Khi có xung clock, bộ định thời bắt đầu đếm lên từ giá trị chứa trong TL0. → Xảy ra tràn (cờ tràn TF0=1) khi số đếm chuyển từ FFH sang 00H và việc đếm sẽ tiếp tục đếm lên từ giá trị 00H. + Bộ định thời 8 bit thứ II: → Sử dụng thanh ghi TH0 để tạo ra bộ định thời. → Số đếm: 00H → FFH nghĩa là từ 0 → 255. Thời gian định thời: từ 0 → (28–1)TTimer nghĩa là từ 0 → 255TTimer. → Thanh ghi TH0 chứa giá trị của bộ định thời. → Khi có xung clock, bộ định thời bắt đầu đếm lên từ giá trị chứa trong TH0. → Xảy ra tràn (cờ tràn TF1=1) khi số đếm chuyển từ FFH sang 00H và việc đếm sẽ tiếp tục đếm lên từ giá trị 00H. * Bộ định thời 1: - Là bộ định thời 16 bit. - Không hoạt động ở chế độ 3 nhưng có thể hoạt động các chế độ khác (chế độ 0, 1, 2). - Không có cờ báo tràn như các bộ định thời khác. 3.4.7) Nguồn xung clock cho bộ định thời: Nguồn xung cho bộ định thời được tạo ra từ: • Mạch dao động trên chip → dùng cho tính năng định thời gian. • Xung kích thích bên ngoài → dùng cho tính năng đếm sự kiện. 3.4.7.1) Trường hợp định thời gian: Nếu C/T=0 thì: • Bộ định thời được dùng để định thời gian (Timer). • Nguồn xung clock định thời được lấy từ mạch dao động trên chip. Lưu ý: - Tần số xung clock cung cấp cho bộ định thời bằng 1/12 tần số của mạch dao động trên chip 8051. - Thời gian định thời là khoảng thời gian tính từ lúc bộ định thời bắt đầu đếm cho đến lúc bộ định thời bắt đầu tràn (thời gian này phụ thuộc vào giá trị ban đầu được nạp cho các thanh ghi THx và TLx). 3.4.7.2) Trường hợp đếm sự kiện: Nếu C/T=1 thì: • Bộ định thời được dùng để đếm sự kiện (Counter). • Nguồn xung clock định thời được lấy từ xung kích thích bên ngoài tại hai chân T0 và T1 của chip 8051. Lưu ý: - Tần số kích thích tối đa cho phép tại chân T0 và T1 là 500KHz (trong trường hợp chip 8051 dùng thạch anh 12MHz). - Số lượng sự kiện (số xung) mà bộ định thời đếm được sẽ được chứa trong các thanh ghi THx và TLx. - Một kích thích được gọi là một sự kiện khi xảy ra sự chuyển trạng thái từ 1 xuống 0 ở ngõ vào T0 và T1. CHƯƠNG 4: SƠ ĐỒ KHỐI CỦA MẠCH KHỐI BÀN PHÍM MATRIX KHỐI NÚT NHẤN KHỐI VI XỬ LÝ KHỐI HIỂN THỊ KHỐI IC PHÂN KÊNH CHƯƠNG 5: SƠ ĐỒ NGUYÊN LÝ Khối hiển thị: Khối ledmartix sử dụng 4 ledmatrix để hiển thị cho 4 đội chơi. Sử dụng Port 2 của 89C51 để xuất mã và Port 1 nối vào IC phân kênh để quét led hiển thị. Các transistor Ạ1015 được sử dụng để kéo dòng. KHỐI IC PHÂN KÊNH: Khối phân kênh sử dụng 2 IC 74154 nối vào port 1 của 89C51 để quét 4 ledmatrix. Sử dụng chương trình để làm cho trong cùng một thời điểm chỉ có một IC 74154 hoạt động (khi chân G1 ở mức 0 thì IC sẽ hoạt đông, ngươc lại chân G1 ở mức 1 thì IC sẽ không hoạt động) KHỐI BÀN PHÍM MATRIX: Khối bàn phím Matrix sử dụng 16 nút nhấn để thể hiện phương án trả lời của các đội. Sự dụng chương trình quét phím để kiểm tra xem nút nào đươợ nhấn KHỐI NÚT NHẤN: KHỐI VI XỬ LÝ: CHƯƠNG 6: LƯU ĐỒ GIẢI THUẬT 6.1. LƯU ĐỒ GIẢI THUẬT CỦA CHƯƠNG TRÌNH CHÍNH MAIN KIỂM TRA NÚT TRẮC NGHIỆM CHẠY CHƯƠNG TRÌNH TRẮC NGHIỆM KIỂM TRA NÚT TRẢ LỜI CHẠY CHƯƠNG TRÌNH TRẢ LỜI 6.2.LƯU ĐỒ GIẢI THUẬT CỦA CHƯƠNG TRÌNH TRẢ LỜI TRẢ LỜI KT NÚT NHẤN 4 ĐỘI P0.2=0 HIỂN THỊ ĐỘI A P0.3=0 HIỂN THỊ ĐỘI B P0.4=0 HIỂN THỊ ĐỘI C P0.5=0 HIỂN THỊ ĐỘI D 6.3.LƯU ĐỒ GIẢI THUẬT CHƯƠNG TRÌNH TRẮC NGHIỆM TRẮC NGHIỆM GỌI CHƯƠNG TRÌNH QUÉT PHÍM C=1 (CÓ PHÍM NHẤN) KIỂM TRA PHÍM NÀO ĐƯỢC NHẤN HIỆN THỊ ĐÁP ÁN RA LEDMATRIX CHƯƠNG 7: PHẦN LỆNH $MOD51 ORG 00H MAIN: MOV 30H,#00H MOV 31H,#00H MOV 32H,#00H MOV 33H,#00H JNB P0.0,TRACNGHIEM JNB P0.1,TRALOI SJMP MAIN TRALOI: JNB P0.2,DOIA JNB P0.3,DOIB JNB P0.4,DOIC JNB P0.5,DOID SJMP TRALOI DOIA: MOV DPTR,#CODEDISP MOV R7,#07H LCALL MATRIX LJMP DOIA DOIB: MOV DPTR,#CODEDISP MOV R7,#87H LCALL MATRIX LJMP DOIB DOIC: MOV DPTR,#CODEDISP MOV R7,#0BH LCALL MATRIX LJMP DOIC DOID: MOV DPTR,#CODEDISP MOV R7,#8BH LCALL MATRIX LJMP DOID TRACNGHIEM: LCALL SCANKEYPAD JC XUAT1 LJMP DOIA1 XUAT1: CJNE A,#00H,XUAT2 MOV 30H,#0FEH LJMP DOIA1 XUAT2: CJNE A,#01H,XUAT3 MOV 30H,#01H LJMP DOIA2 XUAT3: CJNE A,#02H,XUAT4 MOV 30H,#02H LJMP DOIA3 XUAT4: CJNE A,#03H,XUAT5 MOV 30H,#03H LJMP DOIA4 XUAT5: CJNE A,#04H,XUAT6 MOV 31H,#04H LJMP DOIB1 XUAT6: CJNE A,#05H,XUAT7 MOV 31H,#05H LJMP DOIB2 XUAT7: CJNE A,#06H,XUAT8 MOV 31H,#06H LJMP DOIB3 XUAT8: CJNE A,#07H,XUAT9 MOV 31H,#07H LJMP DOIB4 XUAT9: CJNE A,#08H,XUAT10 MOV 32H,#08H LJMP DOIC1 XUAT10: CJNE A,#09H,XUAT11 MOV 32H,#09H LJMP DOIC2 XUAT11: CJNE A,#0AH,XUAT12 MOV 32H,#0AH LJMP DOIC3 XUAT12: CJNE A,#0BH,XUAT13 MOV 32H,#0BH LJMP DOIC4 XUAT13: CJNE A,#0CH,XUAT14 MOV 33H,#0CH LJMP DOID1 XUAT14: CJNE A,#0DH,XUAT15 MOV 33H,#0DH LJMP DOID2 XUAT15: CJNE A,#0EH,XUAT16 MOV 33H,#0EH LJMP DOID3 XUAT16: CJNE A,#0FH,DOIA1 ;CHU Y CHO~ NAY` MOV 33H,#0FH LJMP DOID4 DOIA1: MOV A,30H CJNE A,#0FEH,DOIA2 MOV DPTR,#CODEDISP1 MOV R7,#07H LCALL MATRIX DOIA2: MOV A,30H CJNE A,#01H,DOIA3 MOV R7,#07H MOV R3,#8 MOV DPTR,#CODEDISP1 DOIA22: INC DPTR DJNZ R3,DOIA22 LCALL MATRIX DOIA3: MOV A,30H CJNE A,#02H,DOIA4 MOV R7,#07H MOV R3,#16 MOV DPTR,#CODEDISP1 DOIA33: INC DPTR DJNZ R3,DOIA33 LCALL MATRIX DOIA4: MOV A,30H CJNE A,#03H,DOIB1 MOV R7,#07H MOV R3,#24 MOV DPTR,#CODEDISP1 DOIA44: INC DPTR DJNZ R3,DOIA44 LCALL MATRIX DOIB1: MOV A,31H CJNE A,#04H,DOIB2 MOV DPTR,#CODEDISP1 MOV R7,#87H LCALL MATRIX DOIB2: MOV A,31H CJNE A,#05H,DOIB3 MOV R7,#87H MOV R3,#8 MOV DPTR,#CODEDISP1 DOIB22: INC DPTR DJNZ R3,DOIB22 LCALL MATRIX DOIB3: MOV A,31H CJNE A,#06H,DOIB4 MOV R7,#87H MOV R3,#16 MOV DPTR,#CODEDISP1 DOIB33: INC DPTR DJNZ R3,DOIB33 LCALL MATRIX DOIB4: MOV A,31H CJNE A,#07H,DOIC1 MOV R7,#87H MOV R3,#24 MOV DPTR,#CODEDISP1 DOIB44: INC DPTR DJNZ R3,DOIB44 LCALL MATRIX DOIC1: MOV A,32H CJNE A,#08H,DOIC2 MOV R7,#0BH MOV DPTR,#CODEDISP1 LCALL MATRIX DOIC2: MOV A,32H CJNE A,#09H,DOIC3 MOV R7,#0BH MOV R3,#8 MOV DPTR,#CODEDISP1 DOIC22: INC DPTR DJNZ R3,DOIC22 LCALL MATRIX DOIC3: MOV A,32H CJNE A,#0AH,DOIC4 MOV R7,#0BH MOV R3,#16 MOV DPTR,#CODEDISP1 DOIC33: INC DPTR DJNZ R3,DOIC33 LCALL MATRIX DOIC4: MOV A,32H CJNE A,#0BH,DOID1 MOV R7,#0BH MOV R3,#24 MOV DPTR,#CODEDISP1 DOIC44: INC DPTR DJNZ R3,DOIC44 LCALL MATRIX DOID1: MOV A,33H CJNE A,#0CH,DOID2 MOV R7,#8BH MOV DPTR,#CODEDISP1 LCALL MATRIX DOID2: MOV A,33H CJNE A,#0DH,DOID3 MOV R7,#8BH MOV R3,#8 MOV DPTR,#CODEDISP1 DOID22: INC DPTR DJNZ R3,DOID22 LCALL MATRIX DOID3: MOV A,33H CJNE A,#0EH,DOID4 MOV R7,#8BH MOV R3,#16 MOV DPTR,#CODEDISP1 DOID33: INC DPTR DJNZ R3,DOID33 LCALL MATRIX DOID4: MOV A,33H CJNE A,#0FH,KETTHUCTN MOV R7,#8BH MOV R3,#24 MOV DPTR,#CODEDISP1 DOID44: INC DPTR DJNZ R3,DOID44 LCALL MATRIX KETTHUCTN: LJMP TRACNGHIEM SCANKEYPAD: PUSH 03H MOV R3,#50 BACK: ACALL GETKEY JNC NOPRESSED DJNZ R3,BACK NOPRESSED: POP 03H RET ;*************************** GETKEY: PUSH 05H PUSH 06H PUSH 07H MOV A,#0EFH MOV R6,#4 TEST: MOV P3,A MOV R7,A MOV A,P3 ANL A,#0FH CJNE A,#0FH,KEYPRESSED MOV A,R7 RL A DJNZ R6,TEST CLR C SJMP EXIT KEYPRESSED: MOV R7,A MOV A,#4 CLR C SUBB A,R6 MOV R6,A MOV A,R7 MOV R5,#4 AGAIN: RRC A JNC DONE INC R6 INC R6 INC R6 INC R6 DJNZ R5,AGAIN DONE: SETB C MOV A,R6 EXIT: POP 07H POP 06H POP 05H RET MATRIX: PUSH ACC PUSH 00H PUSH 01H MOV R0,#00H MOV A,R7 MOV R1,A SCAN: MOV A,R0 MOVC A,@A+DPTR MOV P2,A MOV P1,R1 LCALL DELAY INC R0 MOV A,R1 ADD A,#10H MOV R1,A CJNE R0,#8,SCAN POP 01H POP 00H POP ACC RET DELAY: PUSH 00H PUSH 01H MOV R1,#5 DEL: MOV R0,#250 DJNZ R0,$ DJNZ R1,DEL POP 01H POP 00H RET CODEDISP: DB 00H,00H,00H,00H,00H,00H,00H,00H CODEDISP1: DB 0FFH,83H,0F5H,0F6H,0F5H,83H,0FFH,0FFH ;CHU A DB 0FFH,80H,80H,0B6H,0B6H,0C9H,0FFH,0FFH ;CHU B DB 0FFH,83H,7DH,7DH,7DH,0BBH,0FFH,0FFH ;CHU C DB 0FFH,01H,7DH,7DH,7DH,83H,0FFH,0FFH ;CHU D END KẾT LUẬN: Đề tài “mạch game đố vui sử dụng ledmatrix” đã giúp chúng em có những trải nghiệm vô cùng quý giá, chúng em có dịp ôn lại những kiến thức đã học, đồng thời tích lũy thêm cho mình môt số kiến thức, kỹ năng mới về lập trình vi xử lý. Tuy nhiên do khả năng và thời gian có hạn nên đề tài khi hoàn thành vẫn còn găp một số hạn chế nhất định như: Sử dụng quá nhiều Bus nên làm cho mạch trở nên rườm rà, mất đi tính thẩm mỹ Các ký tự xuất hiện trên led xảy ra hiện tượng nhấp nháy do chỉ quét đơn lẻ từng led một. Hướng khắc phục: Hạn chế số dây Bus sử dụng trên mạch Lập trính cho vi xử lý quét đồng thời cả 4 ledmatrix Hướng phát triển của đề tài: Các ledmatrix có thể hiển thị điểm số của các đội DANH MỤC TÀI LIỆU THAM KHẢO: “Giáo trình vi xử lý” trường Đại Học Công Nghiệp TPHCM “Giáo trình thực hành vi xử lý” trường Đại Học Công Nghiệp TPHCM

Các file đính kèm theo tài liệu này:

  • doc7noidung.doc
  • doc1modau.doc
  • doc2LOICAMON.doc
  • doc3NHANXET.doc
  • doc4nhanxet.doc
  • doc5mucluc.doc
  • dsnKHOI NUT NHAN.DSN
  • dsnKHOIBANPHIMMATRIX.DSN
  • dsnKHOIIC.DSN
  • dsnKHOILAEDMATRIX.DSN
  • pptMCHGAM~1.PPT
  • xlsNew Microsoft Excel Worksheet.xls