CHƯƠNG 1: GIỚI THIỆU HOẠT ĐỘNG CỦA MẠCHMạch game đố vui sử dụng ledmatrix thể hiện 2 khả năng cơ bản nhất của cácbảng điểm điện tử trong các chương trình gameshow đó là thể hiện đội nàog
Trang 1CHƯƠ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ácbảng điểm điện tử trong các chương trình gameshow đó là thể hiện đội nàogià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ànhquyền trả lời Đội nào nhấn trước thì sẽ được ưu tiên đồng thời màn hình ledcủa đội đó sẽ sang lên, các đội nhấn nút sau sẽ không có tác dụng đồng nghĩavớ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útnhấ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ắcnghiệ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
Trang 2Ledmatix: đượ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
1 0 8 7 6 5 4 3 2 1
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.
Trang 3Vi điều khiển 89C51: Dùng để lậptrình điều khiển cho mạch.
- 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ấutrú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
Trang 48052 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 chocá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 portxuất/nhập, trạng thái làm việc của các khối trong chip trong suốt quá trìnhhoạ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
Trang 5- 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ạngnố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.3.2) SƠ ĐỒ CHÂN VÀ CHỨC NĂNG CỦA IC 89C51:
Trang 6
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
- 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
Trang 7- 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ặccá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ủacác tín hiệu điều khiển
- Chức năng của các chân Port 3:
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ốivới chân OE\ của ROM ngoài để cho phép CPU đọc mã lệnh từ ROM ngoài
• 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àocủa xung lập trình (PGM\)
Lưu ý: fALE =
6
fOSC → có thể dùng làm xung clock cho các mạch khác.
Trang 8- Khi lệnh lấy dữ liệu từ RAM ngoài (MOVX) được thực hiện thì 1 xungALE bị bỏ qua.
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ênngoà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
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 ý:
Trang 9
- 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
Trang 10- Tổ chức bộ nhớ của chip 8051:
Trang 12
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:
Trang 13• 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:
Trang 14- 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:
Trang 153.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ácxung 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:
Trang 16
• Ứ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ủamộ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ạngthá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ếtlậ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ủachương trình để qui định chế độ hoạt động của các bộ định thời
Trang 17• 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ềukhiển và báo trạng thái của bộ định thời 0 và bộ định thời 1
Trang 18• Cấu trúc thanh ghi TCON:
• 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 trongTHx/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
Trang 193.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 trongTHx/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 trongTLx
• 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
Trang 20→ 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 trongTL0
→ 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 trongTH0
→ 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
Trang 213.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
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 haichân T0 và T1 của chip 8051
Trang 22Lư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 HIỂN THỊ
KHỐI IC PHÂN KÊNH
KHỐI NÚT NHẤN KHỐI BÀN PHÍM MATRIX
KHỐI VI XỬ LÝ
Trang 23CHƯƠNG 5: SƠ ĐỒ NGUYÊN LÝ
1 0 8 6 4 3 1
1 0 8 6 4 3 1
1 0 8 6 4 3 1
1 0 8 6 4 3 1
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
Trang 25S W 6
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
S W 1
R 6 R
R 4 R
S W 2
S W 6
S W 3
R 2 R
S W 5
Trang 26J 1
C O N 8
1 2 3 4 5 6 7 8
V C C
J 4
C O N 8
1 2 3 4 5 6 7 8
C 2
U 1
8 9 5 2
1 2 3 4 5 6 7 8
C 1
Trang 27
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
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
MAIN
KIỂM TRA NÚT TRẮC NGHIỆM
Trang 286.2.LƯU ĐỒ GIẢI THUẬT CỦA CHƯƠNG TRÌNH TRẢ LỜI
Trang 296.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
Trang 39KẾT LUẬN:
Đề tài “mạch game đố vui sử dụng ledmatrix” đã giúp chúng em có những trảinghiệm vô cùng quý giá, chúng em có dịp ôn lại những kiến thức đã học, đồngthờ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ẫncò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ínhthẩ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
Trang 40DANH 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