1. Trang chủ
  2. » Tất cả

BTL thí nghiệm kĩ thuật số dề tài thiết kế đèn giao thông trên proteus và quartus

10 11 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề BTL Thí Nghiệm Kỹ Thuật Số Đề Tài Thiết Kế Đèn Giao Thông Trên Proteus Và Quartus
Tác giả Đặng Thái Dương
Trường học Đại Học Bách Khoa, Đại Học Quốc Gia TP.Hồ Chí Minh
Chuyên ngành Kỹ Thuật Số
Thể loại Báo cáo thí nghiệm
Năm xuất bản 2021
Thành phố TP.Hồ Chí Minh
Định dạng
Số trang 10
Dung lượng 584,52 KB
File đính kèm tn kts.rar (496 KB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA BÁO CÁO THÍ NGHIỆM KĨ THUẬT SỐ GV Lớp L08 Đặng Thái Dương 2011031 TP Hồ Chí Minh tháng 11 năm 2021 Đề bài Thiết kế đèn giao thông trên phần mềm.

Trang 1

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA

BÁO CÁO THÍ NGHIỆM KĨ THUẬT SỐ GV:

Lớp L08 Đặng Thái Dương 2011031

_

TP.Hồ Chí Minh tháng 11 năm 2021

Trang 2

Đề bài:

Thiết kế đèn giao thông trên phần mềm PROTEUS và QUARTUS với

thời gian hiển thị của ba đèn xanh, vàng và đỏ được cho

Trang 3

PHẦN LÀM TRÊN PROTEUS

-Các linh kiện sử dụng: 74LS151, 7447, NOT, AND,OR, LED 7 ĐOẠN,74LS283, TRAFFIC LIGHT -Ta sử dụng JK-FF để đếm lên, vì tổng thời gian đếm là 13 nên ta sử dụng 4 flip flop để mô tả

-Ứng với mỗi giá trị đếm lên có 1 trong ba đèn sáng Ta có bảng sau:

Q3 Q2 Q1 Q0 Giá trị thập phân delay Đèn Biểu thức

0 0 0 0 0 1 Xanh Q3’.Q2’.Q1’ + Q3’.Q2’.Q1.Q0’ +

Q3’.Q2’.Q1.Q0 + Q3’.Q2.Q1’Q0’ + Q3’.Q2.Q1’.Q0

0 1 1 0 6 1 Vàng Q3’.Q2.Q1.Q0’ + Q3’.Q2.Q1.Q0

1 0 0 0 8 1 Đỏ Q3.Q2’.Q1’.Q0’ + Q3.Q2’.Q1’.Q0 +

Q3.Q2’.Q1.Q0’ + Q3.Q2’.Q1.Q0 + Q3.Q2.Q1’.Q0’

*Là trạng thái không mong muốn, để 1101 về trạng thái ban đầu “0000” đếm tiếp => nối (Q3.Q2.Q0)’ vào chân R của flip flop

Bên trái là sơ đồ đèn xanh, bên phải lần lượt là đèn vàng(trên) và đèn đỏ (dưới)

Trang 4

-Ta thấy, vì giá trị chính xác (thập phân) của bộ đếm bị lệch với thời gian delay của đèn

Vì vậy ta phải sử dụng IC 74LS283 để cộng thêm giá trị để sau đó đưa vào IC 74LS47 hiển thị ra LED 7 đoạn Cụ thể:

+đèn xanh: cộng “0001”

+đèn vàng: cộng bù 2 của 5 “1011”

+đèn đỏ: cộng bù 2 của 7 “1001”

IC 74LS283 thực hiện chức năng cộng A+B với :

A là các giá trị đếm của flip flop,

B là số hạng phải cộng thêm như trên để thõa yêu cầu.

Để cộng A với B (4 bit) thì ta sử dụng thêm 4 IC 74151 dồn 3 bit của đèn

(“001,010,100”) (Mỗi IC sẽ ứng với từng bit của B)) => Khi tín hiệu đếm rơi vào đèn nào thì sẽ có 4 giá trị ở mỗi IC MUX được tích cực và đưa vào bộ cộng.

Bước cuối cùng là đưa tín hiệu thể hiện ra LED.

*

Trang 5

PHẦN LÀM TRÊN QUARTUS

-Ý tưởng:

Đầu tiên ta chia bài này thành hai process Process thứ nhất là khối “den” có một đầu vào là “clk” và đầu ra là ba led tượng trưng cho đèn đỏ, vàng, xanh Process thứ hai là khối “decode” với đầu vào là number để hiển thị kết quả đếm giây Dưới đây là sơ đồ khối của ý tưởng:

-Chương trình mô tả hoạt động:

library ieee;

use ieee.std_logic_1164.all;

entity den is

port(clk: in std_logic;

green: out std_logic;

yellow: out std_logic;

red: out std_logic;

digit: out std_logic_vector(6 downto 0)); led có 7 bit

end entity;

architecture behavior of den is

signal number: integer range 0 to 9; led hiển thị từ 0 đến 9

begin

Trang 6

den: process(clk)

variable count : integer range 0 to 9; khai báo biến đếm, chính là số giây hiển thị

variable state : integer range 0 to 2; khai báo biến trạng thái, có ba trạng thái là đỏ vàng xanh

begin

if clk'event and clk = '1' then nếu clk thay đổi và kích cạnh lên 1

if count = 0 then nếu count bằng 0 thì

ba đèn tắt hết

green <= '0';

yellow <= '0';

red <= '0';

if state =0 then nếu ở trạng thái

0 thì sẽ chuyển lên trạng thái 1

state := 1;

count := 6; thời gian yêu cầu của đèn xanh

green <= '1';

elsif state = 1 then nếu ở trạng thái 1 thì sẽ chuyển lên trạng thái 2

state := 2;

count := 2; thời gian yêu cầu của đèn vàng

yellow <= '1';

else ngược lại hai trạng thái ở trên thì là trạng thái còn lại

state := 0;

count := 5; thời gian yêu cầu của đèn đỏ

red <= '1';

end if;

else

count := count - 1; nếu đếm không bằng 0 thì sẽ cho nó đếm ngược về 0

end if;

number <= count; gán count vào number để đếm giây

end if;

Ở đoạn chương trình này, nếu count được đếm hết về 0 thì sẽ bắt đầu được chuyển trạng thái, ví

dụ ở trạng thái 0 (đèn đỏ) thì sẽ được chuyển

về trạng thái 1(đèn xanh)

có 6s, và khi

đó count sẽ đếm xuống tới khi nào còn 0s lúc đó mới chuyển đến trạng thái tiếp theo

Trang 7

end process;

decode : process(number) process hiển thị số giây

begin

case number is

when 0 => digit <= "0000001";

mã led anode chung của số 0, tương tự với các trường hợp ở dưới

when 1 => digit <= "1001111"; when 2 => digit <= "0010010"; when 3 => digit <= "0000110"; when 4 => digit <= "1001100"; when 5 => digit <= "0100100"; when 6 => digit <= "0100000"; when 7 => digit <= "0001111"; when 8 => digit <= "0000000"; when 9 => digit <= "0000100"; when others => null;

end case;

end process;

end architecture;

-Kết quả RTL viewer:

Trang 8

-Kết quả dạng sóng:

Trang 9

Nhận xét: ta thấy đèn giao thông đã được đếm tuần tự theo đúng như yêu cầu đề

bài, ở đây em vẫn giữ trường hợp đếm về “0” bởi vì trong thực tế em cũng thấy đèn giao thông có đếm lùi về “0”

Ngày đăng: 16/11/2022, 11:45

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w