Tải bản đầy đủ (.pdf) (29 trang)

thiết kế mạch đo điện áp dùng 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.74 MB, 29 trang )

ĐỒ ÁN 1

2

NHẬN XÉT CỦA GIÁO VIÊN
……………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………………
……………………………………………………
……………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………






Tp.HCM, Ngày…. tháng năm 2013

Giáo viên hướng dẫn
ĐỒ ÁN 1

3


MỤC LỤC
CHƯƠNG I. MỞ ĐẦU
1.1 Lời mở đầu 5
1.2 Nhiệm vụ đề tài 6
CHƯƠNG II. VI ĐIỀU KHIỂN PIC16F877A
2.1 GIỚI THIỆU VỀ PIC 7
2.2 SƠ LƯỢC VỀ VI ĐIỀU KHIỂN PIC 16F877A
2.2.1 Sơ đồ chân và chức năng các chân của PIC16F877A 7
2.2.2 Nhận xét 9
2.3 CẤU TRÚC PHẦN CỨNG CỦA PIC16F877A
2.3.1 Cấu trúc tổng quát 9
2.3.2 Sơ đồ khối 10
2.4 TỔ CHỨC BỘ NHỚ
2.4.1 Bộ nhớ chương trình 11
2.4.2 Bộ nhớ dữ liệu 11
2.5 CÁC CỔNG XUẤT NHẬP CỦA PIC16F877A
2.5.1 Port A 12
2.5.2 Port B 12
2.5.3 Port C 12
2.5.4 Port D 13
2.5.5 Port E 13
2.6 BỘ ĐỊNH THỜI CỦA PIC16F877A 13
2.7 MODULE ADC 14
2.8 MODULE CCP 15
ĐỒ ÁN 1

4

2.9 CÁC CHẾ ĐỘ RESET 15
2.10 NGẮT (INTERRUPT) 16

2.11 NGẮT INT 16
CHƯƠNG III. LIQUID CRYSTAL DISPLAY (LCD)
3.1 GIỚI THIỆU VỀ LCD 16x2:
3.1.1 Sơ đồ chân và sơ đồ nguyên lý của LCD 17
3.1.2. Chức năng của các chân LCD 18
3.2 HIỂN THỊ KÝ TỰ TRÊN LCD
3.2.1 Nguyên tắc hiển thị 19
3.2.2 Mã lệnh của LCD 20
3.2.3 Một số mã lệnh cơ bản 21
CHƯƠNG IV. THIẾT KẾ VÀ THI CÔNG

4.1 Kit phát triển pic16f877a
4.1.1 Mạch nguồn 22
4.1.2 Main Pic và modul phát triển 23
4.2 Mạch đo điện áp DC từ 0-10v
4.2.1 Mạch nguyên lí 24
4.2.2 Code 25
PHẦN V: ĐÁNH GIÁ SẢN PHẨM VÀ MỞ RỘNG ĐỀ TÀI 29
TÀI LIỆU THAM KHẢO 30
ĐỒ ÁN 1

5

Lời mở đầu
Ngày nay cùng với sự tiến bộ của khoa học kỹ thuật, đặc biệt là ngành Kỹ thuật
Điện tử. Đời sống xã hội ngày càng phát triển cao dựa trên những ứng dụng của khoa
học vào đời sống. Vì vậy mà những công nghệ điện tử mang tính tự động ngày càng
được ứng dụng rộng rãi. Trong đó có sự đóng góp không nhỏ của kỹ thuật vi điều
khiển. Các bộ vi điều khiển đang đựơc ứng dụng rộng rãi và thâm nhập ngày càng
nhiều trong các lĩnh vực kỹ thuật và đời sống xã hội. Hầu hết là các thiết bị được điều

khiển tự động từ các thiết bị văn phòng cho đến các thiết bị trong gia đình đều dùng
các bộ vi điều khiển nhằm đem lại sự tiện ghi cho con người trong thời đại công
nghiệp hoá, hiện đại hoá.
Điện áp là một đại lượng rất quan trọng trong kĩ thuật điện–điện tử, mốn điều
khiển một thiết bị hay một linh kiện điện tử nào đó ta phải quan tâm đến điện áp để
điều khiển nó đầu tiên. Thị trường đã sản xuất ra loại đồng hồ cơ ,tuy có thể đo điện
áp nhưng ko thực sự chính xác, do vậy việc chế tạo ra một loại thiết bị đo có độ chính
xác cao là rất cần thiết.

