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

ỨNG DỤNG VI ĐIỀU KHIỂN PIC TRONG ĐẾM SẢN PHẨM

98 208 0

Đ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 98
Dung lượng 1,78 MB

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

Nội dung

Trong khi đó, kiến trúc Harvard cho phép CPU tương tác với cả hai bộnhớ dữ liệu và bộ nhớ chương trình cùng một lúc, giúp tốc độ xử lý nhanh hơn.Kiến trúc von-Neumann ngược lại, cho phép

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA ĐIỆN -*** -

ĐỀ TÀI:

ỨNG DỤNG VI ĐIỀU KHIỂN PIC

TRONG ĐẾM SẢN PHẨM

Đà Nẵng, 05/ 2006

Trang 2

I.Tên đề tài: ỨNG DỤNG VI ĐIỀU KHIỂN PIC TRONG ĐẾM SẢN PHẨM

II Nội dung đề tài:

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

2 Tổng quan về hệ thống băng chuyền đếm sản phẩm

3 Truyền số liệu, giao tiếp với máy tính qua cổng COM và dùng remote

để điều khiển từ xa

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

5 Thiết kế và thi công phần mềm

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

Họ và tên: TS Trần Đình Khôi Quốc

IV Giáo viên duyệt:

Họ và tên:

V Ngày giao đề tài: 20/02/2006

VI Ngày hoàn thành: 28/05/2006

Trang 3

Ngày tháng năm 2006 Ngày tháng năm 2006

Chủ tịch hội đồng

Ngày tháng năm 2006

(Ký và ghi rõ họ tên)

Trang 4

Trang 5

Trang 6

tận tình hướng dẫn và tạo mọi điều kiện thuận lợi cho em trong thời gian thựchiện luận văn tốt nghiệp này.

Em xin chân thành cảm ơn quý thầy cô ở bộ môn tự động hóa đã tạo điềukiện và hổ trợ em trong suốt quá trình học tập

Em xin chân thành cảm ơn gia đình đã tạo những điều kiện thuận lợi nhất

để em học tập cũng như hoàn thành luận văn tốt nghiệp này

Cuối cùng em xin chân thành cảm ơn sự giúp đỡ động viên của bạn bè đãgiúp em hoàn thành luận văn tốt nghiệp này

Sinh viên thực hiện

NGUYỄN HỮU TIẾN

Trang 7

Trong những năm gần đây, khoa học kỹ thuật đã có những bước tiến rấtnhanh chóng ở các quốc gia trên toàn thế giới nói chung và Việt Nam nói riêng.Ngành tự động hóa đã, đang và sẽ tiếp tục có những đóng góp to lớn cho tìnhhình phát triển chung đó Một trong những thành tựu của ngành tự động hóa làviệc cho ra đời các hệ thống sản xuất tự động thay thế con người Điều này đãgiúp tăng hiệu suất lao động và tăng năng suất sản xuất cho các nhà máy, xínghiệp Các hệ thống tự động được xây dựng nhằm mục đích phục vụ cho lĩnhvực sản xuất đặc biệt là sản xuất với số lượng lớn và ngay khi vừa mới đưa vàothử nghiệm thì nó đã chứng tỏ được ưu thế của mình thông qua các con số thống

kê về số lượng thành phẩm mà dây chuyền tự động thực hiện được so với sốthành phẩm do nhân công tạo ra

Trên cơ sở đó, nhằm để có thể phát huy những kiến thức đã học cũng nhưtích luỹ thêm kinh nghiệm trong thiết kế mạch, đồng thời tìm hiểu một họ vi điềukhiển mới, em đã chọn đề tài “ỨNG DỤNG VI ĐIỀU KHIỂN PIC TRONGĐẾM SẢN PHẨM” Mục đích chính của đồ án là thiết kế một hệ thống tự động

có thể cho biết năng suất của dây chuyền sản xuất trong một nhà máy Đồ ánđược thực hiện dựa trên 3 yêu cầu là mạch phải đơn giản, rẻ tiền và có tính khảthi Từng công đoạn thực hiện cũng như giới thiệu về cơ sở lý thuyết để thiết kếnên hệ thống sẽ lần lượt được giới thiệu cụ thể trong những phần sau của đồ án.Việc làm luận văn đã giúp cho em có thêm được nhiều kiến thức bổ ích vềthực tế, bổ sung những kiến thức đã được học ở nhà trường

Tuy nhiên, do còn hạn chế về kinh nghiệm thực tế, tài liệu tham khảo, thờigian thực hiện, nên tập luận văn không thể tránh khỏi những thiếu sót, kính mongthầy hướng dẫn, cùng các thầy cô bộ môn góp ý xây dựng để luận văn được hoànthiện hơn

Trang 9

GIỚI THIỆU VI ĐIỀU KHIỂN PIC 16F84A

1.1 Mở đầu 1

1.2 PIC là gì? 2

1.3 Tóm tắt phần cứng PIC16F84A 2

1.3.1Cấu trúc bên trong và các đặc trưng cơ bản 2

1.4 Sơ đồ chân của PIC16F84A 5

1.5 Tổ chức bộ nhớ 6

