Tải bản đầy đủ (.doc) (86 trang)

Báo cáo đồ án đọc nhiệt độ hiển thị lên LCD

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.58 MB, 86 trang )


Với sự phát triển không ngừng của khoa học công nghệ, cuộc sống con người
ngày càng trở nên tiện nghi và hiện đại hơn. Điều đó đem lại cho chúng ta nhiều giải
pháp tốt hơn, đa dạng hơn trong việc xử lý những vấn đề tưởng chừng như rất phức tạp
gặp phải trong cuộc sống. Việc ứng dụng các thành tựu khoa học kỹ thuật hiện đại
trong tất cả các lĩnh vực đã và đang rất phổ biến trên toàn thế giới, thay thế dần những
phương thức thủ công , lạc hậu và ngày càng được cải tiến hiện đại hơn, hoàn mỹ hơn.
Cùng với sự phát triển chung đó, nước ta cũng đang mạnh mẽ tiến hành công
cuộc công nghiệp hóa và hiện đại hóa đất nước để theo kịp sự phát triển của các nước
trong khu vực và trên thế giới. Trong đó lĩnh vực điện tử đang ngày càng đóng vai trò
quan trọng trong việc phát triển kinh tế và đời sống con người. Sự phổ biến của nó
đóng góp không nhỏ tới sự phát triển của tất cả các ngành sản xuất, giải trí, trong
những năm gần đây đặc biệt trong lĩnh vực tự động nhất là nhiệt độ, nó đã có sự phát
triển mạnh mẽ với nhiều hình thức, phương pháp tiếp cận, chia sẻ thông tin hiện đại và
toàn diện hơn.
Với lòng đam mê, yêu thích của mình trong lĩnh vực này, nhóm đã quyết định
chọn đề tài “ĐỌC NHIỆT ĐỘ HIỂN THỊ LÊN LCD” làm đề tài môn học.
Trong thời gian thực hiện đề tài cộng với kiến thức còn nhiều hạn chế, nên trong
cuốn đồ án này không tránh khỏi những thiếu sót, nhóm thực hiện rất mong được sự
đóng góp ý kiến của thầy cô và các bạn sinh viên.
Nhóm sinh viên thực hiện đề tài
LỜI CẢM ƠN
Trong suốt khóa học tại XXX, với sự giúp đỡ của quý thầy cô và giáo viên
hướng dẫn về mọi mặt từ nhiều phía và nhất là trong thời gian thực hiện đề tài,
nên đề tài đã được hoàn thành đúng thời gian qui định. Nhóm thực hiện xin chân
thành cảm ơn đến :
Quí thầy cô trong khoa Điện tử -Tin học đã giảng dạy những kiến thức
chuyên môn làm cơ sở để thực hiện tốt đồ án môn học và đã tạo điều kiện thuận
lợi cho chúng em hoàn tất đồ án môn học này.
Đặc biệt, Thầy XXX ,giáo viên hướng dẫn đề tài đã nhiệt tình giúp đỡ và


cho nhóm thực hiện những lời chỉ dạy quý báu, giúp nhóm thực hiện định
hướng tốt trong khi thực hiện đề tài.
Tất cả bạn bè đã giúp đỡ và động viên trong suốt quá trình làm đề tài.
TP.HCM Ngày 29 Tháng 5 năm 2011

Nhóm sinh viên thực hiện
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
o0o


















Tp. Hồ Chí Minh, ngày… tháng …năm 2010
Giảng viên hướng dẫn
NGUYỄN TRỌNG KHANH
c