Sau thời gian học tập rèn luyện tại trường Đại học Bách Khoa Hồ Chí Minh,
chuyên ngành Điện tử - Viễn thông, được sự đồng ý của GVHD Võ Thị Thu Hồng em
tiến hành thực hiện đồ án 1: “
THIẾT KẾ VÀ THI CÔNG KIT PHÁT
TRIỂN PIC 16F877A, MẠCH ĐO ĐIỆN ÁP MỘT CHIỀU TỪ 0-10V
HIỂN THỊ LCD
”.

Với mong muốn đáp ứng được yêu cầu đặt ra trong việc nghiên cứu, đo lường về
điện áp một chiều. Từ đó có thể điều khiển và sử lý điện một cách chính xác hơn.

ĐỒ ÁN 1

6


1.2 NHIỆM VỤ CỦA ĐỀ TÀI

TÊN ĐỀ TÀI: “THIẾT KẾ VÀ THI CÔNG KIT PHÁT
TRIỂN PIC 16F877A, MẠCH ĐO ĐIỆN ÁP MỘT CHIỀU TỪ 0-
10V HIỂN THỊ LCD”

1. Dữ liệu cho trước
Các tài liệu tham khảo, tài liệu chuyên môn.
Chip vi điều khiển 16f877a.
2
. Nội dung cần hoàn thành

- Phần lí thuyết:
1. Tính cấp thiết của đề tài.
2. Giới thiệu chung về vi điều khiển.
3. Thiết kế mạch điều khiển.
4. Lập lưu đồ thuật toán và viết chương trình điều khiển.
5. Quyển thuyết minh và các bản vẽ mô tả đầy đủ nội dung
của đề tài.
- Sản phẩm:
- Hoạt động chính xác và ổn định.
- Đạt yêu cầu kĩ thuật và mỹ thuật.

-Mục đích: tạo được thiết bị đo điện áp có độ chính xác cao

ĐỒ ÁN 1

7

CHƯƠNG II: VI ĐIỀU KHIỂN PIC16F877A

2.1 GIỚI THIỆU VỀ PIC
PIC là tên viết tắt của “Programmable Intelligent computer” do hãng General
Instrument đặt tên cho vi điều khiển đầu tiên của họ. Hãng Microchip tiếp tục
phát triển sản phẩm này và cho đến ngày nay đã tạo ra gần 100 loại sản phẩm
khác nhau.

PIC16F877A là dòng PIC khá phổ biến, đầy đủ tính năng phục vụ cho hầu hết
các ứng dụng thực tế. Đây là dòng PIC khá dễ cho người mới làm quen với PIC
để phục vụ cho việc học tập và tạo nền tảng cho họ vi điều khiển PIC của mình.

2.2 SƠ LƯỢC VỀ VI ĐIỀU KHIỂN PIC 16F877A
2.2.1 Sơ đồ chân và chức năng các chân của PIC16F877A

 Chân / (1): Có 2 chức năng
o  : ngõ vào reset tích cực ở mức thấp.
o Vpp: ngõ vào nhận điện áp lập trình khi lập trình cho PIC.
 Chân RA0/AN0(2), RA1/AN1(3), RA2/AN2(4): có 2 chức năng
o RA0, RA1, RA2: xuất/ nhập số.
o AN0, AN1, AN2: ngõ vào tương tự của kênh thứ 0,1,2.
ĐỒ ÁN 1

8

 Chân RA2/AN2/VREF-/CVREF+(4): xuất nhập số/ ngõ vào tương tự của
kênh thứ 2/ ngõ vào điện áp chuẩn thấp của bộ AD/ ngõ vào điện áp chẩn cao của
bộ AD.
 Chân RA3/AN3/VREF+(5): xuất nhập số/ ngõ vào tương tự kênh 3/ ngõ vào
