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

Bài báo cáo đồ án môn ứng dụng kỹ thuật sử trong điều khiển tự động

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.2 MB, 45 trang )

Bài Báo Cáo Đồ Án Môn Ứng Dụng
Kỹ Thuật Số Trong Điều Khiển Tự
Động.
I.Mạch Đếm:
1.Giới thiệu linh kiện chính có trong mạch
- LM555,74LS192,7447,Led 7 Đoạn chung Anot,.......

2.Cấu tạo Linh Kiên và nguyên lý Hoạt Đông
2.1.Cấu Tạo Linh Kiện
2.1.1.LM55

1


+Chân số 1(GND): cho nối GND để lấy dòng cấp cho IC hay chân còn gọi là chân chung.
+ Chân số 2(TRIGGER): Đây là chân đầu vào thấp hơn điện áp so sánh và được dùng như 1
chân chốt hay ngõ vào của 1 tần so áp.Mạch so sánh ở đây dùng các transitor PNP với mức
điện áp chuẩn là 2/3Vcc.
+ Chân số 3(OUTPUT): Chân này là chân dùng để lấy tín hiệu ra logic. Trạng thái của tín
hiệu ra được xác định theo mức 0 và 1. 1 ở đây là mức cao nó tương ứng với gần bằng Vcc
nếu (PWM=100%) và mức 0 tương đương với 0V nhưng mà trong thực tế mức 0 này ko
được 0V mà nó trong khoảng từ (0.35 ->0.75V) .
+ Chân số 4(RESET): Dùng lập định mức trạng thái ra. Khi chân số 4 nối masse thì ngõ ra ở
mức thấp. Còn khi chân 4 nối vào mức áp cao thì trạng thái ngõ ra tùy theo mức áp trên chân
2 và 6.Nhưng mà trong mạch để tạo được dao động thường hay nối chân này lên VCC.
+ Chân số 5(CONTROL VOLTAGE): Dùng làm thay đổi mức áp chuẩn trong IC 555 theo
các mức biến áp ngoài hay dùng các điện trở ngoài cho nối GND. Chân này có thể không nối
cũng được nhưng mà để giảm trừ nhiễu người ta thường nối chân số 5 xuống GND thông qua
tụ điện từ 0.01uF đến 0.1uF các tụ này lọc nhiễu và giữ cho điện áp chuẩn được ổn định.
+ Chân số 6(THRESHOLD) : là một trong những chân đầu vào so sánh điện áp khác và cũng
được dùng như 1 chân chốt.


+ Chân số 7(DISCHAGER) : có thể xem chân này như 1 khóa điện tử và chịu điều khiển bỡi
tầng logic của chân 3 .Khi chân 3 ở mức áp thấp thì khóa này đóng lại.ngược lại thì nó mở ra.
Chân 7 tự nạp xả điện cho 1 mạch R-C lúc IC 555 dùng như 1 tầng dao động .
+ Chân số 8 (Vcc): Không cần nói cũng bít đó là chân cung cấp áp và dòng cho IC hoạt động.
Không có chân này coi như IC chết. Nó được cấp điện áp từ 2V -->18V (Tùy từng loại 555
nhé thấp nhất là con NE7555)
+ Công thức tính tần số điều chế độ rộng xung của 555

2


Nhìn vào sơ đồ mạch trên ta có công thức tính tần số , độ rộng xung.
+ Tần số của tín hiệu đầu ra là : T= 1/(ln2.C.(R1 + 2R2))
+ Chu kì của tín hiệu đầu ra :T = 1/f
+ Thời gian xung ở mức H (1) trong một chu kì :
T1 = ln2 .(R1 + R2).C
+ Thời gian xung ở mức L (0) trong 1 chu kì :T2 = ln2.R2.C

2.1.2.IC Giải Mã 74LS47
- IC74LS47 là loại IC giải mã BCD sang led 7 đoạn. Mạch giải mã BCD sang led 7 đoạn là
mạch giải mã phức tạp vì mạch phải cho nhiều ngõ ra lên cao hoặc xuống thấp( tuỳ vào loại
đèn led là anod chung hay catod chung) để làm các đèn cần thiết sáng nên các số hoặc ký tự.
IC 74LS47 là loại IC tác động ở mức thấp có ngõ ra cực thu để hở và khả năng nhận dòng đủ
cao để thúc trực tiếp các đèn led 7 đoạn loại anod chung.
- Hình dáng và sơ đồ chân