1.6 Các thanh ghi chức năng đặc biệt (SFR) quan trọng và hoạt động của chúng 8

1.7 PORT I/O 11

1.7.1 Port A 11

1.7.2 Port B 14

1.8 Hoạt động định thời 16

1.9 Hoạt động ngắt 18

1.10 Tập lệnh của họ PIC16FXX 21

1.11 SƠ ĐỒ CHÂN PIC 16F877A 24

1.12 SƠ ĐỒ KHỐI PIC 16F877A 25

1.13 TỔ CHỨC BỘ NHỚ CỦA PIC 16F877A 26

1.14 Kết luận chương 31

Chương 2: TỔNG QUAN VỀ HỆ THỐNG BĂNG CHUYỀN ĐẾM SẢN PHẨM 2.1 Đặt vấn đề 32

2.2 Chọn phương án thiết kế: 33

2.2.1 Với mạch đếm sản phẩm dùng IC rời có: 33

2.2.2 Với mạch đếm sản phẩm dùng kỹ thuật vi xử lí: 33

2.2.3 Phương pháp đếm sản phẩm dùng vi điều khiển: 34

2.3 Mô tả: 34

2.3.1 Yêu cầu: 34

2.3.2 Các bộ phận chính của hệ thống băng chuyền 35

2.4 Mục đích yêu cầu của đề tài: 35

Trang 10

2.6 Các khối trong sơ đồ: 36

2.6.1.Vi điều khiển: 36

2.6.2 MAX 232: 37

2.6.3 Máy tính: 37

2.6.4 Led hiển thị: 37

2.6.5 Cảm biến: 38

2.6.6 Bàn phím: 38

2.7 Nguyên tắc điều khiển: 39

2.7.1 Các port vào ra: 39

2.7.2 Nguyên lý hoạt động: 39

Chương 3: TRUYỀN SỐ LIỆU, GIAO TIẾP MÁY TÍNH QUA CỔNG COM VÀ DÙNG REMOTE ĐỂ ĐIỀU KHIỂN TỪ XA 42

A.TRUYỀN SỐ LIỆU VÀ GIAO TIẾP MÁY TÍNH QUA CỔNG COM 3.1 Mở đầu 42

3.2 Chuẩn giao tiếp RS232 42

3.3 Truyền dữ liệu qua chuẩn RS232 49

3.4 Các chuẩn giao tiếp khác 51

3.4.1 Chuẩn giao tiếp RS-422 51

3.4.2 Chuẩn giao tiếp RS-485 51

B ỨNG DỤNG REMOTE ĐỂ ĐIỀU KHIỂN TỪ XA 52

3.5 Giới thiệu về Remote(điều khiển từ xa) 52

3.6 Sơ lược về các linh kiện thu phát hồng ngoại 52

3.6.1 Ánh sáng hồng ngoại 52

3.6.2 LED hồng ngoại: 53

3.6.3 Đầu thu hồng ngoại : 54

3.7 Các cách mã hóa tín hiệu hồng ngoại thường được sử dụng : 55

3.7.1 Tín hiệu được mã hóa bằng độ rộng xung(Pulse-Width-Coded Signal) 55

Trang 11

Signal) 56

3.7.3 Tín hiệu được mã hóa bằng phép dịch ( Shift-Coded Signal) 56 3.8 Cách mã hóa của các loại REMOTE thông dụng 57

3.8.1 Mã RC5 57

3.8.2 Mã Sony 58

3.8.3 Mã Daewoo 59

3.8.4 Mã của JVC 60

3.8.5 Mã Panasonic 61

3.9 Kết luận chương: 62

Chương 4: THIẾT KẾ VÀ THI CÔNG PHẦN CỨNG 64

4.1 Giới thiệu chương 64

4.2 Sơ đồ khối chức năng 64

4.3 Sơ đồ mạch nguồn 66

4.4 Thiết kế Kit vi điều khiển 66

4.5 Thiết kế mạch hiển thị 67

4.6 Thiết kế mạch đóng cắt động cơ 71

4.7 Thiết kế mạch thu phát hồng ngoại 72

4.8 Kết luận chương 74

Chương 5: THIẾT KẾ VÀ THI CÔNG PHẦN MỀM 75

5.1.Thuật toán chương trình chính: 75

5.2 Thuật toán chương trình EnterProduct: 76

5.3 Thuật toán chương trình EnterNumber: 77

5.4.Thuật toán chương trình task: 78

5.5 Thuật toán chương trình remote: 79

5.6.Thuật toán chương trình keyboard: 80

5.7.Thuật toán chương trình CountProduct: 82

5.8 Thuật toán chương trình Interrupt: 84

5.9 Thuật toán chương trình Rs232: 85

Trang 13

trong các ứng dụng, đặc biệt là trong các hệ thống điều khiển tự động Hiện nay

trên thị trường có rất nhiều các loại vi điều khiển mạnh để bạn lựa chọn nhưMotorola 68HC , PIC, Atmel AVR, ARM, , SHARC Tuy vậy em nêu ra đâynhững tiêu chí mà dựa vào đó em chọn họ vi điều khiển PIC :

lệnh, các chương trình hỗ trợ của nhà sản xuất)

