1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Đồ án Thiết kế mạch hiển thị mức âm lượng qua LCD sử dụng PIC 16F877A

68 522 10

Đ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

Thông tin cơ bản

Định dạng
Số trang 68
Dung lượng 2,38 MB

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

Nội dung

--------------------------------------------------------------------------------------------- https://www.youtube.com/watch?v=wj5sQc-bunA --------------------------------------------------------------------------------------------- Đồ án Thiết kế mạch hiển thị mức âm lượng qua LCD sử dụng PIC 16F877A. Đồ án mô tả chi tiết cách thiết kế, thi công và kiểm tra mạch hiển thị mức âm lượng qua LCD sử dụng PIC 16F877A. Hệ thống khai thác công cụ ccs của Pic C để kích hoạt ADC và LCD. Hệ thống cũng tích hợp mạch khuyếch đại âm thanh công suất nhỏ nhằm đảm bảo là một sản phẩm hoàn chỉnh.

Trang 1

Lời nói đầu tiên chúng em xin chân thành cảm ơn và gửi lời chúc sức khỏeđến Quý Thầy Cô trường Đại học Tiền Giang, Quý Thầy Cô Khoa Kỹ thuậtCông Nghiệp cùng Quý Thầy Cô bộ môn Điện - Điện Tử đã không ngại nhữngkhó khăn và tận tâm với nghề để truyền đạt những kiến thức quý báu cho chúng

em trong suốt khoảng thời gian chúng em học tại Trường Với những kiến thứcquý báu đó sẽ là một trong những nền tảng cơ bản và vững chắc giúp chochúng em trên con đường lập nghiệp sau này

Đồng thời chúng em cũng gửi lời cảm ơn thân mến đến tập thể sinh viênlớp Cao đẳng Điện - Điện tử 13 đã cùng chúng em trao đổi, học tập và giảiquyết những khó khăn trong suốt quá trình thực hiện đề tài

Chúng em xin trân trọng gửi đến thầy Hoàng Hữu Duy lời cảm ơn chân

thành và lòng biết ơn sâu sắc nhất Chúng em cũng rất mong nhận được những

lời nhận xét tận tình và sự đóng góp ý kiến quý báu của thầy Hoàng Hữu Duy,

Quý Thầy Cô Trường Đại học Tiền Giang và Quý Thầy Cô Khoa Kỹ ThuậtCông Nghiệp để đề tài của chúng em được tốt hơn

Chúng em xin chân thành cảm ơn!

Trang 3

Hiện nay kỹ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹthuật và trong dân dụng Các bộ vi điều khiển có khả năng xử lý nhiều hoạt độngphức tạp mà chỉ cần một chip vi mạch nhỏ, nó đã thay thế các mạch điều khiểnlớn và phức tạp bằng những mạch điện gọn nhẹ, dễ dàng thao tác sử dụng.

Vi điều khiển không những góp phần vào kỹ thuật điều khiển mà còn gópphần to lớn vào việc phát triển thông tin Chính vì các lý do trên, việc tìm hiểu,khảo sát vi điều khiển là điều mà các sinh viên ngành điện mà đặc biệt là chuyênngành kỹ thuật điện – điện tử phải hết sức quan tâm

Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành và

sử dụng được lại là một điều rất phức tạp Phần công việc xử lý chính vẫn phụthuộc vào con người, đó chính là chương trình hay phần mềm Nếu không có sựtham gia của con người thì hệ thống vi điều khiển cũng chỉ là một vật vô tri Dovậy khi nói đến vi điều khiển cũng giống như máy tính bao gồm 2 phần là phầncứng và phần mềm

Mặc dù vi điều khiển đã đi được những bước dài như vậy nhưng để tiếp cậnđược với kỹ thuật này không thể là một việc có được trong một sớm một chiều

Để tìm hiểu bộ vi điều khiển một cách khoa học và mang lại hiệu quả cao cho

công việc về sau nhóm em đã đi đến quyết định “Thiết kế mạch hiển thị mức

âm thanh trên LCD sử dụng PIC 16F877A” nhằm đáp ứng nhu cầu học hỏi,

tìm hiểu của bản thân và giúp cho các bạn sinh viên dễ tiếp cận và hiểu sâu hơn

về vi điều khiển PIC

Trang 5

A MỞ ĐẦU 1

1 Lý do chọn đề tài 2

2 Mục đích và mục tiêu nghiên cứu 2

3 Khách thể và đối tượng nghiên cứu 2

4 Phạm vi và giới hạn đề tài 2

5 Phương pháp nghiên cứu 2

6 Cấu trúc của đề tài 3

B NỘI DUNG 4

Chương 1 Tổng quan và cơ sở lý thuyết 5

1.1 Vi điều khiển PIC16F877A 5

1.1.1 Giới thiệu về họ vi điều khiển PIC 5

1.1.2 Cấu trúc phần cứng của PIC16F877A 5

1.1.2.1 Sơ đồ chân 5

1.1.2.3 Một số đặc điểm của vi điều khiển PIC16F877A 7

1.1.2.4 Các cổng xuất/nhập 8

