Tải bản đầy đủ (.pdf) (26 trang)

FPGA đo nhiệt độ và độ ẩm bằng DHT11, hiển thị lên LCD và điều khiển tốc độ động cơ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.39 MB, 26 trang )

Mục lục
CHƯƠNG 1. Tổng quan ................................................................................... 6
1.1

Mục tiêu đề tài ......................................................................................... 6

1.2

Yêu cầu đề tài .......................................................................................... 6

1.3

Ứng dụng .................................................................................................6

CHƯƠNG 2. Giới thiệu về FPGA và ngôn ngữ VHDL ...................................7
2.1

2.2

Giới thiệu FPGA ...................................................................................... 7
2.1.1

FPGA là gì ? ............................................................................. 7

2.1.2

Lịch sử ra đời của FPGA ........................................................... 8

2.1.3

Cấu trúc FPGA .......................................................................... 8



2.1.4

Ứng dụng của FPGA .................................................................9

Giới thiệu ngơn ngữ lập trình VHDL ....................................................... 9
2.2.1

VHDL là gì ?............................................................................. 9

2.2.2

Cấu trúc chương trình VHDL .................................................. 10

CHƯƠNG 3. Thiết kế mạch ............................................................................ 11
3.1

Sơ đồ khối và nguyên lý hoạt động ........................................................ 11

3.2

Lựa chọn phần cứng............................................................................... 11
3.2.1

Kit Altera EPM240 V1 ............................................................ 12

3.2.2

Module DHT11 ....................................................................... 12


3.2.3

Mạch nạp FPGA USB Blaster ................................................. 13

3.2.4

Module điều khiển động cơ L298 ............................................ 14

3.2.5

Quạt 12V................................................................................. 14

3.2.6

LCD16x02 .............................................................................. 15

CHƯƠNG 4. Lập trình phần mềm ................................................................. 16
4.1

Sơ đồ hệ thống và thuật toán .................................................................. 16

4.2

Lập trình FPGA cho phần đọc và xử lý DHT11 ..................................... 17

4.3

4.4

4.2.1


Nguyên lý hoạt động của DHT11 ............................................ 17

4.2.2

Lập trình DHT11 bằng VHDL ................................................ 19

Lập trình FPGA cho điều khiển động cơ ................................................ 22
4.3.1

Phương pháp điều chế xung PWM để điều khiển động cơ ....... 22

4.3.2

Lập trình tạo xung PWM bằng VHDL ..................................... 23

Lập trình FPGA cho hiển thị LCD ......................................................... 24
4.4.1

Các lệnh của LCD 16x02 ........................................................ 24
3


4.4.2

Lập trình LCD bằng VHDL..................................................... 25

CHƯƠNG 5. Kết quả và kết luận ................................................................... 28
5.1


Kết quả thực nghiệm .............................................................................. 28

5.2

Kết luận ................................................................................................. 28

4


Danh mục hình ảnh
Hình 2-1 Dịng FPGA Stralix của hãng Altera ..................................................... 7
Hình 2-2 Kiến trúc FPGA .................................................................................... 9
Hình 2-3 Cấu trúc chương trình VHDL ............................................................. 10
Hình 3-1 Sơ đồ khối của mạch ........................................................................... 11
Hình 3-2 Kit Altera EPM240 V1 ....................................................................... 12
Hình 3-3 Module DHT11 .................................................................................. 13
Hình 3-4 USB Blaster ........................................................................................ 13
Hình 3-5 Module điều khiển động cơ DC L298 ................................................. 14
Hình 3-6 Quạt 12V DC...................................................................................... 15
Hình 4-1 Sơ đồ hệ thống lập trình ...................................................................... 16
Hình 4-2 Thuật tốn của hệ thống ...................................................................... 17
Hình 4-3 Bit 0 và bit 1 ....................................................................................... 19
Hình 4-4 Quá trình nhận dữ liệu từ DHT11 ....................................................... 20
Hình 4-5 Xung PWM ........................................................................................ 23
Hình 4-6 Cách gửi lệnh ra LCD ......................................................................... 24
Hình 4-7 Tập lệnh LCD ..................................................................................... 24
Hình 4-8 Cách gửi dữ liệu ra LCD ..................................................................... 25
Hình 5-1 Kết quả thực nghiệm........................................................................... 28