lượng nhà phân phối…

bổ ích, có sự trao đổi dễ dàng

- Quay trở lại vấn đề so sánh Motorola thường được dùng cho những thiết kếphức tạp nhưng lại rất khó mua và giá cao AVR cũng giống như PIC, nhưng nó

Trang 14

còn mới và nhiều người cũng so sánh nó với PIC Nhưng nếu xét về các ứngdụng được thiết kế trên AVR còn rất hạn chế Số lượng các dòng vi điều khiểnAVR cũng không nhiều, không có những vi điều khiển cho những ứng dụng cụthể 8051 thì là sở trường của sinh viên, nhưng hạn chế về tính năng.

- Trong đồ án này em sẽ trình bày về PIC16F84A, đây là con vi điều khiển mànhững người mới học PIC thường lựa chọn

1.2 PIC là gì?

- PIC là tên viết tắt của “bộ điều khiển thiết bị ngoại vi” (Peripheral InterfaceController), do hãng General Instrument đặt tên con con vi điều khiển đầu tiêncủa họ: PIC1650 Đây là con vi điều khiển đầu tiên, là mẹ đẻ của tất cả các viđiều khiển họ PIC sau này Đến ngày nay, PIC1650 được phát triển và được biếtdưới tên gọi PIC16C54 Nó được thiết kế để dùng cho các thiết bị ngoại vi của vi

xử lý CP1600

Tóm lược dòng PIC:

-Mã số bắt đầu là 12xxxx có nghĩa là opcode của nó 12 bit, bắt đầu với16xxxx là các con PIC 14 bit và 18xxxx là PIC 16 bit

- Mã số C là các PIC có bộ nhớ EPROM, duy chỉ có con 16C84 là EEPROM,

F là Flash, LF là PIC Flash hoạt động ở điện áp thấp, con cũ là LV Ngoài ra, một

số con xxFxxx là EEPROM, để phân biệt với con Flash thì các bạn sẽ thấy chữ A

Trang 15

-PIC được tổ chức phần cứng theo kiến trúc Harvard, và tập lệnh RISC Sựkhác biệt giữa kiến trúc Harvard và kiến trúc Von Neumann ở chỗ bộ nhớ dữ liệu

và bộ nhớ chương trình nằm riêng biệt, hay nằm chung

-Chúng ta sẽ thấy rằng, với kiến trúc von-Neumann, bộ nhớ dữ liệu và bộ nhớchương trình nằm chung, do vậy khi CPU tương tác với bộ nhớ, nó chỉ có thểlàm việc với hoặc bộ nhớ dữ liệu, hoặc bộ nhớ chương trình nên tốc độ xử lýchậm đi Trong khi đó, kiến trúc Harvard cho phép CPU tương tác với cả hai bộnhớ dữ liệu và bộ nhớ chương trình cùng một lúc, giúp tốc độ xử lý nhanh hơn.Kiến trúc von-Neumann ngược lại, cho phép ta cân đối giữa bộ nhớ dữ liệu và bộnhớ chương trình một cách linh động Tuy nhiên, điều này chỉ thực sự hữu íchcho những CPU xử lý tốc độ cực cao, và dung lượng bộ nhớ cực lớn Còn với cácCPU tốc độ chậm như vi điều khiển, và bộ nhớ hạn chế, kiến trúc von-Neumanndường như không đem lại hiệu quả về tốc độ xử lý cũng như dung lượng quản lý

bộ nhớ như kiến trúc Harvard

-Một điểm chú ý nữa, đó là với kiến trúc Harvard, bộ nhớ chương trình và bộnhớ dữ liệu được tách riêng, do đó, tập lệnh trong kiến trúc Harvard có thể đượctối ưu tùy theo yêu cầu kiến trúc của vi điều khiển Bằng chứng, độ dài lệnh củadòng PIC16 luôn luôn là 14 bit Trong khi đó, độ dài lệnh của các vi điều khiểnkiến trúc von-Neumann là bội số của 1 byte (8 bit)

-Điều này dẫn đến hệ quả, nếu bộ nhớ chương trình của PIC là 4Kword, thìmọi vị trí của bộ nhớ đều có thể sử dụng triệt để, và chúng ta viết được 4x1024dòng lệnh trong chương trình Trong khi đó, kiến trúc von-Neumann với bộ nhớ

Hình 1.1: Kiến trúc Harvard và kiến trúc Von-Neumann

Trang 16

4KB trung bình chỉ cho ta viết 2x1024 dòng lệnh, tức tương đương với 2K dònglệnh Tỉ lệ này tùy thuộc vào mỗi ứng dụng, tuy nhiên, con số trung bình nàyphản ánh rằng, kiến trúc Harvard phần nào thể hiện lợi điểm so với kiến trúc von-Neumann trong các vi điều khiển.

♦Sơ đồ khối của PIC16F84A

Trang 17

1.4 Sơ đồ chân của PIC16F84A

OSC1/CLKIN : Chân nối với dao động thạch anh (Oscillator crystal input)

OSC2/CLKOUT :Chân nối với dao động thạch anh (Oscillator crystal input) MCLR(inv) : Chân reset mức thấp (Master clear input)