CHƯƠNG 1:CHƯƠNG DẪN NHẬP
I) ĐẶT VẤN ĐỀ :
Trong công nghiệp và trong đời sống có rất nhiều yếu tố ảnh hưởng đến quá trình sản
xuất và ảnh hưởng đến con người. Trong đó nhiệt độ là yếu tố thường được đề cập đến
nhiều nhất. Vì vậy sự ra đời của các mạch điện tử đo nhiệt độ là rất cần thiết. Với sự
phát triển của khoa học kỹ thuật, vi điều khiển ra đời đã giúp cho chúng ta có thể dễ
dàng thiết kế các mạch đo nhiệt độ với độ chính xác cao, đáng tin cậy… mà chi phí
không cao
II) GIỚI HẠN ĐỀ TÀI :
Với quy mô là đồ án tốt môn học, nên nhóm chúng em đã cố gắng hết sức làm
những gì mà giảng viên yêu cầu, nhưng do kiến thức còn hạn chế nên chúng em chỉ
thực hiện được những yêu cầu sau :
1. Hiển thị nhiệt độ lên LCD
2. Nhập thông số cài đặt nhiệt độ từ nút nhấn
3. Báo động khi nhiệt độ quá mức cho phép.
III) MỤC ĐÍCH NGHIÊN CỨU :
Mục đích trước hết khi thực hiện đề tài này là để hoàn tất chương trình môn học để đủ
điều kiện hoàn thành yêu cầu của môn học. Cụ thể khi nghiên cứu đề tài là chúng em
muốn phát huy những thành quả ứng dụng của vi điều khiển để váo một mạch thực tế.
Nó còn là kinh nghiệm cho chúng em tiến đên đồ án tốt nghiệp sắp tới.
Ngoài ra quá trình thực hiện đề tài là một cơ hội để chúng em tự kiểm tra lại những
kiến thức đã học ở trường. Đồng thời phát huy tính sáng tạo, khả năng giải những vấn
đề do nhu cầu đặt ra
IV) ĐỐI TƯỢNG NGHIÊN CỨU:
1.Các phương án điều khiển và xử lý dữ liệu
2.Tìm hiểu về vi xử lý PIC16F877A
3.Tìm hiểu về LCD
4.Tìm hiểu về cảm biến nhiệt độ LM35
5. Ứng dụng viết chương trình xử lí
CHƯƠNG 2 :

GIỚI THIỆU VỀ CÁC LINH KIỆN
2.1) Giới thiệu về PIC:
2.1.1) Sơ lược về vi điều khiển PIC 16F877A:
• Sơ đồ chân :
Hình 2.1 Sơ đồ chân PIC 16F877A
• Sơ đồ nguyên lý:
Hình 2.2 Sơ đồ nguyên lý PIC 16F877A
• Nhận xét:
Từ sơ đồ chân và sơ đồ nguyên lý ở trên, ta rút ra các nhận xét ban đầu như sau :
 PIC16F877A có tất cả 40 chân
 40 chân trên được chia thành 5 PORT, 2 chân cấp nguồn, 2
chân GND, 2 chân thạch anh và một chân dùng để RESET vi
điều khiển.
 5 port của PIC16F877A bao gồm :
 PORTB : 8 chân
 PORTC : 8 chân
 PORTD : 8 chân
 PORTA : 6 chân
 PORT E : 3 chân.
Mỗi chân của vi điều khiển PIC 16F877A có một chức năng khác nhau. Trong
đó có một số chân đa công dụng: mỗi chân có thể hoạt động như một đường xuất nhập
hoặc là một chân chức năng đặc biệt dùng để giao tiếp với các thiết bị ngoại vi.
2.1.2) Cấu trúc phần cứng của PIC 16F877A:
PIC là tên viết tắt của “ Programmable Intelligent computer” do hãng General
Instrument đặt tên cho con vi điều khiển đầu tiên của họ. Hãng Micrchip tiếp tục phát
triển sản phầm này và cho đến hàng đã tạo ra gần 100 loại sản phẩm khác nhau.
PIC16F887A là dòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ cho hầu hết
tất cả 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
có thể học tập và tạo nền tản về họ vi điều khiển PIC của mình.
 Cấu trúc tổng quát của PIC16F877A như sau :

 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 ở cả chế độ tiết kiệm năng
lượng với nguồn xung clock ngoài
 2 bộ Capture/ Compare/ PWM
 1 bộ biến đổi Analog -> Digital 10 bit, 8 ngõ vào
 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 các tín hiệu điều khiển
 1 cổng nối tiếp
 15 nguồn ngắt
 Sơ đồ khối
Hình 2.3 Sơ đồ khối bên trong của vi điều khiển 16F877A
2.1.3) Một số chế độ đặt biệt của vi điều khiển PIC 16F877A:
2.1.3.1) Dao động:
PIC16F877A có thể hoạt động trong bốn chế độ dao động khác nhau:
• LP low-power crystal
• XT crystal/resonatpor
• HS high-speed crystal/resonatpor
• RC resistor/capacitor
Hình 2.4 Các chế độ dao động
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.
Việc lựa chọn tụ trong dao động thạch anh được lựa chọn dựa vào bảng sau:
Hình 2.5 Giá trị tụ trong dao động thạch anh
Tụ có giá trị lớn sẽ mang tính ổn định của dao động nhưng làm tăng thời gian
khởi động.

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 thì chu kỳ dao động của thạch anh là Tosc =
1/Fosc= 1/10*10
6
(s).
Chu kỳ máy:
T_instruction = 4*Tosc = 4/10*10
6
(s) = 0.4 µs = 400 ns
2.1.3.2) Reset:
PIC16F877A có thể bị reset bởi nhiều nguyên nhân khác nhau:
• Power-on Reset (POR)
• MCLR Reset during sleep
• MCLR Reset during normal operation
• WDT Reset (during normal operation)
• WDT Wake-up (during sleep)
• Brown-out Reset (BOR)
Hình 2.6 Các chế độ reset
2.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.
- Ngắt do Timer0.
- Ngắt do Timer1.
- Ngắt do Timer2.
- Ngắt do thay đổi trạng thái trên các chân PortB.
- Ngắt so sánh điện thế.
- Ngắt do Port song song.
- Ngắt USART.
- Ngắt nhận dữ liệu.
- Ngắt truyền dữ liệu .

- Ngắt chuyển đổi ADC.
- Ngắt màn hình LCD.
- Ngắt hoàn tất ghi EEPROM.
- Ngắt module CCP.
- Ngắt Module SSP.
* Các thanh ghi chức năng ngắt: INTCON, PIE1, PIR1, PIE2, PIR2 (các thanh ghi
này sẽ được nghiên cứu ở các phần sau).
Hình 2.7 Các chế độ ngắt
2.1.3.5) Bộ định thời giám sát (Watch Dog Timer – WDT):
Hình 2.8 Bộ định thời giám sát WDT
2.1.3.6) Tổ chức bộ nhớ:
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình
(Program memory) và bộ nhớ dữ liệu (Data Memory)
2.1.3.6.1) Bộ nhớ chương trình:
Hình 2.9 Bộ nhớ chương trình PIC 16F877A
Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ Flash, dung
lượng 8K word (1 word chứa 14bit) và được phân thành nhiều trang như hình trên.
Để mã hóa được địa chỉ 8K word bộ nhớ chương trình, thanh ghi đếm chương
trình PC có dung lượng 13 bit.
Khi vi điều khiển reset, bộ đếm chương trình sẽ trỏ về địa chỉ 0000h. Khi có
ngắt xảy ra thì thanh ghi PC sẽ trỏ đến địa chỉ 0004h.
Bộ nhớ chương trình không bao gồm bộ nhớ Stack và không được địa chỉ hóa
bởi bộ đếm chương trình.
2.1.3.6.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.
Bộ nhớ dữ liệu của PIC16F877A được chia thành 4 bank. Mỗi bank có dụng
lượng 128 byte. Nếu như 2 bank bộ nhớ dữ liệu của 8051 phân chia riêng biệt :
128 byte đầu tiên thuộc bank1 là vùng Ram nội chỉ để chứa dữ liệu, 128 byte
còn lại thuộc bank 2 là cùng các thanh ghi có chức năng đặc biệt SFR mà người dùng
không được chứa dữ liệu khác trong đây thì 4 bank bộ nhớ dữ liệu của PIC16F877A