Hinh:Hình dáng và sơ đồ chân của IC 74LS47.
3



+ Chân 1, 2, 6, 7: Chân dử liệu BCD vào.
+ Chân 9, 10, 11, 12, 13, 14, 15: Các chân ra tác động mức thấp.
+ Chân 8: Chân nối mass.
+ Chân 16: Chân nối nguồn.
+ Chân 4: Gồm ngõ vào xoá BI được để không hay nối lên cao cho hoạt động giải mã bình
thường. Khi nối BI ở mức thấp, các ngõ ra đều tắt bất chấp trạng thái của các ngõ vào.
+ Chân 5: Ngõ vào xoá dợn sóng RBI được để không hay nối lên cao khi không được dùng
để xoá số 0( số 0 ở trước số có nghĩa hay số 0 thừa bên trái dấu chấm thập phân).
+ Chân 3: Ngõ vào thử đèn LT ở cao các ngõ ra đều tắt và ngõ ra xoá dợn sóng RBO thấp.
Khi ngõ vào BI/RBO để không hay nối lên cao và ngõ vào LT giữ ở mức thấp các ngõ ra đều
sáng.
- Sơ đồ logic và bảng trạng thái.

sơ đồ logic
Sơ đồ cấu trúc của IC74LS47, nó giúp cho những ai muốn tìm hiểu sâu về IC giải mã 74LS47
hoạt động và giải mã BCD sang led 7 đoạn như thế nào.
Sự hoạt động của mạch được thể hiện ở bảng sự thật, trong đó đối với các ngõ ra H là tắt và L
là sáng, nghĩa là nếu 74LS47 thúc đèn led 7 đoạn thì các đoạn a, b, c, d, e, f, g của đèn sẽ
sáng hay tắt tuỳ vào ngõ ra tương ứng của 74LS47 là L hay H.

4


Hinh: Bảng trạng thái của IC74LS47.
Kết quả là khi mã số nhị phân 4 bit vào có giá trị thập phân từ 0 đến 15 đèn led hiển thị lên
các số như ở hình bên dưới. Chú ý là khi mã số nhị phân vào là 1111= 1510 thì đèn led tắt.

2.1.3.IC Đếm Lên/Xuống 74LS192
- IC 74LS192 là IC hoạt động ở chế độ đếm đồng bộ. Nó có khả năng đếm thuận (Count UP) và
đếm nghịch (Count DOWN).

-

Sơ đồ chân trong thực tế của IC 74LS192:

1. CPU(5): Xung vào đếm thuận.
2. CPD(4): Xung vào đếm nghịch.
3. MR(14): Xóa xung không đồng bộ nhập vào.
4. PL(11): Song song không đồng bộ (mức tích cực thấp).
5. Pn (1,9,10,15): Đầu vào song song dữ liệu .
6. Qn(2,3,6,7): Đầu ra của dữ liệu.
7. TCD(13): Sự đếm xuống của chân đầu ra (Borrow).

5


8. TCU(12): Sự đếm lên của xung đầu ra (Carry).
9. Vcc(16): Cấp nguồn.
10. GND(8): Nối đất.

Sơ đồ chân IC 74LS192

Bảng chức năng :
MR

PL

CPU

CPD


CHẾ ĐỘ

H

X

X

X

RESET

L

L

X

X

PRESET

L

H

H

H


Không đếm

L

H

H

Đếm thuận

L

H

H

Đếm nghịch

6


Sơ đồ nguyên lý IC 74LS192

2.1.4 .LED 7 Đoạn
Led 7 thanh được ứng dụng khá phổ biến khi cần hiển thị số tự nhiên hoặc vài chữ cái
nhất định. Led 7 thanh có thể có kích thước lớn nhỏ khác nhau, màu sắc khác nhau nhưng về
cấu tạo cơ bản như hình dưới.

7



Cấu tạo led 7 thanh