điện áp chuẩn (cao) của bộ AD.
 Chân RA4/TOCK1/C1OUT(6): xuất nhập số/ ngõ vào xung clock bên ngoài
cho Timer 0/ ngõ ra bộ so sánh 1.Chân RA5/AN4/

/ C2OUT(7): xuất nhập số/ ngõ
vào tương tự kênh 4/ ngõ vào chọn lựa SPI phụ/ ngõ ra bộ so sánh 2.
 Chân RE0/ 

/AN5(8): xuất nhập số/ điều khiển port song song/ ngõ vào

tương tự 5.
 Chân RE1/

/AN6(9): xuất nhập số/ điều khiển ghi port song song/ ngõ vào
tương tự kênh thứ 6.
 Chân RE2/ 

/AN7(10): xuất nhấp số/ Chân chọn lụa điều khiển port song
song/ ngõ vào tương tự kênh thứ 7.
 Chân OSC1/CLK1(13): ngõ vào kết nối với dao động thạch anh hoặc ngõ ào
nhận xung clock từ bên ngoài.
 Chân OSC2/CLK2(14): ngõ ra dao động thạch anh hoặc ngõ ra cấp xung
clock.
 Chân RC0/T1OCO/T1CKI(15): xuất nhập số/ ngõ vào bộ giao động Timer1/
ngõ vào xung clock bên ngoài Timer1.
 Chân RC1/T1OSI/CCP2(16) : xuất nhập số/ ngõ vào bộ dao động Timer1/
ngõ vào Capture2, ngõ ra compare2, ngõ ra PWM2.
 Chân RC2/CCP1(17): xuất nhập số/ ngõ vào Capture1, ngõ ra compare1, ngõ
ra PWM1.
 Chân RC3/SCK/SCL(18): xuất nhập số/ ngõ vào xung clock nối tiếp đồng
bộ, ngõ ra chế độ SPI./ ngõ vào xung clock nối tiếp đồng bộ, ngõ ra của chế
độ I2C.
 Chân RD0-7/PSP0-7(19-30): xuất nhập số/ dữ liệu port song song.
 Chân RC4/SDI/SDA(23): xuất nhập số/ dữ liệu vào SPI/ xuất nhập dữ liệu
I2C.
 Chân RC5/SDO(24): xuất nhập số/ dữ liệu ra SPI.
 Chân RC6/TX/CK(25): xuất nhập số/ truyền bất đồng bộ USART/ xung
đồng bộ USART.
 Chân RC7/RX/DT(26): xuất nhập số/ nhận bất đồng bộ USART.
 Chân RB0/INT (33): xuất nhập số/ ngõ vào tín hiệu ngắt ngoài.

 Chân RB1(34), RB2(35): xuất nhập số.
ĐỒ ÁN 1

9

 Chân RB3/PGM(36): xuất nhập số/ cho phép lập trình điện áp thấp ICSP.
 Chân RB4(37), RB5(38): xuất nhập số.
 Chân RB6/PGC(39): xuất nhấp số/ mạch gỡ rối và xung clock lập trình ICSP.
 Chân RB7/PGD(40): xuất nhập số/ mạch gỡ rối và dữ liệu lập trình ICSP.
2.2.2 Nhận xét
 PIC16F877A có 40 chân.
 40 chân chia thành 5 PORT, 2 chân cấp nguồn, 2 chân GND, 2 chân thạch anh
và 1 chân dùng để RESET vi điều khiển.
 5 PORT của PIC16F877A gồm:
o PORT B: 8 chân
o PORT C: 8 chân
o PORT D: 8 chân
o PORT A: 6 chân
o PORT E: 3 chân
 Mỗi chân của PIC16F877A có 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.
2.3 CẤU TRÚC PHẦN CỨNG CỦA PIC16F877A
2.3.1 Cấu trúc tổng quát
 8K Flash Rom
 368x8 bytes Ram
 256 bytes EFPROM
 5 PORT vào ra với tín hiệu điều khiển độc lập
 2 bộ định thời Timer0 và Timer2 8 bit
 1 bộ định thời Timer1 16 bit có thể hoạt động ở chế độ tiết kiệm năng lượng với

nguồn xung clock ngoài
 2bộ Capture/Compare/PWM
 1 bộ ADC
 2 bộ so sánh tương tự
 1 bộ định thời giám sát (Watch Dog Timer)
 1 cổng song song 8 bit với tín hiệu điều khiển
 1 cổng nối tiếp
ĐỒ ÁN 1

10

 Nguồn ngắt
 Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
o Bộ nhớ flash với khả năng ghi xóa được 100.000 lần.
o Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần.
o Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm.
o Khả năng tự nạp chương trình với sự điều khiển của phần mềm.
o Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial
Programming) thông qua 2 chân.
o Watchdog Timer với bộ dao động trong.
o Chức năng bảo mật mã chương trình.
o Chế độ Sleep.
o Có thể hoạt động với nhiều dạng Oscillator khác nhau.
2.3.2 Sơ đồ khối

ĐỒ ÁN 1

11

 Khối ALU–Arithmetic Logic Unit.

 Khối bộ nhớ chứa chương trình–Flash Program Memory.
 Khối bộ nhớ chứa dữ liệu EPROM–Data EPROM.
 Khối bộ nhớ file thanh ghi RAM–RAM file Register.
 Khối giải mã lệnh và điều khiển–Instruction Decode Control.
 Khối thanh ghi đặc biệt.
 Khối ngoại vi Timer.
 Khối giao tiếp nối tiếp.
 Khối chuyển đổi tín hiệu tương tự sang số–ADC.
 Khối các port xuất nhập.
2.4 TỔ CHỨC BỘ NHỚ
2.4.1 Bộ nhớ chương trình
Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dung
lượng bộ nhớ 8K word (1 word = 14 bit) và được phân thành nhiều trang (từ
page 0 đến page 3). Như vậy bộ nhớ chương trình có khả năng chứa được
8*1024 = 8192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lượng 1 word. Để
mã hóa được địa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương trình có
dung lượng 13 bit (PC<12:0>).
2.4.2 Bộ nhớ dữ liệu
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều bank.
Đối với PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank. Mỗi bank có dung
lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệt SFG (Special
Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung
GPR (General Purpose Register) nằm ở vùng địa chỉ còn lại trong bank. Các thanh
ghi SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ở
tất cà các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm
giảm bớt lệnh của chương trình.
2.5

CÁC CỔNG XUẤT NHẬP CỦA PIC16F877A


Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA,
PORTB, PORTC, PORTD và PORTE. Cấu trúc và chức năng của từng cổng xuất
nhập sẽđược đề cập cụ thể trong phần sau.

ĐỒ ÁN 1

12

2.5.1 Port A

 PORTA (RPA) bao gồm 6 I/O pin. Đây là các chân “hai chiều”
(bidirectional pin), nghĩa là có thể xuất và nhập được. Chức năng I/O này
được điều khiển bởi thanh ghi TRISA (địa chỉ 85h). Muốn xác lập chức
năng của một chân trong PORTA là input, ta “set” bit điều khiển tương
ứng với chân đó trong thanh ghi TRISA và ngược lại, muốn xác lập chức
năng của một chân trong PORTA là output, ta “clear” bit điều khiển
tương ứng với chân đó trong thanh ghi TRISA. Thao tác này hoàn toàn
tương tự đối với các PORT và các thanh ghi điều khiển tương ứng TRIS
(đối với PORTA là TRISA, đối với PORTB là TRISB, đối với PORTC là
TRISC, đối với PORTD là TRISD và đối với PORTE là TRISE).
 Bên cạnh đó PORTA còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vào
analog ngõ vào xung clock của Timer0 và ngõ vào của bộ giao tiếp
MSSP (Master Synchronous Serial Port). Đặc tính này sẽ được trình bày
cụ thể trong phần sau.
 Các thanh ghi SFR liên quan đến PORTA bao gồm:
o PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA.
o TRISA (địa chỉ 85h) : chứa giá trị các pin trong PORTA.
o CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh.
o CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sánh điện áp.
o ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC.

2.5.2 Port B

 PORTB (RPB) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng
là TRISB. Bên cạnh đó một số chân của PORTB còn được sử dụng trong
quá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác
nhau. PORTB còn liên quan đến ngắt ngoại vi và bộ Timer0. PORTB còn
được tích hợp chức năng điện trở kéo lên được điều khiển bởi chương
trình.
 TRISB (địa chỉ 86h,186h) : điều khiển xuất nhập
 OPTION_REG (địa chỉ 81h, 181h) : điều khiển ngắt ngoại vi và bộ
Timer0.
2.5.3 Port C
 PORTC (RPC) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng
là TRISC. Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so
ĐỒ ÁN 1

13

sánh, bộ Timer1, bộPWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP,
USART.
 Các thanh ghi điều khiển liên quan đến PORTC:
o PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC.
o TRISC (địa chỉ 87h) : điều khiển xuất nhập.
2.5.4 Port D
 PORTD (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập
tương ứng là TRISD. PORTD còn là cổng xuất dữ liệu của chuẩn giao
tiếp PSP (Parallel Slave Port).
 Các thanh ghi liên quan đến PORTD bao gồm:
o Thanh ghi PORTD : chứa giá trị các pin trong PORTD.
o Thanh ghi TRISD : điều khiển xuất nhập

2.5.5 Port E
 PORTE (RPE) gồm 3 chân I/O. Thanh ghi điều khiển xuất nhập
tương ứng là TRISE. Các chân của PORTE có ngõ vào analog. Bên cạnh
đó PORTE còn là các chân điều khiển của chuẩn giao tiếp PSP.
 Các thanh ghi liên quan đến PORTE bao gồm:
o PORTE : chứa giá trị các chân trong PORTE.
o TRISE : điều khiển xuất nhập và xác lập các thông số cho chuẩn
giao tiếp PSP.
o ADCON1 : thanh ghi điều khiển khối ADC.

2.6 BỘ ĐỊNH THỜI CỦA PIC16F877A

 PIC16F877A có tất cả 3 Timer: Timer0 (8 bit), Timer1 (16 bit), Timer2 (8
bit).
 Timer0 và Timer2 là bộ đếm 8 bit (giá trị đếm tối đa là FFh), trong khi
Timer1 là bộ đếm 16 bit (giá trị đếm tối đa là FFFFh).
 Timer0, Timer1 và Timer2 đều có hai chế độ hoạt động là timer và counter.
Xung clock có tần số bằng ¼ tần số của oscillator. Xung tác động lên Timer0
được hỗ trợ bởi prescaler và có thể được thiết lập ở nhiều chế độ khác
nhau (tần số tác động, cạnh tác động) trong khi các thông số của xung tác
động lên Timer1 là cố định. Timer2 được hỗ trợ bởi hai bộ chia tần số
ĐỒ ÁN 1

14

prescaler và postcaler độc lập, tuy nhiên cạnh tác động vẫn được cố định là
cạnh lên.
 Timer1 có quan hệ với khối CCP, trong khi Timer2 được kết nối với khối
SSP. Một vài so sánh sẽ giúp ta dễ dàng lựa chọn được Timer thích hợp cho
ứng dụng.

2.7 MODULE ADC


 ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu giữa hai dạng
tương tự và số. PIC16F877A có 8 ngõ vào analog (RA4:RA0 và RE2:RE0).
Hiệu điện thế chuẩn VREF có thể được lựa chọn là VDD, VSS hay hiệu
điện thể chuẩn được xác lập trên hai chân RA2 và RA3. Kết quả chuyển đổi
từ tín tiệ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 (ADCON0<2>) được xóa về 0 và cờ ngắt ADIF
được set.
 Module ADC bao gồm 4 thanh ghi:
o Thanh ghi chứa byte cao của kết quả ADRESH
o Thanh ghi chứa byte thấp của kết quả ADRESL
o Thanh ghi chứa các bit điều khiển ASCON0
 Quy 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:
o 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)
o Chọn kênh chuyển đổi AD (thanh ghi ADCON0).
o Chọn xung clock cho kênh chuyển đổi AD (thanh ghi ADCON0).
o 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
o Clear bit ADIF.
o Set bit ADIE.
o Set bit PEIE.
o 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 / (ADCON0).
5. Đợi cho tới khi quá trình chuyển đổi hoàn tất:
o Kiểm tra bit Nếu / =0, quá trình chuyển đổi đã hoàn tất.
ĐỒ ÁN 1

15

o Kiểm tra cờ ngắt.
6. Đọc kết quả chuyển đổi và xóa cờ ngắt, set bit / (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.
 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.
 Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm:
o INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt
(các bit GIE, PEIE).
o PIR1 (địa chỉ 0Ch): chứa cờ ngắt AD (bit ADIF).
o 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.
o ADCON0 (địa chỉ 1Fh) và ADCON1 (địa chỉ 9Fh): xác lập các thông
số cho bộ chuyển đổi AD.
o PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): liên quan đến các ngõ
vào analog ở PORTA.
o PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h): liên quan đến các ngõ
vào analog ở PORTE.

2.8 MODULE CCP

 (Capture/Compare/PWM) bao gồm các thao tác trên các xung đếm cung cấp

bởi các bộ đếm Timer1 và Timer2. PIC16F877A được tích hợp sẵn hai khối
CCP : CCP1 và CCP2. Mỗi CCP có một thanh ghi 16 bit
(CCPR1H:CCPR1L và CCPR2H:CCPR2L), pin điều khiển dung cho
khối CCPx là RC2/CCP1 và RC1/T1OSI/CCP2. Các chức năng của CCP
bao gồm:
o Capture.
o So sánh (Compare).
o Điều chế độ rộng xung PWM (Pulse Width Modulation).

2.9 CÁC CHẾ ĐỘ RESET
ĐỒ ÁN 1

16

 

reset: Khi pin 

ở mức logic thấp, vi điều khiển sẽ được reset.
2.10 NGẮT (INTERRUPT)

 PIC16F877A có đến 15 nguồn tạo ra hoạt động ngắt được điều khiển bởi thanh
ghi INTCON (bit GIE). Bên cạnh đó mỗi ngắt còn có một bit điều khiển và cờ
ngắt riêng. Các cờ ngắt vẫn được set bình thường khi thỏa mãn điều kiện ngắt
xảy ra bất chấp trạng thái của bit GIE, tuy nhiên hoạt động ngắt vẫn phụ thuộc
vào bit GIE và các bit điều khiển khác. Bit điều khiển ngắt RB0/INT và TMR0
nằm trong thanh ghi INTCON, thanh ghi này còn chứa bit cho phép các ngắt
ngoại vi PEIE. Bit điều khiển các ngắt nằm trong thanh ghi PIE1 và PIE2. Cờ
ngắt của các ngắt nằm trong thanh ghi PIR1 và PIR2.
 Đối với các ngắt ngoại vi như ngắt từ chân INT hay ngắt từ sự thay đổi trạng

thái các pin của PORTB (PORTB Interrupt on change), việc xác định ngắt nào
xảy ra cần 3 hoặc 4 chu kì lệnh tùy thuộc vào thời điểm xảy ra ngắt.

2.11 NGẮT INT

 Ngắt này dựa trên sự thay đổi trạng thái của pin RB0/INT. Cạnh tác động gây ra
ngắt có thể là cạnh lên hay cạnh xuống và được điều khiển bởi bit INTEDG
(thanh ghi OPTION_REG <6>). Khi có cạnh tác động thích hợp xuất hiện tại pin
RB0/INT, cờ ngắt INTF được set bất chấp trạng thái các bit điều khiển GIE và
PEIE. Ngắt này có khả năng đánh thức vi điều khiển từ chế độ sleep nếu bit cho
phép ngắt được set trước khi lệnh SLEEP được thực thi.
 NGẮT DO SỰ THAY ĐỔI TRẠNG THÁI CÁC PIN TRONG PORT B.
Các pin PORTB<7:4> được dùng cho ngắt này và được điều khiển bởi bit RBIE
(thanh ghi INTCON<4>). Cờ ngắt của ngắt này là bit RBIF (INTCON<0>).
ĐỒ ÁN 1

17

CHƯƠNG III
LIQUID CRYSTAL DISPLAY (LCD)
3.1 GIỚI THIỆU VỀ LCD 16x2:
3.1.1 SƠ ĐỒ CHÂN VÀ SƠ ĐỒ NGUYÊN LÝ CỦA LCD

Sơ đồ chân
:

ĐỒ ÁN 1

18



Sơ đồ nguyên lí:


3.1.2 Chức năng của các chân LCD:
ĐỒ ÁN 1

19

3.2 HIỂN THỊ KÝ TỰ TRÊN LCD
3.2.1 Nguyên tắc hiển thị
 Một chương trình hiển thị ký tự trên LCD gồm các bước sau:
o Xóa màn hình.
o Đặt chế độ hiển thị.
o Đặt vị trí con trỏ (nơi bắt đầu hiển thị).
o Hiển thị ký tự.
 Chú ý:
o 2 bước cuối có thể lặp lại nhiều lần nếu cần hiển thị
nhiều ký tự.
o Mỗi khi thực hiện ghi lệnh hoặc ghi dữ liệu hiển thị lên
LCD cần phải kiểm tra cờ bận trước. Vì vậy cần phải chủ động
phân phối thời gian khi viết lệnh cho LCD (ví dụ như khi xóa màn
hình thì sau 2ms mới dược ra lệnh khác vì thời gian xóa màn hình
là 1,64ms). Chế độ hiển thị mặc định sẽ là hiển thị dịch và vị trí
con trỏ là đầu dòng thứ nhất.


ĐỒ ÁN 1

20


3.2.2 Mã lệnh của LCD:

ĐỒ ÁN 1

21

3.2.3 Một số mã lệnh cơ bản:

ĐỒ ÁN 1

22

CHƯƠNG IV: THIẾT KẾ VÀ THI CÔNG


4.1 KIT PHÁT TRIỂN PIC16F877A:
4.1.1 Mạch nguồn:
 Nguồn cung cấp cho tất cả các khối là 5V_DC.
 Cấp nguồn 12V_AC tử biến áp khi qua cầu diode sẽ được nắn tương đối
phẳng.
 Tụ C1 có chức năng làm phẳng điện áp, CS2, C2 và CS4 có chức năng
triệt các xung gai.
 IC ổn áp 7805 có chức năng ổn định điện áp chuẩn là 5V_DC.
 RS1 và RS2 là điện trở hàn dòng cho LED đơn.

ĐỒ ÁN 1

23


4.1.2 Main Pic và các modul phát triển:
ĐỒ ÁN 1

24


ĐỒ ÁN 1

25

4.2 MẠCH ĐO ĐIỆN ÁP DC TỪ 0-10V:
4.2.1 Mạch nguyên lí:
Sơ đồ khối:
- Khối ADC, khối xử lí: Pic 16f887
- Khối hiển thị :LCD 16x2
- Khối nguồn: mạch nguồn 5v
- Điện áp đo: nguồn dc thay đổi từ 0-10v


Điện áp đo
Khối sử lý

Khối ADC
Nguồn
Khối hiển
thị
Mạch phân
áp
ĐỒ ÁN 1


26

 R6, R7 ta chọn giá trị 1M, mạch phân áp vô kênh AN0. Vì R6,R7 bằng nhau nên
ta có điện áp vào kênh ADC0 bằng ½ trị giá thực nên khi xử lí để hiện thị ra
LCD ta cần nhân 2 giá trị đọc được.
4.2.2 Code
 Dùng CCS để viết code C
Code chương trình:
//chuong trinh doc gia tri hien thi dien ap(0-10v) len LCD
#include <16f877A.h>
#device ADC=8
#fuses nowdt,noprotect,nolvp
#use delay(clock=4000000)
#use fast_io(e)
#use fast_io(c)
#use fast_io(a)
#define RS pin_E0
#define RW pin_E1
#define EN pin_E2

//Cac chuong trinh con cua LCD
void write_com(int8 data)
{
output_c(data);
output_bit(EN,1);
output_bit(RS,0);//mode=0=>comand/mode=1=>data
output_bit(RW,0);//cho phep viet lenh
delay_ms(1);
output_bit(EN,0);
delay_ms(1);

}

void write_data(data)
{
output_c(data);
output_bit(EN,1);
output_bit(RS,1);//mode=0=>comand/mode=1=>data
output_bit(RW,0);//cho phep viet lenh

×