Sử dụng vi điều khiển 8051 lập trình đèn giao thông

50 33 0
Sử dụng vi điều khiển 8051 lập trình đèn giao thông

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Mục Lục Trang I.Giới thiệu vi điều khiển…………………………………………………………… II.Tập lệnh vi điều khiển (8051) ……………………………………………… 2.1 NHÓM LỆNH DI CHUYỂN………………………………………………………………3 2.2 NHÓM LỆNH SỐ HỌC………………………………………………………………… 10 2.3 NHĨM LỆNH LOGIC…………………………………………………………………….20 2.4 NHĨM LỆNH SỬ LÍ BÍT……………………………………………………………… 25 III.Cấu trúc phần cứng 80C51 …………………………………………… 27 3.1.KHẢO SÁT SƠ ĐỒ CHÂN.……………………………………………………………….27 IV.Giao tiếp 8051 với thiết bị ngoại vi……………………………………30 V.Lập trinh đèn giao thông …………………………………………………………34 Lời Mở đầu I.Giới thiệu vi điều khiển Trong thập niên cuối kỉ XX, từ đời cơng nghệ bán dẫn, kĩ thuật điện tử có phát triển vượt bậc Các thiết bị điện tử sau kết hợp với mật độ cao cao diện tích nhỏ, nhờ thiết bị nhỏ nhiều chức cao Các thiết bị điện tử ngày nhiều chức giá ngày rẻ hơn, điện tử có mặt khắp nơi Bước đột phá công nghệ điện tử, công ty trẻ tuổi Intel cho đời vi xử lý Đột phá chỗ: "Đó kết cấu logic mà thay đổi chức chương trình ngồi khơng phát triển theo hướng tạo cấu trúc phần cứng thực theo số chức định trước đây"(trích từ dòng 17 đến 19, trang 3, 'Kĩ thuật VI XỬ LÝ lập trình ASSEMBLY cho hệ vi xử lý', tác giả Đỗ Xuân Tiến, nhà xuất Khoa học kĩ thuật) Tức phần cứng đóng vai trị thứ yếu, phần mềm (chương trình) đóng vai trị chủ đạo chức cần thực Nhờ vi xử lý có mềm dẻo hóa chức Ngày vi xử lý có tốc độ tính tốn cao khả xử lý lớn Vi xử lý có khối chức cần thiết để lấy liệu, xử lý liệu xuất liệu sau xử lý Và chức Vi xử lý xử lý liệu, chẳng hạn cộng, trừ, nhân, chia, so sánh.v.v Vi xử lý khơng có khả giao tiếp trực tiếp với thiết bị ngoại vi, có khả nhận xử lý liệu mà Để vi xử lý hoạt động cần có chương trình kèm theo, chương trình điều khiển mạch logic từ vi xử lý xử lý liệu cần thiết theo yêu cầu Chương trình tập hợp lệnh để xử lý liệu thực lệnh lưu trữ nhớ, công việc thực hành lệnh bao gồm: nhận lệnh từ nhớ, giải mã lệnh thực lệnh sau giải mã Để thực công việc với thiết bị cuối cùng, chẳng hạn điều khiển động cơ, hiển thị kí tự hình địi hỏi phải kết hợp vi xử lý với mạch điện giao tiếp với bên gọi thiết bị I/O (nhập/xuất) hay gọi thiết bị ngoại vi Bản thân vi xử lý đứng khơng có nhiều hiệu sử dụng, phần máy tính, hiệu ứng dụng Vi xử lý lớn Vi xử lý kết hợp với thiết bị khác sử hệ thống lớn, phức tạp đòi hỏi phải xử lý lượng lớn phép tính phức tạp, có tốc độ nhanh Chẳng hạn hệ thống sản xuất tự động công nghiệp, tổng đài điện thoại, robot có khả hoạt động phức tạp v.v Vi điều khiển IC lập trình, Vi điều khiển cần lập trình trước sử dụng Mỗi phần cứng định phải có chương trình phù hợp kèm theo, trước viết chương trình địi hỏi người viết phải nắm bắt cấu tạo phần cứng yêu cầu mà mạch điện cần thực Chương trình tập hợp lệnh tổ chức theo trình tự hợp lí để giải u cầu người lập trình.Tập hợp tất lệnh gọi tập lệnh Họ Vi điều khiển MSC-51 có chung tập lệnh, Vi điều khiển cải tiến sau thường thay đổi mở rộng tập lệnh mà trọng phát triển phần cứng Lệnh Vi điều khiển số nhị phân bit hay gọi mã máy Các lệnh mang mã 00000000b đến 11111111b Các mã lệnh đưa vào lưu trữ ROM, thực chương trình Vi điều khiển đọc mã lệnh này, giải mã, thực lệnh Vì lệnh Vi điều khiển có dạng số nhị phân dài khó nhớ, việc gỡ lỗi chương trình phát sinh lỗi phức tạp khó khăn Khó khăn giải với hỗ trợ máy vi tính, người viết chương trình viết chương trình cho vi điều khiển ngơn ngữ lập trình cấp cao, sau việc viết chương trình hồn tất, trình biên dịch chuyển câu lệnh cấp cao thành mã máy cách tự động Các mã máy sau đưa (nạp) vào nhớ ROM Vi điều khiển, Vi điều khiển tìm đến đọc lệnh từ ROM để thực chương trình Bản thân máy tính khơng thể thực mã máy chúng khơng phù hợp với phần cứng máy tính, muốn thực phải có chương trình mơ dành riêng Chương trình cho Vi điều khiển viết C++,C,Visual Basic, băng ngôn ngữ cấp cao khác Tuy nhiên hợp ngữ Assembler đa số người dùng Vi điều khiển sử dụng để lập trình, lí chọn Assembly để hướng dẫn viết chương trình cho Vi điều khiển Assembly ngơn ngữ cấp thấp, câu lệnh chương trình tương ứng với lệnh mà xử lý thực Ưu điểm hợp ngữ Assembly là: mã gọn,ít chiếm dung lượng nhớ, hoạt động với tốc độ nhanh, có hiệu suất tốt so với chương trình viết ngơn ngữ bậc cao khác II.Tập lệnh vi điều khiển (8051) Tập lệnh Vi điều khiển chia làm nhóm:  Nhóm lệnh di chuyển liệu  Nhóm lệnh số học  Nhóm lệnh logic  Nhóm lệnh rẽ nhánh  Nhóm lệnh xử lí bit Trước xem phần dưới, bạn cần xem lại trước nắm rõ phần cứng, đặc biệt vùng nhớ Ram vi điều khiển Chú ý thuật ngữ sau:  Các byte RAM bit vi điều khiển gọi "ô nhớ", ô nhớ có chức đặc biệt thường gọi "thanh ghi", bit gọi "bit nhớ"  liệu ô nhớ trạng thái (0 1) cần thiết lập cho bit ô nhớ (8 bit) 2.1 NHÓM LỆNH DI CHUYỂN 2.1.1 Lệnh chuyển liệu từ ghi Rn vào ghi A:  Cú pháp: Mov A,Rn  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Công dụng: Chuyển liệu ghi Rn vào ghi A, liệu ghi Rn không đổi  Ví dụ: Giả sử ghi R5 mang liệu với giá trị 0A5H (10100101B) Lệnh Mov A,R5 Sau lệnh thực A mang liệu giá trị A5H, Rn không đổi giá trị ghi A trước thực lệnh không cần quan tâm 2.1.2 Lệnh chuyển liệu từ nhớ có địa direct vào ghi A:  Cú pháp: Mov A,direct  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: chuyển liệu nhớ có địa direct vào ghi A  Ví dụ: Giả sử ghi có địa 33H mang liệu với giá trị 09H (00001001B) Lệnh Mov A,33H Sau lệnh thực A mang liệu giá trị 09H 2.1.3 Lệnh chuyển liệu từ nhớ có địa gián tiếp vào ghi A:  Cú pháp: Mov A,@Ri  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy   Công dụng: chuyển liệu ô nhớ 'có địa giá trị ghi Ri' vào ghi A  Ví dụ: Giả sử trước thực lệnh nhớ có địa 33H mang liệu với giá trị 09H (00001001B) ghi R1 thiết lập giá trị 33H Lệnh Mov A,@R1 Khi lệnh thực A nhận liệu từ nhớ có vị trí giá trị thiết lập ghi R1, tức A nhận liệu từ nhớ có địa 33H, ý: trước nhớ 33H mang liệu 09H Sau lệnh thực A mang giá trị 09H (00001001B) 2.1.4 Lệnh đưa liệu vào ghi A  Cú pháp: Mov A,#data  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: thiết lập liệu cho ghi A  Ví dụ: Muốn ghi A mang liệu có giá trị 56H ta thực lệnh Mov A,#56H Sau lệnh thực A mang giá trị 56H 2.1.5 Lệnh chuyển liệu từ A vào ghi Rn  Cú pháp: Mov Rn,A  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: chuyển liệu từ ghi A vào ghi Rn (n=0-7)  Ví dụ: Mov A,#56H Mov R1,A Sau lệnh thực R1 mang giá trị 56H 2.1.6 Lệnh chuyển liệu từ nhớ có địa direct vào ghi Rn  Cú pháp: Mov Rn,direct  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: chuyển liệu ô nhớ có địa direct vào ghi Rn (n=0-7)  Ví dụ: giả sử nhớ 55H mang liệu có giá trị A3H Mov R4,55H Sau lệnh thực R4 mang giá trị A3H 2.1.7 Thiết đặt liệu cho ghi Rn  Cú pháp: Mov Rn,#data  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: thiết đặt liệu cho ghi Rn  Ví dụ: Muốn ghi Rn mang liệu có giá trị 37H ta thực lệnh Mov A,#37H Sau lệnh thực A mang giá trị 37H 2.1.8 Lệnh chuyển liệu từ ghi A vào nhớ có địa direct  Cú pháp: Mov direct,A  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: chuyển liệu từ ghi A vào nhớ có địa direct  Ví dụ: Mov A,#77H Mov 69H,A Sau lệnh thực ô nhớ 69H mang giá trị 77H (giá trị bit thiết lập ô nhớ 69H 01110111B ) 2.1.9 Lệnh chuyển liệu từ ghi Rn vào nhớ có địa direct  Cú pháp: Mov direct,Rn  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: chuyển liệu từ ghi A vào nhớ có địa direct  Ví dụ: Mov Rn,#78H Mov 7AH,Rn Sau lệnh thực ô nhớ 7AH mang giá trị 78H 2.1.10 Lệnh chuyển liệu từ ô nhớ có địa direct vào ô nhớ có địa direct khác  Cú pháp: Mov direct,direct  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: chuyển liệu từ ô nhớ có địa direct vào ô nhớ có địa direct khác  Ví dụ:giả sử ghi 20H mang liệu có giá trị FFH Mov 22H,20H Sau lệnh thực ghi 22H mang giá trị FFH 2.1.11 Lệnh đưa liệu vào nhớ có địa direct  Cú pháp: Mov direct,#data  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: thiết lập liệu cho nhớ có địa direct  Ví dụ: Mov 52H,#43H Sau lệnh thực ô nhớ 52H mang giá trị 43H 2.1.12 Lệnh chuyển liệu từ nhớ có địa gián tiếp vào nhớ có địa direct  Cú pháp: Mov direct,@Ri  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: Chuyển liệu nhớ có địa giá trị ghi Ri vào nhớ có địa direct  Ví dụ: Mov 30H,#46H Mov R0,#30H Mov 23H, @R0 Sau lệnh thực ô nhớ 23H mang giá trị 46H 2.1.13 Lệnh chuyển liệu từ ghi A vào nhớ có địa gián tiếp  Cú pháp: Mov @Ri,A  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Công dụng: Chuyển liệu ghi A vào nhớ có địa giá trị ghi Ri  Ví dụ: Mov A,#33H Mov R1,#22H Mov @R0,A Sau lệnh thực ô nhớ 22H mang giá trị 33H 2.1.14 Lệnh chuyển liệu từ nhớ có địa direct vào nhớ có địa gián tiếp  Cú pháp: Mov @Ri,direct  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: Chuyển liệu nhớ có địa direct vào nhớ có địa giá trị ghi Ri  Ví dụ: Mov 4BH,#2AH Mov R0,#2AH Mov @R0,4BH Sau lệnh thực ô nhớ 2AH mang giá trị 2AH 2.1.15 Lệnh đưa liệu vào ô nhớ có địa gián tiếp  Cú pháp: Mov @Ri,#data  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: Thiết đặt liệu cho ô nhớ có địa giá trị ghi Ri  Ví dụ: Mov R0,#3BH Mov @R0,#27H Sau lệnh thực ô nhớ 3BH mang giá trị 27H 2.1.16 Lệnh đưa liệu vào trỏ liệu DPTR  Cú pháp: Mov DPTR,#data16  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Công dụng: Thiết đặt liệu cho trỏ liệu với liệu 16 bit, thực chất liệu lưu hai ghi DPL (byte thấp-địa byte 82H) DPH (byte caođịa byte 83H)  Ví dụ: Mov DPTR,#3A5FH Sau lệnh thực DPTR mang giá trị 3A5FH DPL mang giá trị 5FH DPL mang giá trị 3AH 2.1.17 Lệnh trao đổi liệu nhớ có địa direct với ghi A  Cú pháp: XCH A,direct  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: Trao đổi liệu ghi A với nhớ có địa direct, tức sau thực lệnh nhớ có địa direct mang liệu ghi A trước ghi A mang liệu nhớ có địa direct  Ví dụ: Mov A,#0FAH Mov 50H,#60H XCH A,50H Kết :A mang giá trị 60H 50H mang giá trị 0FAH 2.1.18 Lệnh trao đổi liệu ghi Rn ghi A  Cú pháp: XCH A,Rn  Lệnh chiếm dung lượng nhớ ROM Byte 10 2.4.11 Lệnh chuyển giá trị bit có địa xác định vào cờ nhớ C  Cú pháp: Mov C,bit  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: Thực chuyển giá trị bit có địa xác định vào cờ nhớ C 2.4.12 Lệnh chuyển giá trị cờ nhớ C vào bit có địa xác định  Cú pháp: Mov bit,C  Lệnh chiếm dung lượng nhớ ROM Byte  Thời gian thực hiện: chu kì máy  Cơng dụng: Thực chuyển giá trị cờ nhớ C vào bit có địa xác định III.Cấu trúc phần cứng 80C51 3.1.KHẢO SÁT SƠ ĐỒ CHÂN Mặc dù thành viên họ MSC-51 có nhiều kiểu đóng vỏ khác nhau, chẳng hạn hai hàng chân DIP (Dual In-Line Pakage) dạng vỏ dẹt vng QFP (Quad Flat Pakage) dạng chíp khơng có chân đỡ LLC (Leadless Chip Carrier) có 40 chân cho chức khác vào I/0, đọc , ghi , địa chỉ, liệu ngắt Tuy nhiên, hầu hết nhà phát triển dụng chíp đóng vỏ 40 chân với hai hàng chân DIP, nên khảo sát Vi điều khiển với 40 chân dạng DIP 36 Hình 1.2.1 3.1.1 Chân VCC: Chân số 40 VCC cấp điện áp nguồn cho Vi điều khiển Nguồn điện cấp +5V±0.5 3.1.2 Chân GND:Chân số 20 nối GND(hay nối Mass) Khi thiết kế cần sử dụng mạch ổn áp để bảo vệ cho Vi điều khiển, cách đơn giản sử dụng IC ổn áp 7805 3.1.3 Port (P0) Port gồm chân (từ chân 32 đến 39) có hai chức năng: Chức xuất/nhập :các chân dùng để nhận tín hiệu từ bên ngồi vào để xử lí, dùng để xuất tín hiệu bên ngồi, chẳng hạn xuất tín hiệu để điều khiển led đơn sáng tắt Chức bus liệu bus địa (AD7-AD0) : chân (hoặc Port 0) làm nhiệm vụ lấy liệu từ ROM RAM ngoại (nếu có kết nối với nhớ ngồi), đồng thời Port cịn dùng để định địa nhớ 3.1.4.Port (P1) Port P1 gồm chân (từ chân đến chân 8), có chức làm đường xuất/nhập, khơng có chức khác 3.1.5.Port (P2) Port gồm chân (từ chân 21 đến chân 28) có hai chức năng: Chức xuất/nhập Chức bus địa cao (A8-A15): kết nối với nhớ có dung lượng lớn,cần byte để định địa nhớ, byte thấp P0 đảm nhận, byte cao P2 đảm nhận 37 3.1.6.Port (P3) Port gồm chân (từ chân 10 đến 17): Chức xuất/nhập Với chân có chức riêng thứ hai bảng sau Bit P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P1.0 P1.1 Tên RxD TxD INT0 INT1 T0 T1 WR RD T2 T2X Chức Ngõ vào nhận liệu nối tiếp Ngõ xuất liệu nối tiếp Ngõ vào ngắt cứng thứ Ngõ vào ngắt cứng thứ Ngõ vào Timer/Counter thứ Ngõ vào Timer/Counter thứ Ngõ điều khiển ghi liệu lên nhớ Ngõ điều khiển đọc liệu từ nhớ bên Ngõ vào Timer/Counter thứ Ngõ Nạp lại/thu nhận Timer/Counter thứ 3.1.7 Chân RESET (RST) Ngõ vào RST chân ngõ vào Reset dùng để thiết lập trạng thái ban đầu cho vi điều khiển Hệ thống thiết lập lại giá trị ban đầu ngõ mức tối thiểu chu kì máy 3.1.8.Chân XTAL1 XTAL2 Hai chân có vị trí chân 18 19 sử dụng để nhận nguồn xung clock từ bên để hoạt động, thường ghép nối với thạch anh tụ để tạo nguồn xung clock ổn định 3.1.9 Chân cho phép nhớ chương trình PSEN PSEN ( program store enable) tín hiệu xuất chân 29 dùng để truy xuất nhớ chương trình ngồi Chân thường nối với chân OE (output enable) ROM Khi vi điều khiển làm việc với nhớ chương trình ngồi, chân phát tín hiệu kích hoạt mức thấp kích hoạt lần chu kì máy Khi thực thi chương trình ROM nội, chân trì mức logic khơng tích cực (logic 1) (Khơng cần kết nối chân không sử dụng đến) 3.1.10 Chân ALE (chân cho phép chốt địa chỉ-chân 30) Khi Vi điều khiển truy xuất nhớ từ bên ngồi, port vừa có chức bus địa 38 chỉ, vừa có chức bus liệu phải tách đường liệu địa Tín hiệu chân ALE dùng làm tín hiệu điều khiển để giải đa hợp đường địa đường liệu kết nối chúng với IC chốt Các xung tín hiệu ALE có tốc độ 1/6 lần tần số dao động đưa vào Vi điều khiển, dùng tín hiệu ngõ ALE làm xung clock cung cấp cho phần khác hệ thống Ghi chú: không sử dụng bỏ trống chân 3.1.11 Chân EA Chân EA dùng để xác định chương trình thực lấy từ ROM nội hay ROM ngoại Khi EA nối với logic 1(+5V) Vi điều khiển thực chương trình lấy từ nhớ nội Khi EA nối với logic 0(0V) Vi điều khiển thực chương trình lấy từ nhớ ngoại IV.Giao tiếp 8051 với thiết bị ngoại vi 4.1.1.Kết nối hai chân XTAL1 XTAL2 Mạch dao động đưa vào hai chân thông thường kết nối với dao động thạch anh sau: Ghi chú: C1,C2= 30pF±10pF (thường sử dụng với C1,C2 tụ 33pF) dùng ổn định dao động cho thạch anh Hình 4.1.1 39 Hoặc cấp tín hiệu xung clock lấy từ mạch tạo dao động đưa vào Vi điều khiển theo cách sau: NC: để trống, chân XTAL2 để trống Hình 4.1.2 4.1.2.Chu kì máy Gọi fzat tần số dao động thạch anh Đối với 89Sxx sử dụng thạch anh có tần số fzat từ 2MHz đến 33MHz Chu kì máy khoảng thời gian cần thiết qui định để Vi điều khiển thực hồn thành lệnh Một chu kì máy 12 lần chu kì dao động nguồn xung dao động cấp cho Tck = 12.Toc Với: Tck chu kì máy Toc chu kì nguồn xung dao động cấp cho Vi điều khiển Như vậy: Với: Tck chu kì máy foc tần số dao động cấp cho Vi điều khiển Ví dụ: Ta kết nối Vi điều khiển với thạch anh có tần số fzat 12MHz, chu kì máy Tck=12/(12.106)=10-6s =1µs 40 Chính lí thạch anh có tần số fzat 12MHz tạo chu kì máy 1µs, thuận lợi cho việc tính tốn thời gian lập trình thạch anh có tần số fzat 12MHz thường sử dụng thực tế Khi giao tiếp truyền nối tiếp với máy vi tính dùng thạch anh có tần số fzat 11.0592MHz 4.1.3 Kết nối chân RESET-chân Việc kết nối chân RESET đảm bảo hệ thống bắt đầu làm việc Vi điều khiển cấp điện, hoạt động mà hệ thống bị lỗi cần tác động cho Vi điều khiển hoạt động trở lại, người sử dụng muốn quay trạng thái hoạt động ban đầu Vì chân RESET kết nối sau: Với Vi điều khiển sử dụng thạch anh có tần số fzat = 12MHz sử dụng C=10µF R=10KΩ Hình 4.1.3 4.1.4 Kết nối Port với led Các Port xuất tín hiệu mức logic thường không đạt đến 5V mà dao động khoảng từ 3.5V đến 4.9V dòng xuất nhỏ 5mA(P0,P2 dòng xuất khoảng 1mA; P1,P3 dịng xuất khoảng 1mA đến 5mA) dịng xuất khơng đủ để làm led sáng Tuy nhiên Port xuất tín hiệu mức logic dòng điện cho phép qua lớn nhiều: Chân Vi điều khiển mức 0: Dòng lớn qua P0 : -25mA Dòng lớn qua P1,P2,P3 : -15mA 41 Do kết nối với led thiết bị khác Vi điều khiển gặp trở ngại tác động làm led sáng Vi điều khiển xuất mức 1, lúc dịng áp khơng đủ để led sáng rõ (led đỏ sáng điện áp 1.6V-2.2V dòng khoảng 10mA) Khắc phục cách sau: a.Cho led sáng Vi điều khiển mức 0: Px.x thay cho chân xuất Port Ví dụ: Chân P1.1, P2.0, v.v Khi Px.x mức led không sáng Khi Px.x mức led sáng Hình 4.1.4 b Cho led sáng Vi điều khiển xuất mức 1: Như trình bày ngõ Vi điều khiển xuất mức không đủ led sáng, để led sáng cần đặt thêm điện trở kéo lên nguồn VCC(gọi điện trở treo) Hình 4.1.5 Tuỳ trường hợp mà chọn R2 để dòng áp phù hợp với thiết bị nhận 42 Khi Px.x mức 0, có chênh lệch áp nguồn VCC chân Px.x -dòng điện từ VCC qua R2 Px.x Mass, hiệu điện hai chân led gần 0, led không sáng Khi Px.x mức (+5V),dịng điện khơng chạy qua chân Vi điều khiển để mass được, có lệch áp hai chân led, dòng điện trường hợp qua led Mass led sáng R2 thường sử dụng với giá trị từ 4.7KΩ đến 10KΩ Nếu tất chân Port kết nối để tác động mức cao điện trở R2 thay điện trở chân có hình dáng sử dụng dễ làm mạch điện c Ngoài cách sử dụng điện trở treo, việc sử dụng cổng đệm có tác dụng thay đổi cường độ dòng điện xuất ngõ mức 1, cổng đệm xuất tín hiệu mức với áp dòng lớn có tín hiệu mức đặt ngõ vào Tùy theo yêu cầu người thiết kế dòng áp cần thiết mà chọn IC đệm cho phù hợp Chẳng hạn từ ngõ P0.0 làm nhiều led sáng lúc việc sử dụng IC đệm ưu tiên Có thể sử dụng 74HC244 74HC245, nhiên 74HC245 cải tiến từ 74HC244 nên việc sử dụng 74HC245 dễ dàng thiết kế mạch Hình 4.1.6 V Lập trình đèn giao thơng CHUONG TRINH DEN GIAO THONG ; CHUONG TRINH DEN GIAO THONG ; Nười Thực Hiện ; Ngô Quang Vũ TIMER EQU P2 43 DO_1 EQU P1.0 VANG_1 EQU P1.1 XANH_1 EQU P1.2 DO_2 EQU P1.3 VANG_2 EQU P1.4 XANH_2 EQU P1.5 LED_1 EQU P0.0 LED_2 EQU P0.1 LED_3 EQU P0.2 LED_4 EQU P0.3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ORG 00H SJMP MAIN ORG 030h MAIN: MOV P0,#0H ; MOV P1,#0H ; MOV P2,#0H ; MOV P3,#0H ; ; KHOI TAO TIMER VA NGAT MOV IE,#10000010B ; Cho phep ngat timer0 MOV TMOD,#00000001B ; Timer0 hoat dong che MOV TH0,#0D8H ; MOV TL0,#0F7H ; KHOI TAO GIA TRI BAN DAU CHO TIMER1 SETB TR0 ; Bat dau dem 44 ; DU LIEU BAN DAU MODE: ; MOV R2,#35 MOV R3,#30 MOV R4,#5 ; MODE1: LCALL DO_XANH MOV A,R2 LCALL COT_1 MOV A,R3 LCALL COT_2 CJNE R0,#100,MODE1 MOV R0,#0 DEC R2 DEC R3 CJNE R3,#0,MODE1 ; MOV R2,#35 MOV R3,#30 MOV R4,#5 ; MODE2: LCALL DO_VANG MOV A,R4 LCALL COT_1 MOV A,R4 LCALL COT_2 45 CJNE R0,#100,MODE2 MOV R0,#0 DEC R4 CJNE R4,#0,MODE2 ; MOV R2,#35 MOV R3,#30 MOV R4,#5 ; MODE3: LCALL XANH_DO MOV A,R3 LCALL COT_1 MOV A,R2 LCALL COT_2 CJNE R0,#100,MODE3 MOV R0,#0 DEC R2 DEC R3 CJNE R3,#0,MODE3 ; MOV R2,#35 MOV R3,#30 MOV R4,#5 ; MODE4: LCALL VANG_DO MOV A,R4 LCALL COT_1 MOV A,R4 46 LCALL COT_2 CJNE R0,#100,MODE4 MOV R0,#0 DEC R4 CJNE R4,#0,MODE4 ; LJMP MODE ; .HAM_DELAY ORG 0Bh CLR TR0 MOV TH0,#0D8H ; (2 chu ky may) MOV TL0,#0F7H ; (2 chu ky may) INC R0 DELAY_10ms: SETB TR0 ; ; ; (1 chu ky may) (1 chu ky may) (1 chu ky may) RETI DELAY: MOV LAP: R1,#250 DJNZ R1,LAP RET ; .HAM_SANG DEN ORG 200H DO_VANG: MOV P1,#00010001B 47 RET DO_XANH: MOV P1,#00100001B RET VANG_DO: MOV P1,#00001010B RET XANH_DO: MOV P1,#00001100B RET ; HAM_HIEN THOI GIAN ORG 500H MOV B,#10 DIV AB ADD A,#16 MOV P0,#00000001B MOV TIMER,A COT_1: LCALL DELAY CLR A MOV TIMER,#0 MOV A,B ADD A,#16 MOV P0,#00000010B MOV TIMER,A 48 LCALL DELAY CLR A MOV TIMER,#0 RET COT_2: MOV B,#10 DIV AB ADD A,#16 MOV P0,#00000100B MOV TIMER,A LCALL DELAY CLR A MOV TIMER,#0 MOV A,B ADD A,#16 MOV P0,#00001000B MOV TIMER,A LCALL DELAY CLR A MOV TIMER,#0 RET END 49 50 ... phức tạp v.v Vi điều khiển IC lập trình, Vi điều khiển cần lập trình trước sử dụng Mỗi phần cứng định phải có chương trình phù hợp kèm theo, trước vi? ??t chương trình địi hỏi người vi? ??t phải nắm... Chương trình cho Vi điều khiển vi? ??t C++,C,Visual Basic, băng ngôn ngữ cấp cao khác Tuy nhiên hợp ngữ Assembler đa số người dùng Vi điều khiển sử dụng để lập trình, lí chọn Assembly để hướng dẫn vi? ??t... thường vi? ??t thành chương trình truy xuất câu lệnh gọi chương trình Vi? ??c sử dụng chương trình giúp cho vi? ??c tìm lỗi chỉnh sửa chương trình dễ hơn, chương trình sử dụng nhiều lần chương trình con,

Ngày đăng: 18/04/2021, 00:35

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan