Ngày nay, hầu như vi điều khiển đã khá quen thuộc, được sử dụng rộng rãi phổ biến trong các lĩnh vực điện, điện tử, tự động hóa, Có thể nói vi điều khiển đã góp phần không nhỏ trong quá trình phát triển kinh tế nói chung, trong lĩnh vực điện tử nói riêng.
Vi điều khiển được ứng dụng rất nhiều trong các hệ thống điều khiển công nghiệp, các dây chuyền sản xuất, máy điều hòa nhiệt độ,.Vì vậy, em chọn đề tài này nhằm thực hành, sử dụng vi điều khiển để mô hình hóa đèn giao thông.
Đề tài “ Mô hình đèn giao thông”, là một đề tài mang tính chất mô hình được thiết kế nhỏ, gọn hiển thị bằng led đơn, hiển thị thời gian trên led 7 đoạn. Đối nới đề tài nay chỉ là mô hình nhỏ nên còn nhiều hạn chế so với điều khiển đèn giao thông trong thực tế về mặt công suất, cũng như tính chính xác, ổn định về thời gian. Nên mô hình này chỉ để quan sát và liên hệ thực tế thôi.
23 trang |
Chia sẻ: ngtr9097 | Lượt xem: 3659 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Đồ án Mô hình đèn giao thông dùng vi điều khiển AT89c51, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINHKHOA ĐIỆN – ĐIỆN TỬ
Đề Tài: MÔ HÌNH ĐÈN GIAO THÔNG DÙNG VI ĐIỀU KHIỂN AT89C51
GVHD: Ths Nguyễn Đình Phú
SVTH: Lê Trần Minh 11341030
Thành phố Hồ Chí Minh, ngày 25 tháng 11 năm 2011
LỜI CẢM ƠN
Lời đầu tiên em xin được cảm ơn Thầy Ths. Nguyễn Đình Phú giảng viên hướng dẫn đã chấp thuận cho em thực hiện đề tài.
Sau khoảng thời gian tìm hiểu, thi công đồ án môn học1, đề tài: “mô hình đèn giao thông sử dụng vi điều khiển AT89C51 ”, cuối cùng, em cũng đã hoàn thành công việc. Những kết quả mà em có được là nhờ những kiến thức đã tiếp thu được trong quá trình học tập, bên cạnh đó là sự chỉ dẫn tận tình của Thầy Nguyễn Đình phú, và nhờ sự giúp đỡ của thầy cô khoa Điện-Điện Tử.
Em xin kính lời cám ơn chân thành nhất đến Ban Giám Hiệu trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chi Minh, ban chủ nhiệm khoa Điện-Điện Tử, quý Thầy Cô của khoa, và đặc biệt, em xin kính lời cám ơn đến Thầy Nguyễn Đình Phú đã hết lòng giúp đỡ và tạo mọi điều kiện thuận lợi nhất để em hoàn thành đề tài này.
Tuy nhiên, do trình độ chuyên môn còn hạn chế nên đồ án của em không thể tránh khỏi những thiếu sót. Rất mong nhận được sự giúp đỡ của Thầy để đồ án của em được hoàn chỉnh hơn.
Em xin chân thành cảm ơn!
NHẬN XÉT ĐỒ ÁN MÔN HỌC
Tên đề tài: MÔ HÌNH ĐÈN GIAO THÔNG DÙNG VI ĐIỀU KHIỂN 89C51
Nhận xét của giáo viên phản biên:
Sinh viên thực hiện:
LÊ TRẦN MINH
MSSV:1134103
MỤC LỤC
Chương I GIỚI THIỆU- YÊU CẦU- ỨNG DỤNG
Ngày nay, hầu như vi điều khiển đã khá quen thuộc, được sử dụng rộng rãi phổ biến trong các lĩnh vực điện, điện tử, tự động hóa,… Có thể nói vi điều khiển đã góp phần không nhỏ trong quá trình phát triển kinh tế nói chung, trong lĩnh vực điện tử nói riêng.
Vi điều khiển được ứng dụng rất nhiều trong các hệ thống điều khiển công nghiệp, các dây chuyền sản xuất, máy điều hòa nhiệt độ,...Vì vậy, em chọn đề tài này nhằm thực hành, sử dụng vi điều khiển để mô hình hóa đèn giao thông.
Đề tài “ Mô hình đèn giao thông”, là một đề tài mang tính chất mô hình được thiết kế nhỏ, gọn hiển thị bằng led đơn, hiển thị thời gian trên led 7 đoạn. Đối nới đề tài nay chỉ là mô hình nhỏ nên còn nhiều hạn chế so với điều khiển đèn giao thông trong thực tế về mặt công suất, cũng như tính chính xác, ổn định về thời gian. Nên mô hình này chỉ để quan sát và liên hệ thực tế thôi.
MỤC ĐÍCH YÊU CẦU:
Giới thiệu đề tài:
Đề tài này bao gồm 2 phần cơ bản:
Nội dung : Nêu lên khái quát về các kiến thức vi xử lí liên quan đến đề tài cũng như chức năng của từng linh liện trong đề tài.
Thi công: Nêu sơ đồ nguyên lý, quá trình thi công mạch, nguyên lý thi công mạch.
Ứng dụng của đề tài:
Mạch đèn giao thông được thiết kế hoạt động để điều khiển giao thông trên đường phố đặc biệt có ý nghĩa rất quan trọng tại các tuyến đường có ngã tư.Việc đặt một cột đèn giao thông tại các ngã tư sẽ góp phần rất lớn vào việc giảm thiểu nạn kẹt xe và đảm bảo được trật tự giao thông trên đường phố.
Phương pháp nghiên cứu:
Tham khảo ý kiến của giáo viên hướng dẫn.
Thu thập tài liệu có liên quan đến đề tài.
ứng dụng về các kiến thức vi điều khiển đã được học.
Chương II: THIẾT KẾ VÀ MÔ HÌNH ỨNG DỤNG
I. Sơ đồ khối và chức năng các khối
Khối
Điều khiển
Khối cấp nguồn
Khối hiển thị
Hình 1: sơ đồ khối
Chức năng các khối
- khối cấp nguồn:
Nhiệm vụ của khối nguồn là cung cấp toàn bộ nguồn cho mạch hoạt động
- Khối điều khiển:
Có nhiệm vụ xử lý và điều khiển theo chương trình đã được lập trình.
- khối hiển thị:
Nhiệm vụ hiển thị thông qua led 7 đoạn và led đơn.
Sơ nguyên lý:
Hình 2: Sơ đồ nguyên lý
Giới thiệu linh kiện
Các linh kiện sử dụng trong mạch:
- Vi điều khiển AT89C51
- 7805
- Led 7 đoạn
- Led (oval)
- Điện trở
- Thạch anh (Crystal) 12MHz
- Tụ điện
- Diode cầu
- Transistor A1015
1 AT89C51
a. Một số nét đặc trưng:
- Bộ nhớ chương trình bên trong: 4KB (ROM)
- Bộ nhớ dữ liệu bên trong: 128 KB (RAM)
- Port xuất nhập (I/O port) : 32
- 2 bộ định thời 16 bit
- Nguồn cấp : Vcc =5V
- Mạch giao tiếp nối tiếp.
- Hoạt động tĩnh: từ 0 Hz đến 24 MHz
- Số chân IC : 40
Hình 3: sơ đồ chân AT89C51
b. chức năng:
- Vcc:nguồn cấp (chân số 40)
- GND: Nối đất (chân số 20 )
- Port 0 (P0.0 – P0.7) có số chân từ 32- 39
- Port 1 (P1.0 – P1.7) có số chân từ 1 – 8.
- Port 2 (P2.0 – P2.7) có số chân từ 21 -28
- Port 3 (P3.0 - P3.7) có số chân từ 10 – 17
Chức năng của một số chân:
RST : Thiết lập lại ( chân 9). Mức cao trên chân này trong 2 chu kì máy trong khi bộ dao động đang hoạt động sẽ Reset AT89C51
Mạch Reset tự động khi ta cấp nguồn
- Ở đây chúng ta thực hiện Reset bằng cách nối chân 9 của 89C51 với nguồn 5V.
- Chân ALE (Address Latch Enable) /: chân số 30
Hình 4: mạch reset
Là một xung ngõ ra cho phép chốt địa chỉ, cho phép chốt byte thấp của địa chỉ trong thời gian truy xuất bộ nhớ ngoài. Chân này cũng được dùng làm ngõ vào xung lập trình () trong thời gian lập trình cho Flash.
- Khi hoạt động bình thường, xung của ngõ ra ALE luôn luôn có tần số bằng 1/6 tần số của mạch dao động trên chip, có thể được sử dụng cho các mục đích định thời từ bên ngoài và tạo xung Clock.
- Chân (Program Store Enable): cho phép đọc bộ nhớ chương trình, chân số 29. Trong bài này ta nối với Vcc vì CPU chỉ sử dụng bộ nhớ Rom nội.
- Chân/ Vpp (External Access): truy xuất ngoài , chân số 31
phải đươc nối với GND cho phép xuất mã từ vị trí bộ nhớ chương trình ngoài bắt đầu tại 0000H đến FFFFH.
Chú ý: cho dù thế nào, nếu khoá bit 1 được lập trình, sẽ được chốt bên trong lúc Reset.
nối Vcc để thực hiện chương trình bên trong.
Chân này nhận điện áp cho phép lập trình là 12V (Vpp) trong khi lập trình Flash
Chân XTAL 1 (Crysral), hân 18)
- Ngõ vào mạch khuếch đại đảo của mạch dao động và ngõ vào mạch tạo xung Clock bên trong chip
Chân XTAL 2(chân 19)
Hình 5: mạch dao động thạch anh
- Ngõ ra mạch khuếch đại đảo của mạch dao động.
Để tạo dao động cho vi điều khiển AT89C51 hoạt động, em chọn mạch dao động như hình vẽ sau với các giá trị của linh kiện: C7= C8=33pF
Thạch anh dao động có tần số 12MHz.
2.LM7805:
- LM7805 là IC ổn áp điện áp ra cố định +5V. Thực tế điện áp ra dao động từ4,7V đến 5,2V.
Chân 1: ngõ vào
Chân 2: nối mass
Chân 3: ngõ ra điện áp +5V
Hình 6: sơ đồ chân 7805
3. Led 7 đoạn và led đơn(oval):
a. Led 7 đoạn:
Hình 7: Cấu tạo led 7 đoạn
- LED 7 đoạn được dùng nhiều trong các mạch hiện thị thông báo, hiện thị số, kí tự đơn giản... LED 7 được cấu tạo từ các LED đơn sắp xếp theo các thanh nét để có thể biểu diễn các chữ số hoặc các kí tự đơn giản như từ số 0 đến 9 và A đến F chả hạn. LED 7 đoạn dùng để hiện số thì rất đẹp và dễ nhìn. Các LED đơn đó được ghép và được đặt tên bằng các chữ cái a, b, c, d, e, f, g và có một dấu chấm dot ( dấu chấm này có thể sáng và tắt tùy theo yêu cầu, thông thương là dp) được cấu tạo bởi 1 LED đơn.
- Qua đó người ta chỉ cần 8 bit tương ứng với 8 LED đơn để điều khiển được và hiện thị số từ 0 đến 9 và các kí tự từ A đến F.
Led 7 đoạn với điện áp ở mức cao (K chung),mức thấp (A chung).
Điện áp rơi trên mỗi đoạn là 1,8 -2V, với dòng là 7- 20mA. Chọn chế độ hoạt động bình thường cho Led là 2V, 8mA.
b. Led đơn:
Hình 8: Led đơn
Có cấu tạo đơn giản giống như diode 2 chân và được phân cực A-K. Trong mô hình em dùng để hiển thị đèn tín hiệu giao thông( xanh, đỏ, vàng).
4. Điện trở:
Điện trở là một linh kiện thụ động có tính cản trở dòng điện và làm một số chức năng khác tùy thuộc vào vị trí của điện trở trong mạch điện.
Đơn vị: ohm (Ω), Kohm (KΩ), Mohm (MΩ)
1MΩ = 1000 KΩ = 1000000 Ω
- Điện trở than là loại điện trở có trị số cố định, được sử dụng nhiều nhất trong mạch điện. Điện trở than là hổn hợp của bột than và các chất khác, tùy tỉ lệ pha trộn mà điện trở có trị số lớn hay nhỏ. Bên ngoài điện trở được bọc lớp cách điện.
- Trị số của điện trở được ghi bằng vòng màu theo quy ước của Hoa Kỳ. Trường hợp đặc biệt, nếu không có vòng số 4 ( loại điện trở có 3 vòng màu) thì sai số là -20% đến +20%. Hiện nay, người ta có thể chế tạo các loại điện trở than có 5 vòng màu là loại điện trở có tính chính xác cao. Lúc đó, vòng số 1,2,3 là vòng số; vòng số 4 là bội số; vòng số 5 là sai số.
Trong mạch em dùng những điện trở có giá trị: 330Ω, 100Ω, 4.7KΩ, 10KΩ, điện trở thanh kéo lên 10KΩ dùng cho P0.
5. Thạch anh (Crystal) 12MHz
Là linh kiện được dùng để tạo dao động, được sử dụng nhiều trong các mạch vi điều khiển, vi xử lý, trong máy vi tính với những trị số khác nhau: 11.0592MHz, 14.38 MHz,… Bên ngoài là một lớp kim loại bao bọc. Trong đồ án này em dùng thạch anh với thông số 11.0592MHz để tạo dao động và được nối với chân 18-19 của AT89C51.
6. Tụ Điện:
Là loại linh kiện thụ động có tính tích trữ năng lượng điện.
Để đặc trưng cho khả năng tích điện của tụ dùng đại lượng gọi là điện dung C.
1uF (micro Farad) = 10-6 F
1nF (nano Farad) = 10-9 F
1pF (pico farad) = 10-12 F
Hình 9: tụ điện
Tụ điện được chia làm hai loại chính:
- Tụ điện có phân cực tính dương và âm.
- Tụ điện không phân cực tính.
Tụ hóa:
Là loại tụ có phân cực tính dương và âm. Tụ hóa có bản cực là lá nhôm, điện môi là những lớp nhôm ôxit rất mỏng được tạo nên bằng phương pháp điện phân. Điện dung của tụ hóa khá lớn từ 1uF dến 10000uF.
Ở đây em chỉ sử dụng những tụ hóa có giá trị điện dung, điện áp nhỏ: 10uF50v; 1000uF50v; 2200uF25v.
Tụ gốm (ceramic):
Là loại tụ không phân cực tính. Được chế tạo gồm chất điện môi là gốm, thường có dạng tròn dẹt, bề mặt được tráng bạc để làm bản tụ. Trong mạch em dung nhưng tụ như: 104pF; 33pF.
7. Diode bán dẫn:
- Cấu tạo: Là linh kiện tích cực có một lớp tiếp tiếp xúc P-N. Bên ngoài có bọc lớp plastic, hai đầu của mỗi bán dẫn có trán kim loại nhôm để nối dây ra ngoài.
Nguyên lí họat động:
Điều kiện để diode dẫn là VA ≥VK.
Phân cực thuận (VA ≥VK):
Cực dương của nguồn nối với Anod, cực âm nguồn nối với Catod. Lúc đó, điện tích dương của nguồn sẽ đẩy lỗ trống trong vùng P và điện tích âm của nguồn sẽ đẩy electron trong vùng N làm cho electron và lỗ trống lại gần mối nối hơn và khi lực tĩnh điện đủ lớn thì electron từ N sẽ sang mối nối qua P và tái hợp với lỗ trống.
Khi vùng N mất electron trở thành mang điện tích dương thì vùng N sẽ kéo điện tích âm từ cực âm của nguồn lên thế chỗ, khi vùng P nhận electron trở thành mang điện tích âm thì cực dương của nguồn sẽ kéo điện tích âm từ vùng P về. Như vậy, có một dòng electron chạy từ cực âm của nguồn qua diode từ N sang P đến cực dương của nguồn, nói cách khác có một dòng điện chạy từ P sang N.
Phân loại:
Có rất nhiều loại diode nhưng trong mạch em chỉ sử dụng diode chỉnh lưu hoạt động tần số thấp, dùng để đổi điện xoay chiều sang điện 1 chiều cấp nguồn 9v cho 7805 hoạt động cấp nguồn chính cho mạch hoạt động.
8. Transistor :
Hình 10: ký hiệu transistor
Transistor gồm ba lớp bán dẫn ghép với nhau hình thành hai mối tiếp giáp P-N , nếu ghép theo thứ tự PNP ta được Transistor thuận , nếu ghép theo thứ tự NPN ta được Transistor ngược. về phương diện cấu tạo Transistor tương đương với hai Diode đấu ngược chiều nhau . Thực ra một thiết bị không có Transistor thì chưa phải là thiết bị điện tử, vì vậy Transistor có thể xem là một linh kiện quan trọng nhất trong các thiết bị điện tử, các loại IC thực chất là các mạch tích hợp nhiều Transistor trong một linh kiện duy nhất, trong mạch điện , Transistor được dùng để khuyếch đại tín hiệu Analog, chuyển trạng thái của mạch Digital, sử dụng làm các công tắc điện tử, làm các bộ tạo dao động v v...
Trong mạch dùng transistor loại PNP( A1015) dùng để điều khiển đóng ngắt led 7 đoạn.
III. Phân tích họat đông các khối
1. Khối cấp nguồn:
a. Sơ đồ nguyên lý:
Hình 11: sơ đồ nguyên lý khối cấp nguồn
b. linh kiện trong mạch:
- 7805: ghim điện áp ra là 5V cấp cho mạch.
- diode: nhiệm vụ chỉnh lưu nắn điện AC thành DC.
- điện trở: hạn dòng cho led báo nguồn.
- các tụ: lọc nhiễu tần số cao.
c. chức năng và nguyên ly hoạt động:
- Chức năng của khối cấp nguồn là nắng điện áp 9VAC thành 5VDC, 1A cho mạch điều khiển và hiển thị.
Ta cấp nguồn 9vac cho cầu diode khi đó diode làm nhiệm vụ chỉnh lưu toàn kỳ nắn điện AC thành 9VDC cấp nguồn cho 7805, đồng lúc này led báo nguồn sáng lên. Trong mạch nguồn còn được gắn thêm 2 tụ điện 2200uF và 1000uF để lọc nhiễu tần số cao và chống phóng điện ngược gây chết 7805.
Điện áp ra từ chân số 3 của 7805 là 4.8V-5.2V, dòng cho phép qua là 1A.
2. Khối điều khiển ( vi điều khiển AT89C51)
Hình 12: sơ đồ nguyên lý khối điều khiển
a. Các linh kiện trong khối điều khiển:
- AT89C51: có vai trò là bộ xử lý trung tâm điều khiển thông qua các port IO
- Các tụ điện: dùng để lọc và chống nhiễu ( lọc nguồn, reset và mạch tạo dao động).
- Các điện trở hạn dòng cho các linh kiện trong mạch.
- Transistor để điều khiển đóng ngắt các led 7 đoạn.
- Là nơi lưu trữ chương trình điều khiển của toàn bộ hệ thống.
- Điều khiển toàn bộ hoạt động của mạch, có vai trò rất quang trọng như một CPU của máy tính, có các ngõ giao tiếp với khối hiển thị ( các port I/O).
- Hoạt động của khối điều khiển: thực thi theo chương trình đã được lập trình( chương điều khiển phần sau)
3. Khối hiển thị:
Hình 13: khối hiển thị
Chức năng
- Dùng để hiển thị thời gian thông qua led 7 đoạn và led đơn
- Trong mạch thiết kế thực tế này em thiết kế sử dụng loại Anot chung.- Để ghép nối với LED7 có thể có nhiều cách, nhưng phải đảm bảo sao có thể điều khiển tắt mở riêng từng LED đơn trong đó để tạo ra các số. Các IC vi điều khiển sinh dòng kém tức là dòng đầu ra của các chân IC nhỏ hơn khả năng tiêu tốn dòng. Do vậy,em ghép nối trực tiếp các led với các chân IC thì loại Anode chung là thích hợp.
- Dùng trực tiếp các chân điều khiển cua vi điều khiển AT89C51.- Dòng mà vi xử lý chịu đựng được cũng khá nhỏ khoảng dưới 100mA.
V. Giải thuật và chương trình
1. ĐẶT VẤN ĐỀ:- Thiết nghĩ tại 1 ngã tư không có đèn giao thông sẽ như thế nào? Khi đó việc lưu thông sẽ trở nên khó khăn trong lưu thông, dễ gây ùn tắt…Để cho việc lưu thông trở nên dễ dàng hơn ta cần có đèn giao thông. Đèn giao thông sẽ giúp cho việc điều tiết xe lưu thông qua ngã tư thuận tiện hơn, tránh gây ra việc ùn tắt tại giao lộ.- Làm thế nào để hiển thị các đèn đỏ-xanh-vàng? - Làm thế nào để hiển thị giá trị trên led 7 đoạn ? Và đếm ngược giá trị như thế nào?- Dạng dữ liệu xuất ra port điều khiển hiển thị trên led 7 đoạn dạng BCD hay 7 đoạn?
2.ĐÈN THỜI GIANCho các đèn sáng như sau:Đỏ 2= 44S, Vàng 2= 5S, Xanh 2= 40S, Đỏ 1= 44S, Vàng 1= 5S, Xanh 1= 40S Thời gian Đỏ 2 sáng = thời gian Xanh 1sáng + thời gian Vàng 1 sáng=45sThời gian Đỏ 1 sáng = thời gian Xanh 2 sáng + thời gian Vàng 2 sáng=45schuyển trực tiếp giá trị BCD ra led 7 đoạn không cần vi mạch giải mã.Mỗi số hiển thị trên led 7 đoạn trong 1s
3. Lưu đồ giải thuật:
Đ
Đ
S
S
Begin
Tạo thông số thời gian, dữ liệu điều khiển led, vùng mã 7đoạn
Nạp thông số tg cho thanh ghi 16h,17h, cho x1- d2 sáng và giải mã: 16h,17h
Hiển thị thời gian: Giảm nội dung 2 thanh ghi
16h = 0?
Nạp thông số tg cho thanh ghi 16h,17h, cho v1- d2 sáng và giải mã: 16h,17h
Hiển thị thời gian: Giảm nội dung 2 thanh ghi
16h = 0?
Nạp thông số tg cho thanh ghi 16h,17h, cho x2- d1 sáng và giải mã: 16h,17h
Hiển thị thời gian: Giảm nội dung 2 thanh ghi
Nạp thông số tg cho thanh ghi 16h,17h, cho v2- d1 sáng và giải mã: 16h,17h
Hiển thị thời gian: Giảm nội dung 2 thanh ghi
17h = 0?
17h = 0?
End
Đ
Đ
S
S
4. Giản đồ thời gian:
5. Chương trình điều khiển ngôn ngữ assembly
Vùng nhớ để hiển thị cho 8 led 7đoạn
Vùng nhớ chứa mã BCD
27h
26h
25h
24h
23h
22h
21h
20h
Vùng nhớ chứa mã 7 đoạn
37h
36h
35h
34h
33h
32h
31h
30h
Hiển thị trên led thứ
7
6
5
4
3
2
1
0
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chương trình điều khiển đèn giao thông có hiển thị trên led 7 đoạn
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
; quy ước: X1 là xanh Đông Tây
; V1 là vàng Đông Tây
; D1 là đỏ Đông Tây
; X2 là xanh Nam Bắc
; V2 là vàng Nam Bắc
; D2 là Đỏ Nam Bắc
;dữ liệu điều khiển led đơn tích cực mức 1
X1_d2 EQU 10000100B ;XANH 1, DO 2 SANG
V1_d2 EQU 01000100B ;VANG 1, DO 2 SANG
d1_X2 EQU 00100001B ;DO 1, XANH 2 SANG
D1_V2 EQU 00100010B ;DO 1, VANG 2 SANG
tg_xanh equ 39 ;39 đếm xuống 0 tức đã đếm 40
tg_vang equ 4 ;4 đếm xuống 0 tức đã đếm 5
tg_do equ 44 ;44 đếm xuống 0 tức đã đếm 45
led7 equ p0 ;điều khiển các đoạn a,b,c,d,e,f,g,dp
quet equ p2 ;điều khiển quét các transistor
leddon equ p1 ; điềuu khiển led đơn
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
; Bắt đầu chương trình chính
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
org 0000h
mov tmod,#00000001b ; khởi tạo timer1
mov dptr,#ma7doan
mov 22h,#0ffh
mov 23h,#0ffh ; xóa các vùng nhớ hiển thị không dùng
mov 24h,#0ffh
mov 25h,#0ffh
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xanh1 va do2 sáng 40 giây
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
b222: mov 16h,#tg_xanh ; biến đếm thời gian cho ht1
mov 17h,#tg_do ; biến đếm thời gian cho ht2
mov leddon,#x1_d2 ;cho xanh1, do2 sang
b221: lcall hextobcd
lcall gma
lcall delay
dec 17h ; giảm nội dung thanh ghi 17h xuống1
djnz 16h,b221 ; Giảm và nhảy nếu chưa bằng
lcall hextobcd ; goi ctrinh chuyển so hex sang BCD
lcall gma ; gọi ctrinh con giải mã
lcall delay ; gọi ctrinh con delay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;vang1 va do2 sang 5 giay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
dec 17h
mov 16h,#tg_vang ; biến đếm thời gian cho ht2
mov leddon,#v1_d2 ;cho vang 1, do2 sang
b221a: lcall hextobcd
lcall gma
lcall delay
dec 16h
djnz 17h,b221a
lcall hextobcd
lcall gma
lcall delay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;do1 va xanh2 sang 40 giay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
mov 16h,#tg_do ; biến đếm thời gian cho ht1
mov 17h,#tg_xanh ; biến đếm thời gian cho ht2
mov leddon,#d1_x2 ;do1 va xanh2 sang
b221b: lcall hextobcd
lcall gma
lcall delay
dec 16h
djnz 17h,b221b
lcall hextobcd
lcall gma
lcall delay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;do1 va vang2 sang 5 giay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
dec 16h
mov 17h,#tg_vang
mov leddon,#d1_V2 ;do1 va xanh2 sang
b221c: lcall hextobcd
lcall gma
lcall delay
dec 17h
djnz 16h,b221c
lcall hextobcd
lcall gma
lcall delay
ljmp b222
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
; chương trình con chuyển số hex sang số bcd
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
hextobcd: mov a,17h
mov b,#10
div ab ;b lưu hàng đơn vị
swap a
orl a,b
mov 37h,a
mov a,16h
mov b,#10
div ab ;b lưu hàng đơn vị
swap a
orl a,b
mov 36h,a
ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
; chuong trinh con giai ma
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
gma: mov a,37h
anl a,#0fh
movc a,@a+dptr
mov 27h,a ; hàng đơn vị
mov a,37h
anl a,#0f0h
swap a
movc a,@a+dptr
mov 26h,a ; hàng chục
mov a,36h
anl a,#0fh
movc a,@a+dptr
mov 21h,a ; hàng đơn vị
mov a,36h
anl a,#0f0h
swap a
movc a,@a+dptr
mov 20h,a ; hàng chục
ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh delay co goi chuong trinh hien thi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
delay: mov 7fh,#10h
del2: clr tr0
mov th0,#00
mov tl0,#00
setb tr0
clr tf0
del1: lcall hthi
jnb tf0,del1
djnz 7fh,del2
ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh con hien thi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
hthi: mov r1,#01111111b ;ma quet
mov r0,#27h ; nạp địa chỉ quản ly vùng mã 7đoạn vào r0
mov r5,#8
ht1: mov led7,@r0
mov quet,r1
lcall delay1
mov quet,#0ffh ; tắt để chống lem
dec r0
mov a,r1
rr a
mov r1,a
djnz r5,ht1
ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh con delay1
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
delay1: mov r7,#0fh
djnz r7,$
ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
; vùng mã 7 đoạn
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ma7doan: db 0c0h,0f9h,0a4h,0b0h,099h,092h,082h,0f8h,080h,090h
end
CHƯƠNG III TH