Professional Documents
Culture Documents
HCM
KHOA ĐIỆN - ĐIỆN TỬ VIỄN THÔNG
Chúng em xin chân thành gửi lời cảm ơn khoa Điện – Điện Tử Viễn Thông,
trường đại học Giao Thông Vận Tải TP. HCM đã tạo điều kiện thuận lợi để chúng em
học tập và thực hiện bài báo cáo này.
Chúng em xin bày tỏ lòng biết ơn sâu sắc tới thầy Nguyễn Thanh Hiếu - giảng viên
bộ môn Kỹ thuật vi xử lý đã tận tình hướng dẫn chỉ bảo chúng em trong quá trình
thực hiện bài tập lớn này.
Chúng em xin chân thành cảm ơn quý thầy cô trong khoa Điện - Điện Tử Viễn
Thông đã tận tình giảng dạy, trang bị cho chúng em những kiến thức quý báu trong
những năm vừa qua.
Chúng con xin chân thành cảm ơn ông bà, cha mẹ đã luôn động viên ủng hộ vật
chất lẫn tinh thần trong suốt thời gian qua.
Cảm ơn sự quan tâm giúp đỡ và ủng hộ của các anh chị bạn bè trong quá trình
thực hiện bài tập lớn này.
Mặc dù đã cố gắng hoàn thành bài tập trong phạm vi và khả năng cho phép nhưng
chắc chắn sẽ không tránh khỏi những thiếu sót. Chúng em rất mong nhận được sự
thông cảm, góp ý và tận tình chỉ bảo của quý thầy cô và các bạn.
1
NHẬN XÉT CỦA GIẢNG VIÊN
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………..
……………………………………………………………..
………………………………………………………………………………………
2
CHƯƠNG I. CÁC LINH KIỆN LIÊN QUAN
Đây là một dòng vi điều khiển khá phổ biến, đầy đủ các chức năng, phù hợp với
các ứng dụng cơ bản.
Một số đặc điểm của PIC16F877A:
- PIC 16F877A là loại vi điều khiển 8bit tầm trung của hãng microchip.
- PIC 16F877A có kiến trúc Havard, sử dụng tập lệnh kiểu RISC (Reduced
Instruction Set Computer) với chỉ 35 lệnh cơ bản.
- Tất cả các lệnh được thực hiện trong một chu kì lệnh ngoại trừ các lệnh rẽ nhánh.
- Sơ đồ chân với chip loại cắm 40 chân
3
Nhận xét:
- PIC 16F887A có tất cả 40 chân.
- 40 châ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à 1 chân dùng để RESET vi điều khiển.
- 5 port của PIC16F887A bao gồm:
+ PORTB: 8 chân
+ PORTD: 8 chân
+ PORTC: 8 chân
+ PORTA: 6 chân
+ PORTE: 3 chân
PORTA
- PORTA: Gồm 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 “2 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.
- Việc xuất nhập dữ liệu ở PIC16F887A khác với họ 8051. Ở tất cả các
PORT của PIC16F887A, ở mỗi thời điểm chỉ thực hiện được một chức
năng: xuất hoặc nhập. Để chuyển từ chức năng nhập qua xuất hay ngược lại,
ta phải xử lý bằng phần mềm, không như 8051 tự hiểu lúc nào là chức năng
nhập, lúc nào là chức năng xuất.
4
- Trong kiến trúc phần cứng của PIC16F887A, người ta sử dụng thanh ghi
TRISA ở địa chỉ 85H để điều khiển chức năng I/O trên. Muốn xác lập các
chân nào của PORTA là nhập (input) thì ta set bit tương ứng chân đó trong
thanh ghi TRISA. Ngược lại, muốn chân nào là output thì ta clear bit tương
ứng chân đó trong thanh ghi TRISA. Điều này hoàn toàn tương tự với các
PORT còn lại.
- Ngoài ra, PORTA còn có các chức năng quan trọng sau:
+ Ngõ vào Analog của bộ ADC: thực hiện chức năng chuyển từ Analog sang
Digital
+ Ngõ vào điện thế so sánh
+ Ngõ vào xung Clock của Timer0 trong kiến trúc phần cứng: thực hiện các
nhiệm vụ đếm xong thông qua Timer0…
+ Ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port)
PORTB
- PORTB có 8 chân, cũng như PORTA, các chân của PORTB cũng thực hiện
được 2 chức năng: input và output. Hai chức năng trên được điều khiển bởi
thanh ghi TRISB. Khi muốn chân nào của PORTB là input thì ta set bit
tương ứng trong thanh ghi TRISB, ngược lại muốn chân nào là output thì ta
clear bit tương ứng trong TRISB
- Thanh ghi TRISB còn đượcc tích hợp bộ điện trở kéo lên có thể điều khiển
được bằng chương trình
PORTC
- PORTC có 8 chân và cũng thực hiện 2 chức năng input và output dưới sự
điều khiển của thanh ghi TRISC tương tự như 2 hình trên
- Ngoài ra PORTC còn có các chức năng quan trọng sau:
+ Ngõ vào xung Clock cho Timer1 trong kiến trúc phần cứng
+ Bộ PWM thực hiện chức năng điều xung lập trình được tần số, duty cycle:
sử dụng trong điều khiển tốc độ và vị trí của động cơ,…
+ Tích hợp các bộ giao tiếp nối tiếp I2C, SPI, SSP, USART
PORTD
- PORTD có 8 chân, thanh ghi TRISD điều khiển 2 chức năng input va output
của PORTD tương tự như trên. PORTD cũng là cổng xuất dữ liệu của chuẩn
giao tiếp song song PSP (Parallel Slave Port)
5
PORTE
- PORTE có 3 chân. Thanh ghi điều khiển xuất nhập tương ứng là TRISE.
Các chân của TRISR 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ó rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, trên
hình 1 là loại LCD thông dụng.
Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780)
bên trong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết. Các chân này
được đánh số thứ tự và đặt tên như hình 2-1:
6
2.2. CHỨC NĂNG CỦA CÁC CHÂN
7
2.3. KHỞI TẠO LCD.
Khởi tạo là việc thiết lập các thông số làm việc ban đầu. Đối với LCD, khởi
tạo giúp ta thiết lập các giao thức làm việc giữa LCD và MPU. Việc khởi tạo
chỉ được thực hiện 1 lần duy nhất ở đầu chương trình điều khiển LCD và
bao gồm các thiết lập sau :
• Display clear : Xóa/không xóa toàn bộ nội dung hiển thị trước đó.
• Function set : Kiểu giao tiếp 8bit/4bit, số hàng hiển thị 1hàng/2hàng, kiểu
kí tự 5x8/5x10.
• Display on/off control: Hiển thị/tắt màn hình, hiển thị/tắt con trỏ, nhấp
nháy/không nhấp nháy.
• Entry mode set : các thiết lập kiểu nhập kí tự như: Dịch/không dịch, tự
tăng/giảm (Increment).
Khởi tạo bằng lệnh, chuỗi lệnh: Việc khởi tạo phải tuân theo lưu đồ sau của
nhà sản xuất.
8
CHƯƠNG II. MẠCH ĐO NHỊP TIM
PIC16F887A LCD16x2
9
1.3. SƠ ĐỒ CHÂN 16F887A
10
cho tmer/counter T1 tên à T1CKI, 2 ngõ vào tạo dao độn riêng cho
Timer1 hoạt động độc lập có tên là T1OSO và T1OSI.
2. GIẢI MÃ VÀ CHƯƠNG TRÌNH CHO PIC16F887 VÀ LCD16X2
11
2.2. VIẾT CHƯƠNG TRÌNH CHO MẠCH ĐẾM
12
#include <stddef.h>
// prototype statements
#separate void LCD_Init ( void ); //ham khoi tao LCD
#separate void LCD_SetPosition ( unsigned int cX );//Thiet lap vi tri con tro
#separate void LCD_PutChar ( unsigned int cX );// Ham viet 1 ki tu/1 chuoi len LCD
#separate void LCD_PutCmd ( unsigned int cX) ;// Ham gui lenh len LCD
#separate void LCD_PulseEnable ( void );// Xung kich hoat
#separate void LCD_SetData ( unsigned int cX );// Dat du lieu len chan Data
// D/n Cong
#use standard_io ( B )
#use standard_io (A)
13
/* this subroutine works specifically for 4-bit Port A */
LCD_SetData ( swap ( cX ) | 0x08 );
LCD_PulseEnable();
LCD_SetData ( swap ( cX ) );
LCD_PulseEnable();
}
14
CHƯƠNG TRÌNH CHO MẠCH ĐO NHỊP TIM
#include <16F887.h>
#include <def_877a.h>
#device *=16 adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
#include <lcd_lib_4bit.c>
#include <math.h>
}
}
16
TÀI LIỆU THAM KHẢO
---HẾT---
17