Ngõ vào điện áp lập trình trong chế độ lập trình (Programming voltage input)RA0 – RA3 : Cổng giao tiếp hai chiều (Bi-directional I/O port)

RA4/T0CKI : Cổng giao tiếp hai chiều (Bi-directional I/O port) Giữ vai trò nhưmột bộ định thời dựa vào xung ngoài ( Clock input to the TMR0 timer/counter) RB0/INT : Cổng giao tiếp hai chiều (Bi-directional I/O port)

Chân ngắt ngoài (External interrupt pin)

RB1 – RB7 :Cổng giao tiếp hai chiều (Bi-directional I/O port)

VSS : Chân mass

VDD :Chân nguồn (+2.0V to +5.5V)

Hình 1.3: Sơ đồ chân của PIC16F84A

Trang 18

1.5 Tổ chức bộ nhớ

Trang 20

Hinh 1.4: Tổ chức bộ nhớ của PIC16F84A

Bộ nhớ chương trình là loại bộ nhớ kiểu FLASH dùng để chứa chương trình.Kích thước bộ nhớ chương trình là 1024 vị trí nhớ, mỗi vị trí nhớ có độ lớn là 14bit (word).Mỗi khi nguồn mất thì nội dung của bộ nhớ sẽ không bị mất Có khảnăng lập trình được nhiều lần,số lần ghi được giới hạn là 1000 lần Vị trí 0000h

và vị trí 0004h được dành cho reset và vector ngắt

♦ Reset Vector ( 0000h )

Khi xảy ra reset, hoặc bằng cách bật nguồn hoặc do các nguyên nhân khác thìchương trình sẽ bắt đầu ở vị trí này PIC16F84A có các cách reset sau :

-Reset khi bật nguồn, POR (Power-On Reset)

-Reset khi có mức logic 0 trên chân MCRL

-Reset khi ở chế độ ngủ (Sleep)

-Reset khi bộ watchdog bị tràn (WDT)

Trong đó cách reset do bật nguồn (POR) và do có mức logic 0 trên chân MCRL

là thường được sử dụng nhất

♦ Peripheral Interrupt Vector ( 0004h )

Khi cho phép ngắt, chương trình ngắt sẽ bắt đầu ở vị trí này

♦ Bộ nhớ dữ liệu(Data memory)

Bộ nhớ dữ liệu bao gồm bộ nhớ EEPROM và RAM Bộ nhớ EEPROM gồm 64

vị trí 8 bit và nội dung của chúng không bị mất đi khi mất nguồn Bộ nhớEEPROM không thể truy cập trực tiếp, chỉ có thể truy cập gián tiếp thông qua 2thanh ghi là EEADR và EEDATA

♦ RAM(Random Access Memory) File Registers

Bộ nhớ RAM của dòng PIC được chia làm nhiều bank,để truy cập đến vùngnhớ này ta phải làm công việc chọn bank PIC16F84A bộ nhớ RAM được chialàm 2 bank, mỗi bank có độ lớn là 80 byte chiếm vị trí từ 0x00h tới 0x4Fh, 12 vịtrí đầu tiên của mỗi bank là các thanh ghi chức năng đặc biệt SFR (SpecialFunction Registers) Các vị trí từ 0x0Ch tới 0x4Fh là vùng RAM đa mục đích,

Trang 21

các vị trí trong vùng RAM đa mục đích có thể truy cập bất chấp bank nào đượcchọn.

♦ Bộ đếm chương trình (Program Counter)

Bộ đếm chương trình (PC) là một thanh ghi có độ dài 13 bit chứa địa chỉ củalệnh được kích hoạt tiếp theo Về mặt vật lí, nó là sự kết hợp 5 bit của thanh ghi

PCLATH và 8 bit của thanh ghi PCL

♦ Stack

Stack chứa địa chỉ trở về khi một lệnh nhảy được kích hoạt

PIC16F84 có một ngăn chứa 13 bit với 8 mức, nói cách khác đó là một nhóm 8 vịtrí nhớ, có độ rộng 13 bít.Vai trò cơ bản của nó là lưu giữ giá trị của bộ đếmchương trình sau khi thực hiện một lệnh nhảy từ chương trình chính tới địa chỉcủa chương trình con, nhằm mục đích để cho chương trình chính biết chính xácđiểm trở về sau khi thực hiên chương trình con

Lệnh RETURN đánh dấu điểm kết thúc của chương trình con Lệnh CALL làlệnh nhảy tới chương trình con Khi gặp một lệnh CALL, thì địa chỉ trở về (địachỉ của câu lệnh theo sau lệnh con) sẽ được chứa vào đỉnh của stack, khi lệnhRETURN được bắt gặp thì địa chỉ ở đỉnh stack sẽ được đặt vào PC và chươngtrình tiếp tục bình thường Do PIC16F84 có 8 thanh ghi stack nên các chươngtrình con có thể gọi lồng nhau liên tiếp 8 lần ,vì sau lần gọi thứ 8 thì một lệnh gọi

sẽ làm mất nội dung của ngăn stack thứ tám Do đó khi gặp lệnh return thì PC sẽgửi tới chương trình địa chỉ trở về sai, điều đó làm cho chương trình hoạt độngsai

