1. Trang chủ
  2. » Luận Văn - Báo Cáo

MẠCH ỔN ĐỊNH NHIỆT ĐỘ GIAO TIẾP VỚI MÁY TÍNH

59 1,3K 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 59
Dung lượng 1,32 MB

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

Nội dung

0: không có nắgt xảy raBit 2 CCP1IF: cờ báo ngắt CCP1 0: không xảy ra thuật toán so sánh Chế độ PWM: không sử dụng trog chế độ này Bit 1 TMR2IF: cờ báo ngắt xảy ra khi giá trị trong than

Trang 1

1 GIỚI THIỆU VỀ ĐỀ TÀI VÀ SƠ ĐỒ KHỐI:

1.1 LÝ DO CHỌN ĐỀ TÀI

1.1.1 Phần Hệ thống đo và cảnh báo nhiệt độ, gồm có 5 chức năng chính:

- Đo và hiển thị thông tin nhiệt độ của thiết bị ra LED7

- So sánh nhiệt độ đo được với nhiệt độ ngưỡng (ngưỡng trên Tmax và ngưỡng dưới Tmin, được người dùng cài đặt tại bất kì thời điểm nào, tùy theo yêu cầu thông qua bàn phím) để đưa ra cảnh báo ra loa và màn hình khi nhiệt độ vượt qua ngưỡng

- Hệ thống làm mát hoặc làm nóng được kích hoạt khi nhiệt độ nằm ngoài ngưỡngnhiệt độ cho phép

-Liên tục gửi dữ liệu nhiệt độ lên máy tính qua phương thức truyền dữ liệu nối tiếp

-Vẽ đồ thị nhiệt độ theo thời gian thực trên máy tính

1.1.2 Phần Đồng hồ thời gian thực, gồm có 3 chức năng chính:

- Hiển thị thời gian và truyền thời gian này lên máy tính

- Cài đặt thời gian: giờ, phút, giây, thứ, ngày, tháng

- Đồng bộ thời gian với máy tính

1.1.3 Phần Giao tiếp VĐK với máy tính gồm các chức năng chính:

- Truyền dữ liệu từ VĐK lên máy tính:

+ Thời gian trên VĐK

+ Nhiệt độ môi trường, để từ đó vẽ đồ thị nhiệt độ trên máy tính

- Truyền dữ liệu từ máy tính lên VĐK:

+ Đồng bộ thời gian từ máy tính lên VĐK

1.2 HÌNH ẢNH THỰC TẾ:

* Phần mềm giao tiếp nối tiếp viết bằng ngôn ngữ VB:

Trang 2

1.3 SƠ ĐỒ KHỐI:

Trang 3

2 CÁC CHỈ TIÊU HỆ THỐNG VÀ KẾT QUẢ ĐẠT ĐƯỢC:

2.1 Chỉ tiêu hệ thống:

- Thực hiện được chức năng đo nhiệt độ, cảnh báo và điều khiển

- Nhiệt độ ngưỡng không bị mất đi khi mất nguồn

- Nhiệt độ đo được có sai số trong khoảng cho phép

- Hiển thị thời gian và cách cài đặt hợp lý

- Truyền thông nối tiếp ổn định, chính xác

- gọn thuận tiện cho việc thay đổi nhiệt độ ngưỡng

- Thời gian và nhiệt độ cùng hiển thị trên Led7 hợp lý

- Truyền dữ liệu ổn định

3 MÔ TẢ CHI TIẾT HỆ THỐNG:

Hệ thống gốm có 7 khối:

1 Khối vi xử lý

2 Khối cảm biến nhiệt

3 Khối chuyển đổi tương tự số ADC

Trang 4

4 Khối hiển thị

5 Khối cảnh báo và điều khiển

6 Khối giao tiếp máy tính

7 Khối nguồn 5V

A Giới thiệu các khối

1.1 Sơ lược về Vi điều khiển PIC 16F877A:

PIC 16F877A là dịng PIC phổ biến nhất hiện nay (đủ mạnh về tính năng, bộ nhớ

đủ cho hầu hết các ứng dụng thơng thường).Cấu trúc tổng quát của PIC 16F877A nhưsau:

-8 K Flash ROM

-368 Bytes RAM

-256 Bytes EEPROM