1.1.3 ADC 10

1.2 LCD 12

1.3 TDA2030A 15

1.4 Phần mềm lập trình CCS 16

1.4.1 Giới thiệu về trình dịch CCS 16

1.4.2 Chỉ thị tiền xử lý 17

1.4.3 Các hàm Delay 18

1.4.4 Các hàm vào ra trong CCS 18

1.4.5 Thư viện hàm LCD của CCS 18

1.4.5.1 Khai báo 18

1.4.5.2 Các lệnh và ý nghĩa 19

1.4.6 Thư viện hàm ADC của CCS 19

1.4.6.1 Khai báo 19

1.4.6.2 Các hàm và ý nghĩa 19

1.4.7 Hàm Printf() 21

Trang 6

2.1 Sơ đồ khối của mạch 23

2.2 Chức năng của các khối 23

2.2.1 Khối nguồn 23

2.2.2 Khối khuếch đại 24

2.2.2.1 Định nghĩa mạch khuếch đại 24

2.2.2.2 Tầng khuếch đại công suất 25

2.2.2.3 Khối khuếch đại sử dụng TDA2030A 27

2.2.2.4 Nguồn âm thanh 28

2.2.2.5 Loa 28

2.2.4 Khối vi điều khiển 29

2.2.5 Khối hiển thị 30

Chương 3 Sơ đồ nguyên lý của mạch và cách xây dựng chương trình cho PIC16F877A

3.1 Sơ đồ nguyên lý của mạch 32

3.2 Nguyên lý hoạt của mạch 33

3.3 Xây dựng chương trình cho PIC16F877A 33

3.3.1 Lưu đồ thuật toán 34

3.3.2 Đọc và chuyển đổi giá trị ADC 35

3.3.3 Thành lập chương trình 36

3.3.3.1 Các tiền khai báo 36

3.3.3.2 Chương trình chính 37

3.4 Thi công và hoàn thành sản phẩm 40

3.5 Nhận xét hoạt động của sản phẩm 41

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỀN 42

TÀI LIỆU THAM KHẢO 43 PHỤ LỤC

Trang 7

Hình 1.1 Sơ đồ chân PIC16F877A 5

Hình 1.2 Sơ đồ khối bộ chuyển đổi ADC 11

Hình 1.3 Các cách lưu kết quả chuyển đổi ADC 11

Hình 1.4 Hình dáng thực tế LCD 16x2 12

Hình 1.5 Sơ đồ chân của LCD 16x2 12

Hình 1.6 Hình ảnh thực tế TDA2030A 15

Hình 1.7 Vị trí các chân của TDA2030A 16

Hình 2.1 Sơ đồ khối toàn mạch 23

Hình 2.2 Mạch nguồn nuôi 24

Hình 2.3 Sơ đồ tổng quát của mạch khuếch đại 24

Hình 2.4 Mô tả việc phân loại các mạch khuếch đại công suất 26

Hình 2.5 Dạng sóng dòng điện của các chế độ khuếch đại 27

Hình 2.6 Mạch khuếch đại dùng TDA2030A 27

Hình 2.7 Các thiết bị là nguồn âm thanh 28

Hình 2.8 Dây nối tính hiệu âm thanh 28

Hình 2.9 Jack mono audio 3.5mm 28

Hình 2.10 Loa 28

Hình 2.11 Khối vi điều khiển 29

Hình 2.12 Khối hiển thị 30

Hình 2.13 Sơ đồ kết nối vi điều khiển với LCD 31

Hình 3.1 Sơ đồ nguyên lý toàn mạch 32

Hình 3.2 Lưu đồ thuật toán của vi điều khiển 34

Hình 3.3 Lưu đồ giải thuật đọc giá trị ADC 35

Hình 3.4 Mạch in 40

Hình 3.5 Sản phẩm thực tế 40

Trang 8

Bảng 1.1 Bảng tóm tắt đặc điểm của vi điều khiển PIC16F877A 8

Bảng 1.2 Chức năng các chân của LCD 13

Bảng 1.3 Bảng tập lệnh LCD 14

Bảng 1.4 Bảng thông số tối đa của TDA2030A 15

Bảng 1.5 Bảng thông số nhiệt của TDA2030A 16

Bảng 1.6 Các hàm trong thư viện LCD của CCS 19

Bảng 1.7 Mã định dạng dữ liệu của hàm printf() 21

Bảng 3.1 Các tiền khai báo bắt buộc trong chương trình 36

Bảng 3.2 Ý nghĩa các config của Fuses trong CCS 36

Bảng 3.3 Các khai báo biến toàn cục 37

Bảng 3.4 Các hàm liên quan đến bộ ADC trong chương trình 38

Bảng 3.5 Bảng lệnh chuyển đổi và hiển thị ADC lên LCD 38

Bảng 3.6 Bảng biểu thể hiển mức điện áp của từng mức âm lượng 41

Trang 9

A. MỞ ĐẦU

Trang 10

1. Lý do chọn đề tài