Led 7 thanh bao gồm nhiều led tích hợp bên trong, các led được nối chung nhau 1 chân.
Trong thực tế có 2 loại led 7 thanh là led 7 thanh Anốt chung và led 7 thanh Katốt chung. Led
loại Anốt chung, các led sẽ có chung nhau chân nguồn (chân dương), chân còn lại của led nào
được nối đất thì led đó sẽ sáng. Led loại Katốt chung, các led sẽ nối chung nhau chân đất
(chân âm), chân còn lại của led nào được nối nguồn thì led đó sẽ sáng.
Ngoài 7 thanh sáng chính, mỗi led 7 thanh còn có thêm một led dùng để hiển thị dấu phân
số khi cần thiết.

Khả năng hiển thị 10 chữ số thập phân của led 7 thanh

3.Sơ Đồ Nguyên Lý Của Mạch Đếm

8


9


4.Mạch Layout

10


5.Nhận Xét
- Khi có 1 xung do IC 555 tao ra thì IC 74LS192 sẽ đếm UP/DOWN tùy theo cấu hình cài đăt
sao đó IC giải mã 7447 giải mã từ IC74LS192 hiện thị lên Led 7 Đoạn.


II.Mạch Phân Kênh-Dồn Kênh
1.Giới thiệu linh kiện chính có trong mạch
- IC 555,74HC393,74HC4051,......

2.Cấu tạo Linh Kiên và nguyên lý Hoạt Đông
2.1 IC 555 (Đã Nghiên Cứu ở trên)
2.2.IC Đếm 74HC393
- Là IC đếm 2x4bit có thể hoạt dộng song song hoăc nối tiêp,nếu hoạt động o chế độ nối tiếp
thì có thể đếm 8bit.
Sơ đồ chân và hình dáng thực tế như hình dưới đây :

+ Chân số 1: (1CP) chân nhận xung đếm 4 bit đầu
+ Chân số 2: (1MR) chân Reset 4 bit đầu tiên tích cực mức 1.
+ Chân số 3,4,5,6 : đầu ra dữ liệu 4 bit đầu
+ Chân số 7: chân nối đất
+ Chân số 8.9.10,11: dữ liêu đầu ra 4 bit tiếp theo.

11


+ Chân số 12: (2MR) Reset 4 bit tiếp theo tích cực mức 1.
+ Chân số 13: (2CP) chân nhận xung đếm 4 bit tiế theo.
+ Chân số 14: Vcc

Bảng trạng thái của IC74HC393

Sơ đồ nguyên lý IC 74HC393

12



2.2 IC Phân Kênh 74HC4051

- Là IC phân kênh 1 đường sang 8 đường thường dùng và có hoạt động logic tiêu biểu, nó
còn thường được dùng như mạch giải mã địa chỉ trong các mạch điều khiển và trong máy
tính.

Sơ đồ chân và hình dáng thực tế như hình dưới đây :

+ Chân 10,11,9: (A, B, C ) là 3 đường địa chỉ ngõ vào để chọn kênh.
+ Chân 1,2,4,5,12,13,14,15: là ngõ ra IC.
+ Chân 3: là ngõ vào để kêt nối với ngõ ra khi chộn kênh của IC
+ Chân 7,8 :la chân cấp nguồn cho IC .

3.Sơ Đồ Nguyên Lý của Mạch

13


4.Sơ Đồ Mạch Layout

5.Nhân xét

14


III.Mạch ADC
1.Giới thiệu linh kiện chính có trong mạch
- Vi Xử Lý PIC 16F877A, Led dơn,......\


2. Cấu tạo Linh Kiên và ngun lý Hoạt Đơng
2.1 Sơ lượt về VĐK PIC
2.1.1 PIC là gì?
- PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dòch là “máy tính
thôngminh 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. Vi
điềukhiển này sau đó được nghiên cứu phát triển thêm và từ đó hình thành nên dòng vi điều

khiển PIC ngày nay.

2.1.2 Kiến Trúc PIC
- Cấu trúc phần cứng của một vi điều khiển được thiết kế theo hai dạng kiến trúc:kiến
trúc Von Neuman và kiến trúc Havard.

Hình 1.1: Kiến trúc Havard và kiến trúc Von-Neuman
- Tổ chức phần cứng của PIC được thiết kế theo kiến trúc Havard. Điểm khác biệt giữa
kiến trúc Havard và kiến trúc Von-Neuman là cấu trúc bộ nhớ dữ liệu và bộ nhớ chương
trình.
- Đối với kiến trúc Von-Neuman, bộ nhớ dữ liệu và bộ nhớ chương trình nằm chung
trong một bộ nhớ, do đó ta có thể tổ chức, cân đối một cách linh hoạt bộ nhớ chương trình
15