được tổ chức theo cách khác.
Mỗi bank của bộ nhớ dữ liệu PIC16F877A bao gồm cả các thanh ghi có chức
năng đặc biệt SFR nằm ở các các ô nhớ địa chỉ thấp và các thanh ghi mục đích dùng
chung GPR nằm ở vùng địa chỉ còn lại của mỗi bank thanh ghi. Vùng ô nhớ các thanh
ghi mục đích dùng chung này chính là nơi người dùng sẽ lưu dữ liệu trong quá trình
viết chương trình. Tất cả các biến dữ liệu nên được khai báo chứa trong vùng địa chỉ
này.
Trong cấu trúc bộ nhớ dữ liệu của PIC16F877A, các thanh ghi SFR nào mà
thường xuyên được sử dụng (như thanh ghi STATUS) sẽ được đặt ở tất cả các bank để
thuận tiện trong việc truy xuất. Sở dĩ như vậy là vì, để truy xuất một thanh ghi nào đó
trong bộ nhớ của 16F877A ta cần phải khai báo đúng bank chứa thanh ghi đó, việc đặt
các thanh ghi sử dụng thường xuyên giúp ta thuận tiên hơn rất nhiều trong quá trình
truy xuất, làm giảm lệnh chương trình.
Hình 2.10 Bộ nhớ dữ liệu PIC 16F877A
Dựa trên sơ đồ 4 bank bộ nhớ dữ liệu PIC16F877A ta rút ra các nhận xét như
sau :
- Bank0 gồm các ô nhớ có địa chỉ từ 00h đến 77h, trong đó các thanh ghi dùng
chung để chứa dữ liệu của người dùng địa chỉ từ 20h đến 7Fh. Các thanh ghi PORTA,
PORTB, PORTC, PORTD, PORTE đều chứa ở bank0, do đó để truy xuất dữ liệu các
thanh ghi này ta phải chuyển đến bank0. Ngoài ra một vài các thanh ghi thông dụng
khác ( sẽ giới thiệu sau) cũng chứa ở bank0
- Bank1 gồm các ô nhớ có địa chỉ từ 80h đến FFh. Các thanh ghi dùng chung có
địa chỉ từ A0h đến Efh. Các thanh ghi TRISA, TRISB, TRISC, TRISD, TRISE cũng
được chứa ở bank1
- Tương tự ta có thể suy ra các nhận xét cho bank2 và bank3 dựa trên sơ đồ trên.
Cũng quan sát trên sơ đồ, ta nhận thấy thanh ghi STATUS, FSR… có mặt trên cả 4
bank. Một điều quan trọng cần nhắc lại trong việc truy xuất dữ liệu của PIC16F877A là
: phải khai báo đúng bank chứa thanh ghi đó. Nếu thanh ghi nào mà 4 bank đều chứa
thì không cần phải chuyển bank.
• Vùng Ram đa mục đích

Vùng RAM đa mục đích có chiều rộng 8 bit và có thể được truy nhập trực tiếp
hoặc gián tiếp thông qua thanh ghi FSR. Vùng RAM đa mục đích được phân phối ở
các Bank như sau:
- 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 3: 96 Bytes từ địa chỉ 190h đến địa chỉ 1EFh.
• Vùng 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ặc cá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ệt nà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ùng cho các chức năng ngoại vi.
2.1.3.7) Thanh ghi trạng thái (Status Register):
Thanh ghi này có mặt ở cả 4 bank thanh ghi ở các địa chỉ 03h, 83h, 103h và
183h : chứa kết quả thực hiện phép toán của khối ALU, trạng thái reset và các bit chọn
bank cần truy xuất trong bộ nhớ dữ liệu.
Hình 2.11 Status Register
Bit 7 IRP: Bit lựa chọn bank thanh ghi (Sử dụng cho định địa chỉ gián tiếp).
1 = Bank 2, 3 (100h – 1FFh )
0 = Bank 0, 1 (00h – FFh)
Bit 6 – 5 RP1 – RP0: Bit lựa chọn bank thanh ghi (Dùng trong định điạ chỉ trực tiếp).
11 = Bank 3 ( 180h – 1FFh)
10 = Bank 2 (100h – 17Fh)
01 = Bank 1 (80h – FFh)
00 = Bank 0 (00h – 7Fh)
Each bank is 128 bytes
Bit 4 TO: Bit báo hiệu hoạt động của WDT.
1: Lệnh xóa WDT hoặc Sleep xảy ra.
0: WDT hoạt động.
Bit 3 PD: Bit báo công suất thấp ( Power down bit).

1: Sau khi nguồn tăng hoặc có lệnh xóa WDT.
0: Thực 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.
2.1.3.8) Thanh ghi tùy chọn (Option Reg Register):
Thanh ghi tùy chọn chứa các bit điều khiển để cấu hình cho các chứa năng như:
ngắt ngoài, Timer 0 chức năng kéo lên Vdd của các chân Port B, và thời gian chờ của
WDT.
H
hình 2.12 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: Bít lựa chọn cạnh tác động ngắt (INTERRUPT EDGE)
1: Ngắt sẽ được tác động bởi cạnh lên của chân RB0/INT
0: Ngắt sẽ được tác động bởi cạnh xuống của chân RB0/INT
Bit 5 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ống
0: 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 WDT

1: Tốc độ đếm PS2:PS0 sẽ tác động lên WDT
0: Tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0
Bit 2-0 PS2:PS0: Dùng để lựa chọn tốc độ đếm của timer hay WDT
2.1.3.9) Thanh ghi điều khiển ngắt INTCON (Interrupt Control Register):
Hình 2.13 Intcon Register
Bit 7 GIE: Bit cho phép ngắt toàn cục
1: Cho phép ngắt toàn cục
0: Không cho phép ngắt
Bit 6 PEIE: Bit cho phép ngắt khi ghi vào EEPROM hoàn tất.
1: Cho phép ngắt ghi vào EEPROM hoạt động
0: Không cho phép ngắt ghi vào EEPROM hoạt động
Bit 5 TMR0IE: Bit cho phép ngắt khi timer 0 tràn
1: Cho phép ngắt khi timer 0 tràn
0: Không cho phép ngắt khi timer 0 tràn
Bit 4 INTE: Bit cho phép ngắt ngoại vi trên chân RB0/INT
1: Cho phép ngắt ngoại vi
0: Không cho phép ngắt ngoại vi
Bit 3 RBIE: Cho phép ngắt khi trạng thái PORTB thay đổi
1: Cho phép
0: Không cho phép
Bit 2 TMR0IF: Cờ báo ngắt Timer 0
1: Timer 0 tràn
0: Timer 0 chưa tràn
Bit 1 INTF:Cờ báo ngắt ngoài RB0/INT
1: Có ngắt
0: 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 đổi
0: Không có thay đổi xảy ra trên PORTB
Chế độ Capture (Bắt giữ):