Ngày nay, sự phát triển mạnh mẽ của khoa học công nghệ, cuộc sống củacon người đã có những thay đổi ngày càng tốt hơn, mang lại sự tiện lợi tối ưuphục vụ công cuộc công nghiệp hoá, hiện đại hoá đất nước Góp phần vào sựphát triển đó là sự tích hợp các mạch điện – điện tử Trong đó các bộ vi xử lý –

vi điều khiển có vai trò rất quan trọng Vi xử lý – vi điều khiển ra đời đã và đanglàm nên một cuộc cách mạng trong mọi lĩnh vực của đời sống hiện đại từ chiếcmáy giặt, điện thoại… đến máy thu hình, máy ảnh, loa, máy khuếch đại âmthanh, Những thành tựu này đã biến những cái tưởng chừng như không thểthành những cái có thể

Với nhu cầu giải trí về mặt tinh thần ngày càng cao hơn của con người đãthúc đẩy các hệ thống vui chơi, giải trí như máy thu hình, điện thoại di động,máy tính xách tay, hệ thống chiếu phim, âm thanh, hình ảnh ngày càng pháttriển hơn Mỗi người, nhất là giới trẻ đều muốn có một hệ thống âm thanh choriêng mình với chi phí thấp

Dựa vào nhu cầu này, nhóm quyết định “Thiết kế mạch hiển thị mức âm thanh trên LCD sử dụng PIC16F877A”.

2. Mục tiêu và nhiệm vụ nghiên cứu

Mục tiêu của đề tài là thiết kế mạch hiển thị mức âm thanh trên LCD sửdụng PIC16F877A

Để đạt được mục tiêu này, các nhiệm vụ sau đây phải được thực hiện:

- Nghiên cứu và sử dụng phần mềm lập trình CCS

- Nghiên cứu vi điều khiển PIC16F877A và các lập lệnh có liên quan trong CCS

- Nghiên cứu sử dụng LCD 16x2

- Nghiên cứu mạch khuếch đại âm thanh sử dụng TDA2030A

- Nghiên cứu cơ chế hoạt động của bộ ADC trong PIC16F877A

- Mô phỏng mạch trong Proteus

- Xây dựng chương trình cho vi điều khiển PIC16F877A

- Thiết kế và thi công phần cứng

3. Khách thể và đối tượng nghiên cứu

Đối tượng nghiên cứu: Mạch hiển thị mức âm lượng trên LCD

Trang 11

Khách thể nghiên cứu: Vi điều khiển PIC16F877A, TDA2030A, LCD.

4. Phạm vi và giới hạn đề tài

Phạm vi đề tài:

- Thiết kế mạch khuếch đại âm thanh 1 kênh

- Sử dụng biến trở để điều chỉnh âm lượng

- LCD có kích thước 16x2 và hiển thị 20 mức âm lượng

- Không thiết kế mạch nguồn từ 220VAC xuống 12VDC

- Công suất âm thanh 1W

Giới hạn của đề tài:

- Không tính toán hệ số khuếch đại của mạch

- Mạch chỉ có 1 kênh âm thanh ngõ ra

5. Phương pháp nghiên cứu

Chương 1 Tổng quan và cơ sở lý thuyết

Chương 2 Thiết kế mạch hiển thị mức âm lượng trên LCD sử dụngPIC16F877A

Chương 3 Sơ đồ nguyên lý và cách xây dựng chương trình choPIC16F877A

Kết luận và hướng phát triển

Trang 13

B. NỘI DUNG

Trang 15

CHƯƠNG 1.

TỔNG QUAN VÀ CƠ SỞ LÝ THUYẾT1.1 Vi điều khiển PIC16F877A

1.1.1 Giới thiệu về họ vi điều khiển PIC

PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dịch là

“máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho viđiều khiển đầu tiên của họ: PIC1650 được thiết kế để dùng làm các thiết bịngoại vi cho vi điều khiển CP1600 Về sau được hãng Microchip mua lại, viđiều khiển này sau đó được nghiên cứu phát triển thêm và từ đó hình thànhnên dòng vi điều khiển PIC ngày nay

1.1.2 Cấu trúc phần cứng của PIC16F877A

1.1.2.1 Sơ đồ chân

Hình 1.1 Sơ đồ chân PIC 16F877A

• Chân VDD (11, 32): Là các chân nguồn (+5V) của PIC

• Chân VSS (12, 31): Là các chân mass (0V) của PIC

• Chân OSC1/CLK1 (13): Ngõ vào kết nối với dao động thạch anh hoặc

Trang 16

ngõ vào nhận xung clock từ bên ngoài.

• Chân OSC2/CLK2 (14): Ngõ ra dao động thạch anh hoặc ngõ ra cấpxung clock

• Chân MCLR/VPP (1) có 2 chức năng:

- MCLR: Ngõ vào reset tích cực ở mức thấp.

- Vpp: Ngõ vào nhận điện áp lập trình khi lập trình cho PIC

• Chân RA0/AN0 (2), RA1/AN1 (3), RA2/AN2 (3) có 2 chức năng:

- RA0, 1, 2: Xuất/ nhập số