-5 ports (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 8 bits (Timer 0 và Timer 2)

-Một bộ định thời 16 bits (Timer1) cĩ thể hoạt động trong chế độ tiết

kiệm năng lượng (Sleep Mode )với nguồn xung clock ngồi

-2 bộ CCP( Capture / Compare/ PWM)

-1 bộ biến đổi AD 10 bits 8 ngõ vào

-2 bộ so sánh tương tự (Compartor)

-1 bộ định thời giám sát (WatchDog Timer)

-Một cổng song song 8 bits 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

-35 tập lệnh cĩ độ dài 14 bits

-Tần số hoạt động tối đa 20MHz

1.2Sơ lược về các chân của PIC 16F877A:

Trang 5

Hình 1.1

Trang 6

Hình 1.2

Trang 9

Hình 1.3 1.3 Một số điểm đặc biệt của CPU:

1.3.1 Dao động:

Trang 10

PIC16F877A có thể hoạt động trong bốn chế độ dao động khác nhau:

Trong các chế độ LP,XT và HS chúng ta

sử dụng thạch anh dao động nối vào các

chân OSC1 và OSC2 để tạo dao động

Hình 1.4

Việc lựa chọn tụ trong dao động thạch anh dựa vào bảng sau:

Trang 11

* Cách tính chu kì máy:

Ví dụ ta sử dụng thạch anh 10Mhz Khi đó:

Tần số dao động của thạch anh là Fosc = 10Mhz

→ Chu kỳ dao đông của thạch anh là Tosc = 1/Tosc= 1/10*106 (s)

Trang 12

Ngõ vào MCLR trên chân 4 của PIC16F877A Khi đưa chân này xuống thấp thì các thanh ghi bên trong VĐK sẽ được tải những giá trị thích hợp để khởi động lại

hệ thống

(Lưu ý: reset do WDT không làm chân MCLR cuống mức thấp)

1.3.4 Interrupts:

PIC16F877A có nhiều nguồn ngắt khác nhau Đây là một số ngắt tiêu biểu:

- Ngắt ngoài xảy ra trên chân INT

Trang 13

1.3.6 Bộ định thời giám sát (Watch Dog Timer -WDT):

Giả sử bạn viết một chương trình, bạn mong đợi chương trình này sẽ chạy nếukhông có gì trục trặc xảy ra thì nó sẽ không bao giờ dừng lại, như vậy bạn phải làm mộtvòng lặp để khi chương trình chạy đến điểm cuối thì nó lại quay trở về điểm bắt đầu.Nhưng mà hãy xem một trường hợp: Giả sử chương trình kiểm tra một chân input, nếu nólên mức cao thì con Pic sẽ tiếp tục kiểm tra một chân input thứ hai có lên mức cao haykhông, nếu chân input thứ hai không lên mức cao, con Pic sẽ ngồi đó chờ và nó sẽ chỉthoát ra khỏi chỗ ngồi của nó nếu chân input thứ hai lên mức cao

Bây giờ hãy xem một trường hợp khác, giả sử như bạn viết một chương trình, bạncompiled nó thành công, và ngay cả bạn đã cho chạy mô phỏng từng bước, từng bướcmột trên máy tính, bằng MPLAB chẳng hạn, có vẽ như mọi chuyện đều tốt, bạn đem nạpvào con Pic Sau một thời gian chạy thử, con Pic thình lình bị kẹt vào nơi nào đó trongchương trình mà không thể thoát ra được trạng thái hiện tại Điều gì là cần thiết để giảiquyết hai trường hợp trên, reset lại hay vẫn để cho nó bị kẹt không thoát ra được ?, đó làmụch đích của mạch watchdog

Mạch watchdog thì không phải là mới mẽ gì, có rất nhiều microprocessors vàmicrocontrollers đã có mạch watchdog, nhưng mà nó làm việc ra sao?

Bên trong con Pic có một mạch RC, mạch này cung cấp 1 xung Clock độc lập vớibất kỳ xung Clock nào cung cấp cho Pic Khi Watchdog Timer (viết tắt là WDT) đượccho phép (enabLed), nó sẽ đếm bắt đầu từ 00 và tăng lên 1 cho đến FFh, khi nó tăng từFFh đến 00 ( FFh+1) thì con Pic sẽ bị Reset bất kể đang làm gì, chỉ có 1 cách là ngănkhông cho WDT đếm tới 00

Khi con Pic bị kẹt không thể thoát ra khỏi tình trạng hiện tại thì WDT vẫn tiếp tụcđếm mà không bị bất kỳ điều gì ngăn cấm nó đếm tới FF và đến FF+1, vì vậy nó sẽ resetcon Pic làm cho chương trình phải khởi động lại từ đầu

Để sử dụng WDT chúng ta cần làm 3 việc.

Thứ nhất, cần thời gian bao lâu để reset WDT?

Thứ hai, làm sao xoá WDT?

Cuối cùng, chúng ta phải nói cho con Pic biết chương trình cho phép WDT hoạt động

Mọi sự truy cập ngoài vùng không gian nhớ này sẽ không có tác dụng

Ngoài ra, bộ nhớ chương trình còn bao gồm một ngăn xếp (Stack) 8 mức

Vector Reset được đặt tại địa chỉ 0000h và vector ngắt được đặt tại địa chỉ 0004h

1.4.2 Bộ nhớ dữ liệu

Trang 15

Bộ nhớ dữ liệu bao gồm 4 Bank: Bank 0, Bank1, Bank2 và Bank3 Mỗi bank códung lượng 128 Bytes, bao gồm vùng Ram đa mục đích (GPR) và vùng thanh ghi chứcnăng đặc biệt (SFR).

Các Bank này được lựa chọn bằng 2 bit ở thanh ghi STATUS là RP0(Status<5>)

- Bank 0: 96 Bytes từ địa chì 20h đến địa chỉ 7Fh

- Bank 1: 80 Bytes từ địa chì A0h đến địa chỉ EFh

- Bank 2: 96 Bytes từ địa chì 110h đến địa chỉ 16Fh

- Bank 1: 96 Bytes từ địa chì 190h đến địa chỉ 1EFh

1.4.2.2 Vùng Ram thanh ghi chức năng đặc biệt

Các thanh ghi chức năng đặc biệt được sử dụng bởi bộ xử lí trung tâm CPU hoặccác module ngoại vi để điều khiển hoạt động của VĐK Các thanh ghi chức năng đặc biệtnày được chia làm 2 loại: loại thứ nhất dùng cho các chức năng của CPU, loại thứ 2 dùngcho các chức năng ngoại vi

1.4.2.3 Các thanh ghi chức năng đặc biệt

1.4.2.3.1 Thanh gi trạng thái (status register)

Thanh ghi trạng thái chứa các trạng thái số học của bộ ALU, trạng thái Reset và các bitchọn Bank của bộ nhớ dữ liệu

Bit 6 – 5 RP1 – RP0: bit lựa chọn bank thanh ghi (Dùng trong định điạ chỉ trực tiếp)

Trang 16

Bit 4 TO: time out bit

1: Lệnh xóa WDT hoặc Sleep xảy ra

0: WDT hoạt động

Bit 3 PD: Power down bit

1: Sau khi nguồn tăng hoặc có lệnh xóa WDT0: Thực thi lệnh Sleep

Bit 2 Z: 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

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

1.4.2.3.2 Thanh ghi tùy chọn (Option _Reg Register)

Bit 7 RBPU: bit cho phép PORTB được kéo lên nguồn

1: Không cho phép PORTB kéo lên nguồn

0: Cho phép PORTB kéo lên nguồn

Bit 6 INTEDG: bit lựa chọn cạnh tác động ngắt

1: Ngắt sẽ được tác động bởi cạnh lên của chân RB0/INT0: Ngắt sẽ được tác động bởi cạnh xuống của chân RB0/INTBit 5 T0CS: 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 0: Xung Clock cung cấp bởi nguồn dao động nội

Bit 4 T0SE: bit lựa chọn cạnh nào của xung clock tác động lên timer 0

1: cạnh xuống0: cạnh lên Bit 3 PSA: bit quyết định tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0 hay

WDT1: tốc độ đếm PS2:PS0 sẽ tác động lên WDT

1.4.2.3.3 Thanh ghi điều khiển ngắt INTCON (Interrupt Control Register):

Bit 7 GIE: bit cho phép ngắt toàn cục

Trang 17

1: Cho phép ngắt toàn cục0: không cho phép ngắtBit 6 PEIE: bit cho phép ngắt ngọai vi

1: cho phép ngắt ngoại vi0: không cho phépBit 5 TMR0IE: bit cho phép ngắt khi timer 0 tràn

1: cho phép0: không cho phépBit 4 INTE:bit cho phép ngắt ngoài RB0/INT

1: cho phép0: không cho phépBit 3 RBIE: cho phép ngắt khi trạng thái PORTB thay đổi

1: cho phép0: không cho phépBit 2 TMR0IF: cờ báo ngắt Timer 0

1: Timer0 tràn0: timer 0 chưa trànBit 1 INTF: cờ báo ngắt ngoài RB0/INT

1: có ngắt0: không xảy ra ngắt

Bit 0 RBIF: cờ báo ngắt khi có thay đổi trạng thái PORTB

1: có thay đồi0: không có thay đổi xảy ra trên PORTB

1.4.2.3.4 Thanh ghi cho phép ngắt ngoại vi 1:

Chú ý: Bit PEIE (INTCON<6>) phải được set để cho phép bất kì ngắt ngọai vi nào xảy ra.

Bit 7 PSPIE: bit cho phép ngắt đọc/ ghi Port song song

1: cho phép0: không cho phépBit 6 ADIE: bit cho phép ngắt chuyển đổi A/D

1: cho phép0: không cho phépBit 5 RCIE: bit cho phép ngắt nhận USART

1: cho phép0: không cho phépBit 4 TXIE: bit cho phép ngắt truyền USART

1: cho phép0: không cho phépBit 3 SSPIE: bit cho phép ngắt Port nối tiếp đồng bộ

1: cho phép 0: không cho phép

Trang 18

Bit 2 CCP1IE: bit cho phép ngắt module CCP1

1: cho phép ngắt0: không cho phépBit 1 TMR2IE: bit cho phép ngắt khi thanh ghi TMR2 bẳng thanh ghi PR2

1: cho phép0: không cho phépBit 0 TMR1IE: bit cho phép ngắt tràn TMR1

1: cho phép 0: không cho phép

1.4.2.3.4 Thanh ghi cờ của các ngắt ngoại vi 1:

Bit 7 PSPIF: cờ ngắt đọc ghi của Port song song

1: một hoạt động đọc/ghi đã diễn ra (phải xóa bằng phần mềm)0: không có hoạt động đọc/ghi

Bit 6 ADIF: cờ báo ngắt chuyển đổi A/D

1: một quá trình chuyển đổi A/D đã hoàn thành0: chuyển đổi A/D chưa hoàn tất

Bit 5 RCIF: cờ báo ngắt nhận USART

1: Buffer nhận USARt đầy0: Buffer nhận USART trống

Bit 4 TXIF: cờ báo ngắt phát USART

1: buffer truyền USART trống0: buffer truyền USART đầyBit 3 SSPIF: cờ báo ngắt port nối tiếp đồng bộ (ngắt SSP)

1: ngắt SSP xảy ra và phải được xóa bằng phần mềm trước khi trở lạichương trình chính từ chương trình phục vụ ngắt

0: không có nắgt xảy raBit 2 CCP1IF: cờ báo ngắt CCP1

0: không xảy ra thuật toán so sánh

Chế độ PWM: không sử dụng trog chế độ này

Bit 1 TMR2IF: cờ báo ngắt xảy ra khi giá trị trong thanh ghi TMR2 bằng trong

thanh ghi PR21: giá trị trong thanh ghi TMR2 bằng thanh ghi PR2 (phải được xóa bằngphần mềm)

0: giá trị trong thanh ghi TMR2 chưa bằng thanh ghi PR2Bit 0 TMR1IF: cờ báo tràn thanh ghi TMR1

Trang 19

1: thanh ghi TMR1 tràn (phải được xóa bắng phần mềm)0: thanh ghi TMR1 chưa tràn

1.4.2.3.5 Thanh ghi cho phép ngắt ngoại vi 2:

Chú ý: Bit PEIE (INTCON<6>) phải được set để cho phép bất kì ngắt ngoại vi nào xảy ra.

Bit 7,5,2,1 Unimplemented : read as ‘0’

Bit 6 CMIE: bi cho phép ngắt do bộ so sánh điện thế

1: cho phép0: không cho phépBit 4 EEIE: bi cho phép ngắt do ghi EEPROM

1: cho phép0: không cho phépBit 3 BCLIE: bit cho phép ngắt do xung đột bus

1: cho phép0: không cho phépBit 0 CCP2IE: cho phép ngắt d0 module CCP2

1: cho phép0: không cho phép

1.4.2.3.6 Thanh ghi cờ của các ngắt ngọai vi 2:

Bit 7,5,2,1 Unimplemented : read as ‘0’

Bit 6 CMIF: cờ báo ngắt do bộ so sánh

1: ngõ vào bộ so sánh đã thay đổi (phải được xóa bằng phần mềm)0: ngõ vào bộ so sánh không thay đổi

Bit 4 EEIF: cờ báo ngắt ghi EEPROM

1: ghi EEPROM hoàn tất (phải được xóa bằng phần mềm)0: ghi EEPROM chưa hoàn tất

Bit 3 BCLIF: cờ báo ngắt do xung đột bus

1: xung đột bus đã xuất hiện 0: không có xung đột bus xảy raBit 0 CCP2IF: cờ báo ngắt CPP2

Chế độ Capture (bắt giữ):

Trang 20

1: một sự bắt giữ thanh ghi TMR1 đã xảy ra (phải được xóa bằng phầnmềm)

0: không xảy ra capture thnh ghi TMR1

1.4.2.3.7 Thanh ghi điều khiển nguồn (Power control register):

Bit 7-2 Unimplemented : read as ‘0’

1.4.2.6 Địa chỉ trực tiếp và địa chỉ gián tiếp, thanh ghi INF và thanh ghi

FSR:

Thanh ghi INF không phải là một thanh ghi vật lí Nó chứa giá trị của thanh ghi có địachỉ nằm ở thanh ghi FSR

Ví dụ:

Thanh ghi tại địa chỉ 10h có giá trị 5Ah

Nếu ta đưa 10h vào thanh ghi FSR thì khi đọc thanh ghi INF ta sẽ có giá trị 5Ah

1.5Data EEPROM và Flash Program Memory:

EEPROM là bộ nhớ có khả năng đọc và ghi trong điều kiện làm việc bình thường(khi nguồn Vdd không đổi) Bộ nhớ này không được định địa chỉ trực tiếp trong bản

đồ bộ nhớ mà được định địa chỉ gián tiếp thông qua các thanh ghi chức năng đặc biệt:

1.6.1 Port A và thanh ghi TRISA:

Port A gồm 6 chân từ RA0 đến RA5(I/O pin).Chức năng I/O này được điều khiểnbởi thanh ghi TRIS A.Nếu là 1 thì là input, nếu 0 thì là output ) Việc đọc thanh ghi Port

