Tải bản đầy đủ (.docx) (65 trang)

ĐỒ ÁN TỐT NGHIỆP CƠ ĐIỆN TỬ XỬ LÝ TÍN HIỆU ÂM THANH VỚI VI ĐIỀU KHIỂN PIC

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.36 MB, 65 trang )

TRƯỜNG ĐẠI HỌC GIAO THƠNG VẬN TẢI
KHOA CƠ KHÍ – BỘ MÔN KỸ THUẬT MÁY
∗∗∗

ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI: XỬ LÝ TÍN HIỆU ÂM THANH VỚI VI ĐIỀU KHIỂN PIC.

Giáo viên hướng dẫn:

Trịnh Tuấn Dương

Sinh viên thực hiện:

Phạm Ngọc Ánh

Lớp:

Cơ Điện Tử

Khóa:

51


Hà Nội, tháng 4 năm 2014


NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
……………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………


………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
Ngày …, tháng …, năm …

GIÁO VIÊN HƯỚNG DẪN
3


NHẬN XÉT CỦA GIÁO VIÊN ĐỌC DUYỆT
……………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………

………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
Ngày …, tháng …, năm …
GIÁO VIÊN ĐỌC DUYỆT
4


LỜI CẢM ƠN
Sau những năm học tại trường, chúng em đã được học và tiếp thu nhiều kiến
thức mới từ sự chỉ bảo tận tình của Q Thầy Cơ và sự giúp đỡ của bạn bè. Đây là
khoảng thời gian đầy ý nghĩa. Đồ án tốt nghiệp ra trường là nền tảng quan trọng
và đánh dấu một bước ngoặt mới với cuộc đời chúng em.
Em xin gửi lời cảm ơn chân thành đến thầy Trịnh Tuấn Dương. Thầy đã hướng
dẫn em thực hiện đồ án tốt nghiệp này.
Em xin chân chân thành cảm ơn Quý Thầy Cô thuộc bộ môn Kỹ Thuật Máy đã
tạo điều kiện để em hoàn thành đồ án này.
Sinh viên thực hiện
Phạm Ngọc Ánh


5


LỜI NĨI ĐẦU
Ngày nay, cùng với sự phát triển khơng ngừng của khoa học kỹ thuật,
nghành kỹ thuật điện tử cũng đã có những bước phát triển khơng ngừng.
Chúng đi sâu vào mọi mặt của đời sống hàng ngày của người dân. Đặc biệt sử
dụng vi điều khiển để điều khiển các ứng dụng trong đời sống cũng như công
nghiệp ngày càng phổ biến.
Những kiến thức tiếp thu trong quá trình học tập tại trường sẽ được đánh giá
qua đợt bảo vệ đồ án tốt nghiệp này. Những kết quả những sản phẩm đạt được
ngày hôm nay tuy không lớn lao những cũng là những thành quả bước đầu sau
những năm học tại trường.
Do thời gian và kiến thức còn hạn chế, mặc dù đã cố gắng hoàn thành đồ án
tốt nghiệp đúng thời han. Nên không thể tránh khỏi những thiếu xót nhất định,
mong Q Thầy Cơ thơng cảm. Em rất mong nhận được những ý kiến đóng góp
của Thầy Cô và các bạn.
Em xin chân thành cảm ơn Thầy Cô và các bạn!

6


Mục lục

7


DANH SÁCH HÌNH VẼ VÀ BẢNG BIỂU

8