Trang 22

Hình 1.5: Hoạt động của stack

1.6 Các thanh ghi chức năng đặc biệt (SFR) và hoạt động của chúng

12 vị trí nhớ đầu tiên của mỗi bank được dành cho các thanh ghi chức năng đặcbiệt (FSR), các thanh ghi này rất quan trọng trong hoạt động của họ vi điều khiểnPIC

♦ Thanh ghi STATUS (địa chỉ bộ nhớ 03h và 83h)

Hình 1.6: Thanh ghi STATUS-Bit IRP, RP1, RP0: bit dung để chon bank ,ở PIC16F84A bit IRP không được sửdụng,việc chọn bank phụ thuộc vào hai bit RP1 và RP0

1: sau khi bật nguồn

0: khi kích hoạt lệnh SLEEP

Trang 23

Hình 1.7: Thanh ghi OPTION_REG

-Bit RBPU (Portb pull-up Enable bit)

1 : cho phép điện trở kéo lên ở portb;

0: không cho phép điện trở kéo lên

-Bit INTEDG (Interrupt Edge Select Bit): Nếu ngắt ngoài được cho phép, thì bitnày xác định ngắt sẽ xảy ra khi tín hiệu ở chân RB0/INT là ở sườn lên hay sườnxuống

1 : sườn lên

0 : sườn xuống

-Bit TOCS (TMR0 Clock Source Select bit ) : bit này cho cho phép bộ định thờităng giá trị hoặc là từ dao động nội, hoặc là từ dao động ngoài trên chânRA4/TOCKI

Trang 24

-Bit PS0, PS1, PS2 (Prescaler Rate Select bit)

ba bit này xác định hệ số của bộ chia tần,các tỉ số này như sau:

♦ Thanh ghi INDF(địa chỉ bộ nhớ 00h)

Thanh ghi này được sử dụng trong định địa chỉ gián tiếp

♦ Thanh ghi EECON1 (địa chỉ bộ nhớ 88h)

Hình 1.9: Thanh ghi EECON1

-Bit EEIF (EEPROM Write Operation Interrupt Flag bit) : Bit này được sử dụng

để báo việc ghi vào EEPROM đã kết thúc

1: quá trình ghi đã kết thúc

0: quá trình ghi chưa kết thúc, hoặc chưa được thực hiện

-Bit WRERR (Write EEPROM Error Flag bit) : cờ báo lỗi trong quá trình ghiEEPROM

1: có lỗi xảy ra

0: không có lỗi xảy ra

-Bit WREN (EEPROM Write Enable bit): bit cho phép ghi vào EEPROM

Trang 25

1.7 PORT I/O

-Port I/O được sử dụng để PIC giao tiếp với các thiết bị ngoài PIC16F84A có 13chân vào ra Chúng được phân thành hai port, PORTA và PORTB PORTA có 5chân và PORTB có 8 chân, PORTA tương ứng với thanh ghi PORTA và PORTBtương ứng với thanh ghi PORTB Mỗi thanh ghi gồm 8 bit và mỗi chân của porttương ứng với mỗi bit, mỗi chân có thể được quy định là ngõ vào hay ngõ ra.Việc qui định chân là ngõ vào hay ngõ ra phụ thuộc vào việc thiết lập bit tươngứng trong thanh ghi TRIS tương ứng là 0 hay 1 Nếu ghi vào thanh ghi TRIS mứclogic ”0” thì port tương ứng là ngõ ra, ngược lại là ngõ vào Cấu trúc bên trongcủa mỗi port

1.7.1 PortA

Nó gồm có 5 chân :từ RA0 đến RA4

Hình 1.10: PortA

♦ Cấu trúc bên trong của portA (RA0-RA3):

Hình 1.11: Cấu trúc bên trong của PortA Hình trên là sơ đồ mạch bên trong của porta từ RA0 tới RA3 Nó bao gồm bộchốt dữ liệu ngõ ra và mạch điều khiển CMOS Mỗi chân xem như ngõ vào hay

ra phụ thuộc vào việc thiết lập thanh ghi TRISA Giá trị thiết lập ở thanh ghiTRISA được ghi vào bộ chốt TRIS Latch

Trang 26

♦ Quá trình hoạt động của portA ở chế độ là ngõ ra

Hình 1.12: Hoạt động của portA ở chế độ là ngõ ra

Để thiết lập chân của portA là ngõ ra thì ta ghi vào thanh ghi TRISA ở bittương ứng giá trị là ‘0’ Do bộ chốt của thanh ghi TRISA là một DFF nên ngõ ra

Q là ở mức thấp, và ngõ ra Q bù ở mức cao Trường hợp dữ liệu ra là mức 1 thì

do bộ chốt dữ liệu cũng là một DFF nên ngõ ra Q bù sẽ có mức 0, khi đó cổng

OR sẽ mở và PFET dẫn, cổng AND sẽ đóng dẫn tới N-FET ngắt, lúc đó dữ liệu

ra chân sẽ có mức 1, ngược lại khi dữ liệu cần xuất là mức 0

