BÀI TẬP VI ĐIỀU KHIỂN 8051
- BÀI TẬP LÀM QUEN VI ĐIỀU KHIỂN
- Xuất nhập và chuyển dữ liệu
Cho 16 Led đơn kết nối với Port 0 và Port 2, tích cực mức 0. 8 công tắc nối giữa Port 1 và đất. 8 nút nhấn nối giữa Port 3 và đất. Thực hiện các bài tập sau chỉ sử dụng lệnh MOV (các byte và bit được sử dụng đều ở trên RAM nội):
- Xuất tín hiệu điều khiển Led nối với P0.1 sáng.
- Tạo hệ thống bán điều khiển sáng tắt dãy 8 Led ở Port 2 bằng 8 công tắc ở Port 1.
- Xuất dữ liệu từ byte 37H trên RAM nội ra Port 0.
- Lưu giá trị trên từng bit của Port 3 vào chuỗi bit bắt đầu từ 00H.
- Xuất chuỗi bit từ 10H đến 1FH ra 2 Port 0 và 2.
- Nhập dữ liệu từ Port 1 và xuất giá trị đó ra Port 2.
- Giả sử các công tắc ở Port 3 đều mở, xuất giá trị 65h ra Port 3, nhập giá trị từ Port 3 vào byte 7FH. Hỏi giá trị của byte 7FH là bao nhiêu ? Đóng 4 công tắc tương ứng với 4 bit cao của Port 3, nhập lại giá trị từ P3 vào 7FH. Lúc này kết quả trong 7FH bằng ?
- Xuất dữ liệu từ byte có địa chỉ cho bởi Port 3 ra Port 0.
- Viết CT chuyển dữ liệu byte 34H của RAM nội vào byte 35H của RAM nội theo 2 cách (định địa chỉ byte trực tiếp và định địa chỉ byte gián tiếp).
- Các lệnh số học
- Thực hiện phép cộng 2 byte 20H và 21H, kết quả lưu trong 22H.
- Thực hiện phép trừ 2 giá trị trong R0 và R1, kết quả lưu trong R2.
- Thực hiện phép nhân 2 giá trị trong 2 byte có địa chỉ lưu trong R0 và R1, kết quả lưu trong R2 và R3.
- Thực hiện phép chia 2 giá trị trong 2 byte có địa chỉ 16H, byte còn lại có địa chỉ lưu trong R0, kết quả xuất ra P2 và P0.
- Cộng 2 số BCD trong 2 byte 18H và 19H.
- Các lệnh logic
- Thực hiện phép tính : P0.2 = P3.1 AND P3.5
- Nếu cờ C và chân P1.1 cùng ở mức 1 thì cho sáng Led ở P0.0.
- Nếu cờ C và chân P3.0 có cùng mức 0 hoặc 1 thì cho sáng Led ở P0.0.
- Nếu P3.0 hoặc P1.0 bằng 1 thì cho sáng Led ở P0.0.
- Nếu bất kì 1 trong 3 giá trị của P1.0, P1.1 và P1.2 bằng 1 thì cho sáng Led ở P0.0.
- Thực hiện phép tính P2 = P3 AND P1
- Thực hiện phép tính P2 = P3 NAND P1
- Thực hiện phép tính P2 = P3 OR P1
- Thực hiện phép tính P2 = P3 NOR P1
- Thực hiện phép tính P2 = P3 XOR P1
- Các lệnh rẽ nhánh (yêu cầu vẽ lưu đồ giải thuật cho từng bài)
- Nếu P1.1 = 0 thì cho Led ở P2.5 tắt, nếu P1.1 = 1 thì cho Led ở P2.5 sáng.
- Bật tắt toàn bộ Led ở Port 0 bằng công tắc ở P3.7.
- So sánh giá trị trong thanh ghi A với giá trị 55H, nếu bằng thì tắt hết các đèn ở Port 0 và 2, nếu giá trị trong A nhỏ hơn thì bật Led ở Port 0, tắt ở Port 2, nếu lớn hơn thì tắt led ở P0, sáng ở P2.
- Viết CT con delay 100ms, biết rằng thạch anh (xtal) dùng trong hệ thống là:
a. 12 MHz
b. 6 MHz
- Điều khiển ngoại vi
- Ghi giá trị 50H vào byte có địa chỉ 0030H ở RAM ngoài.
- Xuất giá trị của byte có địa chỉ 0035H ở RAM ngoài ra Port 2.
- Viết CT chuyển dữ liệu byte 2001H (RAM ngoài) vào byte 41H (RAM nội). Làm theo 2 cách (định địa chỉ byte trực tiếp và định địa chỉ byte gián tiếp).
- Sử dụng 1 vi mạch 74138 và các cổng cần thiết để thiết kế mạch giải mã địa chỉ tạo ra các tín hiệu chọn chip tương ứng các vùng địa chỉ sau:
[TABLE="align: center"]
[TR]
[TD]Tín hiệu chọn chip[/TD]
[TD]Vùng địa chỉ[/TD]
[TD]Đặc tính truy xuất[/TD]
[/TR]
[TR]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image002.gif[/IMG][/TD]
[TD]0000H - 3FFFH[/TD]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image004.gif[/IMG][/TD]
[/TR]
[TR]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image006.gif[/IMG][/TD]
[TD]4000H - 7FFFH[/TD]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image004.gif[/IMG][/TD]
[/TR]
[TR]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image008.gif[/IMG][/TD]
[TD]6000H - 7FFFH[/TD]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image010.gif[/IMG][/TD]
[/TR]
[TR]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image012.gif[/IMG][/TD]
[TD]8000H - 87FFH[/TD]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image014.gif[/IMG][/TD]
[/TR]
[TR]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image016.gif[/IMG][/TD]
[TD]8800H - 8FFFH[/TD]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image018.gif[/IMG][/TD]
[/TR]
[/TABLE]
- Chỉ dùng một vi mạch 74138 (không dùng thêm cổng), thiết kế mạch giải mã địa chỉ tạo ra một tín hiệu chọn chip /CS tương ứng tầm địa chỉ F000H-F3FFH.
- Sử dụng 1 vi mạch 74138 và các cổng cần thiết để thiết kế mạch giải mã địa chỉ tạo ra các tín hiệu chọn chip tương ứng các vùng địa chỉ sau:
[TABLE="align: center"]
[TR]
[TD]Tín hiệu chọn chip[/TD]
[TD]Vùng địa chỉ[/TD]
[TD]Đặc tính truy xuất[/TD]
[/TR]
[TR]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image002.gif[/IMG][/TD]
[TD]9800H - 9BFFH[/TD]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image004.gif[/IMG][/TD]
[/TR]
[TR]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image006.gif[/IMG][/TD]
[TD]9800H - 9BFFH[/TD]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image010.gif[/IMG][/TD]
[/TR]
[TR]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image008.gif[/IMG][/TD]
[TD]9C00H - 9DFFH[/TD]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image010.gif[/IMG][/TD]
[/TR]
[TR]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image012.gif[/IMG][/TD]
[TD]9E00H - 9EFFH[/TD]
[TD][IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image010.gif[/IMG][/TD]
[/TR]
[/TABLE]
- Timer/Counter
- Dùng Timer chế độ 16 bit định thì trong 10000 chu kì máy thì bật Led P0.0. Sử dụng 2 cách : dùng ngắt và không dùng ngắt.
- Dùng Timer chế độ 8 bit tự động nạp lại để trong 100 chu kì máy thì đảo bit P2.0. Sử dụng 2 cách : dùng ngắt và không dùng ngắt.
- Dùng Counter đếm số lần nhấn nút ở P3.1, lưu giá trị vào R0.
- Viết CT con delay 1s, biết rằng thạch anh (xtal) dùng trong hệ thống là:
a. 12 MHz
b. 24 MHz
- Ngắt ngoài
- Đếm số xung đưa vào P3.2, lưu vào byte 30H.
- Mỗi khi có cạnh xuống trên chân P3.3 thì đảo bit ở P2.1
- Cho toàn bộ Led ở P0 sáng khi bình thường, mỗi khi chân xảy ra ngắt mức ở /INT0 thì tắt.
- Viết CT đếm số xung đưa vào chân /INT1 (P3.3) và điều khiển relay thông qua chân P3.0 (relay đóng khi P3.0 bằng 1), cất số đếm vào byte 40H của Ram nội, nếu số đếm chưa đến 100 thì đóng relay, nếu số đếm đạt 100 thì ngắt relay.
- Giao tiếp nối tiếp
- Xuất giá trị 50H ra Port nối tiếp.
- Nhập giá trị từ bộ đệm vào thanh ghi R4 khi xảy ra ngắt nối tiếp.
- BÀI TẬP CƠ BẢN
- Viết CT xóa 20 byte RAM nội có địa chỉ bắt đầu là 30H.
- Viết CT xóa các byte RAM nội từ địa chỉ 20H đến 7FH.
- Viết CT xóa 250 byte RAM ngoài có địa chỉ bắt đầu là 4000H.
- Viết CT xóa 2500 byte RAM ngoài có địa chỉ bắt đầu là 4000H.
- Viết CT xóa toàn bộ RAM ngoài có dung lượng 8KB, biết rằng địa chỉ đầu là 2000H.
- Viết CT chuyển một chuỗi dữ liệu gồm 10 byte trong RAM nội có địa chỉ đầu là 30H đến vùng RAM nội có địa chỉ đầu là 40H.
- Viết CT chuyển một chuỗi dữ liệu gồm 100 byte trong RAM ngoài có địa chỉ đầu là 2000H đến vùng RAM ngoài có địa chỉ đầu là 4000H.
- Viết CT chuyển một chuỗi dữ liệu gồm 10 byte trong RAM nội có địa chỉ đầu là 30H đến vùng RAM ngoài có địa chỉ đầu là 4000H.
- Viết CT chuyển một chuỗi dữ liệu gồm 10 byte trong RAM ngoài có địa chỉ đầu là 5F00H đến vùng RAM nội có địa chỉ đầu là 40H.
- Cho một chuỗi dữ liệu gồm 20 byte liên tiếp trong RAM nội, bắt đầu từ địa chỉ 20H. Hãy viết CT lần lượt xuất các dữ kiệu này ra Port 1.
- Giả sử Port 1 được nối đến một thiết bị phát dữ liệu (ví dụ như 8 nút nhấn). Hãy viết CT nhận liên tiếp 10 byte dữ liệu từ thiết bị phát này và ghi vào 10 byte (RAM nội) liên tiếp bắt đầu từ byte 50H.
- Viết CT tạo một xung dương ([IMG]file:///C:/Users/KIMTINH/AppData/Local/Temp/msohtml1/01/clip_image019.gif[/IMG]) tại chân P1.0 với độ rộng xung 1ms, biết rằng xtal là 12 MHz.
- Viết CT tạo chuỗi xung vuông có f = 100 KHz tại chân P1.1 (Xtal 12 MHz).
- Viết CT tạo chuỗi xung vuông có f = 100 KHz và độ rộng xung D = 40% tại chân P1.2 (Xtal 12 MHz).
- Viết CT tạo chuỗi xung vuông có f = 10 KHz tại chân P1.3 (Xtal 24 MHz).
- Viết CT tạo chuỗi xung vuông có f = 10 KHz và có độ rộng xung D = 30% tại chân P1.3 (Xtal 24 MHz).
- Viết CT tạo chuỗi xung vuông có f = 10 Hz tại chân P1.4 (Xtal 12 MHz).
- Viết CT tạo chuỗi xung vuông có f = 10 Hz và có độ rộng xung D = 25% tại chân P1.5 (Xtal 12 MHz).
- Cho một chuỗi số 8 bit không dấu trong RAM nội gồm 10 số bắt đầu từ byte 30H. Hãy viết CT con cộng chuỗi số này và ghi kết quả vào byte 2FH (giả sử kết quả nhỏ hơn hoặc bằng 255).
- Cho một chuỗi số 8 bit không dấu trong RAM nội gồm 10 số bắt đầu từ byte 30H. Hãy viết CT con cộng chuỗi số này và ghi kết quả vào byte 2EH:2FH (byte 2EH chứa byte cao của kết quả và byte 2FH chứa byte thấp của kết quả).
- Viết CT con cộng 2 số 16 bit chứa trong 4 byte 41H-44H, kết quả lưu trong 2 byte 45H-46H.
- Viết CT con trừ số 16 bit chứa trong byte 41H-42H cho số 16 bit chứa trong byte 43H-44H.
- Cho một chuỗi số 16 bit không dấu trong RAM nội gồm 10 số bắt đầu từ byte 30H theo nguyên tắc byte có địa chỉ nhỏ hơn chứa byte cao và byte có địa chỉ lớn hơn chứa byte thấp. (Ví dụ: byte cao của số 16 bit đầu tiên được cất tại byte 30H và byte thấp của số 16 bit đầu tiên được cất tại byte 31H). Hãy viết CT con cộng chuỗi số này và cất kết quả vào byte 2EH:2FH.
- Viết CT con lấy bù 2 số 16 bit chứa trong R2:R3.
- Cho hai số 16 bit, số thứ 1 chứa trong (30H)
31H), số thứ 2 chứa trong (32H)
33H). Viết CT con so sánh hai số này. Nếu số thứ 1 lớn hơn hoặc bằng số thứ 2 thì set cờ F0, nếu ngược lại thì xóa cờ F0. - Cho một chuỗi ký tự dưới dạng mã ASCII trong RAM nội, dài 20 byte, bắt đầu từ địa chỉ 50H. Viết CT xuất các ký tự in hoa có trong chuỗi này ra Port 1. Biết rằng mã ASCII của ký tự in hoa là từ 65 (chữ A) đến 90 (chữ Z).
- Viết CT mỗi khi có ngắt cạnh ở INT1 thì nhập một ký tự từ Port 1 dưới dạng mã ASCII và ghi vào RAM ngoài, bắt đầu từ địa chỉ 0000H. Biết rằng chuỗi này kết thúc bằng ký tự CR (có mã ASCII là 0DH) và không ghi ký tự này vào RAM mà thay bằng ký tự null (có mã ASCII là 00H).
- Cho một chuỗi dữ liệu dưới dạng số có dấu trong RAM nội, dài 100 byte, bắt đầu từ địa chỉ 100H. Viết CT lần lượt xuất các dữ liệu trong chuỗi ra Port 1 nếu là số dương (xem số 0 là dương) và xuất ra Port 2 nếu là số âm.
- Cho một chuỗi dữ liệu dưới dạng số có dấu trong RAM ngoài, bắt đầu từ địa chỉ 0100H và kết thúc bằng số 0. Viết CT lần lượt xuất các dữ liệu trong chuỗi ra Port 1 nếu là số dương và xuất ra Port 2 nếu là số âm.
- Cho một chuỗi dữ liệu dưới dạng số không dấu trong RAM nội, bắt đầu từ địa chỉ 20H và độ dài chuỗi là nội dung byte 0FH. Viết CT đếm số số chẵn (chia hết cho 2) có trong chuỗi và cất vào byte 7EH.
- Viết CT con có nhiệm vụ lấy 1 byte từ 1 chuỗi data gồm 20 byte cất trong Ram ngoài bắt đầu từ địa chỉ 2000H và xuất ra Port1. Mỗi lần gọi CT con chỉ xuất 1 byte, lần gọi kế thì xuất byte kế tiếp, lần gọi thứ 21 thì lại xuất byte đầu, ...
- Viết CT tạo sóng vuông chu kì T = 10ms dùng Timer trên chân P2.0. (Xtal 12MHz).
- Viết CT tạo sóng vuông tần số f = 1KHz dùng Timer trên chân P2.0. (Xtal 12MHz).
- Viết CT dùng Timer tạo 2 sóng vuông có cùng f = 1KHz tại P1.6 và P1.7. Biết rằng sóng vuông tại P1.7 chậm pha hơn sóng vuông tại P1.6 100us. (Xtal 12MHz).
- Viết CT dùng ngắt Timer để tạo đồng thời 2 sóng vuông 1KHz và 50Hz tại P1.0 và P1.1. (Xtal 6MHz)
- Viết CT lấy 1 chuỗi data chứa trong Ram ngoài bắt đầu từ địa chỉ 6200H đến địa chỉ 62FFH và xuất ra Port1, mỗi lần xuất cách nhau 50ms. Sử dụng ngắt Timer.
- Viết CT phát liên tục chuỗi số từ 0 đến 9 ra port nối tiếp theo chế độ UART 8 bit, 2400 baud. Sử dụng ngắt serial.
- Viết CT chờ nhận data từ 1 thiết bị ngoài gởi đến 8051 qua port nối tiếp (chế độ UART 8 bit, 4800 baud). Nếu nhận được ký tự STX (02H) thì bật sáng Led ở P2.0, nếu nhận được ký tự ETX (03H) thì tắt Led. Sử dụng ngắt serial.
- Viết CT chờ nhận 1 xung cạnh xuống đưa vào chân /INT0 (P3.2), khi có xung thì nhập data từ Port1 và phát ra port nối tiếp ở chế độ UART 8 bit 9600 baud.
- Viết CT xuất số có 4 chữ số ra led 7 đoạn dùng IC dịch 4094, mỗi chữ số lưu lần lượt trong Ram nội có địa chỉ từ 50H(hàng ngàn) đến 53H (đơn vị).
- Phát triển bài 2.40 lên không hiển thị các số 0 vô nghĩa ở hàng ngàn/trăm/chục.
- Chạy led : Cho chạy cùng lúc 1 led từ trái qua và 1 led từ phải qua, khi gặp nhau ở giữa thì chạy lại từ đầu.
- Xuất ra Led ma trận số cuối cùng trong MSSV của bạn.
- Thực hiện công việc sau :
[TABLE="align: center"]
[TR]
[TD="colspan: 2"]Trạng thái đầu vào[/TD]
[TD]Công việc thực hiện[/TD]
[/TR]
[TR]
[TD]P3.0[/TD]
[TD]P3.1[/TD]
[/TR]
[TR]
[TD]0[/TD]
[TD]0[/TD]
[TD]P0 = 0, P2 = 0[/TD]
[/TR]
[TR]
[TD]0[/TD]
[TD]1[/TD]
[TD]P0 = 1, P2 = 2[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]0[/TD]
[TD]P0 = 2, P2 = 0[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]1[/TD]
[TD]P0 = P1, P2 = P3[/TD]
[/TR]
[/TABLE]
- Hiển thị họ và tên lên màn hình LCD.
- …
- BÀI TẬP TỔNG HỢP
- Cho một chuỗi ký tự dưới dạng mã ASCII trong RAM nội, dài 20 byte, bắt đầu từ địa chỉ 50H. Viết CT đổi các ký tự in hoa có trong chuỗi này thành ký tự thường. Biết rằng mã ASCII của ký tự thường bằng mã ASCII của ký tự in hoa cộng thêm 32.
- Cho một chuỗi ký tự số dưới dạng mã ASCII trong RAM nội, dài 20 byte, bắt đầu từ địa chỉ 50H. Viết CT đổi các ký tự số này thành mã BCD. Biết rằng mã ASCII của các ký tự số là từ 30H (số 0) đến 39H (số 9).
- Viết CT dùng Timer điều khiển đèn giao thông tại một giao lộ. Cho biết rằng:
[TABLE="align: center"]
[TR]
[TD]
Đèn[/TD]
[TD]
Bit điều khiển[/TD]
[TD]
Thời gian[/TD]
[/TR]
[TR]
[TD]Xanh 1[/TD]
[TD]P1.0[/TD]
[TD]25s[/TD]
[/TR]
[TR]
[TD]Vàng 1[/TD]
[TD]P1.1[/TD]
[TD]3s[/TD]
[/TR]
[TR]
[TD]Đỏ 1[/TD]
[TD]P1.2[/TD]
[TD]36s[/TD]
[/TR]
[TR]
[TD]Xanh 2[/TD]
[TD]P1.3[/TD]
[TD]33s[/TD]
[/TR]
[TR]
[TD]Vàng 2[/TD]
[TD]P1.4[/TD]
[TD]3s[/TD]
[/TR]
[TR]
[TD]Đỏ 2[/TD]
[TD]P1.5[/TD]
[TD]28s[/TD]
[/TR]
[/TABLE]
Đèn sáng khi bit điều khiển bằng 0.
- Viết chương trình cho phép khi nhấn nút (P3.7) thì cho xuất xung tần số khoảng 100Hz, độ rộng xung 80%, điều khiển động cơ DC quay đến khi đủ 100 vòng thì ngừng. Sử dụng encoder 128 xung/vòng.
- Thiết kế hệ thống băng chuyền đóng gói sản phẩm vào thùng đựng sử dụng 8051 như sau : Gồm 2 Băng chuyền sử dụng động cơ DC
_ trên băng chuyền A có gắn 1 cảm biến để đếm sản phẩm, tích cực mức 1. Ngay sau khi sản phẩm đi qua cảm biến thì rớt xuống thùng đựng.
_ trên băng chuyền B mang thùng đựng có 2 loại thùng : To và nhỏ (tương ứng đựng 5 và 10 sản phẩm), được nhận bởi 2 cảm biến : 00 là không có thùng, 01 là thùng nhỏ, 11 là thùng to.
Mô tả công việc : Băng chuyền A ngừng, chạy băng chuyền B đến khi cảm biến nhận có thùng thì ngừng, nhận biết thùng to/nhỏ. Cho chạy băng chuyền A đếm đủ số sản phẩm tương ứng thùng to/nhỏ thì ngừng. Lặp lại chu trình.
- Cho động cơ có encoder 120xung/vòng, chạy với tốc độ từ 0 đến 60 vòng/phút. Viết chương trình tính tốc độ quay của động cơ bằng cách đếm số xung trong 1 giây. Hiển thị tốc độ đó ra led 7 đoạn (hiện số từ 0-60).
- Thiết kế hệ thống đo tốc độ quay của động cơ sử dụng encoder 1000xung/vòng.
- Thực hiện điều khiển led chạy bằng port 1 theo bảng sau:
[TABLE="align: center"]
[TR]
[TD="colspan: 2"]Trạng thái đầu vào[/TD]
[TD]Công việc thực hiện trên P1[/TD]
[/TR]
[TR]
[TD]P3.0[/TD]
[TD]P3.1[/TD]
[/TR]
[TR]
[TD]0[/TD]
[TD]0[/TD]
[TD]Tắt toàn bộ hoạt động[/TD]
[/TR]
[TR]
[TD]0[/TD]
[TD]1[/TD]
[TD]Cho chạy 2 led từ trái qua phải[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]0[/TD]
[TD]Cho chạy 2 led từ phải qua trái[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]1[/TD]
[TD]Cho chạy cùng lúc 1 led từ trái qua và 1 led từ phải qua[/TD]
[/TR]
[/TABLE]
- Thiết kế hệ thống đếm số người trong một phòng học như sau : Phòng chỉ có 1 cửa ra vào được gắn 2 cảm biến có cùng độ cao, cảm biến 1 ở mé ngoài và cảm biến 2 ở mé trong phòng. Thực hiện việc đếm số người bằng cách nếu cảm biến 1 phát hiện người rồi đến cảm biến 2 (có người đi vào phòng) thì tăng biến đếm, ngược lại nếu cảm biến 2 phát hiện trước thì giảm biến đếm.
- Viết chương trình giao tiếp với IC thời gian thực DS1307 để lấy thời gian và hiển thị ra Led 7 đoạn.
- Viết chương trình giao tiếp với IC thời gian thực DS12887 để lấy thời gian và hiển thị ra Led 7 đoạn.
- Xuất chữ cái đầu tên của bạn ra Led ma trận 8x8. Cho chạy từ trái sang phải.
- Xuất kí tự nhận được từ phím ma trận ra Led ma trận 8x8.
- Viết CT điều khiển một thang máy 5 tầng (tự tưởng tượng)
- BÀI TẬP NÂNG CAO
- Làm máy tính cộng, trừ, nhân, chia số có 1 chữ số được nhập từ bàn phím ma trận, hiển thị ra led 7 đoạn.
- Viết chương trình đèn giao thông có hiển thị giờ với 2 chế độ lựa chọn thông qua một công tắc :
_ Tự động : Xanh trong N giây, Vàng trong 2 giây và Đỏ trong (N+2) giây.
_ Chỉnh bằng tay : một nút gạt chuyển Xanh và Đỏ cả hai bên, không dùng đèn vàng.
- Viết CT làm một đồng hồ số chỉ sử dụng 8051, hiển thị giờ phút giây và ngày tháng năm.
- Cho hệ thống thực hiện việc kiểm soát số lượng xe ô tô trong 1 gara tự động có sức chứa 250 xe như sau :
- Ở ngõ vào và ra gắn 1 cảm biến mỗi nơi để đếm số xe vào/ra gara. Tổng số xe trong gara được tính bằng hiệu số giữa số lượng xe vào/ra.
- Việc kiểm soát vào ra được thực hiện bằng thẻ từ : người lái xe phải đưa thẻ qua máy quét, thẻ hợp lệ thì một tín hiệu dạng một xung sẽ được đưa về bộ điều khiển để mở cổng vào/ra.
- Cổng được mở bằng 1 động cơ DC, đóng 3s sau khi cảm biến đếm xe ngừng tích cực (xe đã qua)
- Khi bãi xe còn chỗ trống thì bật đèn xanh, đầy thì báo bằng đèn đỏ.
- Hiển thị số chỗ còn trống ra Led 7 đoạn.
Giả sử bộ điều khiển được thiết kế từ họ 8051. Hãy vẽ sơ đồ kết nối các tín hiệu điều khiển với 8051( tự chọn mức tích cực) và vẽ lưu đồ giải thuật cho hệ thống hoạt động. Viết CT cụ thể.
- Viết chương trình điều khiển hệ thang máy đôi.
- Viết chương trình chạy đầy đủ họ và tên ra 4 Led ma trận 8x8. Tự thiết kế hệ thống phần cứng.