- AN0, 1, 2: Ngõ vào tương tự của kênh thứ 0, 1, 2

• Chân RA2/AN2/VREF-/CVREF+ (4): Xuất nhập số/ ngõ vào tương tựcủa kênh thứ 2/ ngõ vào điện áp chuẩn thấp của bộ ADC/ ngõ vào điện ápchuẩn cao của bộ ADC

• Chân RA3/AN3/VREF+ (5): Xuất nhập số/ ngõ vào tương tự kênh 3/ ngõvào điện áp chuẩn (cao) của bộ ADC

• Chân RA4/TOCK1/C1OUT (6): Xuất nhập số/ ngõ vào xung clock bênngoài cho Timer 0/ ngõ ra bộ so sánh 1

• Chân RA5/AN4/ SS /C2OUT (7): Xuất nhập số/ ngõ vào tương tự kênh4/ ngõ vào chọn lựa SPI phụ/ ngõ ra bộ so sánh 2

• Chân RB0/INT (33): Xuất nhập số/ ngõ vào tín hiệu ngắt ngoài

Trang 17

1/ ngõ vào Capture2, ngõ ra compare2, ngõ ra PWM2.

• Chân RC2/CCP1 (17): Xuất nhập số/ ngõ vào Capture1, ngõ racompare1, ngõ ra PWM1

• Chân RC3/SCK/SCL (18): Xuất nhập số/ ngõ vào xung clock nối tiếpđồng bộ, ngõ ra chế độ SPI/ ngõ vào xung clock nối tiếp đồng bộ, ngõ racủa chế độ I2C

• Chân RC4/SDI/SDA (23): Xuất nhập số/ dữ liệu vào SPI/ xuất nhập dữliệu I2C

• Chân RC5/SDO (24): Xuất nhập số/ dữ liệu ra SPI

• Chân RC6/TX/CK (25): Xuất nhập số/ truyền bất đồng bộ USART/ xungđồng bộ USART

• Chân RC7/RX/DT (26): Xuất nhập số/ nhận bất đồng bộ USART

• Chân RD0-7/PSP0-7 (19-30): Xuất nhập số/ dữ liệu port song song

• Chân RE0/ RD/AN5 (8): Xuất nhập số/ điều khiển port song song/ ngõvào tương tự kênh thứ 5

• Chân RE1/ WR/AN6 (9): Xuất nhập số/ điều khiển ghi port song song/ngõ vào tương tự kênh thứ 6

• Chân RE2/ CS /AN7 (10): Xuất nhấp số/ Chân chọn lụa điều khiển portsong song/ ngõ vào tương tự kênh thứ 7

1.1.2.2 Một số đặc điểm của vi điều khiển PIC16F877A

Vi điều khiển PIC16F877A thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh

có độ dài 14 bit Mỗi lệnh đều được thực thi trong một chu kì xung clock Tốc

độ hoạt động tối đa cho phép là 20 MHz với một chu kì lệnh là 200ns Bộ nhớchương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệuEEPROM với dung lượng 256x8 byte Số PORT I/O là 5 với 33 pin I/O Có 8kênh chuyển đổi ADC

Các đặc tính ngoại vi bao gồm các khối chức năng sau:

- Timer 0: Bộ đếm 8 bit với bộ chia tần số 8 bit

- Timer 1: Bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năngđếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep

- Timer 2: Bộ đếm 8 bit với bộ chia tần số, bộ postcaler

- Hai bộ Capture/so sánh/điều chế độ rộng xung

Trang 18

- Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C.

- Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ

- Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điềukhiển RD, WR

Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:

- Bộ nhớ flash với khả năng ghi xóa được 100.000 lần

- Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần

- Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm

- Khả năng tự nạp chương trình với sự điều khiển của phần mềm

- Nạp được chương trình ngay trên mạch điện ICSP (In Circuit SerialProgramming) thông qua 2 chân

- Watchdog Timer với bộ dao động trong

- Chức năng bảo mật mã chương trình

- Có thể hoạt động với nhiều dạng Oscillator khác nhau

Bảng 1.1 Bảng tóm tắt đặc điểm của vi điều khiển PIC 16F877A

Trang 19

Đặc điểm PIC16F877A

Trang 20

ứng TRIS (đối với PORT A là TRIS A, đối với PORT B là TRIS B, đối vớiPORT C là TRIS C, đối với PORT D là TRIS D và đối với PORT E là TRIS E).Bên cạnh đó PORT A còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vàoanalog ngõ vào xung clock của Timer0 và ngõ vào của bộ giao tiếp MSSP(Master Synchronous Serial Port).

Các thanh ghi SFR liên quan đến PORT A bao gồm:

- PORT A (địa chỉ 05h): Chứa giá trị các pin trong PORT A

- TRIS A (địa chỉ 85h): Chứa giá trị các pin trong PORT A

- CMCON (địa chỉ 9Ch): Thanh ghi điều khiển bộ so sánh

- CVRCON (địa chỉ 9Dh): Thanh ghi điều khiển bộ so sánh điện áp

- ADCON1 (địa chỉ 9Fh): Thanh ghi điều khiển bộ ADC

PORT B

PORT B (RPB) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng

là TRISB Bên cạnh đó một số chân của PORT B còn được sử dụng trong quátrình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau PORT Bcòn liên quan đến ngắt ngoại vi và bộ Timer0 PORT B còn được tích hợp chứcnăng điện trở kéo lên được điều khiển bởi chương trình

Các thanh ghi SFR liên quan đến PORT B bao gồm:

- PORT B (địa chỉ 06h, 106h): Chứa giá trị các pin trong PORT B

- TRIS B (địa chỉ 86h, 186h): Điều khiển xuất nhập

- OPTION_REG (địa chỉ 81h, 181h): Điều khiển ngắt ngoại vi và bộTimer0

PORT C

PORT C (RPC) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng

là TRIS C Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh,

bộ Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART.Các thanh ghi điều khiển liên quan đến PORT C:

- PORT C (địa chỉ 07h): Chứa giá trị các pin trong PORT C

- TRIS C (địa chỉ 87h): Điều khiển xuất nhập

PORT D

Trang 21

PORT D (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng

là TRIS D PORT D còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (ParallelSlave Port)

Các thanh ghi liên quan đến PORT D bao gồm:

- Thanh ghi PORT D: Chứa giá trị các pin trong PORT D

- Thanh ghi TRIS D: Điều khiển xuất nhập

PORT E

PORT E (RPE) gồm 3 chân I/O Thanh ghi điều khiển xuất nhập tươngứng là TRIS E Các chân của PORT E có ngõ vào analog Bên cạnh đó PORT Ecòn là các chân điều khiển của chuẩn giao tiếp PSP

Các thanh ghi liên quan đến PORT E bao gồm:

- PORT E: Chứa giá trị các chân trong PORT E

- TRIS E: Điều khiển xuất nhập và xác lập các thông số cho chuẩn giaotiếp PSP

- ADCON1: Thanh ghi điều khiển khối ADC

1.1.3 ADC

ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu giữa hai dạngtương tự và số PIC16F877A có 8 ngõ vào analog (RA4:RA0 và RE2:RE0).Hiệu điện thế chuẩn VREF có thể được lựa chọn là VDD, VSS hay hiệu điện thếchuẩn được xác lập trên hai chân RA2 và RA3 Kết quả chuyển đổi từ tín tiệutương tự sang tín hiệu số là 10 bit số tương ứng và được lưu trong hai thanh ghiADRESH: ADRESL Khi không sử dụng bộ chuyển đổi ADC, các thanh ghi này

có thể được sử dụng như các thanh ghi thông thường khác Khi quá trình chuyểnđổi hoàn tất, kết quả sẽ được lưu vào hai thanh ghi ADRESH:ADRESL, bit CS(ADCON0<2>) được xóa về 0 và cờ ngắt ADIF được set

Quy trình chuyển đổi từ tương tự sang số bao gồm các bước sau:

Bước 1: Thiết lập các thông số cho bộ chuyển đổi ADC:

- Chọn ngõ vào analog, chọn điện áp mẫu (dựa trên các thông số củathanh ghi ADCON1)

- Chọn kênh chuyển đổi ADC (thanh ghi ADCON0)

- Chọn xung clock cho kênh chuyển đổi ADC (thanh ghi ADCON0)

- Cho phép bộ chuyển đổi ADC hoạt động (thanh ghi ADCON0)

Trang 22

Bước 2: Thiết lập các cờ ngắt cho bộ ADC:

Bước 3: Đợi cho tới khi quá trình lấy mẫu hoàn tất

Bước 4: Bắt đầu quá trình chuyển đổi (set bit GO DONE/ )

Bước 5: Đợi cho tới khi quá trình chuyển đổi hoàn tất bằng cách:

- Kiểm tra bit GO DONE/ Nếu GO DONE/ = 0, quá trình chuyển đổi

Trang 23

Cần chú ý là có hai cách lưu kết quả chuyển đổi ADC, việc lựa chọn cáchlưu được điều khiển bởi bit ADFM và được minh họa cụ thể trong hình sau:

Hình 1.3 Các cách lưu kết quả chuyển đổi ADC

Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm:

- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt (các bitGIE, PEIE)

- PIR1 (địa chỉ 0Ch): Chứa cờ ngắt ADC (bit ADIF)

- PIE1 (địa chỉ 8Ch): Chứa bit điều khiển ADC (ADIE)

- ADRESH (địa chỉ 1Eh) và ADRESL (địa chỉ 9Eh): Các thanh ghi chứakết quả chuyển đổi ADC

- ADCON0 (địa chỉ 1Fh) và ADCON1 (địa chỉ 9Fh): Xác lập các thông sốcho bộ chuyển đổi ADC

- PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): Liên quan đến các ngõvào analog ở PORTA

- PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h): Liên quan đến các ngõvào analog ở PORTE

Ngoài các chức năng trên, vi điều khiển còn rất nhiều chức năng khác

1.2 LCD

LCD là viết tắt của Liquid Crystal Display (màn hình tinh thể lỏng) Cónhiều loại màn hình LCD khác nhau, ví dụ LCD 16x1, 16x2, 20x2,