♦ Quá trình hoạt động của portA ở chế độ là ngõ vào

Để thiết lập chân của portA ở chế độ ngõ vào thì ta ghi vào thanh ghi TRISA ởbit tương ứng giá trị là “1” Như hình vẽ ta thấy PFET và NFET sẽ không thông,lúc đó dữ liệu vào sẽ được ghi vào bộ chốt ngõ vào và được đọc ra theo giản đồxung như sau:

Trang 27

Hình 1.13: Hoạt động của portA ở chế độ là ngõ vào

♦ Cấu trúc bên trong của portA(RA4)

Ở portA chân RA4 ngoài chức năng vào ra cơ bản, nó còn có một chức năngđặc biệt khác là ngõ vào của xung ngoài Nó khác với các chân còn lại của porta

là FET cho điều khiển ngõ ra chỉ có NFET và một mạch Schmittch Trigger đượcdùng làm bộ đệm ngõ vào Như hình vẽ sau:

Trang 28

Hình 1.14: Cấu trúc bên trong của RA4Chân này còn được sử dụng làm ngõ vào của xung ngoài định thời cho bộ địnhthời TMR0, bởi vì nó sử dụng bộ đệm ngõ vào là một mạch Schmittch Trigger,

do đó nó nó rất nhạy với nhiễu, đồng thời do ở ngõ ra không có P-FET đóng vaitrò như là một điện trở kéo lên, vì vậy cần phải mắc điện trở kéo lên bên ngoài

1.7.2 Port B

Nó gồm có 8 chân :từ RB0 đến RB7

♦ Cấu trúc bên trong của portB(RB0-RB3)

Hình 1.15: Cấu trúc bên trong của portB Cấu tạo của portB khác với portA Ở portB không sử dụng FET trong mạchngõ ra mà sử dụng một cổng logic(NAND) để qui định chế độ vào ra Đặc trưngcủa portB là có điện trở kéo lên khi ở chế độ là ngõ vào Chức năng điện trở kéolên này có thể lập trình bằng phần mềm

Trang 29

Khi ghi vào bộ đệm thanh ghi TRIS giá trị “0” , ngõ ra Q của DFF(TRIS Latch)

có giá trị 0 ,lúc đó cổng điều khiển ngõ ra được mở, đồng thời ngõ ra cổngNAND luôn ở mức 1, lúc đó P-MOS tắt dẫn tới chức năng điện trở kéo lên bị vôhiệu hóa

Khi ghi vào bộ đệm thanh ghi TRIS giá trị “1” , ngõ ra Q của DFF(TRISLatch) có giá trị là “1” PORT ở chế độ ngõ vào lúc đó cổng điều khiển ngõ ra bịcấm, đồng thời ngõ ra của cổng NAND ở mức “1” hay mức “0” tùy thuộc vàochân RBPU ,tức là cho phép hay không cho phép chức năng điện trở kéo lên.RBPU là bit 7 của thanh ghi OPTION Nếu bít RPBU bằng “0” cho phép có điệntrở kéo lên, nếu bằng “1” thì ngược lại

♦ Cấu trúc bên trong của portB (RB4-RB7)

Hình 1.16: Cấu trúc bên trong của portB

Các chân của portB từ (RB4-RB7) ngoài chức năng I/O, còn có thêm chứcnăng dò tìm sự thay đổi trạng thái trên các chân Chức năng này chỉ hoạt độngkhi port ở chế độ là ngõ vào Một ngắt sẽ xảy ra khi có sự thay đổi trạng thái trêncác chân này Hoạt động của việc dò tìm sự thay đổi trạng thái trên các chân nhưsau :

Trang 30

Hình 1.17: Đọc dữ liệu vào ở portB Như hình trên ta thấy, dữ liệu ngõ vào được đọc vào bộ chốt dữ liệu thông quamột cổng đảo, khi tín hiệu RD chuyển từ mức thấp lên mức cao Ở thời điểmđó,việc đọc dữ liệu cũ trong OLD data latch không thực hiện được Việc đọc dữliệu từ OLD data latch chỉ được thực hiện khi tín hiệu RD chuyển từ mức caoxuống mức thấp Do đó khi có sự thay đổi ở ngõ vào thì ngõ ra của cổng XOR sẽ

ở mức “1” và bit RBIF(bit cho phép ngắt do sự thay đổi trạng thái ở portb ) sẽđược set lên “1”, ngược lại ngõ ra của cổng XOR sẽ ở mức “0” và bit RBIF sẽđược xóa

1.8 Hoạt động định thời

Trang 31

Bộ định thời thường là phần phức tạp nhất của vi điều khiển Hầu hết các ứng

dụng của nó là tạo ra mối quan hệ cần thiết giữa không gian thực và vi điềukhiển Về mặt vật lí, bộ định thời là một thanh ghi mà giá trị của nó liên tục tăngtới 255 và sau đó nó bắt đầu lại từ đầu :0,1,2,3,…,255…0,1,2,3,…255

Hình trên là sơ đồ khối của bộ định thời (TMR0) và bộ watchdog (WDT) Cácthanh ghi INTCON, OPTION_REG, TRISA là các thanh ghi tác động trực tiếptới bộ định thời