và bộ nhớ dữ liệu. Tuy nhiên điều này chỉ có ý nghóa khi tốc độ xử lí của CPU phải rất
cao, vì với cấu trúc đó, trong cùng một thời điểm CPU chỉ có thể tương tác với bộ nhớ dữ
liệu hoặc bộ nhớ chương trình. Như vậy có thể nói kiến trúc Von-Neuman không thích
hợp với cấu trúc của một vi điều khiển.
- Đối với kiến trúc Havard, bộ nhớ dữ liệu và bộ nhớ chương trình tách ra thành hai bộ
nhớ riêng biệt. Do đó trong cùng một thời điểm CPU có thể tương tác với cả hai bộ nhớ,
như vậy tốc độ xử lí của vi điều khiển được cải thiện đáng kể.

-

Một điểm cần chú ý nữa là tập lệnh trong kiến trúc Havard có thể được tối ưu tùy theo yêu

cầu kiến trúc của vi điều khiển mà không phụ thuộc vào cấu trúc dữ liệu. Ví dụ, đối với
vi điều khiển dòng 16F, độ dài lệnh luôn là 14 bit (trong khi dữ liệu được tổ chức thành
từng byte), còn đối với kiến trúc Von-Neuman, độ dài lệnh luôn là bội số của 1 byte (do
dữ liệu được tổ chức thành từng byte). Đặc điểm này được minh họa cụ thể trong hình 1.1.

2.1.3 RISC và CISC

- Như đã trình bày ở trên, kiến trúc Havard là khái niệm mới hơn so với kiến trúc VonNeuman. Khái niệm này được hình thành nhằm cải tiến tốc độ thực thi của một vi điều
khiển. Qua việc tách rời bộ nhớ chương trình và bộ nhớ dữ liệu, bus chương trình và bus
dữ liệu, CPU có thể cùng một lúc truy xuất cả bộ nhớ chương trình và bộ nhớ dữ liệu,
giúp tăng tốc độ xử lí của vi điều khiển lên gấp đôi. Đồng thời cấu trúc lệnh không còn
phụ thuộc vào cấu trúc dữ liệu nữa mà có thể linh động điều chỉnh tùy theo khả năng và
tốc độ của từng vi điều khiển. Và để tiếp tục cải tiến tốc độ thực thi lệnh, tập lệnh của họ
vi điều khiển PIC được thiết kế sao cho chiều dài mã lệnh luôn cố đònh (ví dụ đối với họ
16Fxxxx chiều dài mã lệnh luôn là 14 bit) và cho phép thực thi lệnh trong một chu kì của
xung clock ( ngoại trừ một số trường hợp đặc biệt như lệnh nhảy, lệnh gọi chương trình
con … cần hai chu kì xung đồng hồ).Điều này có nghóa tập lệnh của vi điều khiển thuộc
cấu trúc Havard sẽ ít lệnh hơn, ngắn hơn,đơn giản hơn để đáp ứng yêu cầu mã hóa lệnh
bằng một số lượng bit nhất đònh.
- Vi điều khiển được tổ chức theo kiến trúc Havard còn được gọi là vi điều khiển RISC
(Reduced Instruction Set Computer) hay vi điều khiển có tập lệnh rút gọn. Vi điều khiển
được thiết kế theo kiến trúc Von-Neuman còn được gọi là vi điều khiển CISC (Complex
Instruction Set Computer) hay vi điều khiển có tập lệnh phức tạp vì mã lệnh của nó
không phải là một số cố đònh mà luôn là bội số của 8 bit (1 byte).

2.1.4 PIPELINING

Đây chính là cơ chế xử lí lệnh của các vi điều khiển PIC. Một chu kì lệnh của vi điều
khiển sẽ bao gồm 4 xung clock. Ví dụ ta sử dụng oscillator có tần số 4 MHZ, thì xung
16


lệnh sẽ có tần số 1 MHz (chu kì lệnh sẽ là 1 us). Giả sử ta có một đoạn chương trình như
sau:
1. MOVLW 55h
2. MOVWF PORTB
3. CALL
SUB_1
4. BSF
PORTA,BIT3
5. instruction @ address SUB_1
- Ở đây ta chỉ bàn đến qui trình vi điều khiển xử lí đoạn chương trình trên thông qua từng
chu kì lệnh. Quá trình trên sẽ được thực thi như sau:

Hình 1.2: Cơ chế pipelining
TCY0: đọc lệnh 1
TCY1: thực thi lệnh 1, đọc lệnh 2
TCY2: thực thi lệnh 2, đọc lệnh 3

TCY3: thực thi lệnh 3, đọc lệnh 4.
TCY4: vì lệnh 4 không phải là lệnh sẽ được thực thi theo qui trình thực thi của chương
trình (lệnh tiếp theo được thực thi phải là lệnh đầu tiên tại label SUB_1) nên chu kì thực
thi lệnh này chỉ được dùng để đọc lệnh đầu tiên tại label SUB_1. Như vậy có thể xem lênh 3 cần
2 chu kì xung clock để thực thi.
TCY5: thực thi lệnh đầu tiên của SUB_1 và đọc lệnh tiếp theo của SUB_1.
Quá trình này được thực hiện tương tự cho các lệnh tiếp theo của chương trình
- Thông thường, để thực thi một lệnh, ta cần một chu kì lệnh để gọi lệnh đó, và một chu kì

xung clock nữa để giải mã và thực thi lệnh. Với cơ chế pipelining được trình bày ở trên, mỗi
lệnh xem như chỉ được thực thi trong một chu kì lệnh. Đối với các lệnh mà quá trình thực thi
nó làm thay đổi giá trò thanh ghi PC (Program Counter) cần hai chu kì lệnh để thực thi vì phải

thực hiện việc gọi lệnh ở đòa chỉ thanh ghi PC chỉ tới. Sau khi đã xác đònh đúng vò trí lệnh
trong thanh ghi PC, mỗi lệnh chỉ cần một chu kì lệnh để thực thi xong.
17


2.1.5 CÁC DÒNG PIC VÀ CÁCH LỰA CHỌN VI ĐIỀU KHIỂN

PIC
Các kí hiệu của vi điều khiển PIC:
PIC12xxxx: độ dài lệnh 12 bit
PIC16xxxx: độ dài lệnh 14 bit
PIC18xxxx: độ dài lệnh 16 bit
C: PIC có bộ nhớ EPROM (chỉ có 16C84 là EEPROM)
F: PIC có bộ nhớ flash
LF: PIC có bộ nhớ flash hoạt động ở điện áp thấp
LV: tương tự như LF, đây là kí hiệu cũ
- Bên cạnh đó một số vi điệu khiển có kí hiệu xxFxxx là EEPROM, nếu có thêm chữ û
cuối là flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A là flash).
- Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC. Ở Việt Nam phổ biến
nhất là các họ vi điều khiển PIC do hãng Microchip sản xuất.
- Cách lựa chọn một vi điều khiển PIC phù hợp:Trước hết cần chú ý đến số chân của vi
điều khiển cần thiết cho ứng dụng. Có nhiều vi điều khiển PIC với số lượng chân khác
nhau, thậm chí có vi điều khiển chỉ có 8 chân,ngoài ra còn có các vi điều khiển 28, 40, 44,
… chân.
- Cần chọn vi điều khiển PIC có bộ nhớ flash để có thể nạp xóa chương trình được nhiều
lần hơn.

- Tiếp theo cần chú ý đến các khối chức năng được tích hợp sẵn trong vi điều khiển, các chuẩn

giao tiếp bên trong.
- Sau cùng cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép.Ngoài ra mọi
thông tin về cách lựa chọn vi điều khiển PIC có thể được tìm thấy trong cuốn sách “Select PIC
guide” do nhà sản xuất Microchip cung cấp.
2.1.6 NGÔN NGỮ LẬP TRÌNH CHO PIC
- Ngôn ngữ lập trình cho PIC rất đa dạng. Ngôn ngữ lập trình cấp thấp có MPLAB (được cung
cấp miễn phí bởi nhà sản xuất Microchip), các ngôn ngữ lập trình cấp cao hơn bao gồm C,
Basic, Pascal, … Ngoài ra còn có một số ngôn ngữ lập trình được phát triển dành riêng cho

PIC như PICBasic, MikroBasic,…
2.1.7 MẠCH NẠP PIC
- Đây cũng là một dòng sản phẩm rất đa dạng dành cho vi điều khiển PIC. Có thể sử dụng các
mạch nạp được cung cấp bởi nhà sản xuất là hãng Microchip như: PICSTART plus, MPLAB
ICD 2, MPLAB PM 3, PRO MATE II. Có thể dùng các sản phẩm này để nạp cho vi điều
khiển khác thông qua chương trình MPLAB. Dòng sản phẩm chính thống này có ưu thế là
nạp được cho tất cả các vi điều khiển PIC, tuy nhiên giá thành rất cao và thường gặp rất

nhiều khó khăn trong quá trình mua sản phẩm.
- Ngoài ra do tính năng cho phép nhiều chế độ nạp khác nhau, còn có rất nhiều mạch nạp được
18


thiết kế dành cho vi điều khiển PIC. Có thể sơ lược một số mạch nạp cho PIC như sau:
JDM programmer: mạch nạp này dùng chương trình nạp Icprog cho phép nạp các vi
điều khiển PIC có hỗ trợ tính năng nạp chương trình điện áp thấp ICSP (In Circuit Serial

Programming). Hầu hết các mạch nạp đều hỗ trợ tính năng nạp chương trình này.
- WARP-13A và MCP-USB: hai mạch nạp này giống với mạch nạp PICSTART PLUS do

nhà sản xuất Microchip cung cấp, tương thích với trình biên dòch MPLAB, nghóa là ta có
thể trực tiếp dùng chương trình MPLAB để nạp cho vi điều khiển PIC mà không cần sử
dụngmột chương trình nạp khác, chẳng hạn như ICprog.
- P16PRO40: mạch nạp này do Nigel thiết kế và cũng khá nổi tiếng. Ông còn thiết kế cả
chương trình nạp, tuy nhiên ta cũng có thể sử dụng chương trình nạp Icprog.
- Mạch nạp Universal của Williem: đây không phải là mạch nạp chuyên dụng dành cho
PIC như P16PRO40.
- Các mạch nạp kể trên có ưu điểm rất lớn là đơn giản, rẻ tiền, hoàn toàn có thể tự lắp
ráp một cách dễ dàng, và mọi thông tin về sơ đồ mạch nạp, cách thiết kế, thi công, kiểm
tra và chương trình nạp đều dễ dàng tìm được và download miễn phí thông qua mạng
Internet. Tuy nhiên các mạch nạp trên có nhược điểm là hạn chế về số vi điều khiển được
hỗ trợ,bên cạnh đó mỗi mạch nạp cần được sử dụng với một chương trình nạp thích hợp.

2.2 Bộ Chuyển Đổi A-D-C (ANALOG-TO-DIGITAL CONVERTER)
Trong VĐK PIC 16F877A
- ADC (Analog to Digital Converter) là bộ chuyển đồi tín hiệu dạng tương tự sang số. PIC16F877A
có 8 ngõ vào Analog (RA4:RA0 và RE2:RE0).Hiệu diện thế chuẩn có thể đươc lừa chọn lá V dd Vss
hay hiệu điên thế có thể xác lập tại 2 chân RA2 và RA3.

- Kết quả chuyển đổi từ tín tiệu tương tự sang tín hiệu số là 10 bit số tương ứng và được
lưu trong hai thanh ghi ADRESH: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
GO/DONE(ADCON0<2>) được xóa về 0 và cờ ngắt ADIF được set.

19


Qui trình chuyển đổi từ tương tự sang số bao gồm các bước sau:
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ủa thanh ghi
ADCON1)



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



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



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

2. Thiết lập các cờ ngắt cho bộ AD


Clear bit ADIF.



Set bit ADIE.



Set bit PEIE.




Set bit GIE.

3. Đợi cho tới khi quá trình lấy mẫu hoàn tất.
4. Bắt đầu quá trình chuyển đổi (set bit GO/DONE ).
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 đã hoàn tất.
Kiểm tra cờ ngắt.
6. Đọc kết quả chuyển đổi và xóa cờ ngắt, set bit GO/DONE (nếu cần tiếp tục chuyển
đổi).
7. Tiếp tục thực hiện các bước 1 và 2 cho quá trình chuyển đổi tiếp theo.
20


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