1: Một Capture thanh ghi TMR1 xảy ra( phải được xóa bằng phần mềm)
0: Không xảy ra Capture thanh ghi TMR1
Chế độ Compare ( So sánh):
1: Khi các giá trị so sánh trong thanh ghi TMR1 được thỏa ( phải được
xóa bằng phần mềm)
0: Khi các giá trị so sánh trong thanh ghi TMR1 không được thỏa
Chế độ PWM: Không sử dụng trong 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 PR2
1: Giá trị trong thanh ghi TMR2 bằng thanh ghi PR2 (phải được xóa bằng
phần mềm)
0: Giá trị trong thanh ghi TMR2 chưa bằng thanh ghi PR2
Bit 0 TMR1IF: Cờ báo tràn thanh ghi TMR1
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
2.1.3.10 ) Thanh ghi Work và tập lệnh của PIC 16F877A:
Đây là thanh ghi rất đặc biệt trong PIC16F877A. Nó có vai trò tương tự như
thanh ghi Accummulator của 8051, tuy nhiên tầm ảnh hưởng của nó rộng hơn rất
nhiều.
Tập lệnh của PIC16F877A có tất cả 35 lệnh thì số lệnh có sự “góp mặt” của
thanh ghi W là 23 lệnh. Hầu hết các lệnh của PIC16F877A đều liên quan đến thanh ghi
W. Ví dụ như, trong PIC chúng ta không được phép chuyển trực tiếp giá trị của một
thanh ghi này qua thanh ghi khác mà phải chuyển thông qua thanh ghi W.
Thanh ghi W có 8 bit và không xuất hiện trong bất kỳ bank thanh ghi nào của bộ
nhớ dữ liệu của 16F877A. Mỗi dòng lệnh trong PIC16F877a được mô tả trong 14 bit.
Khi ta thực hiện một lệnh nào đó, nó phải lưu địa chỉ của thanh ghi bị tác động (chiếm
8 bit) và giá trị một hằng số k nào đó (thêm 8 bit nữa) là 16 bit, vượt quá giới hạn 14
bit. Do vậy ta không thể nào tiến hành một phép tính toàn trực tiếp nào giữa 2 thanh
ghi với nhau hoặc giữa một thanh ghi với một hằng số k. Hầu hết các lệnh của
PIC16F877A đều phải liên quan đến thanh ghi W cũng vì lý do đó. Khi thực hiện một

dòng lệnh nào đó, thì PIC sẽ không phải tốn 8 bit để lưu địa chỉ của thanh ghi W trong
mã lệnh ( vì được hiểu ngầm). Có thể xem thanh ghi W là thanh ghi trung gian trong
quá trình viết chương trình cho PIC16F877A.
PIC16F877A có tất cả 35 lệnh và được trình bày khá rõ trong datasheet. Em sẽ
đính kèm tập lệnh ở phần cuối cùng của bài báo cáo.
Trong chương trình, em sử dụng ngôn ngữ asembly để viết. Trình biên dịch là
Mplab được Microchip cung cấp miễn phí cho người dùng.
2.1.3.11) Khái quát về chức năng các Port trong vi điều khiển PIC
16F877A:
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để tương
tác với thế giới bên ngoài. Sự tương tác này rất đa dạng và thông qua quá trình
tương tác đó, chức năng của vi điều khiển được thể hiện một cách rõ ràng.
Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin), tùy theo
cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và số lượng
chân trong mỗi cổng có thể khác nhau. Bên cạnh đó, do vi điều khiển được tích hợp
sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức năng là cổng xuất
nhập thông thường, một số chân xuất nhập còn có thêm các chức năng khác để thể
hiện sự tác động của các đặc tính ngoại vi nêu trên đối với thế giới bên ngoài. Chức
năng của từng chân xuất nhập trong mỗi cổng hoàn toàn có thể được xác lập và điều
khiển được thông qua các thanh ghi SFR liên quan đến chân xuất nhập đó.
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB,
PORTC, PORTD và PORTE
2.1.3.11.1)Port A và thanh ghi TRIS A:
PORTA gồm có 6 chân. Các chân của PortA, ta lập trình để có thể thực hiện được
chức năng “hai chiều” : xuất dữ liệu từ vi điều khiển ra ngoại vi và nhập dữ liệu từ
ngoại vi vào vi điều khiển.

×