Bộ chia tần số (Prescaler) có thể được sử dụng cho bộ định thời TMR0 hoặc bộWDT phụ thuộc vào bit PSA của thanh ghi OPTION_REG Bộ chia tần là một bộđếm có thể lập trình được, tỉ số đếm của nó phụ thuộc vào 3 bít PS0, PS1, PS2của thanh ghi OPTION_REG Bộ định thời TMR0 là bộ định thời 8 bit do đó nóchỉ có thể đếm lên tới giá trị là 256 Khi giá trị của bộ định thời tràn từ 255 về 0

nó sẽ sinh ra một ngắt Nhận thấy rằng giá trị cực đại của bộ định thời là 256, do

đó thời gian định thời sẽ rất ngắn Ví dụ ,ở tần số hoạt động là 20Mhz, thì tần sốngõ vào bộ đếm là 5Mhz Chu kì của xung đồng hồ này là 200ns (1/5Mhz

=0.2µsec) Vì vậy sẽ làm cho bộ định thời tràn sau 51.1µsec (0.2 * 256) Do đó

để tăng thời gian định thời ta sử dụng bộ chia tần Prescaler :

Ví dụ ,khi bộ chia tần được thiết lập là 1:256, thì có nghĩa là sau 256 xung ngõvào bộ định thời mới tăng lên 1 Do đó bộ định thời tràn sau 51.1µsec * 256 = 13

Trang 32

Nếu xảy ra tràn ở bộ WDT (mặc định là 18ms) thì vi điều khiển sẽ đượcRESET Do đó RESET sẽ xảy ra trong cả hai trường hợp hoạt động đúng và hoạtđộng sai.Để tránh trường hợp vi điều khiển bị RESET khi hoạt động đúng thì tathực hiện ghi vào thanh ghi WDT giá trị “0” mỗi khi nó gần tràn.

Thực tế, bộ WDT thường không được sử dụng bởi vì nếu có lỗi xảy ra ở phầnmềm thì thông thường bạn sẽ nhận ra lỗi thông qua cách hoạt động của nó Nếu

sử dụng bộ WDT thì bạn có thể sẽ không nhận ra tại sao chương trình hoạt độngsai

1.9 Hoạt động ngắt

Hình 1.20: Hoạt động ngắt

Ngắt là một cơ chế của vi điều khiển cho phép đáp ứng lại một vài sự kiện lúc

nó xảy ra,bất chấp những gì vi điều khiển đang thực hiện ở thời điểm đó Đây làmột cơ chế rất quan trọng, nó làm tăng tính mềm dẻo của các ứng dụng sử dụng

vi điều khiển Thanh ghi điều khiển ngắt của PIC16F84 gọi là thanh ghiINTCON và có thể truy cập bất chấp bank nào được chọn

♦ Thanh ghi INTCON

Trang 33

Hình 1.21: Thanh ghi INTCON-Bit GIE (global interrupt enable bit): Bit cho phép hay không cho phép ngắt toàncục

1 : cho phép tất cả các ngắt

0 : cấm tất cả các ngắt

-Bit EEIE (EEPROM Write Complete Interrupt Enable ) : bit này cho phép ngắt

ở thời điểm kết thúc việc ghi vào EEPROM

Trang 34

-Khi có một ngắt xảy ra thì chương trình ngắt sẽ bắt đầu ở địa chỉ 0004h Nhưtrên ta thấy một nguồn ngắt sinh ra phải có đồng thời hai bit Một bit cho phépngắt, bit còn lại xác định khi nào ngắt xảy ra Bit GIE được sử dụng để cho phéphay không cho phép các ngắt xảy ra đồng thời Khi có một ngắt xảy ra, bit GIE sẽđược xóa để cấm các ngắt khác xảy ra Sau khi ngắt được xử lí cờ ngắt nên đượcxóa trước khi trở về chương trình chính Đồng thời do PIC không hỗ trợ lệnhPOP và lệnh PUSH, hai lệnh này thường được dùng để lưu giữ giá trị của cácthanh ghi quan trọng trước khi vào chương trình ngắt (PUSH) và lấy lại nội dungcủa các thanh ghi đó trước khi ra khỏi chương trình ngắt (POP), do đó hai lệnhnày thường được lập trình bằng phần mềm Đây là một điểm bất lợi của họ PIC.

PIC16F84A có 4 nguồn sinh ra ngắt là

♦ Kết thúc việc ghi dữ liệu vào EEPROM

Việc ghi vào một vị trí của EEPROM chiếm mất 10ms, đây là một khoảng thờigian khá lớn đối với vi điều khiển Vi điều khiển sẽ đợi cho việc ghi EEPROMhoàn thành và không làm việc gì cả trong khoảng thời gian đó Vì vậy cơ chếngắt này được thêm vào nhằm cho phép vi điều khiển tiếp tục kích hoạt chươngtrình chính trong khi việc ghi EEPROM đang được tiến hành Khi việc ghi kếtthúc, ngắt sẽ báo cho vi điều khiển biết rằng việc ghi vào EEPROM đã kết thúcbằng cách set bit EEIF trong thanh ghi EECON1 Ta có thể cấm ngắt này bằngcách reset bit EEIE trong thanh ghi INTCON