Các cách lưu kết quả chuyển đổi AD.
Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm:


Thanh ghi INTCON (đòa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt (các bit
GIE, PEIE).



Thanh ghi PIR1 (đòa chỉ 0Ch): chứa cờ ngắt AD (bit ADIF).




Thanh ghi PIE1 (đòa chỉ 8Ch): chứa bit điều khiển AD (ADIE).



ADRESH (đòa chỉ 1Eh) và ADRESL (đòa chỉ 9Eh): các thanh ghi chứa kết quả
chuyển đổi AD.



Thanh ghi ADCON0 (đòa chỉ 1Fh) và ADCON1 (đòa chỉ 9Fh): xác lập các thông số
cho bộ chuyển đổi AD.



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.

3. Sơ Đồ Ngun Lý Mạch ADC

21


4.Sơ Đồ Layout


5.Chương Trình Nạp Cho VĐK
- Chương trình được viêt bằng MikroC For PIC V8.02.Và nạp theo chuẩn ICSP (In Circuit
Serial Programming).
22


6.Nhận Xét
- Đây là mạch chuyển đồi sử dụng 1 kênh điện áp tham chiếu đươc lấy từ Vdd va Vss có
giá trị 5v tương đương với giá tri 1024.
- Hoạt động: Khi ta điều chỉnh biến trở thi sẽ thay đổi mức điện áp đạt vào ngõ vào,và
VĐK thực hiện chuyển đồi và hiện thị lên 10 led đơn tượng trưng cho 10bit.

IV.Mạch EEPROM + Matrix
1.Giới thiệu linh kiện chính có trong mạch
- Vi Xử Lý PIC 16F877A, EEPROM24C64, Ledmatrix,......\

2. Cấu tạo Linh Kiên và nguyên lý Hoạt Đông
2.1 Sơ lượt về VĐK PIC(tham khảo phần trên)
- Ở đây chúng ta chi đề cập tới chuẩn giao tiếp TWI-I2C của PIC 16F877A
2.1.1 TWI-I2C là gì? Hoạt Động Của TWI-I2C
23


- TWI (Two-Wire Serial Intereafce) là một module truyền thông nối tiếp đồng bộ trên các
chip AVR dựa trên chuẩn truyền thông I2C. I2C là viết tắc của từ Inter-Integrated Circuit là
một chuẩn truyền thông do hãng điện tử Philips Semiconductor sáng lập và xây dựng thành
chuẩn năm 1990. Phiên bản mới nhất của I2C là V3.0 phát hành năm 2007. Để hiểu thêm về
I2C bạn có thể tham khảo các tài liệu “I2C Specification” từ trang web của NXP (lập bởi Philips). Trong phạm vi bài học này tôi chỉ giới thiệu giao thức
TWI được giới thiệu trong datasheet của các chip PIC. Tuy nhiên, về cơ bản TWI trong PIC
hoàn toàn tương thích I2C, do đó tìm hiểu TWI của PIC không chỉ giúp bạn giao tiếp giữa

các PIC với nhau mà có thể dùng TWI để điều khiển bất kỳ một thiết bị nào theo chuẩn I2C
(các chip nhớ, bộ chuyển đổi ADC, DCA, đồng hồ thời gian thực…).
- TWI (I2C) là một truyền thông nối tiếp đa chip chủ (tạm dịch của cụm từ multi-master
serial computer bus). Khái niệm “multi-master” (tôi sẽ dùng từ tiếng anh multi-master thay
vì dùng “đa chip chủ”) được hiểu là trong trên cùng một bus có thể có nhiều hơn một thiết bị
làm Master, đồng thời một Slave có thể trở thành một Master nếu nó có khả năng. Ví dụ
trong một mạng TWI của nhiều AVR kết nối với nhau, bất kỳ một AVR nào đều có thể trở
thành Master ở một thời điểm nào đó. Tuy nhiên nếu một mạng dùng một AVR điều khiển
các chip nhớ (như EEPROM AT24C1024 chẳng hạn) thì khái niệm “multi-master” không tồn
tại vì các chip nhớ được thiết kế sẵn là Slave, không có khả năng trở thành master. TWI (I2C)
được thực hiện trên 2 đường SDA (Serial DATA) và SCL (Serial Clock) trong đó SDA là
đường truyền/nhận dữ liệu và SCL là đường xung nhịp. Căn cứ theo chuẩn I2C, các đường
SDA và SCL trên các thiết bị có cấu hình “cực góp mở” (open-drain hoặc open-collector,
tham khảo các mạch số dùng transistor để hiểu thêm), nghĩa là cần có các “điện trở kéo lên”
(pull-up resistor) cho các đường này. Ở trạng thái nghỉ (Idle), 2 chân SDA và SCL ở mức
cao. Hình 1 mô tả một mô hình mạng TWI (I2C) cơ bản.

Hình 1. Mạng TWI (I2C) với nhiều thiết bị và 2 điện trở kéo lên cho SDA, SCL.
Tiếp theo chúng ta tìm hiểu một số khái niệm và đặc điểm của TWI. Các khái niệm và
đặc điểm tôi đề cập dưới đây được dùng cho cả TWI và I2C, nếu có sự khác biệt tôi sẽ giải
thích thêm.
Master: là chip khởi động quá trình truyền nhận, phát đi địa chỉ của thiết bị cần giao
tiếp và tạo xung giữ nhịp trên đường SCL.
Slave: là chip có một địa chỉ cố định, được gọi bởi Master và phục vụ yêu cầu từ Master.
SDA- Serial Data: là đường dữ liệu nối tiếp, tất cả các thông tin về địa chỉ hay dữ liệu
đều được truyền trên đường này theo thứ tự từng bit một. Chú ý là trong chuẩn I2C, bit có
trọng số lớn nhất (MSB) được truyền trước nhất, đặc điểm này ngược lại với chuẩn UART.
SCL –Serial Clock: là đường giữ nhịp nối tiếp. TWI (I2C) là chuần truyền thông nối tiếp
24



đồng bộ, cần có 1 đường tạo xung giữ nhịp cho quá trình truyền/nhận, cứ mỗi xung trên
đường giữ nhịp SCL, một bit dữ liệu trên đường SDA sẽ được lấy mẫu (sample). Dữ liệu nối
tiếp trên đường SDA được lấy mẫu khi đường SCL ở mức cao trong một chu kỳ giữ nhịp, vì
thế đường SDA không được đổi trạng thái khi SCL ở mức cao (trừ START và STOP
condition). Chân SDA có thể được đổi trạng thái khi SCL ở mức thấp.

START Condition-Điều kiện bắt đầu: từ trạng thái nghỉ, khi cả SDA và SCL ở mức cao
nếu Master muốn thực hiện một “cuộc gọi”, Master sẽ kéo chân SDA xuống thấp trong khi
SCL vẫn cao. Trạng thái này gọi là START Condition (chúng ta gọi tắt là S).
STOP Condition-Điều kiện kết thúc: sau khi thực hiện truyền/nhận dữ liệu, nếu Master
muốn kết thúc quá trình nó sẽ tạo ra một STOP condition. STOP condition được Master thực
hiện bằng cách kéo chân SDA lên cao khi đường SCL đang ở mức cao. STOP condition chỉ
được tạo ra sau khi địa chỉ hoặc dữ liệu đã được truyền/nhận.
REPEAT START – Bắt đầu lặp lại: khoảng giữa START và STOP condition là khoảng
bận của đường truyền, các Master khác không tác động được vào đường truyền trong khoảng
này. Trường hợp sau khi kết thúc truyền/nhận mà Master không gởi STOP condition lại gởi
thêm 1 START condition gọi là REPEAT START. Khả năng này thường được dùng khi
Master muốn lấy dữ liệu liên tiếp từ các Slaves. Hình bên dưới mô tả các Master tạo ra
START, STOP và REPEAT START.

Address Packet Format – Định dạng gói địa chỉ: trên mạng TWI (I2C), tất cả các thiết
bị (chip) đều có thể là Master hay Slave. Mỗi thiết bị có một địa chỉ cố định gọi là Device
address. Khi một Master muốn giao tiếp với một Slave nào đó, nó trước hết tạo ra một
25


×