Bằng cách ápdụng vi đều khiển trong quá trình sản xuất và xử lý, vi điều khiển đãthực sự thể hiện được ưu thế của mình so với các thiết bị điều khiểnthông thường.. Thiết bị này cung cấp
TỔNG QUAN VỀ ĐÈN GIAO THÔNG
Giới thiệu đề tài
Ngày nay, sự phát triển của khoa học kỹ thuật và xã hội hiện đại đã dẫn đến nhu cầu giao thông ngày càng tăng, đặc biệt tại các khu vực thành thị Tại Việt Nam, số lượng xe máy tăng nhanh chóng, tạo ra mật độ giao thông dày đặc trên đường Tuy nhiên, hệ thống đường xá còn nhiều hạn chế, gây ra tình trạng kẹt xe, ách tắc giao thông và gia tăng tai nạn, trở thành mối nguy hiểm cho người tham gia giao thông.
Các luật giao thông đã được ban hành và áp dụng một cách âm thầm, dần trở nên phổ biến trong xã hội Hệ thống đèn giao thông đóng vai trò quan trọng trong việc điều khiển giao thông công cộng, giúp đảm bảo an toàn và giảm thiểu tai nạn giao thông.
Nhóm chúng em thực hiện đề tài “Thiết kế mạch đèn giao thông dùng vi điều khiển AT89S52" nhằm nâng cao nhận thức của mọi người, đặc biệt là sinh viên, về việc chấp hành luật lệ an toàn giao thông Hệ thống được thiết kế để các đèn xanh, vàng và đỏ hoạt động trong khoảng thời gian mặc định là 28 giây, 3 giây và 25 giây tương ứng.
Các thành phần chính của hệ thống đèn giao thông dùng vi điều khiển AT89S52
Hệ thống đèn giao thông gồm 3 phần chủ yếu sau:
Mạch điều khiển trung tâm dùng vi điều khiển AT89S52.
Mạch hiển thị thời gian, trạng thái đèn.
Nguyên lý hoạt động
Mạch đèn giao thông hoạt động dựa trên lập trình của vi điều khiển AT89S52, cho phép điều khiển đèn LED xanh, đỏ, vàng theo thời gian yêu cầu từ các nút nhấn AT89S52 gửi dữ liệu đến các LED để mở hoặc đóng, đồng thời điều khiển các LED 7 đoạn thực hiện đếm lùi thời gian Khi mạch bắt đầu đếm, nếu đèn xanh hoặc vàng sáng ở một trục lộ, đèn đỏ sẽ sáng ở trục lộ đối diện và ngược lại AT89C51 cũng tham gia vào việc xuất tín hiệu I/O ở mức cao hoặc thấp để điều khiển các BIT, từ đó điều chỉnh các đèn hiển thị Khi nhận tín hiệu từ các phím nhấn, AT89C51 sẽ quét và tìm chương trình mã hóa phù hợp để thực hiện điều khiển.
Ngôn ngữ sử dụng và phần mềm mô phỏng
KHẢO SÁT VI ĐIỀU KHIỂN AT89S52
Tổng quan
AT89S52 là một bộ vi điều khiển CMOS 8 bit phổ biến của Atmel, được trang bị bộ nhớ Flash 8KB và RAM 256 byte, phù hợp cho nhiều ứng dụng nhúng.
Nó có thể hoạt động với tần số tối đa 33MHz nhờ vào bộ dao động bên ngoài Giống như các bộ vi điều khiển khác, nó được trang bị các chân GPIO, ba bộ định thời 16 bit và một cổng giao tiếp UART song công, cho phép truyền tín hiệu theo cả hai hướng.
AT89S52 là một vi điều khiển 16 bit với 40 chân, bao gồm 32 chân GPIO Nó được trang bị bộ đếm thời gian Watchdog, giúp tối ưu hóa chế độ tiết kiệm năng lượng cho vi điều khiển.
Bộ vi điều khiển này ứng dụng trong thiết bị gia đình đến ngành công nghiệp cung cấp khả năng điều khiển digital cho các hệ thống nhúng.
Giới thiệu Vi điều khiển AT89S52
Bộ vi điều khiển 8 bit này có công suất thấp và hiệu suất cao, được thiết kế dựa trên công nghệ CMOS, với dải tần hoạt động từ 0 đến 33MHz Chip có khả năng hoạt động ở hai chế độ lựa chọn nguồn điện khác nhau.
Thiết bị này sở hữu 32 chân GPIO, cho phép người dùng sử dụng chúng như chân đầu vào hoặc đầu ra digital Ngoài ra, các chân này cũng có thể được cấu hình để thực hiện các chức năng thay thế khác.
Sơ đồ chân AT89S52
Sơ đồ chân của vi điều khiển 8-bit AT89S52 được hiển thị bên dưới:
Hình 2.2 Sơ đồ chân AT89S52
Cấu hình chân AT89S52
Bộ vi điều khiển 8-bit AT89S52 có ba loại package, nhưng sơ đồ chân của chúng đều giống nhau Chi tiết về cấu hình chân được trình bày trong bảng dưới đây.
Số chân Tên chân Đặc điểm
32-39 Port 0 8 chân Địa chỉ và Dữ liệu / GPIO
18 XTAL2 Chân đầu ra của bộ tạo dao động bên ngoài
19 XTAL1 Chân đầu vào bộ tạo dao động bên ngoài
31 EA / VPP Kích hoạt truy xuất bên ngoài / chân cấp nguồn kích hoạt Flash
30 ALE /PROG Chân chốt địa chỉ / Chân lập trình flash
29 PSEN Chân cho phép lưu chương trình
Tất cả các cổng của AT89S52 đều là 8-bit, cho phép mỗi cổng có 8 chân đa chức năng Những chân này có thể được cấu hình cho các chức năng khác nhau thông qua việc điều chỉnh các thanh ghi cấu hình.
Khi ở trạng thái thấp, chúng hoạt động như các chân đầu vào với trở kháng cao hai chiều Ngược lại, khi được kéo lên mức cao, chúng chuyển thành chân đầu ra digital.
Các chân Port0 trên vi điều khiển AT89S52 được sử dụng để cập nhật các byte thấp trong mã chương trình vào bộ nhớ bên trong và xác nhận rằng mã đã được cập nhật thành công Để lập trình qua các chân này, cần kết nối chúng với các điện trở kéo lên bên ngoài.
Port 1 tương tự như Port 0, với các chân dữ liệu 2 chiều 8 bit và điện trở kéo lên bên trong Một số chân GPIO của Port 1 được sử dụng cho giao tiếp lập trình hệ thống trong mạch, trong khi các chân khác đảm nhận chức năng thay thế cho ba chân bộ định thời/bộ đếm 16 bit.
Port 2 cũng sở hữu các chân dữ liệu 2 chiều 8 bit tương tự như Port 1, với điện trở kéo lên bên trong Một số chân GPIO được sử dụng cho giao tiếp lập trình hệ thống trong mạch, trong khi một số chân khác đảm nhận chức năng thay thế cho ba chân Bộ định thời/Bộ đếm 16 bit.
Các chân Port2 trên vi điều khiển AT89S52 không chỉ được sử dụng để cập nhật các byte cao trong mã lên bộ nhớ chương trình nội bộ mà còn để xác nhận rằng mã đã được cập nhật thành công Để lập trình qua các chân này, cần phải kết nối chúng với các điện trở kéo lên bên ngoài.
Port 3 cũng là một cổng 8-bit và có 8 chân GPIO Ngoài chức năng nhập / xuất, các chân này còn có một số tính năng đặc biệt
Cổng 3 cũng được sử dụng để truyền dữ liệu nối tiếp UART, ngắt ngoài và thực hiện các thao tác đọc / ghi bộ nhớ dữ liệu bên ngoài.
Tất cả các chân dữ liệu trong mạch đều là chân hai chiều, tương thích với chuẩn TTL Chúng có khả năng hoạt động như nguồn dòng sink hoặc source, và được trang bị điện trở kéo lên bên trong để đảm bảo xác định chính xác trạng thái.
Chân PSEN (program store enable) cho phép điều khiển truy xuất bộ nhớ chương trình ngoài trong vi điều khiển AT89C51 Khi AT89C51 thực thi chương trình từ bộ nhớ ngoài, tín hiệu PSEN được kích hoạt hai lần trong mỗi chu kỳ máy, ngoại trừ khi có hai tác động của PSEN bị bỏ qua trong quá trình truy xuất bộ nhớ dữ liệu ngoài.
Xung ngõ ra cho phép chốt địa chỉ ALE (address latch enable) giúp lưu trữ byte thấp của địa chỉ trong quá trình truy xuất bộ nhớ ngoài Chân này cũng được sử dụng như ngõ vào xung lập trình (PROG) trong thời gian lập trình cho Flash.
Khi hoạt động bình thường, xung ngõ ra ALE có tần số bằng 1/6 tần số của mạch dao động trên chip, hữu ích cho định thời từ bên ngoài và tạo xung clock Tuy nhiên, cần lưu ý rằng mỗi chu kỳ truy xuất bộ nhớ dữ liệu ngoài sẽ bỏ qua một xung ALE.
Chân EA (external access enable) phải được nối với GND để chip vi điều khiển có thể truy xuất lệnh từ bộ nhớ ngoài, với địa chỉ bắt đầu từ 0000H đến FFFFH Tuy nhiên, nếu bit khóa 1 (lock bit 1) được lập trình, EA sẽ bị chốt bên trong khi thực hiện reset.
EA nên nối với Vcc để thực thi chương trình bên trong chip.
Chân EA/Vpp cho phép lập trình điện áp Vpp trong quá trình lập trình Flash, cung cấp điện áp 12V cho các bộ phận cần thiết.
Ngõ vào RST (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 AT89S52.
XTAL1 ngõ vào đến mạch khuếch đại đảo của mạch dao động và ngõ vào đến mạch tạo xung clock bên trong chip.
XTAL2 ngõ ra từ mạch khuếch đại đảo của mạch dao động
Các Bộ định thời/Bộ đếm
Bộ vi điều khiển 8051 có 3 Bộ định thời/Bộ đếm là Bộ định thời/Bộ đếm 0 , Bộ định thời/Bộ đếm 1 và Bộ định thời/Bộ đếm
2 Chúng có thể hoạt động như là bộ định thời hoặc bộ đếm
Chế độ hoạt động của các Bộ định thời/Bộ đếm được cất trong thanh ghi TMOD
2.5.1 Bộ định thời/Bộ đếm 0 , Bộ định thời/Bộ đếm 1
Bộ định thời/Bộ đếm 0 và Bộ định thời/Bộ đếm 1 trong vi điều khiển AT89S52 hoạt động tương tự như Bộ định thời/Bộ đếm 0 và Bộ định thời/Bộ đếm 1 trong các vi điều khiển AT89C51 và AT89C52.
Khi bit GATE bị xóa, các Bộ định thời và Bộ đếm có thể hoạt động khi bit TR# trong thanh ghi TCON được thiết lập Ngược lại, nếu bit GATE được thiết lập, các Bộ định thời và Bộ đếm chỉ hoạt động khi chân INT# tương ứng ở mức thấp Bit C/T# cho phép chọn chế độ hoạt động của bộ đếm hoặc bộ định thời; nếu được thiết lập, nó hoạt động theo chế độ đếm sự kiện với nguồn xung từ chân T# (chân 14, 15) Nếu bị xóa, nó chuyển sang chế độ định thời, sử dụng nguồn xung từ bộ tạo dao động trên chip sau khi chia 12.
Các bit M0, M1 dùng để xác dịnh chế độ đếm cho các bộ đếm:
1 0 Đếm 8 bit và tự động nạp lại
1 1 Bộ đếm 0 đến 8 bit riêng rẽ
Bộ đếm 1 dừng hoạt động
Sự hoạt động của các Bộ định thời/Bộ đếm được điều khiển bởi thanh ghi TCON:
TF1 TR2 TF0 TR0 IE1 IT1 ITE IE0 IT0
Các bit TR# cho phép Bộ định thời/Bộ đếm hoạt động (nếu được thiết lập) hoặc không cho phép chúng hoạt động (nếu bị xóa)
Các bit TF# là cờ tràn liên quan đến Bộ định thời/Bộ đếm, được thiết lập khi xảy ra tràn và xóa bằng phần cứng khi bộ xử lý rẽ nhánh đến chương trình phục vụ ngắt Bit IT# là các bit ngắt, với chế độ ngắt cạnh được tạo ra khi nhận diện sườn âm (↓) của tín hiệu vào, trong khi việc xóa IT# tạo ra chế độ ngắt mức, nơi ngắt được kích hoạt khi tín hiệu vào ở mức thấp (0) Trong chế độ ngắt mức, ngắt sẽ tiếp tục được tạo ra cho đến khi tín hiệu vào chuyển lên mức cao hoặc IT# được thiết lập lại Bit IE# là các cờ ngắt cạnh, được thiết lập khi phát hiện ngắt cạnh.
2.5.2 Bộ định thời/Bộ đếm 0
TF1 Cờ tràn bộ định thời 2 được thiết lập bởi bộ định thời tràn
2 và phải được xóa bằng phần mềm TF2 sẽ không được thiết lập khi RCLK = 1 hoặc TCLK = 1
Cờ EXF2 bên ngoài của Bộ định thời 2 được kích hoạt khi có sự chuyển đổi âm trên T2EX và EXEN2 = 1 Khi ngắt Bộ định thời 2 được bật, việc thiết lập EXF2 = 1 sẽ dẫn đến việc CPU chuyển sang quy trình ngắt của Bộ định thời 2 Để xóa EXF2, cần thực hiện qua phần mềm Lưu ý rằng EXF2 không gây ra ngắt khi ở chế độ bộ đếm tăng/giảm (DCEN = 1).
Khi kích hoạt đồng hồ nhận trên RELK, cổng nối tiếp sử dụng xung tràn từ Bộ định thời 2 cho đồng hồ nhận ở Chế độ 1 và 3 Nếu RCLK = 0, bộ định thời 1 sẽ được sử dụng cho đồng hồ nhận.
TCLK kích hoạt đồng hồ truyền, cho phép cổng nối tiếp sử dụng xung tràn của Bộ định thời 2 ở Chế độ 1 và 3 Khi TCLK = 0, xung tràn của Bộ định thời 1 sẽ được sử dụng cho đồng hồ truyền.
Kích hoạt bộ hẹn giờ 2 bên ngoài Khi được đặt, cho phép chụp hoặc tải lại xảy ra do chuyển đổi âm trên T2EX nếu
Bộ định thời 2 không được sử dụng để tạo xung nhịp cho cổng nối tiếp EXEN2 = 0 khiến cho bộ định thời 2 bỏ qua các sự kiện ở T2EX
TR2 Điều khiển Khởi động/Dừng cho Bộ hẹn giờ 2 TR2 = 1 khởi động bộ hẹn giờ
C/T2 Chọn bộ hẹn giờ hoặc bộ đếm cho Bộ hẹn giờ 2 C/T2 = 0 cho chức năng hẹn giờ C/T2 = 1 cho bộ đếm sự kiện bên ngoài (kích hoạt cạnh rơi).
RL2 Chọn Chụp/Tải lại CP/RL2 = 1 gây ra việc bắt giữ xảy ra trên các chuyển tiếp âm tại T2EX nếu EXEN2 = 1 CP/RL2
Khi Bộ đếm thời gian 2 tràn hoặc có các chuyển đổi âm xảy ra tại T2EX với EXEN2 = 1, việc tải lại tự động sẽ diễn ra Tuy nhiên, nếu RCLK hoặc TCLK = 1, bit này sẽ bị bỏ qua và bộ định thời sẽ tự động tải lại khi bộ định thời 2 tràn.
Bộ định thời 2 là một bộ định thời/Bộ đếm 16 bit, có khả năng hoạt động như bộ định thời hoặc bộ đếm sự kiện, với chế độ hoạt động được xác định bởi bit C/T2 trong SFR T2CON Nó có ba chế độ hoạt động: chụp, tự động tải lại (đếm lên hoặc xuống) và tạo tốc độ baud Bộ định thời 2 bao gồm hai thanh ghi 8 bit là TH2 và TL2; trong chế độ Hẹn giờ, thanh ghi TL2 sẽ được tăng lên sau mỗi chu kỳ máy Do một chu kỳ máy bao gồm 12 chu kỳ dao động, nên tốc độ đếm tương ứng là 1/12 tần số dao động.
Các tính năng và thông số kỹ thuật của AT89S52
Các tính năng và ngoại vi Khả dụng
Kiến trúc vi xử lý PIC 8 bit
Bộ nhớ chương trình 8 KBytes
Bộ tạo dao động bên trong Không
Số lượng chân I / O có thể lập trình 32
Bộ hẹn giờ Watchdog Không
Tần số dao động bên ngoài 23 MHz (tối đa) Độ phân giải của PWM Không
Số bộ hẹn giờ 16 bit 3
Loại bộ nhớ chương trình Flash
Cặp con trỏ dữ liệu Có Điện áp hoạt động 4V - 5,5 V
Một số tính năng chi tiết nổi bật được liệt kê dưới đây:
Là bộ vi điều khiển công nghệ CMOS hiệu suất cao tích hợp công nghệ Flash
Hoạt động ở dải điện áp rộng 4 - 5.5V, vì vậy nó là một IC công suất thấp.
Thiết bị hỗ trợ lập trình bên trong ở cả chế độ page và byte của bộ nhớ Flash.
Tần số hoạt động lên đến 33MHz nhưng có thể thay đổi để tiết kiệm năng lượng.
Module có thời gian lập trình nhanh với 10.000 chu kỳ đọc / ghi.
Giao tiếp nối tiếp thông qua module UART song song
Nó có một chân reset, ba bộ định thời 16 bit và tám bộ ngắt.
AT89S52 có hai chế độ nguồn: chế độ nhàn rỗi, trong đó thiết bị xử lý ngừng hoạt động nhưng các thiết bị ngoại vi vẫn hoạt động, và chế độ tắt nguồn, tạm dừng bộ dao động cùng các chức năng khác trong khi vẫn lưu trữ nội dung RAM.
Bộ đếm thời gian Watchdog cho phép khởi động thiết bị từ chế độ ngủ, có thể được kích hoạt hoặc hủy kích hoạt thông qua lập trình.
Ứng dụng
Vi điều khiển AT89S52 được sử dụng rộng rãi trong một loạt các ứng dụng nhúng và hệ thống điều khiển :
Điều khiển thiết bị gia đình: Điều khiển đèn, quạt và các thiết bị gia đình thông qua các công tắc hoặc điều khiển từ xa.
Tạo ra các hệ thống đo lường và điều khiển nhiệt độ, độ ẩm trong nhà.
Hệ thống đèn và cảm biến trong ô tô. Điều khiển các chức năng như khóa cửa tự động, điều khiển động cơ.
Thiết bị đo và theo dõi dấu hiệu sinh học như nhịp tim, huyết áp.
Hệ thống kiểm soát dược phẩm và điều trị tự động.
Ứng dụng trong công nghiệp:
Hệ thống tự động hóa trong quá trình sản xuất. Điều khiển và giám sát thiết bị công nghiệp như máy khoan, máy cắt.
Thiết bị điện tử tiêu dùng: Điều khiển các chức năng trong các thiết bị như TV, máy nghe nhạc, điều hòa không khí.
Tạo ra các sản phẩm IoT như các bộ cảm biến thông minh, thiết bị kết nối mạng
Hệ thống điều khiển và đo lường:
Hệ thống đo lường và kiểm soát trong các ứng dụng như nông nghiệp, môi trường, và năng lượng tái tạo.
Robotics: Điều khiển các chức năng của robot như cảm biến, động cơ và hành động.
Thiết bị IoT và kết nối mạng:
Xây dựng các thiết bị IoT như cảm biến thông minh, hệ thống giám sát từ xa, hệ thống nhà thông minh.
Tạo ra các thiết bị kết nối mạng như máy tính điều khiển từ xa, hệ thống đo lường trực tuyến.
ỨNG DỤNG 89S52 ĐIỀU KHIỂN ĐÈN GIAO THÔNG
Giới thiệu linh kiện được sử dụng trong mạch
AT89S52 là vi điều khiển 8 bit phổ biến từ Atmel, được ưa chuộng trong các ứng dụng điện tử nhúng nhờ vào giá thành hợp lý, tính dễ sử dụng và nhiều tính năng hữu ích.
AT89S52 xử lý dữ liệu 8 bit mỗi lần, giúp tiết kiệm năng lượng và chi phí.
AT89S52 sở hữu 8KB bộ nhớ chương trình Flash và 128 byte RAM, cho phép lập trình và xóa nhiều lần Điều này mang lại tính linh hoạt cao trong việc phát triển và cập nhật phần mềm.
AT89S52 có 32 cổng I/O đa chức năng, cho phép kết nối với nhiều thiết bị ngoại vi khác nhau.
AT89S52 có 3 bộ đếm thời gian/bộ đếm 16 bit, có thể được sử dụng để tạo xung, đo thời gian, v.v.
AT89S52 hỗ trợ giao tiếp nối tiếp USART, cho phép nó giao tiếp với các thiết bị khác qua cổng RS232.
Hình 3.1 Sơ đồ chân AT89S52
3.1.2 Led 7 đoạn và led đơn a 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 thanh được phân làm 2 loại là:
Loại dương chung (Common Anode): nếu cực dương (anode) của tất cả 8 LED được nối với nhau và các cực âm (cathode) đứng riêng lẻ.
Loại âm chung (Common Cathode): nếu cực âm
(cathode) của tất cả 8 LED được nối với nhau và các cực dương (anode) đứng riêng lẻ.
Mỗi loại lại có cách hiện ra chữ số hiển thị khác nhau :
Led 7 thanh nối dương chung
Led 7 thanh nối âm chung b Led đơn
LED, viết tắt của diode phát sáng, là loại diode có khả năng phát ra ánh sáng, tia hồng ngoại và tử ngoại Cấu trúc của LED bao gồm một khối bán dẫn loại p kết hợp với một khối bán dẫn loại n, tương tự như diode thông thường.
3.1.3 Điện trở Điện trở là một linh kiện điện tử thụ động có chức năng chính là cản trở dòng điện chạy qua nó Giá trị điện trở được đo bằng đơn vị ohm (ký hiệu: Ω). Điện trở được chế tạo từ nhiều vật liệu khác nhau, phổ biến nhất là kim loại (như đồng, nhôm, crom), carbon và gốm Mỗi loại vật liệu có đặc tính điện trở khác nhau, dẫn đến sự đa dạng về giá trị và ứng dụng của điện trở.
Trong mạch chúng em sử dụng điện trở và điện trở thanh
Thạch anh, một linh kiện điện tử được cấu thành từ SiO2 (tinh thể thạch anh) được mài phẳng và chính xác, đóng vai trò quan trọng trong việc tạo ra các xung dao động Linh kiện này hoạt động dựa trên hiệu ứng áp điện: khi áp dụng điện áp lên hai mặt của thạch anh, nó sẽ bị biến dạng, và ngược lại, khi tạo sức ép lên bề mặt, thạch anh sẽ phát ra điện áp.
Trong đồ án nhóm em sử dụng thạch anh có thông số 12MHz để tạo dao động và được nối với chân 18-19 của AT89S52
Tụ điện là linh kiện điện tử dùng để lưu trữ và giải phóng năng lượng điện dưới dạng trường điện Nó bao gồm hai bản dẫn điện được cách ly bởi một chất cách điện (dielectric) Khi điện áp được áp dụng, các điện tích dương và âm sẽ tập trung ở hai bản dẫn, tạo ra trường điện trong chất cách đ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ụ điện có phân cực dương và âm, với bản cực làm từ lá nhôm Điện môi của tụ hóa được tạo thành từ các lớp nhôm ôxit rất mỏng qua phương pháp điện phân Điện dung của tụ hóa khá lớn, dao động từ microfarad (µF) đến 10.000 µF.
Tụ điện gốm là loại tụ không phân cực, được chế tạo từ chất điện môi gốm Chúng thường có hình dạng tròn dẹt và bề mặt được tráng bạc để tạo thành bản tụ.
Trong vi điều khiển 89S52, nút nhấn reset có vai trò quan trọng trong việc khởi động lại vi điều khiển Khi nhấn nút reset, vi điều khiển sẽ trở về trạng thái ban đầu, tương tự như khi nó được cấp nguồn lần đầu tiên.
Các mục đích chính của nút nhấn trong mạch reset bao gồm:
Khi vi điều khiển gặp sự cố như treo hoặc hoạt động không đúng cách, nút reset là giải pháp hiệu quả để khởi động lại vi điều khiển một cách nhanh chóng và dễ dàng, từ đó khôi phục hoạt động bình thường của hệ thống.
Khi nút reset được nhấn, vi điều khiển sẽ khởi động lại và cài đặt lại các biến cùng thanh ghi về trạng thái ban đầu, sẵn sàng cho việc thực thi chương trình từ đầu.
Nút reset có vai trò quan trọng trong việc kiểm soát nguồn cấp cho vi điều khiển Khi được nhấn, nó có thể kích hoạt hoặc ngắt kết nối nguồn điện, giúp tiết kiệm năng lượng và ngăn chặn tiêu thụ không cần thiết.
Trong quá trình phát triển và lập trình vi điều khiển, nút reset thường được sử dụng để kích hoạt chế độ lập trình hoặc nạp chương trình mới.
Nguồn adapter, hay còn gọi là bộ nguồn, củ sạc, cục nguồn, là thiết bị điện tử quan trọng dùng để chuyển đổi điện áp từ nguồn điện xoay chiều (AC) 220V (hoặc 110V) thành điện áp một chiều (DC).
Trong mạch này em sử dụng nguồn Adapter 5V/2A có thông số kĩ thuật sau :
Điện áp đầu vào: AC100 - 240V, 50/60HZ.
Chiều dài dây đầu ra: 1m.
Kết nối: Jack cắm DC: 5.5 x 2.1mm.
Thiết kế phần cứng
3.2.1 Mạch tạo dao động thạch anh
Tinh thể thạch anh (Quartz Crytal) là loại đá trong mờ trong thiên nhiên, chính là dioxyt silicium (SiO2).
Tinh thể thạch anh được sử dụng trong mạch dao động là những lát mỏng cắt từ tinh thể, với các đặc tính khác nhau tùy thuộc vào mặt cắt Những lát thạch anh này có diện tích từ dưới 1cm² đến vài cm², được mài rất mỏng (vài mm) và có hai mặt song song Hai mặt này được mạ kim loại và có chân nổi ra ngoài để tiện lợi trong việc sử dụng.
Tính chất đặc trưng của tinh thể thạch anh là hiệu ứng áp điện, cho phép khi áp lực lên hai mặt của lát thạch anh, sẽ sinh ra điện thế xoay chiều Ngược lại, khi có điện thế xoay chiều tác động, lát thạch anh sẽ rung với tần số không đổi, tạo ra điện thế xoay chiều tương ứng Tần số rung động của thạch anh phụ thuộc vào kích thước, đặc biệt là độ dày của mặt cắt Ngoài ra, khi nhiệt độ thay đổi, tần số rung động cũng thay đổi nhưng vẫn giữ được độ ổn định cao hơn so với các mạch dao động không sử dụng thạch anh, vì tần số dao động chủ yếu phụ thuộc vào thạch anh mà không bị ảnh hưởng nhiều từ mạch bên ngoài.
Chức năng chính của mạch giao động thạch anh:
Thạch anh cung cấp xung nhịp chính xác cho vi điều khiển, đóng vai trò là nguồn tham chiếu thời gian Điều này cho phép vi điều khiển thực hiện các chức năng quan trọng như đếm thời gian, tạo xung và thực hiện các phép toán.
Việc đảm bảo hoạt động ổn định của vi điều khiển là rất quan trọng, và tần số dao động ổn định cao của thạch anh đóng vai trò then chốt trong việc này Nhờ vào tính năng này, vi điều khiển có khả năng hoạt động chính xác và hiệu quả ngay cả trong môi trường có nhiễu và biến đổi nhiệt độ.
Mạch giao động thạch anh tiêu thụ điện năng thấp hơn so với các phương pháp tạo xung nhịp khác, góp phần tiết kiệm điện và kéo dài thời gian sử dụng pin cho thiết bị.
Hình 3.10 Mạch dao động thạch anh
Mạch reset trong 89S52 rất quan trọng cho việc khởi động lại vi điều khiển, giúp đưa nó về trạng thái ban đầu và khởi động chương trình đã được lưu trong bộ nhớ Flash.
Mạch reset thường bao gồm một nút nhấn và một số linh kiện điện tử khác như điện trở, tụ điện.
Nút nhấn được kết nối với chân Reset (thường là chân số 9) của vi điều khiển 89S52.
Khi nút nhấn được ấn, nó sẽ kết nối chân Reset với nguồn (thường là 5V).
Việc kết nối này gây ra sự thay đổi điện áp trên chân Reset, từ đó kích hoạt quá trình reset vi điều khiển.
Quá trình reset sẽ xóa tất cả các thanh ghi của vi điều khiển, đưa nó về trạng thái khởi động ban đầu.
Sau khi quá trình reset hoàn tất, vi điều khiển sẽ bắt đầu thực hiện chương trình được ghi trong bộ nhớ Flash.
Tác dụng của mạch reset:
Khi chương trình gặp lỗi hoặc bị treo, người dùng có thể khởi động lại vi điều khiển bằng cách sử dụng nút nhấn reset, giúp chương trình hoạt động bình thường trở lại.
Trong quá trình phát triển và thử nghiệm chương trình, người dùng có thể sử dụng nút nhấn reset để khởi động lại vi điều khiển nhiều lần Điều này giúp dễ dàng theo dõi và gỡ rối các vấn đề trong chương trình một cách hiệu quả.
Tăng tính linh hoạt: Mạch reset giúp người dùng có thể can thiệp vào hoạt động của vi điều khiển khi cần thiết.
Hình 3.12 Mạch hiển thị led a Mạch hiển thị LED 7 đoạn
Mạch hiển thị đếm ngược LED 7 đoạn được sử dụng để hiển thị thời gian trong các chế độ khác nhau Thời gian sẽ được trình bày rõ ràng trên màn hình LED 7 đoạn, với các chân của LED được kết nối qua một điện trở thanh đến IC vi điều khiển.
Việc giải mã nhị phân sang LED 7 đoạn được thực hiện thông qua điều khiển LED 7 đoạn được kết nối theo kiểu anode chung, trong đó chân A nôt chung của các LED được điều khiển gián tiếp từ chân P3.0 đến P3.3 Port P1 và P2 được sử dụng để điều khiển các chân K, đảm bảo hoạt động hiệu quả Địa chỉ điều khiển các chân K chung của LED 7 đoạn rất quan trọng trong mạch này.
P1.0/P2.0: Thanh A của các led 7 đoạn.
P1.1/P2.1: Thanh B của các led 7 đoạn.
P1.2/P2.2: Thanh C của các led 7 đoạn.
P1.3/P2.3: Thanh D của các led 7 đoạn
P1.4/P2.4: Thanh E của các led 7 đoạn
P1.5/P2.5: Thanh F của các led 7 đoạn
P1.6/P2.6: Thanh G của các led 7 đoạn
Các thanh của led 7 đoạn A nốt chung tương ứng từ A tới G sẽ sáng khi các chân K tốt mức thấp và chân A nốt chung ở mức cao.
Vì vậy các led 7 thanh sẽ sáng khi chân tương ứng từ P1.0 đến P1.6 và P2.0 đến P2.6 ở mức thấp, và các chân A nốt chung ở mức cao
Các thanh LED sẽ ngừng hoạt động khi không đáp ứng một trong hai điều kiện hoặc cả hai điều kiện Địa chỉ điều khiển cho các chân A của nốt chung LED 7 đoạn là rất quan trọng.
P3.0 chân A nốt chung (LED hàng đơn vị) của làn đường 1.
P3.1 chân A nốt chung (LED hàng chục) của làn đường 1.
P3.2 chân A nốt chung (LED hàng đơn vị) của làn đường 2.
P3.3 chân A nốt chung (LED hàng chục) của làn đường 2 b.Mạch hiển thị LED đơn Địa chỉ điều khiển các đèn LED đơn
Sử dụng các led đơn nổi cathode chung Còn các chân anode thì được nối vào điện trở R Và nó được điều khiển bởi các chân P0.0 đến P0.5.
Vì LED đơn có dòng hoạt động khoảng 10mA trở lên nên ta có thể chọn điện trở R sao cho phù hợp
Thiết kế phần mềm
Bài viết này mô tả quy trình thiết lập và khởi động chương trình với các lệnh lập trình cụ thể Đầu tiên, địa chỉ bắt đầu của chương trình được xác định, tiếp theo là việc nhảy đến hàm main Các thanh ghi TH0 và TL0 được thiết lập với giá trị cụ thể để cấu hình bộ định thời Sau đó, giá trị trong thanh ghi R0 được tăng lên 1, và ngắt được kết thúc để quay lại chương trình chính Bài viết cũng định nghĩa các hằng số cho các màu sắc khác nhau, bao gồm màu xanh và đỏ Cuối cùng, các lệnh được thực hiện để thiết lập chế độ bộ định thời, thiết lập giá trị cho các thanh ghi, xóa cờ ngắt và bắt đầu bộ định thời, đồng thời kích hoạt ngắt toàn cục.
Bài viết này mô tả quy trình lập trình cho các LED với các trạng thái và thời gian sáng cụ thể Đầu tiên, trạng thái ban đầu của các LED được thiết lập với mã lệnh "mov P0,#21H" Tiếp theo, thời gian sáng cho màu xanh lần 1 được đặt là 25 giây, trong khi màu đỏ lần 1 được đặt là 30 giây Tương tự, màu xanh lần 2 cũng có thời gian sáng là 25 giây, và màu đỏ lần 2 là 30 giây Màu vàng được thiết lập với thời gian sáng ngắn hơn, chỉ 5 giây Thời gian cho màu xanh 1 và màu đỏ 2 được lưu trữ vào các thanh ghi R1 và R2 Cuối cùng, giá trị ban đầu của thanh ghi R0 được thiết lập và lệnh chuyển đổi giá trị trong R1 và R2 sang mã BCD được thực hiện.
Đoạn mã trên thực hiện việc hiển thị mã BCD lên LED và kiểm tra thời gian cho các màu sắc khác nhau Đầu tiên, mã kiểm tra xem đã đủ thời gian cho màu đỏ chưa, nếu chưa thì giảm thời gian và lặp lại cho đến khi đạt yêu cầu Sau đó, chuyển đổi sang màu vàng và lưu trữ thời gian cho màu này vào thanh ghi R1 Cuối cùng, mã thiết lập giá trị ban đầu cho thanh ghi R0 và chuyển đổi giá trị trong R1 sang mã BCD.
Đoạn mã này mô tả quy trình hiển thị mã BCD trên LED và kiểm tra thời gian cho các màu sắc khác nhau Đầu tiên, mã BCD được hiển thị trên LED và thời gian được kiểm tra Nếu thời gian cho màu vàng chưa đủ, chương trình sẽ giảm thời gian và lặp lại quá trình Khi thời gian cho màu vàng đã hết, hệ thống sẽ chuyển sang màu xanh 2 và lưu trữ thời gian cho màu đỏ 1 vào thanh ghi R1, đồng thời lưu trữ thời gian cho màu xanh 2 vào thanh ghi R2.
;================================================== loop_3: mov R0,#0EFH ; Thiet lap gia tri ban dau cua thanh ghi R0 lcall chuyen_BCD; Chuyen doi gia tri trong R1 va R2 sang ma BCD
Trong đoạn mã trên, chương trình thực hiện việc hiển thị mã BCD lên LED thông qua lệnh `lcall xuat_led` Sau đó, nó kiểm tra thời gian đã đủ hay chưa bằng cách sử dụng thanh ghi R1 Nếu thời gian chưa đủ, chương trình sẽ giảm thời gian cho màu đỏ và lặp lại quá trình này cho đến khi thời gian cho màu xanh được hoàn thành Khi thời gian cho màu xanh đã đủ, chương trình chuyển sang màu vàng bằng lệnh `mov P0,#14H` và lưu trữ thời gian cho màu vàng vào thanh ghi R2.
Trong đoạn mã này, thanh ghi R0 được khởi tạo với giá trị 0 Sau đó, hàm chuyển_BCD được gọi để chuyển đổi giá trị trong R2 sang mã BCD Tiếp theo, hàm xuat_led được gọi để hiển thị mã BCD lên LED Chương trình kiểm tra xem thời gian đã đủ chưa với lệnh cjne, nếu chưa đủ thì tiếp tục giảm thời gian cho màu vàng bằng lệnh djnz Nếu vẫn còn thời gian, quá trình sẽ lặp lại từ đầu với lệnh ljmp start.
Chương trình thực hiện chuyển đổi giá trị từ các thanh ghi R1 và R2 sang định dạng BCD Đầu tiên, giá trị của R1 được di chuyển vào thanh ghi A, sau đó thanh ghi B được thiết lập bằng 10 và thực hiện phép chia A cho B, lưu kết quả vào A và phần dư vào B Kết quả này được lưu vào vùng nhớ 50H và 51H tương ứng với mã BCD cho màu xanh 1 và màu đỏ 1 Tương tự, giá trị của R2 cũng được di chuyển vào A, thiết lập B bằng 10, thực hiện phép chia và lưu kết quả vào vùng nhớ 52H và 53H cho màu xanh 2 và màu đỏ 2 Cuối cùng, hàm trả về kết quả.
Đoạn mã trên thực hiện việc điều khiển đèn LED thông qua vi điều khiển Đầu tiên, con trỏ dữ liệu DPTR được thiết lập đến vùng nhớ 123H, nơi chứa mã LED Sau đó, giá trị từ vùng nhớ 50H được di chuyển vào thanh ghi A, tương ứng với màu xanh 1, và giá trị này được hiển thị trên LED Tiếp theo, chân điều khiển LED được chọn và tạo độ trễ trước khi tắt chân điều khiển Quá trình này lặp lại cho màu đỏ 1, màu xanh 2 và màu đỏ 2, với mỗi lần hiển thị giá trị tương ứng từ các vùng nhớ khác nhau Mỗi màu LED đều được điều khiển bằng cách chọn chân tương ứng và tạo độ trễ để đảm bảo hiển thị rõ ràng.
Đoạn mã dưới đây thực hiện chức năng trì hoãn trong lập trình: Đầu tiên, giá trị 100 được gán cho thanh ghi R6 Sau đó, vòng lặp sẽ giảm giá trị của R6 xuống 1 cho đến khi R6 bằng 0 Khi R6 đạt giá trị 0, chương trình sẽ quay trở lại phần mã chính Cuối cùng, đoạn mã này định nghĩa cách điều khiển LED.
DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H end ; Ket thuc chuong trinh
KẾT LUẬN VÀ ĐÁNH GIÁ
Sau thời gian nghiên cứu về hệ thống đèn giao thông, kết hợp tài liệu từ sách và internet, cùng với kiến thức đã học và sự hướng dẫn của thầy Vũ Văn Quang, chúng em đã hoàn thành bài tập theo yêu cầu đề ra.
Qua bài tập này giúp chúng em nắm vững được quy luật điều khiển đèn giao thông,
Cách thức một hệ thống đèn giao thông hoạt động cũng như thuật toán xử lý khi điều khiển bằng vi xử lý.
Mặc dù còn nhiều hạn chế, chúng em vẫn rất mong nhận được sự đóng góp quý báu từ thầy và các bạn.
Xin chân thành cảm ơn!
Hải Phòng, ngày tháng năm 2024
Sinh ViênNguyễn Văn Hoàng Anh