5



CHƯƠNG 1. Tổng quan
1.1 Mục tiêu đề tài
Sử dụng ngôn ngữ lập trình VHDL cho kit FPGA EPM240 thực hiện đo
nhiệt độ và độ ẩm bằng cảm biến DHT11, hiển thị dữ liệu này lên LCD và điều
khiển tốc độ động cơ theo nhiệt độ
1.2 Yêu cầu đề tài
Hiểu rõ nguyên lý hoạt động của các linh kiện, cảm biến. Cách kết nối
linh kiện và lập trình cho FPGA, xử ký kết quả đo được từ cảm biến sau đó hiển
thị lên LCD và điều khiển động cơ theo nhiệt độ chính xác.
1.3 Ứng dụng
Với thiết kế mạch của đề tài có thể phát triển và ứng dụng rộng rãi trong
công nghiệp và đời sống như dựa vào nhiệt độ và độ ẩm xung quanh để bật tắt và
điều khiển quạt trong nhà tự động, điều khiển các động cơ trong nhà máy dựa
vào nhiệt độ lò, nồi nấu….

6


CHƯƠNG 2. Giới thiệu về FPGA và ngôn ngữ VHDL
2.1 Giới thiệu FPGA
2.1.1 FPGA là gì ?
Field Programmable Gate Arrays (FPGA): là một mạch số tổ hợp (digital
integrated circuit) chứa các khối logic lập trình được và các liên kết cấu hình
được.
- Field Programmable: Cấu trúc lập trình được ở “ngoài nơi sản xuất”.
- Thiết kế được thực hiện bằng sơ đồ (schematic) hoặc bằng ngôn ngữ mô tả
(hardware description language).
- Thiết kế ở mức phần tử logic và flip-flop.


Hình 2-1 Dòng FPGA Stralix của hãng Altera

FPGA cũng được xem như một loại vi mạch bán dẫn chuyên dụng ASIC,
nhưng nếu so sánh FPGA với những ASIC đặc chế hoàn tồn hay ASIC thiết kế
trên thư viện logic thì FPGA không đạt đựợc mức độ tối ưu như những loại này,
và hạn chế trong khả năng thực hiện những tác vụ đặc biệt phức tạp, tuy vậy
FPGA ưu việt hơn ở chỗ có thể tái cấu trúc lại khi đang sử dụng, công đoạn thiết
kế đơn giản do vậy chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng.
Còn nếu so sánh với các dạng vi mạch bán dẫn lập trình dùng cấu trúc
mảng phần tử logic như PLA, PAL, CPLD thì FPGA ưu việt hơn các điểm: tác
vụ tái lập trình của FPGA thực hiện đơn giản hơn; khả năng lập trình linh động
hơn và khác biệt quan trọng nhất là kiến trúc của FPGA cho phép nó có khả năng
chứa khối lượng lớn cổng logic so với các vi mạch bán dẫn lập trình kể trên.
Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn
ngữ mô tả phần cứng HDL như VHDL, Verilog, AHDL…và các gói phần mềm
và thiết bị phụ trợ cho quá trình thiết kế thường được các hãng sản xuất FPGA
lớn như Xilinx, Altera thường cung cấp.
7