CHƯƠNG 1. GIỚI THIỆU CHUNG
1.1.Vi xử lý và vi điều khiển
Vi xử lý (bộ vi xử lý) là một linh kiện điện tử được chế tạo từ các tranzito thu
nhỏ tích hợp trên một vi mạch tích hợp đơn. Nhiệm vụ của vi xử lí là thực hiện các
cơng việc xử lý tín hiệu hoặc điều khiển các thành phần trong hệ thống theo
chương trình, thuật tốn do người dùng đặt ra.
Bộ vi xử lý có khả năng vượt trội so với các hệ thống khác về khả năng tính
tốn, xử lý và thay đổi chương trình linh hoạt theo mục đích người dùng, đặc biệt
hiệu quả đối với những bài toán hoặc hệ thống lớn. Tuy nhiên đối với các ứng dụng
nhỏ, đơn giản thì việc ứng dụng vi xử lý là khơng hợp lý vì giá thành đắt cho một
hệ thống nhỏ.
Vì vậy các nhà chế tạo đã tích hợp một chút bộ nhớ và một mạch giao tiếp ngoại
vi cùng với vi xử lý vào một IC duy nhất được gọi là Microcontroller –vi điều
khiển.
Như vậy, vi điều khiển (VĐK) là một hệ thống bao gồm một vi xử lý có hiệu
suất đủ dùng và giá thành thấp kết hợp với các khối ngoại vi như bộ nhớ, các
modun vào/ra, các modun biến đổi số sang tương tự và tương tự sang số… Vi điều
khiển thường được dùng để điều khiển các thiết bị điện tử. Nó được ứng dụng rộng
rãi trong các dụng cụ điện tử ngày nay.
1.2.Vi điều khiển PIC

9
GVHD: Trịnh Tuấn Dương


Ngày nay, trên thị trường có nhiều loại vi điều khiển khác nhau như 8051, PIC,
Motorola 68HC, AVR… Trong đề tài này sử dụng vi sử lý PIC vì có những ưu
điểm sau:

− VĐK PIC phổ biến ở Việt Nam, giá thành khơng q đắt.
− Có đầy đủ chức năng của một vi điều khiển khi hoạt động độc lập.
− PIC là VĐK phổ biến ở Việt Nam cũng như trên thế giới. Điều này tạo
thuận lợi trong quá trình tìm hiểu tài liệu và phát triển những ứng dụng
của PIC.
− Tính đa dạng và tính năng này vẫn cịn được nghiên cứu và phát triển.
1.3.Khái quát về vi điều khiển PIC16F877A
PIC 16F877A là dòng PIC phổ biến hiện nay ( có đủ các chức năng, 40 chân, bộ
nhớ đủ cho hầu hết các ứng dụng thông thường). Cấu trúc tổng qt:
− Bộ nhớ chương trình: 16F877A có 8192(8k)
− Bộ nhớ dữ liệu: 16F877A có 368 bytes (plus 256 bytes of nonvolatile
EEROM).
− 5 PORT (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập.
− 2 bộ định thời 8bits (timer 0 và timer 2).
− Một bộ định thời 8bits (timer 1) có thể hoạt động trong chế độ tiết kiệm năng











lượng (SLEEP MODE) với nguồn xung Clock ngoài.
2 bộ CCP (Capture/Compare/PWM).
Một bộ biến đổi AD 10bits, 8 ngõ vào.
2 bộ so sánh tương tự (Compartor).

Một bộ định thời giám sát (WatchDog Timer).
Một cổng song song 8bits với các tín hiệu điều khiển.
Một cổng nối tiếp.
15 nguồn ngắt.
Có chế độ tiết kiệm năng lượng.
Nạp chương trình bằng cổng nối tiếp ICSP (In-Circuit Sircuit Programming).
Được chế tạo bằng công nghệ CMOS.
10

GVHD: Trịnh Tuấn Dương


− 35 tập lệnh có độ dài 14 bits.
− Tần số hoạt động tối đa là 20MHz.
1.4.SƠ ĐỒ CHÂN CỦA 16F877A
PIC16F877A là họ vi điều khiển có 40 chân, mỗi chan có một chức năng khác
nhau. Trong đó có một số chân đa cơng dụng: mỗi chân có thể hoạt động như một
đường xuất nhập hoặc là một chân chức năng đặc biệt dùng để giao tiếp với các
thiết bị ngoại vi.

Hình 1. 1Sơ đồ chân của 16F877A
• Chân cấp nguồn: như trên hình 2.1 ta thấy 16F877A có 4 chân dùng
để cấp nguồn:
+ Chân 11, 32 VDD (+5v).
11
GVHD: Trịnh Tuấn Dương


+ Chân 12, 31 VSS (0v).
− Chân reset: 1(MCRL) là chân reset của PIC, chân này có nhiệm vụ khởi

động lại PIC khi chân này được tíc cực. Chân reset của PIC được tích cực ở
mức thấp (trái với 8051).
− Chân dao động: chân 13 (OSC1) và chân 14 (OSC2) là 2 chân dao động,
tốc độ dao động được xác định thông qua tần số dao động của bộ tạo dao
động.
− I/O PORT:
+ PORT A và thanh ghi TRIS A: gồm 6 chân từ RA0-RA5, cổng A
có 6 bit thực hiện chức năng vào và ra theo hai chiều (hình 2.2),
việc xác định hướng xuất nhập được thực hiện thông qua thanh ghi
TRIS A. Chân 6 (RA4/TOCKI) là chân đa mục đích với việc vừa
là chân xuất nhập dữ liệu vừa là đầu vào của bộ đếm TIMER0. Các
chân khác trong PORT A cịn là đầu vào của tín hiệu tương tự
trong bộ chuyển đổi ADC. Sự hoạt động của các chân trong chế độ
này là việc điều khiển thích hợp các bit trong thanh ghi ADCON1
và CMCON (hình 2.3).

12
GVHD: Trịnh Tuấn Dương


Hình 1. 2 Chức năng của các cổng PORT A

Hình 1. 3 Thanh ghi TRIS A
+ PORT B và thanh ghi TRIS B: gồm 8 chân từ RB0-RB7, cổng B có 8 bit
xuất nhập theo 2 chiều, việc chọn chức năng xuất nhập được điều khiển
thông qua thanh ghi TRIS B cũng tương tự như với PORT A

13
GVHD: Trịnh Tuấn Dương



Hình 1. 4 Chức năng của các cổng PORT B

Hình 1. 5 Thanh ghi TRIS B
+ PORT C và thanh ghi TRIS C: PORT C gồm có 8 chân từ RC0-RC7, có
tất cả 8 chân đa mục đích với các chức năng như: xuất nhập dữ liệu, đặc biết
có chân 18(SCL) và 23(SDA) là hai chân thực hiện chức năng giao tiếp với
ngoại vi thông qua chuẩn I2C. Thanh ghi TRIS C cũng tương tự như các
14
GVHD: Trịnh Tuấn Dương


thanh ghi trên, nó có nhiệm vụ định nghĩa các chân tương ứng là cổng ra hay
vào.

Hình 1. 6 Chức năng của các chân thuộc PORT C

Hình 1. 7 Địa chỉ thanh ghi TRIS C

15
GVHD: Trịnh Tuấn Dương


+ PORT D và thanh ghi TRIS D, PORT E và thanh ghi TRIS E: hai PORT
này đều có tám chân đa mục đích nhưng chủ yếu vẫn là để xuất nhập.

Hình 1. 8 Chức năng của các cổng PORT D

Hình 1. 9 Các địa chỉ thanh ghi TRIS D


16
GVHD: Trịnh Tuấn Dương


Hình 1. 10 Chức năng của các cổng PORT E

Hình 1. 11 Địa chỉ thanh ghi TRIS E
1.5.một vài thanh ghi có chức năng đặc biệt
Bộ nhớ dữ liệu có 4 Bank: Bank 0, Bank 1, Bank 2, Bank 3. Mỗi thanh có dung
lượng 128 Bytes, bao gồm vùng Ram đa mục đích (GPR) và vùng thanh ghi chức
năng đặc biệt (SFR).
Các Bank này được lựa chọn bằng 2 bit ở thanh ghi STATUS là PR0 (status
<5>) và RP1 (status<6>).
17
GVHD: Trịnh Tuấn Dương


Hình 1. 12 Bản đồ cấu trúc dữ liệu của 16F877A
• Thanh ghi STATUS:

Hình 1. 13 Thanh ghi STATUS
Bit 7 IRP:

Bit lựa chọn bank thanh ghi (sử dụng cho định địa chỉ gián tiếp).
18

GVHD: Trịnh Tuấn Dương


1 = Bank 2, 3 (100h-1FFh)

0 =Bank 0,1 (00h-FFh)
Bit 6-5 RP1 – RP0: Bit lựa chọn bank thanh ghi (dùng trong định địa chỉ trực
tiếp).
11 = Bank 3 (180h – 1FFh)
10 = Bank 2 (100h - 17Fh)
01 = Bank 1 (80h – FFh)
00 = Bank 0 (00h-7Fh)
Bit 4: Bit báo hiệu hoạt động của WDT
1: Xóa WDT hoặc Sleep xảy ra.
0: WDT hoạt động.
Bit 3: Bit báo công suất thấp (Power down bit)
1: Sau khi nguồn tăng hoặc có lệnh xóa WDT.
0: Thực hiện lệnh Sleep.
Bit 2: Bit Zero
1: Khi kết quả của một phép toán bằng 0.
0: Khi kết quả của một phép toán khác 0
Bit 1: DC (Digit Carry)
19
GVHD: Trịnh Tuấn Dương


1: Có một số nhớ được sinh ra bởi phép cộng hoặc phép trừ 4 bit thấp.
0: Khơng có số nhớ sinh ra.
Bit 0 C: cờ nhớ (Carry Flag)
1: Có một số nhớ sinh ra bởi phép cộng hoặc phép trừ.
0: Khơng có số nhớ sinh ra.
• Thanh ghi OPTION REG:

Hình 1. 14 Thanh ghi OPTION REG
Bit 7: Bit cho phép PORT B được kéo lên nguồn.

1: Không cho phép PORT kéo lên nguồn.
0: Cho phép PORT kéo lên nguồn.
Bit 6: Bit lựa chọn cạnh tác động ngắt (INTERRUT EDGE)
1: Ngắt sẽ được tác dộng bởi cạnh lên của chân RB0/INT.
0: Ngắt sẽ được tác động bởi cạnh xuống của chân RB0/INT.
Bit 5: Bit lựa chọn nguồn xung Clock cho Timer 0
1: Xung Clock cung cấp bởi nguồn ngoài qua chân RA4/T0CKI.
20
GVHD: Trịnh Tuấn Dương


0: Xung Clock cung cấp bởi nguồn dao động nội.
Bit 4: Bit lựa chọn cạnh nào của xung Clock tác động lên Timer 0
1: Cạnh xuống.
0: Cạnh lên.
Bit 3: Bit quyết định tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0 hay WDT
1: Tốc độ đếm PS2:PS0 sẽ tác động lên WDT.
0: Tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0.
Bit 2-0: Dùng để lựa chọn tốc độ đếm của Timer hay WDT

Hình 1. 15 Giá trị bộ chia tần
• Thanh ghi INTCON

Hình 1. 16 Thanh ghi INTCON
21
GVHD: Trịnh Tuấn Dương


Bit 7: Bit cho phép ngắt toàn cục:
1: Cho phép ngắt tồn cục.

0: Khơng cho phép ngắt.
Bit 6: Bit cho phép ngắt khi vào EEEPROM hoàn tất.
1: Cho phép ngắt khi vào EEPROM hoạt động.
0: Không cho phép ngắt khi vào EEPROM hoạt động.
Bit 5: Bit cho phép ngắt khi Timer 0 tràn:
1: Cho phép ngắt khi Timer 0 tràn.
0: Không cho phép ngắt khi Timer 0 tràn.
Bit 4: Bit cho phép ngắt ngoại vi trên chân RB0/INT:
1: Cho phép ngắt ngoại vi.
0: Không cho phép ngắt ngoại vi.
Bit 3: Cho phép ngắt khi trạng thái PORT B thay đổi:
1: Cho phép.
0: Không cho phép.
Bit 2: Cờ báo Timer 0:
1: Timer 0 tràn.

22
GVHD: Trịnh Tuấn Dương


0: Timer 0 chưa tràn.
Bit 1: Cờ báo ngắt ngoài RB0/INT
1: Có ngắt.
0: Khơng xảy ra ngắt.
Bit 0: Cờ báo ngắt khi có thay đổi trạng thái PORT B:
1: Có thay đổi.
0: Khơng có thay đổi xảy ra trên PORT B.
1.6. các loại ngắt
Vi điều khiển tại mỗi thời điểm nó chỉ có thể làm một cơng việc nhất định.
Nhưng trong thực tế thì người lập trình muốn vi điều khiển đang làm công việc này

lại tự động chuyến sang làm công việc khác, vậy người ta sẽ sử dụng một cơ chế
gọi là cơ chế ngắt để thực hiện điều đó.
Một số ngắt của PIC 16F877A:







Ngắt tràn Timer 0.
Ngắt do chuyển đổi ADC đã hoàn tất.
Ngắt tràn Timer 1.
Ngắt tràn Timer 2.
Ngắt di cí capture hay compare trên chân CCP1, CPP2.
Ngắt xung dội bus.

1.7.module CCP

23
GVHD: Trịnh Tuấn Dương


Module CCP được xây dựng để hỗ trợ cho việc đo lường và điều khiển thời gian
hoạt động của các tín hiệu, đo chu kỳ hoạt động của tín hiệu, tạo ra tín hiệu có tần
số khác nhua, điều khiển tốc độ động cơ …
PIC 16F877A có 2 module là CCP1 và CCP2:

Hình 1. 17 Thanh ghi điều khiển module CCP
Bit 7,6: không sử dụng.

Bit 5,4: Bit 0 và bit 1 của chế dộ PWM (không sử dụng đối với chế độ Capture
và chế độ Compare).
Chế độ PWM: trong chế độ này có 10 bit dùng để định chu kỳ nhiệm vụ cho
PWM, đây là 2 trong số 10 bit đó, 8 bit cịn lại nằm trong thanh ghi CCPRxL.
Bit 3: các bit chọn chế độ cho Module CCPx
0000: Tắt tất cả các chức năng CCP.
0100: Chế đội Capture hoạt động ở mỗi xung cạnh xuống.
0101: Chế độ Capture hoạt động ở mỗi xung cạnh lên.
0110: Chế độ Capture, hoạt động ở mỗi 4 xung cạnh lên.
0111: Chế độ Capture, hoạt động ở mỗi 16 xung cạnh lên.
24
GVHD: Trịnh Tuấn Dương


1000: Chế độ Compare, ban đầu ngõ ra CCP ở mức thấp, khi điều kiện cân
bằng xuất hiện nó lên mức cao ( cờ CCPIF được set).
1001: Chế độ Compare, ban đầu ngõ ra CCP ở mức cao, khi điều kiện cân
bằng xuất hiện nó hạ xuống mức thấp (cờ CCPIF được set).
1010: Chế độ Compare, tạo ra một ngắt phần mềm khi điều kiện cân bằng
xuất hiện (cờ CCPIF được set, chân CCP không đổi).
1011: Chế độ Compare, sự đặc biệt xảy ra (cờ CCPIF được set, chân CCP
không đổi), CCP1 reset TMR1, CCP2 reset TMR2, bắt đầu chuyển đổi A/D (
với điều kiện module ADC cho phép).
11xx: Chế độ PWM.
Trong đồ án này chỉ tìm hiểu về PWM, chế độ Capture và Compare không đề
cập đến nhiều.
1.7.1. PWM
Ở chế độ điều chế độ rộng xung PWM, chan CCP tạo ra tín hiệu 10 bit. Chân
CCP được mặc định là ngõ ra. Chọn chức năng PWM bằng cách điều khiển 4 bit
thấp của thanh ghi CCPxCON, nạp giá trị cho PR2 và CCPRx. Khi Timer 2 hoạt

động, giá trị của thanh TMR2 sẽ tăng lên cho đến khí nào bằng giá trị thanh ghi
PR2, lúc này chân CCPx tương ứng sẽ lên mức 1 đồng thời thanh ghi TMR2 sẽ bị
xóa về giá trị ban đầu. Mức 1 tại chân CCPx sẽ được dữ cho giá trị thanh ghi
TMR2 bằng giá trị thanh ghi CCPRx sau đó chân CCPx lại trở về 0 cho đến khi giá
trị thanh gi TMR2 = PR2.
Một số khái niệm:
25
GVHD: Trịnh Tuấn Dương


×