A sẽ đọc trạng thái của các chân ở Port A Việc ghi giá trị vào thanh ghi Port A sẽ thayđổi trạng thái của các chân Port A

Riêng chân RA4 được tích hợp chức năng là chân cung cấp xung clockngoài cho Timer 0 (RA4/T0CKI) Những chân khác của Port A được đa hợp với

Trang 21

các chân ngõ vào Analog của ADC và chân ngõ vào điện thế so sánh của bộ sosánh Comparator.Hoạt động của những chân này được quy định bằng những bittương ứng trong các thanh ghi ADCCON1 và CMCON1 Khi các chân của Port Ađược sử dụng làm ngõ vào Analog thì các bit trong thanh ghi TRISA phải đượcset bằng 1.

1.6.2 Port B và thanh ghi TRISB:

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

Ba chân của Port B được đa hợp với chức năng In-Circuit Debugger và Low VoltageProgramming function: RB3/PGM, RB6/PGC, RB7/PGD

Mỗi chân Port B có một transistor kéo lên Vdd Chức năng này hoạt động khi bitRBPU (Option <7>) được xóa.Chức năng này sẽ tự động được xóa khi Port B đượcquy định là input

Bốn chân của Port B từ RB7 đến RB4 có chức năng ngắt khi trạng thái chân Port Bthay đổi (Khi Port B được quy định là output thì chức năng này không hoạt động Giátrị chân của Port được so sánh với giá trị đã được lưu trước đó, khi có sự sai lệchgiữa 2 giá trị này ngắt sẽ xảy ra với cờ ngắt RBIF (INTCON<0) sẽ bật lên Ngắt cóthể làm cho VĐK thoát khỏi trạng thái SLEEP

Bất cứ sự truy xuất nào trên Port B sẽ xóa trạng thái sai lệch, kết thúc ngắt vàcho phép xóa cờ ngắt RBIF

1.6.3 Port C và thanh ghi TRISC:

Port C gồm 8 chân từ chân RC0-RC7 Thanh ghi điều khiển xuất nhập tương ứng

là TRIS C.Bên cạnh đó Port C còn chứa chức năng của bộ so sánh,bộ Timer1,bộPWM,và các chuẩn giao tiếp I2C,SPI,SSP,USART

Các thanh ghi điều khiển liên quan đến PORT C:

PORTC(địa chỉ 07h) :chứa giá trị các pin trong PORTC TRISC(địa chỉ 87h) :điều khiển xuất nhập

1.6.4 Port D và thanh ghi TRISD:

Port D gồm 8 chân từ chân RD0-RD7,thanh ghi điều khiển xuất nhập tương ứng là TRISD Bên cạnh chức năng là port xuất nhập, Port D còn có thể hoạt động như một cổng song song bằng cách set bit PSPMODE (TRISE<4>), trong chế độ này buffer ngõ vào là TTL

1.6.5 Port E và thanh ghi TRISE

Port E có 3 chân RE0/RD/AN5, RE1/WR/AN6, RE2/CS/AN7 có thể được cấuhình như các chân xuất nhập thông thường

Các chân của Port E có thể trở thành cc1 chân điều khiển cho cổng song song củaVĐK khi bit PSPMODE (TRISE<4>) được set bằng 1 Trong chế độ này, người sửdụng phải đảm bảo các chân của Port E là ngõ vào

Ngoài ra các chân Port E còn có thể được cấu hình như các ngõ vào Analog, tại chế

độ này, khi đọc giá trị của các chân này sẽ cho ta giá trị là 0

Thanh ghi TRISE quy định chức năng xuất nhập của Port E ngay cả khi nó được sửdụng như các ngõ vào Analog Phải đảm bảo các chân này được quy định là ngõ vàotrong chế độ này

Trang 22

1.7 Timers:

1.7.1 Timer 0: Đây là một trong ba bộ đếm hoặc bộ định thời của vi điều khiển PIC16F877A.Timer 0 là bộ đếm 8 bit được kết hợp với bộ chia tần số(prescaler) 8 bit.Cấu trúc của Timer 0 cho phép ta lựa chọn xung clock tác động và cạnh tích cực của xung clock.Ngắt Timer 0 sẽ xuất hiện khi Timer 0 bị tràn.Bit TMR0IE là bit điều khiển của Timer 0 TMR0IE=1 cho phép ngắt Timer 0 tác động, TMR0IE=0 không cho phép ngắt Timer 0 tác động.

Muốn Timer 0 hoạt động ở chế độ Timer ta clear bit TOSC(OPTION_REG<5),khi đó giá trị TMR0 sẽ tăng theo chu kỳ xung đồng hồ (tần sốTimer 0 bằng ¼ tần số oscillator)

Ngắt Timer 0 xuất hiện khi TMR0 từ FFh trở về 00h.Thanh ghi TMR0 chophép ghi và xóa được giúp ta ấn định thời điểm ngắt Timer0 xuất hiện một cáchlinh động

Muốn Timer0 hoạt động ở chế độ counter ta set bit TOSC(OPTION_REG<5).Khi

đó xung clock tác động lên bộ đếm được lấy từ chân RA4/TOCK1.Bit TOSE(OPTION_REG<4) cho phép ta lựa chọn cạnh tác đông vào port đếm.Cạnh tác động sẽ làcạnh lên nếu TOSE=0 và cạnh tác động sẽ là cạnh xuống nếu TOSE=1

Khi thanh ghi TMR0 bị tràn ,bit TMR0IF(INTCON<2) sẽ được set.Đay chính

là cờ ngắt của Timer 0.Cờ ngắt này phải được xóa bằng chương trình trước khi bộ đếmthực hiện lại quá trình đếm

Ngắt Timer 0 không thể đánh thức vi điều khiển từ chế độ sleep

Bộ chia tần số (prescaler)được chia sẻ giữa Timer0 và

WDT(Watchdog Timer).Điều đó có ngĩa là nếu prescaler được sử dụng cho Timer0 thìWDT sẽ không có sự hộ trợ của prescaler và ngược lại.Prescaler được điều khiển bởithanh ghi OPTION_REG

Thanh ghi điều khiển Timer 1:

1 : cho phép dao động

Trang 23

0 : không cho phép dao độngBit 2 T1SYNC: bit lựa chọn đồng bộ hóa xung clock ngoài của Timer

1(Chú ý: bit này chỉ có tác dụng khi bit TMR1CS = 1)1: không đồng bộ hóa xung clock ngoại

0: đồng bộ hóa xung clock ngoại

Bit 1 TMR1CS: bit chọn nguồn xung clock cho Timer 1

1: chọn xung clock ngoài qua chân T1OSC/T1CKI ( tác động cạnhlên)

0: chọn xung clock nội (Fosc/4)Bit 0 TMR1ON: bit cho phép ngoặc ngưng Timer 1

1: cho phép0: không cho phép

1.7.1.1 Chế độ định thời trong hoạt động của Timer 1 :

Chế độ định thời được lựa chọn bằng cách xóa bit TMR1CS (T1CON<1>) Trongchế độ này, xung clock cung cấp cho Timer 1 là Fosc/4, bit đồng bộ T1SYNC(T1CON<2>) không có tác dụng vì xung clock nội đã luôn luôn được đồng bộ

1.7.1.2 Chế độ đếm

Timer 1 có thể hoạt động ở cả chế độ đồng bộ hoặc bất đồng bộ tùy thuộc vào việc càiđặt bit TMR1CS (T1CON<1>)

1.7.1.2.1 Đếm đồng bộ :

Chế độ này được lựa chọn bằng cách set bit TMR1CS và xóa bit T1SYNC Trong chế

độ này giá trị của Timer 1 sẽ tăng khi có xung cạnh lên trên chân T1OSI/RC1 ( nếu bitT1OSCEN được set) hoặc trên chân T1OSO (nếu bit T1OSCEN được xóa)

1.7.1.2.2 Đếm bất đồng bộ :

Nếu bit T1SYNC được set, xung clock ngoài sẽ không được đồng bộ hóa Bộ định thời

sẽ tiếp tục đếm trong suốt quá trình Sleep của VĐK và có khả năng tạo ra một ngắt khi bộđịnh thời tràn và làm VĐK thoát khỏi trạng thái ngủ

* Một số đặc điềm lưu ý khi đọc ghi vào Timer :

- Việc đọc thanh ghi TMR1H hoặc TMR1L trong khi bộ định thời đang chạy từmột nguồn xung clock ngoài không đồng bộ sẽ cho giá trị tức thời (không phải ngưngTimer lại) Tuy nhiên, phải chú ý rằng việc đọc Timer 1 sẽ phải bao gồm 2 lần đọc giá trị

8 bit, do đó có thể phát sinh vấn đề là Timer có thể bị tràn giữa 2 lần đọc

- Để ghi vào Timer tốt nhất chúng ta nên dừng Timer lại và ghi giá trị chúng tamong muốn Chúng ta có thể ghi giá trị váo khi Timer đang chạy nhưng việc đó có thểtạo ra một giá trị không như mong muốn

1.7.1.3 Dao động của Timer 1 :

Trang 24

Chúng ta có thể tạo một bộ dao động độc lập cho Timer 1 bằng cách sử dụngthạch anh có tần số tối đa 20Khz.Với bộ dao động này Timer có thể đếm ngay cả khiVĐK rơi vào trạng thái ngủ.

1.7.1.4 Ngắt Timer 1 :

Khi ngắt được cho phép, nó sẽ xảy ra khi Timer tràn từ giá trị FFFFh xuống0000h Khi xảy ra tràn, cờ báo ngắt TMR1IF sẽ bật lên, cờ này phải được xóa bằng phầnmềm trước khi thóat khỏi chương trình phục vụ ngắt trở về chương trình chính

Lưu ý : ngắt của Timer 1 ở chế độ định thời và chế độ đếm đồng bộ không làm cho VĐK thoát khỏi trạng thái ngủ, chỉ có ngắt ở chế độ đếm bất đồng bộ mới làm cho

VĐK thoát khỏi trạng thái ngủ

Các thanh ghi liên quan đến Timer 1 :

1.7.2Timer 2 :

1.7.2.1Giới thiệu :

Timer 2 là một bộ định thời 8 bit bao gồm hai bộ chia tần số prescaler vàpostcale.Timer 2 cung cấp thời gian hoạt động cho chế độ PWM nếu module CCP đượcchọn Thanh ghi TMR2 là môt thanh ghi có thê đọc và ghi được, nó bị xóa bởi bất cứ tácđông reset nào

Xung clock ngõ vào (Fosc/4) có các tùy chọn tỉ lệ là 1 :1, 1 :4, 1 :16, được lựachọn bằng các bit điều khiển T2CKPS1 : T2CKPS0 (T2CON<1 :0>)

Trang 25

Timer 2 có một thanh ghI khoảng thời gian 8 bit PR2, đây là một thanh ghi cókhả năng đọc được và ghi được Timer 2 sẽ tăng từ 00h đến khi bằng giá trị ở thanh ghiPR2 nó sẽ reset về 00h ở chu kỳ tăng tiếp theo.

Thanh ghi điều khiển T2CON

Bit 7 không sử dụng

Bit 6:3 TOUTPS3:TOUTPS0: bit chọn tỉ lệ ngõ ra của Timer 2

0000: 1:10001: 1:2

1111: 1:16F877ABit 2 TMR2ON: bit cho phép hoạt động của Timer 2

1: cho phép 0: không cho phép

Bit 1:0 T2CKPS1:T2CKPS0: bit chọn tỉ lệ xung clock của Timer 2

00 : prescaler 1

01 : prescaler 41x : prescaler 16

1.7.2.2 Bộ prescaler va postcaler :

Hai bộ đếm prescaler và postcaler sẽ bị xóa bởi một trong các nguyên nhân sau đây :

- Ghi một giá trị vào thanh ghi TMR2

- Ghi môt giá trị váo thanh ghi TCON2

- Bất cứ một reset thiết bị nào

Thanh ghi TMR2 không bị xóa khi thanh ghi TCON2 được ghi

Trang 26

1.8 Module CCP:

Giới thiệu :

Module CCP được xây dựng để hỗ trợ cho việc đo lường và điều khiển thời gianhoạ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 các tín hiệu có tần sốkhác nhau, điều khiển tốc độ động cơ DC…

Mỗi module CCP có môt thanh ghi 16F877A bit có thể hoạt động như:

- Một thanh ghi Capture 16F877A bit

- Một thanh ghi Compare 16F877A bit

- Một thanh ghi điểu khiển chu kỳ nhiệm vụ của bộ PWM

PIC16F877A có 2 module CCP là CCP1 và CCP2:

1.8.1 Module CCP1:

Thanh ghi CCPR1 bao gồm 2 thanh ghi 8 bit: CCPR1L và CCPR1H Thanh ghiCCP1CON điều khiển hoạt động cùa module CCP1 Các xung đặc biệt xảy ra bằng cácthuật toán so sánh và sẽ reset Timer 1

1.8.2 Module CCP2:

Thanh ghi CCPR2 bao gồm 2 thanh ghi 8 bit: CCPR2L và CCPR2H Thanh ghiCCP2CON điều khiển hoạt động cùa module CCP2 Các xung đặc biệt xảy ra bằng cácthuật toán so sánh sẽ reset Timer 1 và bắt đầu chuyển đổi ADC (nếu chuyển đổi ADCđược cho phép)

Thanh ghi điều khiển module CCP:

Trang 27

Bit 7,6 không sử dụng

Bit 5,4 DCxB1:DCxB0: bit 0 và bit 1 của chế độ PWM

Chế độ Capture và chế độ Compare : không sử dụngChế độ PWM: trong chế độ PWM có 10 bit dùng để định chu kỳ nhiệm vụcho PWM , đây là 2 bit trong số 10 bit đó, 8 bit còn lại nằm trong thanh ghiCCPRxL

Bit 3:0 CCPxM3:CCPxM0: các bit chọn chế đô cho module CCPx

0000: tắt tất cả các chức năng CCP0100: chế độ 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

1000: chế độ Compare, ban đầu ngõ ra CCP ở mức thấp, khi điều kiện cânbằ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ânbằng xuất hiện nó 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ằngxuất hiện (cờ CCPIF được set, chân CCP không đổi)

1011:chế độ Compare , sự kiện đặc biệt xảy ra (cờ CCPIF được set, chânCCP không đổi), CCP1 reset TMR1, CCP2 reset TMR1, bắt đầu chuyển đổi A/D(nếu module ADC được cho phép)

11xx:chế độ PWM

1.8.3 Capture:

Để module CCP hoạt động trong chế độ Capture thì Timer 1 phải thiết lập ở chế

đô định thời hoặc chế đô đếm đồng bộ, nếu không chế độ Capture sẽ không làm việc.Khichế độ Capture được sử dụng, chân CCP phải được mặc định là ngõ vào

Trong chế độ Capture, hai thanh ghi CCPRxH và CCPRxL sẽ ghi lại giá trị 16F877Abit của Timer 1 khi có môt sự kiện xuất hiện trên chân CCPx (giá trị trong Timer 1 không

bị reset) Một sự kiện được định nghĩa bởi:

- Bất cứ một xung cạnh xuống

- Bất cứ một xung cạnh lên

Trang 28

Khi thay đổi giá trị prescaler có thể gây ra một ngắt.Giá trị đếm prescaler sẽ không bịxóa nên sự Capture đầu tiên có thể không xuất phát từ giá trị 0 của bộ prescaler.

1.8.4 Compare:

Để module CCP hoạt động trong chế độ Compare thì Timer 1 phải thiết lập ở chế

đô định thời hoặc chế đô đếm đồng bộ, nếu không chế độ

Khi giá trị trong hai thanh ghi TMR2 và PR2 bằng nhau, ba tác vụ sau đây sẽ diễn ra:

- Thanh ghi TMR2 bị xóa

- Chân CCPx được set lên mức 1

- Giá trị Duty cycle ( Chu kỳ nhiệm vụ) từ thanh ghi CCPRxL sẽ chuyển sangthanh ghi CCPRxH

Lưu ý: bộ postcaler của Timer 2 không có tác dụng trong việc quyết định tần số PWM Bộ prescaler được kết hợp với thanh ghi TMR2 để tạo ra bộ đếm 10 bit tương ứng.

1.8.4.2 Chu kỳ nhiệm vụ của PWM:

Giá trị chu kỳ nhiệm vụ của PWM được quy định bằng 10 bit : 8 bit trong thanh ghiCCPRxL và 2 bit trong thanh ghi CCPxCON (DCxB1, DCxB0) Chu kỳ nhiệm vụ PWM

có thể được tính theo công thức sau:

Ton PWM = ( Giá trị của DCxB9:DcxB0) * Tosc * giá trị tỉ lệ tiền định TMR2 Giá trị DCxB9:DcxB0 có thể thay đổi tùy ý nhưng giá trị này sẽ không được tải vào

trong thanh ghi CCPRxH cho đến khi trạng thái cân bằng xảy ra giữa 2 thanh ghi PR2 vàTMR2 Trong chế độ PWM thanh ghi CCPRxH là thanh ghi chỉ đọc

Độ phân giải PWM có thể tính theo công thức sau:

Trang 29

1.8.4.3 Cài đặt hoạt động cho PWM:

Để cài đặt họat động cho chế độ PWM ta tiến hành các bước sau:

- Định chân CCPx là ngõ ra

- Thiết lập chu kỳ PWM bằng việc ghi vào thanh ghi PR2

- Thiết lập chu kỳ nhiệm vụ PWM bằng việc ghi giá trị vào các bit DCxB9:DCxB0

- Cài đặt giá trị tỉ lệ cho Timer 2 và cho phép Timer 2 hoạt động bằng cách ghi vàothanh ghi T2CON

- Cấu hình cho module CCP hoạt động trong chế độ PWM

1.8 Module MSSP (Master Synchronous Serial Port):

Giới thiệu

Module MSSP là một giao diện nối tiếp, hữu dụng cho việc giao tiếp vớicác thiết bị ngoại vi hoặc các VĐK khác.Những thiết bị ngoại vi này có thể làEEPROMs nối tiếp, thanh ghi dịch, điều khiển hiển thị hay bộ biến đổi ADC …

Module MSSP có thể hoạt động ở một trong hai chế độ:

- SPI ( Serial Peripheral Interface)

- I2C (Inter- Intergrated Circuit)

+ Full master Mode

+ Slave Mode ( with general address call)

Giao tiếp I2C cung cấp các chế đô sau đây trong phần cứng:

- Master mode

- Multi Master Mode

- Slave Mode

Thanh ghi điều khiển:

Module MSSP có 3 thanh ghi liên quan : thanh ghi trạng thái (SSPSTAT)

và hai thanh ghi điều khiển (SSPCON và SSPCON2) Việc sử dụng và cài đặt giátrị cho các thanh ghi này phụ thuộc vào việc Module MSSP hoạt động ở chế độnào

1.9.1 Chế độ SPI:

Ngày đăng: 27/07/2016, 14:34

HÌNH ẢNH LIÊN QUAN

1.3. SƠ ĐỒ KHỐI: - MẠCH ỔN ĐỊNH NHIỆT ĐỘ GIAO TIẾP VỚI MÁY TÍNH
1.3. SƠ ĐỒ KHỐI: (Trang 2)
Bảng A.3: Thông số kỹ thuật của cảm biến nhiệt họ LM35. - MẠCH ỔN ĐỊNH NHIỆT ĐỘ GIAO TIẾP VỚI MÁY TÍNH
ng A.3: Thông số kỹ thuật của cảm biến nhiệt họ LM35 (Trang 38)
Hình 4.1: Chân ra cổng Com DB9 - MẠCH ỔN ĐỊNH NHIỆT ĐỘ GIAO TIẾP VỚI MÁY TÍNH
Hình 4.1 Chân ra cổng Com DB9 (Trang 40)

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