2.1.2 Lịch sử ra đời của FPGA
FPGA được thiết kế đầu tiên bởi Ross Freeman, người sáng lập công ty
Xilinx vào năm 1984, kiến trúc mới của FPGA đã mở ra cơ hội cho phép tích
hợp số lượng tương đối lớn các phần tử bán dẫn vào 1 vi mạch so với kiến trúc
trước đó là CPLD. FPGA có khả năng chứa tới từ 100.000 đến hàng vài tỷ cổng
logic, trong khi CPLD chỉ chứa từ 10.000 đến 100.000 cổng logic; con số này đối
với PAL, PLA còn thấp hơn nữa chỉ đạt vài nghìn đến 10.000.
CPLD được cấu trúc từ số lượng nhất định các khối SPLD (simple
programmable devices, thuật ngữ chung chỉ PAL, PLA). SPLD thường là một

mảng logic AND/OR lập trình được có kích thước xác định và chứa một số
lượng hạn chế các phần tử nhớ đồng bộ (clocked register). Cấu trúc này hạn chế
khả năng thực hiện những hàm phức tạp và thông thường hiệu suất làm việc của
vi mạch phụ thuộc vào cấu trúc cụ thể của vi mạch hơn là vào yêu cầu bài toán.
Kiến trúc của FPGA là kiến trúc mảng các khối logic, khối logic, nhỏ hơn
nhiều nếu đem so sánh với một khối SPLD, ưu điểm này giúp FPGA có thể chứa
nhiều hơn các phần tử logic và phát huy tối đa khả năng lập trình của các phần tử
logic và hệ thống mạch kết nối, để đạt được mục đích này thì kiến trúc của FPGA
phức tạp hơn nhiều so với CPLD.
Một điểm khác biệt với CPLD là trong những FPGA hiện đại được tích
hợp nhiều những bộ logic số học đã sơ bộ tối ưu hóa, hỗ trợ RAM, ROM, tốc độ
cao…
Ngoài khả năng tái cấu trúc vi mạch tồn cục, một số FPGA hiện đại cịn
hỗ trợ tái cấu trúc cục bộ, tức là khả năng tái cấu trúc một bộ phận riêng lẻ trong
khi vẫn đảm bảo hoạt động bình thường cho các bộ phận khác.
2.1.3 Cấu trúc FPGA
Kiến trúc cơ bản của FPGA bao gồm 3 thành phần chính: khối logic có thể
tái cấu hình, Configurable Logic Blocks (CLBs) thực hiện các chức năng logic;
các tài ngun kết nối, Porgrammable Interconnect có thể lập trình để kết nối các
đầu vào và đầu ra của các CLB và các khối I/O bên trong; các khối I/O cung cấp
giao tiếp giữa các ngoại vi và các đường tín hiêu bên trong.

8


Hình 2-2 Kiến trúc FPGA

Theo thời gian, các kiến trúc FPGA cơ bản đã được phát triển hơn nữa thông
qua việc bổ sung các khối chức năng đặc biệt có thể lập trình, như bộ nhớ trong
(Block RAMs), logic số học (ALU), bộ nhân, DSP-48 và thậm chí là bộ vi xử lý