♦ Do sự thay đổi trạng thái trên các chân từ RB4 tới RB7 của PORTB

Khi xảy ra sự thay đổi trạng thái trên các chân từ RB4 tới RB7 thì bit RBIFtrong thanh ghi INTCON sẽ được set Để sử dụng ngắt này thì các chân đó phảiđược thiết lập là ngõ vào Nếu một trong chúng được thiết lập là ngõ ra thì ngắt

sẽ không xảy ra

Trang 35

♦ Ngắt ngoài trên chân RB0/INT

Ngắt ngoài trên chân RB0/INT được kích khởi bởi sườn lên (nếu bít INTEDGtrong thanh ghi OPTION bằng 1), hoặc sườn xuống (nếu bit INTEDG bằng 0).Khi có tín hiệu xuất hiện trên chân INT, bit INTF trong thanh ghi INTCON sẽđược set Ngắt này có thể cấm bằng cách reset bit INTE trong thanh ghiINTCON

INCFSZ f, d Increment f, Skip if 0

IORWF f, d Inclusive OR W with f Z

MOVWF f Move W to f

SUBWF f, d Subtract W from f C, DC, Z

SWAPF f, d Swap nibbles in f

Trang 36

XORWF f, d Exclusive OR W with f Z

Bit-oriented file register operations

BTFSC f, b Bit Test f, Skip if Clear

BTFSS f, b Bit Test f, Skip if Set

Literal and control operations

CLRWDT - Clear Watchdog Timer

IORLW k Inclusive OR literal with W Z

MOVLW k Move literal to W

RETFIE - Return from interrupt

RETLW k Return with literal in W

RETURN - Return from Subroutine

SLEEP - Go into stanby mode

SUBLW k Subtract W from literal C, DC, Z

XORLW k Exclusive OR literal with W Z

Bảng 1.22: Tóm tắt tập lệnh của PIC16F84A Trong đó:

d (Destination Select): Việc chọn nơi chứa kết quả sau khi kích hoạt lệnh phụ

thuộc vào d Nếu d =0 thì kết quả sẽ được chứa vào thanh ghi W, nếu d =1 thì kếtquả được chứa vào thanh ghi đa mục đích Ví dụ :

ADDWF COUNT,W ( d=0 kết quả được chứa vào W )

ADDWF COUNT,F ( d=1 kết quả được chứa vào F )

Trang 37

f (Register File): chỉ tới một vị trí trong vùng RAM đa chức năng, thông

thường khi viết chương trình bằng ASM thì vị trí đó thường được đánh nhãn Vídụ: ADDWF COUNT,F ( COUNT là một nhãn được gán cho một vị trí RAM)Sau khi thực hiện lệnh này kết quả được chứa vào vị trí RAM được gán nhãn làCOUNT

b (Bit address) :chỉ ra vị trí bit trong một byte thanh ghi

k (Literal field): Là một hằng số được sử dụng cho tính toán,nó có thể là số

hoặc có thể là một nhãn

Trong phần trước, em đã giới thiệu về PIC16F84A, tuy nhiên do số chân I/O củaPIC16F84A không đủ để thực hiện việc thiết kế mạch Vì vậy, em đã sử dụngPIC16F877A (có 40 chân) trong quá trình thiết kế Sau đây em giới thiệu một sốchức năng chính của vi điều khiển PIC16F877A phục vụ cho việc thiết kế

1.11 SƠ ĐỒ CHÂN PIC 16F877A

Trang 38

Hình 1.23: Sơ đồ chân PIC16F877A

RA0-5 : Cổng giao tiếp 2 chiều A

RB1-7 : Cổng giao tiếp 2 chiều B

RB0/INT : Cổng giao tiếp 2 chiều

Chân ngắt ngoài ( External Interrup Pin)

RC0-7 : Cổng giao tiếp 2 chiều C

RD0-7 : Cổng giao tiếp 2 chiều D

RE0-2 : Cổng giao tiếp 2 chiều E

AN0-7 : Cổng giao tiếp tương tự

OSC1/CLKIN : Chân nối với dao động thạch anh (Oscillator Crystal Input )OSC2/CLKOUT : Chân nối với dao động thạch anh (Oscillator Crystal Output )MCLR : Chân reset mức thấp (Active low reset)

Trang 39

Hình 1.24: Sơ đồ khối PIC16F877A

1.13 TỔ CHỨC BỘ NHỚ CỦA PIC 16F877A

PIC16F877A có bộ nhớ chương trình và bộ nhớ dữ liệu có đường truyền độc lậpnhau cho nên việc đồng thời truyền dữ liệu có thể thực hiện được

PIC16F877A có 13 bit đếm chương trình chứa địa chỉ và bộ nhớ chương trình có8Kword x 14bit

Trang 40

1 Tổ chức bộ nhớ chương trình và stack:

Hình 1.25: Tổ chức bộ nhớ chương trình PIC 16F877A

2 Tổ chức bộ nhớ dữ liệu:

Ngày đăng: 02/07/2018, 10:51

TỪ KHÓA LIÊN QUAN

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

w