Trang 24

Hình 1.4 Hình dáng thực tế LCD 16x2.

Giống như led 7 đoạn, LCD là một thiết bị ngoại vi dùng để giao tiếp ngườidùng, so với led 7 đoạn thì LCD có ưu điểm là hiển thị được tất cả các kí tựtrong bảng mã ASCII, trong khi đó led 7 đoạn chỉ hiển thị được một số kí tự,nhưng LCD lại có nhược điểm là giá thành cao và khoảng cách nhìn gần

Hình 1.5 Sơ đồ chân của LCD 16x2

Bảng 1.2 Chức năng các chân của LCD

Trang 25

9 DB2 0/1 I/O Bus dữ liệu 2

- Chân RS (Regster select)

Khi ở mức thấp, chỉ thị được truyền đến LCD như xóa màn hình, vị trícon trỏ,… Khi ở mức cao, ký tự được truyền đến LCD

- Chân R/W (Read/ Write)

Dùng để phát hiện hướng của dữ liệu được truyền giữa LCD và viđiều khiển Khi nó ở mức thấp dữ liệu được ghi đến LCD và khi ở mứccao dữ liệu được đọc từ LCD Nếu chỉ cần ghi dữ liệu lên thì nối chân nàyxuống GND để tiết kiệm chân

- Chân E (Enable)

Cho phép truy nhập/xuất lên LCD thông qua chân RS và R/W Khichân E ở mức cao (1) LCD sẽ kiểm tra trang thái của 2 chân RS và R/W vàđáp ứng cho phù hợp Khi dữ liệu được cấp đến chân dữ liệu thì một xung

ở mức cao xuống thấp phải được cấp đến chân này để LCD chốt dữ liệutrên các chân dữ liệu Xung này phải rộng tối thiểu 450ns Còn khi chân E

ở mức thấp (0), LCD sẽ vô hiệu hóa hoặc bỏ qua tín hiệu 2 chân RS và R/W

- Các chân D0 - D7

Đây là 8 chân dữ liệu 8 bit, được dung để gửi lên LCD hoặc đọc nộidung của các thanh ghi trong LCD Các ký tự được truyền theo mã tươngứng trong mã ASCII Cũng có các mã lệnh mà có thể gửi đến LCD để xóamàn hình hoặc đưa ra con trỏ về đầu dòng hoặc nhấp nháy con trỏ

Trang 26

Trước khi truyền ký tự ra màn hình LCD cần phải thiết lập LCD nhưchọn chế độ 4bit hay 8bit, 1 dòng hay 2 dòng, bật/tắt con trỏ…

Bảng 1.3 Bảng tập lệnh LCD

04 Giảm con trỏ (dịch con trỏ sang trái)

06 Tăng con trỏ (dịch con trỏ sang phải)

07 Dịch hiển thị sang trái

08 Tắt con trỏ, tắt hiển thị0A Tắt hiển thị, bật con trỏ0C Bật hiển thị, tắt con trỏ0E Bật hiển thị, nhấp nháy con trỏ0F Tắt con trỏ, nhấp nháy con trỏ

10 Dịch vị trí con trỏ sang trái

14 Dịch vị trí con trỏ sang phải

18 Dịch toàn bộ hiển thị sang trái1C Dịch toàn bộ hiển thị sang phải

80 Ép con trỏ về đầu dòng thứ nhấtC0 Ép con trỏ về đầu dòng thứ hai

Để đọc thanh ghi lệnh, phải đặt RS = 0 và R/W = 1 và xung caoxuống thấp cho bit E Sau khi đọc thanh ghi lệnh, nếu bit D7 (cờ bận) ởmức cao thì LCD bận, không có thông tin hay lệnh nào được xuất đến nó.Khi D7 = 0 mới có thể gửi lệnh hay dữ liệu đến LCD Cần kiểm tra bit cờ bậntrước khi ghi thông tin lên LCD

Trang 27

1.3 TDA 2030A

TDA2030A là một mạch nguyên khối tích hợp sẵn nằm trong góiPentawatt®, nhằm sử dụng như một bộ khuếch đại lớp AB tần số thấp Thôngthường nó cung cấp một công suất đầu ra 14W (d=0.5%) tại 14V/4; 14V hoặc28V, công suất đầu ra đảm bảo 12W trên tải 4Ω và 8W trên tải 8Ω

Hình 1.6 Hình ảnh thực tế TDA2030A

TDA2030A cho dòng ra cao có hài và méo chéo rất thấp Hơn nữa thiết bịkết hợp với một hệ thống bảo vệ ngắn mạch có khả năng tự động giới hạn côngsuất tiêu tán để giữ điểm làm việc trong vùng hoạt động an toàn Một hệ thốngngắt nhiệt thông thường cũng được đi kèm

Bảng 1.4 Bảng thông số tối đa của TDA2030A

Ptot Công suất tiêu tán tại Tcase = 90oC 20 W

Tstg , Tj Nhiệt độ lưu trữ và điểm nối - 40 đến 150 oCThông số nhiệt của TDA2030A:

Trang 28

Bảng 1.5 Bảng thông số nhiệt của TDA2030A

Rth J – case Nhiệt kháng của junction-case max 3 oC/W

Vị trí chân:

Hình 1.7 Vị trí các chân của TDA 2030A

Chức năng các chân:

Chân 1: Chân không đảo ngược tín hiệu đầu vào

Chân 2: Chân đảo ngược tín hiệu đầu vào

Chân 3: Năng lượng đầu vào cuối (điện áp âm)

Chân 4: Điện đầu ra cuối cùng

Chân 5: Năng lượng đầu vào cuối (điện áp dương)

1.4 Phần mềm lập trình CCS

1.4.1 Giới thiệu về CCS C

CCS là trình biên dịch lập trình ngôn ngữ C cho vi điều khiển PIC của hãngMicrochip Chương trình là sự tích hợp của 3 trình biên dịch riêng biệt cho 3dòng PIC khác nhau đó là:

- PCB cho dòng PIC 12 bit opcodes

- PCM cho dòng PIC 14 bit opcodes

- PCH cho dòng PIC 16 và 18 bit

Tất cả 3 trình biên dịch này đuợc tích hợp lại vào trong một chương trìnhbao gồm cả trình soạn thảo và biên dịch là CCS

Trang 29

Giống như nhiều trình biên dich C khác cho PIC, CCS giúp cho người sửdụng nắm bắt nhanh được vi điều khiển PIC và sử dụng PIC trong các dự án Cácchương trình điều khiển sẽ được thực hiện nhanh chóng và đạt hiệu quả caothông qua việc sử dụng ngôn ngữ lập trình cấp cao – Ngôn ngữ C.

CCS chứa rất nhiều hàm phục vụ cho mọi mục đích và có rất nhiều cáchlập trình mà cho cùng 1 vấn đề với tốc độ thực thi và độ dài chương trìnhkhác nhau Sự tối ưu là do kĩ năng lập trình của mỗi nhà lập trình

CCS cung cấp các công cụ tiện ích giám sát hoạt động chương trình như:+ C/ASM list: Cho phép mở ASM của file mà người lập trình biêndịch, giúp người lập trình quản lý và nắm rõ cách thức nó được sinh ra, làcông cụ rất quan trọng trong việc gỡ rối chương trình

+ SYMBOL: Hiển thị bộ nhớ cấp phát cho từng biến, giúp quản lý bộnhớ các biến của chương trình

#Bit

- Cú pháp: #bit name = x.y

Name: tên biến

X: biến C (8,16,32…bit) hay hằng số địa chỉ thanh ghi

Y: vị trí của bit trong x

Tạo biến 1 bit đặt ở byte x vị trí y tiện dùng kiểm tra hay gán giá trị chothanh ghi

Trang 30

- Cú pháp: #define name text Name: tên biến

Text : chuỗi hay số

- Cú pháp: #use delay(clock = speed)

Speed: tốc độ dao động của thạch anh

Có chỉ thị này mới dùng được hàm delay_ms hoặc delay_us

#Use fast_io

- Cú pháp: #use fast_io(port)

Port : các cổng v_o ra của PIC (từ A-G)

Dùng chỉ thị này có thể điều chỉnh các port với chỉ 1 lệnh

1.4.3 Các hàm Delay

Delay_ms(time)

Time: giá trị thời gian cần tạo trễ

Delay_us(time)

Time: giá trị thời gian cần tạo trễ

Hàm delay này không sử dụng bất cứ Timer nào cả mà chỉ là 1 nhómlệnh vô nghĩa thực hiện trong khoảng thời gian đã định sẵn

Trước khi sử dụng các hàm này cần khai báo tiền định #use_delay( )

1.4.4 Các hàm vào ra trong CCS C

Output_low(pin) – Output_high(pin)

Thiết lập mức 0V hoặc 5V cho các chân của PIC

Output_bit(pin,value)

Pin: tên chân của PIC

Value: giá trị 0 hay 1

Output_X(value)

X: tên các port trên chíp

Value: giá trị 1 byte

Input_X()

Trang 31

X: tên các port trên chip.

Hàm này trả giá trị 8 bit là giá trị hiện hữu của port đó

Thư viện hỗ trợ các hàm:

Bảng 1.6 Các hàm trong thư viện LCD của CCS