nhúng được thêm vào do nhu cầu của các nguồn tài nguyên cho một ứng dụng.
Kết quả là nhiều FPGA ngày nay có nhiều nguồn tài nguyên hơn so với các FPGA
trước đó.
2.1.4 Ứng dụng của FPGA
Ứng dụng của FPGA bao gồm: xử lý tín hiệu số DSP, các hệ thống hàng
khơng, vũ trụ, quốc phịng, tiền thiết kế mẫu ASIC (ASIC prototyping), các hệ
thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật
mã học, mơ hình phần cứng máy tính,
Do tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết
lớp những bài toán phức tạp mà trước kia chỉ thực hiện nhờ phần mềm máy tính,
ngồi ra nhờ mật độ cổng logic lớn FPGA được ứng dụng cho những bài tốn địi
hỏi khối lượng tính tốn lớn và dùng trong các hệ thống làm việc theo thời gian
thực.
2.2 Giới thiệu ngơn ngữ lập trình VHDL
2.2.1 VHDL là gì ?
VHDL là viết tắt của cụm từ Very High Speed Intergrated Circuit
Hardware Description Language – ngôn ngữ mô tả phần cứng. Nó mơ tả hoạt
động của một mạch điện tử hoặc hệ thống, từ đó mạch vật lý hoặc hệ thống có
thể được thực hiện.
Hai ứng dụng chính của VHDL là trong lĩnh vực PLD ( Programmable
Logic Device – Thiết bị logic có thể lập trình bao gồm CPLD – Complex
Programmable Logic Device và FPGA – Field Programmable Gate Array) và
trong lĩnh vực ASIC (Application Specific Integrated Circuit – Mạch tích hợp
dành riêng cho ứng dụng). Khi chương trình VHDL được viết, nó có thể được sử
dụng để thực thi mạch trong một thiết bị có thể lập trình (của Altera, Xilinx,
9


Atmel…) hoặc có thể được gửi đến xưởng để chế tạo chip ASIC. Hiện nay, nhiều
chip thương mại phức tạp (ví dụ như vi điều khiển) được thiết kế theo cách tiếp

cận như vậy.
Ưu điểm của VHDL
- Tính cơng cộng
- Khả năng hỗ trợ nhiều công nghệ và phương pháp thiết kế
- Ðộc lập với công nghệ
- Khả năng mô tả mở rộng
- Khả năng trao đổi kết quả
- Khả năng hỗ trợ thiết kế mức lớn và khả năng sử dụng lại các thiết kế
2.2.2 Cấu trúc chương trình VHDL
Tất cả các chương trình VHDL bao gồm ít nhất ba thành phần cơ bản sau
đây:
- Khai báo thư viện (LIBRARY): Chứa danh sách tất cả các thư viện sẽ được sử
dụng trong thiết kế. Ví dụ: ieee, std, work,…
- ENTITY (thực thể): Entity dùng để khai báo tên của thực thể, các port của thực
thể và các thông tin liên quan đến thực thể.
- ARCHITECTURE (kiến trúc): Kiến trúc mô tả chức năng cơ bản của thực thể
và chứa nhiều phát biểu mô tả hành vi của thực thể. Kiến trúc ln ln có liên
quan đến thực thể và các mơ tả hành vi của thực thể.

Hình 2-3 Cấu trúc chương trình VHDL

10


CHƯƠNG 3. Thiết kế mạch
3.1 Sơ đồ khối và nguyên lý hoạt động

Hình 3-1 Sơ đồ khối của mạch

- Khối cảm biến LM35: thực hiện đo giá trị nhiệt độ từ môi trường xung quanh.

- Khối xử lý EPM240 số 1: xử lý dữ liệu nhiệt độ và độ ẩm sau đó chuyển dữ liệu
sang EPM240 số 2
- Khối điều khiển EPM240 số 2: nhận dữ liệu từ EPM240 số 1 sau đó gửi lên
khối hiển thị, đồng thời đưa ra lệnh điều khiển động cơ.
- Khối hiển thị: hiển thị dữ liệu nhiệt độ và độ ẩm đo được.
- Khối chấp hành: hoạt động theo lệnh điều khiển của EPM240 số 2.
3.2 Lựa chọn phần cứng

11


3.2.1

Kit Altera EPM240 V1

Hình 3-2 Kit Altera EPM240 V1

Thơng số kỹ thuật
- Điện áp : 12VDC
- Sử dụng chip: EPM240T100C5N TQFP100
- Điện áp: DC5V
- Tương thích mạch nạp USB Blaster
- Giao tiếp LCD1602, LCD12864
- Giao tiếp UART
- Giao tiếp Key đơn
- Giao Tiếp LED đơn
- Hỗ trợ cổng IO
3.2.2 Module DHT11
Cảm biến độ ẩm và nhiệt độ DHT11 là cảm biến rất thơng dụng hiện nay
vì chi phí rẻ. Module DHT11 ra chân được tích hợp sẵn điện trở 5,1k giúp người

