Thứ Năm, 27 tháng 2, 2014

300896

Báo cáo đồ án môn học I
Chương II :
Giới thiệu về các linh kiện, phần tử sử dụng trong mạch
I. Vi điều khiển PIC16F877A
1. Khái quát về vi điều khiển PIC16F877A
1.1.Sơ đồ chân và sơ đồ nguyên lý của PIC16F877A
Sơ đồ chân
GVHD : TS. Nguyễn Thiện Thành SVTH: Nguyễn Uy Danh5
Báo cáo đồ án môn học I
Sơ đồ nguyên lý
1.2. 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
chan 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
+ PORTD : 8 chân
+ PORTC : 8 chân
GVHD : TS. Nguyễn Thiện Thành SVTH: Nguyễn Uy Danh6
Báo cáo đồ án môn học I
+ PORTA : 6 chân
+ PORT E : 3 chân
1.3. Khái quát về chức năng của các port trong vi điều khiển PIC16F877A
PORTA
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.
Việc xuất nhập dữ liệu ở PIC16F877A khác với họ 8051. Ở tất cả các PORT của
PIC16F877A, ở 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 này nhập qua chức năng 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.
Trong kiến trúc phần cứng của PIC16F877A, 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ự đối 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 xung thông qua Timer0…
- Ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port)
GVHD : TS. Nguyễn Thiện Thành SVTH: Nguyễn Uy Danh7
Báo cáo đồ án môn học I
PORTB
PORTB có 8 chân. Cũng như PORTA, các chân 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 được 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 được 2 chức năng input và output dưới sự điều
khiển của thanh ghi TRISC tương tự như hai thanh ghi 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ơ v.v….
- 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 và 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).
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 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.
GVHD : TS. Nguyễn Thiện Thành SVTH: Nguyễn Uy Danh8
Báo cáo đồ án môn học I
1.4. Tại sao sử dụng PIC16F877A mà không dùng 8051 cho đề tài
Trong chương trình đào tạo của Trường Đại Học Bách Khoa, em được học và thí
nghiệm trên kit của vi điều khiển 8051. Họ vi điều khiển 8051 là một họ vi điều khiển
điển hình, phổ biến, dễ sử dụng và lập trình, rất phù hợp với sinh viên mới bắt đầu
làm quen đến lập trình cho vi điều khiển. Tuy nhiên, cũng trong quá trình nghiên cứu
và thí nghiệm với các chip điều khiển thuộc họ 8051 ( điển hình là 89C51, 89052…),
em nhận thấy nó có những nhược điểm cơ bản sau đây :
- Bộ nhớ Ram nội có dung lượng thấp , chỉ có 128 bytes. Điều nàý gây trở ngại lớn
khi thực hiện các dự án lớn với vi điều khiển 8051. Để khắc phục ta phải mở rộng
thêm làm hạn chế số chân dành cho các ứng dụng của vi điều khiển.
- Số lượng các bộ giao tiếp với ngoại vi được tích hợp sẵn trong 8051 ít, không có
các bộ ADC, PWM, truyền dữ liệu song song…. Khi muốn sử dụng các chức năng này,
ta phải sử dụng thêm các IC bên ngoài, gây tốn kém và khó thực hiện vì dễ bò nhiễu
nếu không biết cách chống nhiễu tốt.
- Ngoài ra còn một số hạn chế khác như số lượng Timer của 8051 ít, chỉ có 2
Timer. Chính điều này làm cho giải thuật khi viết chương trình gặp khó khăn.
Những nhược điểm căn bản trên của 8051, em đã quyết đònh không dùng vi điều khiển
này cho đề tài “điều khiển tốc độ động cơ” của mình.
Với kỳ vọng dựa trên nền tản kiến thức tiếp thu được khi học vi điều khiển 8051,
em rất muốn tự bản thân tìm hiểu một họ vi điều khiển mới mạnh hơn, đầy đủ tính
năng hơn để trước mắt là phucï vụ tốt cho đồ án , luận văn, sau nữa là cho các dự án
trong tương lai nếu em có dòp sử dụng vi điều khiển trong dự án của mình.
Trong quá trình tím kiếm một họ vi điều khiển mới thõa yêu cầu như em đã trình
bày trên. Em nhận thấy PIC của hãng Microchip là một lựa chọn lý tưởng. Chỉ cần
GVHD : TS. Nguyễn Thiện Thành SVTH: Nguyễn Uy Danh9
Báo cáo đồ án môn học I
xem xét qua các port và chức năng của các port mà em đã trình bày ở mục 1.3, ta cũng
dễ dàng nhận ra những ưu điểm vượt trội của vi điều khiển này so với 8051.
Giá của PIC16F877A mà em mua trên thò hiện trường là 50000 đồng, mắc hơn 2
lần giá một con chip họ 8051. Việc sử dụng PIC16F877A trong một đề tài không lớn
như đề tài “điều khiển tốc độ động cơ” có thể là một lãng phí. Tuy nhiên với mục đích
nâng cao kiến thức, nâng cao khả năng tự tìm tòi ,học hỏi qua các kênh thông tin giáo
dục khác nhau, nhằm phục vụ mục đích lâu dài sau này, thì đây là một sự lựa chọn
hoàn toàn xác đáng. Và trên thực tế, trong một thời gian tương đối ngắn, em đã nắm
vững được những mãng kiến thức cơ bản nhất để sử dụng nó tốt trong đề tài của mình.
Trên là toàn bộ nguyên do tại sao em chọn vi điều khiển PIC16F877A cho đề tài
đồ án môn học I của mình.
Ở phần tiếp theo của báo cáo đồ án môn học I em sẽ đi sâu giới thiệu những phần mà
em đã nghiên cứu được để phục vụ cho việc thực hiện đồ án của mình.
2. Tìm hiểu về vi điều khiển PIC16F877A
2.1. Cấu trúc phần cứng của PIC16F877A
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
- 368 bytes Ram
- 256 bytes EFPROM
GVHD : TS. Nguyễn Thiện Thành SVTH: Nguyễn Uy Danh10
Báo cáo đồ án môn học I
- 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
GVHD : TS. Nguyễn Thiện Thành SVTH: Nguyễn Uy Danh11
Báo cáo đồ án môn học I
Sơ đồ khối vi điều khiển 16F877A
GVHD : TS. Nguyễn Thiện Thành SVTH: Nguyễn Uy Danh12
Báo cáo đồ án môn học I
2.2. Tổ chức bộ nhớ PIC16F877a
2.2.1. Bộ nhớ chương trình
Bộ nhớ chương trình PIC16F877A
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.
GVHD : TS. Nguyễn Thiện Thành SVTH: Nguyễn Uy Danh13
Báo cáo đồ án môn học I
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.2.2. Bộ nhớ dữ liệu
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.
GVHD : TS. Nguyễn Thiện Thành SVTH: Nguyễn Uy Danh14

Xem chi tiết: 300896


Không có nhận xét nào:

Đăng nhận xét