3 lcd_gotoxy(x,y) tự) tại x của dòng y (y=1 hoặc y=2)Đặt ví trí con trỏ (vị trí cần xuất ký

4 lcd_getc(x,y) Đọc về giá trị tại x của dòng y

5 lcd_cursor_on(int1 on) Bật ví trí con trỏ

Trang 32

Trình biên dịch CCS đã cung cấp sẵn một số hàm để thiết lập và đo giá trịADC với PIC16F877A:

#device ADC = 8 để chọn độ phân giải của bộ ADC 8 bit (0-255).

#device ADC = 10 để chọn độ phân giải của bộ ADC 10 bit (0-1023).

• ADC_OFF: Tắt hoạt động ADC (tiết kiệm điện, dành chân cho hoạt động khác)

• ADC_CLOCK_INTERNAL: Thời gian lấy mẫu bằng xung clock IC (mất 2-6

us) thường là chung cho các chip

• ADC_CLOCK_DIV_2: Thời gian lấy mẫu bằng xung clock/2 (mất 0.4 us trên

thạch anh 20MHz)

• ADC_CLOCK_DIV_8: Thời gian lấy mẫu bằng xung clock/8 (1.6 us)

• ADC_CLOCK_DIV_32: Thời gian lấy mẫu bằng xung clock/32 (6.4 us)

 Setup_ADC_ports (value)

Xác định chân lấy tín hiệu analog và điện thế chuẩn sử dụng Tùy thuộc

bố trí chân trên chip, số chân và chân nào dùng cho ADC và số chức năng ADCmỗi chip mà value có thể có những giá trị khác nhau Xem file tương ứng trongthư mục DEVICES để biết số chức năng tương ứng chip đó Sau đây là các giátrị cho value (chỉ dùng 1 trong các giá trị) của 16F877:

• ALL_ANALOGS: Dùng tất cả chân sau làm analog (Vref=Vdd)

• NO_ANALOG: Không dùng analog, các chân đó sẽ là chân I/O

• AN0: Dùng chân A0

• AN0_AN1_AN3: Dùng chân A0 A1 A3, Vref = Vdd

• AN0_AN1_VSS_VREF: Dùng chân A0 A1, Vrefh = A3

• AN0_AN1_AN4_VREF_VREF: Dùng chân A0 A1 A5, Vrefh = A3, Vrefl = A2

• AN0_AN1_VREF_VREF: Dùng chân A0 A1, Vrefh = A3, Vrefl = A2

• AN0_VREF_VREF: A0, Vrefh = A3 Vrefl = A2

Trang 33

Ví dụ: setup_adc_ports (AN0_AN1_AN3 ); // A0, A1, A3 nhận analog,

áp nguồn +5V cấp cho IC sẽ là điện áp chuẩn

Read_ADC (mode)

Dùng đọc giá trị ADC từ thanh ghi/cặp thanh ghi, chứa kết quả biến đổiADC Lưu ý hàm này sẽ hỏi vòng cờ cho tới khi cờ này báo đã hoàn thành biếnđổi ADC (sẽ mất vài us) thì xong hàm

Nếu giá trị ADC là 8 bit như khai báo trong chỉ thị #DEVICE, giá trị trả

về của hàm là 8 bit, ngược lại là 16 bit nếu khai báo #DEVICE sử dụng ADC 10bit trở lên

Khi dùng hàm này, nó sẽ lấy ADC từ chân được chọn trong hàmSet_ADC_channel () trước đó Nghĩa là mỗi lần chỉ đọc 1 kênh Muốn đổi sangđọc chân nào dùng hàm set_ADC_channel() lấy chân đó Nếu không có đổi chândùng read_ADC() bao nhiêu lần cũng được

Mode có thể có hoặc không, gồm có:

• ADC_START_AND_READ: Giá trị mặc định

• ADC_START_ONLY: Bắt đầu chuyển đổi và trả về

• ADC_READ_ONLY: Đọc kết quả chuyển đổi lần cuối

#DEVCE 8 bit 10 bit 11 bit 16 bit

Trang 34

Hàm này được dùng để xuất một chuỗi theo chuẩn RS232 hoặc theo mộthàm xác định Dữ liệu được định dạng phù hợp với đối số của chuỗi Các địnhdạng dữ liệu như sau:

Bảng 1.7 Mã định dạng dữ liệu của hàm printf()

- Cú pháp:

printf(string)printf(cstring, values )printf(fname, cstring, values )

- Tham số:

String là một chuỗi hằng hoặc một mảng ký tự không xác định.Values là danh sách các biến phân cách nhau bởi dấu “,”

Ngày đăng: 05/03/2018, 13:59

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. Lê Văn Doanh - Nguyễn Thế Công - Trần Văn Thịnh, Điện Tử Công Suất, NXB Khoa Học và Kỹ Thuật, 2004 Sách, tạp chí
Tiêu đề: Điện Tử Công Suất
Nhà XB: NXB Khoa Học và Kỹ Thuật
[2]. Nguyễn Viết Nguyên, Giáo trình Linh kiện điện tử và ứng dụng, NXB Giáo dục, 2003 Sách, tạp chí
Tiêu đề: Giáo trình Linh kiện điện tử và ứng dụng
Nhà XB: NXB Giáodục
[3]. CCS C for PIC16F877A, Picvietnam.com Sách, tạp chí
Tiêu đề: CCS C for PIC16F877A
[4]. Nguyễn Hữu Phước, Kỹ thuật điện 1,2, NXB Đại học Quốc gia TP. HCM, 2003 Sách, tạp chí
Tiêu đề: Kỹ thuật điện 1,2
Nhà XB: NXB Đại học Quốc gia TP. HCM
[5] Các trang Web:http:// WWW.PICVIETNAM.NET Link

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w