dùng dễ dàng kết nối và sử dụng hơn so với cảm biến DHT11 chưa ra chân,
module lấy dữ liệu thông qua giao tiếp 1 wire (giao tiếp digital 1 dây truyền dữ
liệu duy nhất). Bộ tiền xử lý tín hiệu tích hợp trong cảm biến giúp bạn có được
dữ liệu chính xác mà khơng cần phải qua bất kỳ tính tốn nào.

12


Hình 3-3 Module DHT11

Thơng tin kỹ thuật:
- Nguồn: 3 - 5 VDC.
- Dòng sử dụng: 2.5mA max (khi truyền dữ liệu).
- Khoảng đo độ ẩm: 20% - 90% RH (sai số 5%RH)
- Khoảng đo nhiệt độ: 0 - 50°C (sai số 2°C)
- Tần số lấy mẫu tối đa: 1Hz (1 giây / lần)
- Kích thước 15mm x 12mm x 5.5mm.
3.2.3

Mạch nạp FPGA USB Blaster

Hình 3-4 USB Blaster

Thơng số kỹ thuật
- Cáp tải USB Blaster tải dữ liệu cấu hình cho các thiết bị Altera sau đây:
+ Stratix® loạt FPGA
+ Cyclone® loạt FPGA
+ Max ®
CPLD loạt:
+ Arria® GX loạt FPGA

+ APEX ™ loạt FPGA
+ ACEX® 1K FPGA
+ loạt FPGA FLEX 10K®
13


+ Excalibur
+ FPGA
- Bạn có thể thực hiện các chương trình trong hệ thống các thiết bị sau:
+ Các thiết bị cấu hình Altera bao gồm các thiết bị EPC2.
+ Các thiết bị cấu hình bao gồm tăng cường EPC4, EPC8, và các thiết bị
EPC16.
+ Các thiết bị cấu hình nối tiếp bao gồm EPCS1, EPCS4, EPCS16,
EPCS64 và thiết bị EPCS128.
- Cáp tải USB-Blaster hỗ trợ các hệ thống mục tiêu sử dụng 5V TTL, 3,3V.
3.2.4 Module điều khiển động cơ L298
Module điều khiển động cơ DC L298 có khả năng điều khiển 2 động cơ
DC, dòng tối đa 2A mỗi động cơ, mạch tích hợp diod bảo vệ và IC nguồn 7805
giúp cấp nguồn 5VDC cho các module khác (chỉ sử dụng 5V này nếu nguồn cấp
<12VDC). Module này dễ sử dụng, chi phí thấp, dễ lắp đặt, là sự lựa chọn tối ưu
cho sinh viên.

Hình 3-5 Module điều khiển động cơ DC L298

Thơng số kỹ thuật:
- IC chính: L298 - Dual Full Bridge Driver
- Điện áp đầu vào: 5~30VDC
- Cơng suất tối đa: 25W 1 cầu
- Dịng tối đa cho mỗi cầu H là: 2A
- Mức điện áp logic: Low -0.3V~1.5V, High: 2.3V~Vss

- Kích thước: 43x43x27mm
3.2.5 Quạt 12V
Thơng số kỹ thuật
- Điện áp hoạt động : 12VDC
- Kích thước: 8x8x2.5mm
- Dòng điện: 0.19A
14


Hình 3-6 Quạt 12V DC

3.2.6 LCD16x02
Màn hình LCD 1602 xanh lá sử dụng driver HD44780, có khả năng hiển
thị kí tự đa dạng (kí tự đồ họa, chữ, số, ) với 2 dịng 16 ký tự, màn hình có độ bền
cao, rất phổ biến.

Thông số kĩ thuật
- Hoạt động ổn định : 2,7-5,5V
- Dòng điện cấp nguồn : 350uA - 600uA
- Nhiệt độ hoạt động : - 30 - 75 độ C

15


CHƯƠNG 4. Lập trình phần mềm
4.1 Sơ đồ hệ thống và thuật tốn

Hình 4-1 Sơ đồ hệ thống lập trình

16



Hình 4-2 Thuật tốn của hệ thống

4.2 Lập trình FPGA cho phần đọc và xử lý DHT11
4.2.1 Nguyên lý hoạt động của DHT11
Cảm biến đo nhiệt độ và độ ẩm được sử dụng là DHT11.
Dữ truyền về của DHT11 gồm 40 bit dữ liệu (5 byte). Trong đó:
- Byte 1: giá trị phần nguyên của độ ẩm.
- Byte 2: giá trị phần thập phân của độ ẩm.
- Byte 3: giá trị phần nguyên của nhiệt độ.
- Byte 4: giá trị phần thập phân của nhiệt độ.
- Byte 5 : kiểm tra tổng.
- Nếu byte 5 = (byte 1 + byte 2 + byte 3 + byte 4) thì giá trị nhiệt độ và độ ẩm là
chính xác, nếu sai thì kết quả đo khơng có nghĩa.
Ví dụ: vi xử lý nhận 40 bit dữ liệu từ DHT11
0011 0101 0000 0000 0001 1000 0000 0000 0100 1101
Tính tốn:
8 bit checksum: 0011 0101 + 0000 0000 + 0001 1000 + 0000 0000 = 0100 1101
- Độ ẩm: 0011 0101 = 35H = 53%
- Nhiệt độ: 0001 1000 = 18H = 24°C
Khi bit nhiệt độ cao nhất là 1, có nghĩa là nhiệt độ dưới 0°C.
17


* Nguyên lý hoạt động: Vi xử lý gửi tín hiệu Start tới DHT11, sau đó cảm
biến sẽ xác nhận. Sau khi đã giao tiếp với DHT11, cảm biến sẽ gửi lại 5 byte dữ
liệu nhiệt độ và độ ẩm đo được.
- Bước 1: gửi tín hiệu Start


 MCU thiết lập chân DATA là output, kéo chân data xuống 0 trong khoảng
> 10ms để đảm bảo cảm biến phát hiện tín hiệu của MCU.
 Sau đó MCU kéo chân data lên 1, và đợi 20 - 40us, DHT11 sẽ kéo chân
data xuống thấp. Nếu > 40us mà chân data không được kéo xuống thấp
nghĩa là không giao tiếp được với DHT11.
 Chân data sẽ ở mức thấp 80us sau đó sẽ được kéo lên cao trong 80us.
Thông qua việc giám sát chân này, MCU có thể biết được có giao tiếp
được với DHT11 khơng. Nếu tín hiệu đo được là cao, khi đó hồn tất q
trình giao tiếp của MCU với DHT11.
- Bước 2: đọc giá trị dữ liệu trên DHT11.
 Sau khi tiến hiệu được đưa về 0, ta đợi chân data của DHT11 được MCU
kéo lên 1. Nếu chân DATA là 1 trong khoảng 26 – 28 µs thì là bit 0, cịn
nếu tồn tại 70 µs là bit 1. Do đó trong lập trình ta bắt sườn của chân data,
sau đó delay 50 µs. Nếu giá trị đo được là 0 thì ta đọc được bit 0, nếu giá
trị đo được là 1 thì ta đọc được là bit 1. Cứ như thế đọc các bit tiếp theo.

18


Hình 4-3 Bit 0 và bit 1

4.2.2 Lập trình DHT11 bằng VHDL
Khai báo các đầu vào ra, các kiểu dữ liệu và biến cho quá trình nhận dữ
liệu của DHT11.

Sau đó thực hiện lập trình theo các trạng thái như hình 4-2. Ban đầu ở
trạng thái start để gửi tín hiệu đến cho DHT11 và nhận tín hiệu lại từ DHT11,
nếu khơng phát hiện được kết nối DHT11 thì thực hiện Start lại cho đến khi có
kết nối. Sau khi đã có tín hiệu DHT11, chuyển sang trạng thái Get_data và
Read_bit để thực hiện việc lấy và ghi lần lượt 40 bit dữ liệu từ DHT11 biến. Cuối

cùng sau khi đã hồn thành việc lấy dữ liệu thì chuyển về trạng thái Delay_ms
một khoảng thời gian rồi lại bắt đầu lại quá trình.
19


Hình 4-4 Quá trình nhận dữ liệu từ DHT11

Quá trình trên được cụ thể hóa qua code VHDL sau.
- Trạng thái Start.

20


- Trạng thái Get_data.

- Trạng thái Read_bit

21


- Trạng thái Delay_ms.

4.3 Lập trình FPGA cho điều khiển động cơ
4.3.1 Phương pháp điều chế xung PWM để điều khiển động cơ
Phương pháp điều chế PWM (Pulse Width Modulation) là phương pháp
điều chỉnh điện áp ra tải hay nói cách khác là phương pháp điều chế dựa trên sự
thay đổi độ rộng của chuỗi xung vuông dẫn đến sự thay đổi điện áp ngõ ra.
Xung PWM có các đặc điểm:
- Dạng xung vuông, 2 mức điện áp 0V và +Vcc (5V, 12V, ...).
- Các thơng số chính của xung PWM: tần số f (frequency) và chu kỳ xung D

(duty cycle).
- Trong quá trình điều chế độ rộng xung PWM, tần số f là đại lượng được giữ cố
định, duty cycle D là tham số được điều khiển thay.

22


Hình 4-5 Xung PWM

4.3.2 Lập trình tạo xung PWM bằng VHDL
Khai báo 2 đầu ra in1, in2 kết nối với 2 đầu dương và âm của động cơ.
Gán giá trị in2 mặc định bằng 0, giá trị in1 bằng 0 hoặc 1 tùy thuộc vào các trạng
thái p theo các khoảng nhiệt độ được setup sẵn.

Tạo độ rộng xung PWM bằng cách kích hoạt in1 trong các khoảng chu kỳ.
Ví dụ p50 thì động cơ chạy 1 chu kỳ (ứng với chu kỳ của xung clk) và nghỉ 1 chu
kỳ, và lặp lại tiếp tục như thế. p75 thì động cơ chạy trong 3 chu kỳ và nghỉ 1 chu
kỳ, và lặp lại tiếp tục như thế.

23


4.4 Lập trình FPGA cho hiển thị LCD
4.4.1 Các lệnh của LCD 16x02
Để lập trình LCD trước tiên phải gửi lệnh vào cho LCD biết nó phải làm
gì.

Hình 4-6 Cách gửi lệnh ra LCD

Hình 4-7 Tập lệnh LCD


Sau khi gửi các lệnh vào LCD (qua các chân D0 – D7) để nó biết sẽ phải
làm gì (bật màn hình, hiển thị hay tắt con trỏ, di chuyển con trỏ …), chúng ta sẽ
phải gửi lệnh chứa các kí tự mà chúng ta muốn hiển thị. Cách gửi dữ liệu ra cũng
tương tự như cách gửi lệnh.

24


Hình 4-8 Cách gửi dữ liệu ra LCD

4.4.2 Lập trình LCD bằng VHDL
Khai báo các đầu vào ra dành cho lập trình LCD. Với dữ liệu nhiệt độ và
độ ẩm được gửi từ phần DHT11 tới.

Ở đây chúng ta sử dụng thuật toán dịch và cộng 3.

Xử lý dữ liệu nhiệt độ và độ ẩm, lưu các số hàng trăm, chục, nghìn vào
các biến riêng biệt và chuyển chúng về mã ASCII để có thể hiện thị lên LCD.
Bằng cách cộng thêm X”30”.
25


26


27



×