vquynhvn89

New Member
Link tải luận văn miễn phí cho ae Kết Nối
Nghiên cứu về vi điều khiển PIC 16F877A và một số ứng dụng - Nghiên cứu và thiết kế bộ KIT PIC 16F87
MỤC LỤC
MỤC LỤC 4
LỜI MỞ ĐẦU 6
CHƯƠNG 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN 7
1.1 GIỚI THIỆU KHÁI QUÁT VỀ VI ĐIỀU KHIỂN 7
1.1.1 GIỚI THIỆU CHUNG 7
1.1.2 PHÂN LOẠI 8
1.1.3 CẤU TRÚC TỔNG QUAN CỦA VDK 9
1.2 KHÁI QUÁT VỀ VI ĐIỀU KHIỂN PIC 9
1.2.1 PIC LÀ GÌ ? 9
1.2.2 KIẾN TRÚC PIC 10
1.2.3 RISC VÀ CISC 11
1.2.4 PIPELINING 11
1.2.5 CÁC DÒNG PIC VÀ CÁCH LỰA CHỌN VI ĐIỀU KHIỂN PIC 13
1.2.6 NGÔN NGỮ LẬP TRÌNH CHO PIC 13
1.2.7 MẠCH NẠP PIC 13
CHƯƠNG 2: VI ĐIỀU KHIỂN PIC16F877A 15
2.1 GIỚI THIỆU CHUNG 15
2.1.1 CÁC DẠNG SƠ ĐỒ CHÂN 15
2.1.2 SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN PIC16F877A 16
2.1.3 CHỨC NĂNG CÁC CHÂN CỦA PIC16F877A 17
2.1.4 ĐẶC ĐIỂM VI ĐIỀU KHIỂN PIC16F877A 19
2.2 TỔ CHỨC BỘ NHỚ 21
2.2.1 BỘ NHỚ CHƯƠNG TRÌNH 21
2.2.2 BỘ NHỚ DỮ LIỆU 21
2.2.3 STACK 24
2.3 CÁC CỔNG XUẤT NHẬP CỦA PIC16F877A 25
2.3.1 PORTA 25
2.3.2 PORTB 26
2.3.3 PORTC 26
2.3.4 PORTD 26
2.3.5 PORTE 27
2.4 TIMER 0 27
2.5 TIMER1 29
2.6 TIMER2 30
2.7 ADC 31
2.8 COMPARATOR 34
2.9 CCP (CAPTURE/COMPARE/PWM) 37
2.10 GIAO TIẾP NỐI TIẾP 41
2.11 CỔNG GIAO TIẾP SONG SONG PSP (PARALLEL SLAVE PORT) 43
2.12 TỔNG QUAN VỀ MỘT SỐ ĐẶC TÍNH CỦA CPU 43
2.12.1 BỘ DAO ĐỘNG (OSCILLATOR) 43
2.12.2 CÁC CHẾ ĐỘ RESET 44
2.12.3 NGẮT (INTERRUPT) 46
2.12.4 WATCHDOG TIMER (WDT) 48
2.12.5 CHẾ ĐỘ SLEEP 48
2.13 TẬP LỆNH CỦA VI ĐIỀU KHIỂN PIC 51
CHƯƠNG 3: ỨNG DỤNG PIC 16F877A XÂY DỰNG BỘ KIT THỰC HÀNH VI ĐIỀU KHIỂN 57
3.1 GIỚI THIỆU 57
3.2 TRÌNH TỰ THIẾT KẾ 57
3.3 MẠCH NGUYÊN LÝ CỦA BỘ KIT VÀ NGUYÊN TẮC VẬN HÀNH 58
3.3.1 Mạch nguyên lý 58
3.3.2 Nguyên tắc vận hành bộ kit 58
3.4 NGUYÊN LÝ HOẠT ĐỘNG CỦA TỪNG KHỐI. 59
3.4.1 Khối quét Led 7 thanh 59
3.4.2 Khối quét LED ma trận. 60
3.4.3 Khối Đo nhiệt độ hiển thị LCD 61
3.4.4 Khối bàn phím. 62
3.4.5 Điều khiển động cơ (PWM) 63
3.4.6 Hiển thị vào ra bằng LED đơn. 64
3.4.7 Khối truyền thông nối tiếp (USART). 65
3.4.8 Khối nguồn. 66
LỜI MỞ ĐẦU
Ngày nay kỹ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹ thuật và trong dân dụng. Từ các dây chuyền sản xuất lớn đến các thiết bị gia dụng, chúng ta đều thấy sự hiện diện của vi điều khiển. Các bộ vi điều khiển có khả năng xử lý nhiều hoạt động phức tạp mà chỉ cần một chip vi mạch nhỏ, nó đã thay thế các tủ điều khiển lớn và phức tạp bằng những mạch điện gọn nhẹ, dễ dàng thao tác sử dụng.
Vi điều khiển không những góp phần vào kỹ thuật điều khiển mà còn góp phần to lớn vào việc phát triển thông tin. Chính vì các lý do trên, việc tìm hiểu, khảo sát vi điều khiển là điều mà các sinh viên ngành điện mà đặc biệt là chuyên ngành kỹ thuật điện-điện tử phải hết sức quan tâm. Đó chính là một nhu cầu cần thiết và cấp bách đối với mỗi sinh viên, đề tài này được thực hiện chính là đáp ứng nhu cầu đó.
Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành và sử dụng đươc lại là một điều rất phức tạp. Phần công việc xử lý chính vẫn phụ thuộc vào con người, đó chnh là chương trình hay phần mềm. Tuy chúng ta thấy các máy tính ngày nay cực kỳ thông minh, giải quyết các bài toán phức tạp trong vài phần triệu giây, nhưng đó cũng là dựa trên sự hiểu biết của con người. Nếu không có sự tham gia của con người thì hệ thống vi điều khiển cũng chỉ là một vật vô tri. Do vậy khi nói đến vi điều khiển cũng giống như máy tính bao gồm 2 phần là phần cứng và phần mềm.
Mặc dù vi điều khiển đã đi được những bước dài như vậy nhưng để tiếp cận được với kỹ thuật này không thể là một việc có được trong một sớm một chiều. Để tìm hiểu bộ vi điều khiển một cách khoa học và mang lại hiệu quả cao làm nền tản cho việc xâm nhập vào những hệ thống tối tân hơn. Việc trang bị những kiến thức về vi điều khiển cho sinh viên là hết sức cần thiết. Xuất phát từ thực tiển này em đã đi đến quyết định Thiết kế bộ Kit Vi Điều Khiển PIC 16F877A nhằm đáp ứng nhu cầu ham muốn học hỏi của bản than và giúp cho các bạn sinh viên dễ tiếp cận và hiểu sâu hơn về VĐK PIC.
Trong quá trình thực hiện đề tài vẫn còn nhiều sai sót, mong nhận được nhiều ý kiến đóng góp từ cô và các bạn.
Em chân thành cảm ơn!
Hà nội, ngày 19 tháng 4 năm 2011


CHƯƠNG 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN

1.1 GIỚI THIỆU KHÁI QUÁT VỀ VI ĐIỀU KHIỂN
1.1.1 GIỚI THIỆU CHUNG
Bộ Vi xử lý có khả năng vượt bậc so với các hệ thống khác về khả năng tính toán, xử lý, và thay đổi chương trình linh hoạt theo mục đích người dùng, đặc biệt hiệu quả đối với các bài toán và hệ thống lớn.Tuy nhiên đối với các ứng dụng nhỏ, tầm tính toán không đòi hỏi khả năng tính toán lớn thì việc ứng dụng vi xử lý cần cân nhắc. Bởi vì hệ thống dù lớn hay nhỏ, nếu dùng vi xử lý thì cũng đòi hỏi các khối mạch điện giao tiếp phức tạp như nhau. Các khối này bao gồm bộ nhớ để chứa dữ liệu và chương trình thực hiện, các mạch điện giao tiếp ngoại vi để xuất nhập và điều khiển trở lại, các khối này cùng liên kết với vi xử lý thì mới thực hiện được công việc. Để kết nối các khối này đòi hỏi người thiết kế phải hiểu biết tinh tường về các thành phần vi xử lý, bộ nhớ, các thiết bị ngoại vi. Hệ thống được tạo ra khá phức tạp, chiếm nhiều không gian, mạch in phức tạp và vấn đề chính là trình độ người thiết kế. Kết quả là giá thành sản phẩm cuối cùng rất cao, không phù hợp để áp dụng cho các hệ thống nhỏ.
Vì một số nhược điểm trên nên các nhà chế tạo tích hợp một ít bộ nhớ và một số mạch giao tiếp ngoại vi cùng với vi xử lý vào một IC duy nhất được gọi là Microcontroller- Vi điều khiển.
Một số đặc điểm khác nhau giữa vi xử lí và VĐK:
- Về phần cứng: VXL cần được ghép thêm các thiết bị ngoại vi bên ngoài như bộ nhớ, và các thiết bị ngoại vi khác, … để có thể tạo thành một bản mạch hoàn chỉnh. Đối với VĐK thì bản thân nó đã là một hệ máy tính hoàn chỉnh với CPU, bộ nhớ, các mạch giao tiếp, các bộ định thời và mạch điều khiển ngắt được tích hợp bên trong mạch.
- Về các đặc trưng của tập lệnh: Do ứng dụng khác nhau nên các bộ VXL và VĐK cũng có những yêu cầu khác nhau đối với tập lệnh của chúng. Tập lệnh của các VXL thường mạnh về các kiểu định địa chỉ với các lệnh cung cấp các hoạt động trên các lượng dữ liệu lớn như 1byte, ½ byte, word, double word,...Ở các bộ VĐK, các tập lệnh rất mạnh trong việc xử lý các kiêu dữ liệu nhỏ như bit hay một vài bit.
- Do VĐK cấu tạo về phần cứng và khả năng xử lí thấp hơn nhiều soi với VXL nên giá thành của VĐK cũng rẻ hơn nhiều. Tuy nhiên nó vẫn đủ khả năng đáp ứng được tất cả các yêu cầu của người dùng.
Vi điều khiển được ứng dụng trong các dây chuyền tự động loại nhỏ, các robot có chức năng đơn giản, trong máy giặt, ôtô v.v...
1.1.2 PHÂN LOẠI
 Độ dài thanh ghi
Dựa vào độ dài của các thanh ghi và các lệnh của VĐK mà người ta chia ra các loại VĐK 8bit, 16bit, hay 32bit....
Các loại VĐK 16bit do có độ dài lệnh lớn hơn nên các tập lệnh cũng nhiều hơn, phong phú hơn. Tuy nhiên bất cứ chương trình nào viết bằng VĐK 16bit chúng ta đều có thể viết trên VDK 8bit với chương trình thích hợp.
 Kiến trúc CISC và RISC
VXL hay VĐK CISC là VĐK có tập lệnh phức tạp. Các VĐK này có một số lượng lớn các lệnh nên giúp cho người lập trình có thể linh hoạt và dễ dàng hơn khi viết chương trình. VĐK RISC là VĐK có tập lệnh đơn giản. Chúng có một số lương nhỏ các lệnh đơn giản. DO đó, chúng đòi hỏi phần cứng ít hơn, giá thành thấp hơn, và nhanh hơn so với CISC. Tuy nhiên nó đòi hỏi người lập trình phải viết các chương trình phức tạp hơn, nhiều lệnh hơn.
 Kiến trúc Harvard và kiến trúc Vonneumann
Kiến trúc Harvard sử dụng bộ nhớ riêng biệt cho chương trình và dữ liệu. Bus địa chỉ và bus dữ liệu độc lập với nhau nên quá trình truyền nhận dữ liệu đơn giản hơn Kiến trúc Vonneumann sử dụng chung bộ nhớ cho chương trình và dữ liệu. Điều này làm cho VĐK gọn nhẹ hơn, giá thành nhẹ hơn.
Một số loại VĐK có trên thị trường:
- VĐK MCS-51: 8031, 8032, 8051, 8052, ...
- VĐK ATMEL: 89Cxx, AT89Cxx51..
- VĐK AVR AT90Sxxxx
- VĐK PIC 16C5x, 17C43...



1.1.3 CẤU TRÚC TỔNG QUAN CỦA VDK
 CPU:
Là trái tim của hệ thống. Là nơi quản lí tất cả các hoạt động của VĐK. Bên trong CPU gồm:
- ALU là bộ phận thao tác trên các dữ liệu
- Bộ giải mã lệnh và điều khiển, xác định các thao tác mà CPU cần thực hiện
- Thanh ghi lệnh IR, lưu giữ opcode của lệnh được thực thi
- Thanh ghi PC, lưu giũ địa chỉ của lệnh kế tiếp cần thực thi
- Một tập các thanh ghi dùng để lưu thông tin tạm thời
 2. ROM:
ROM là bộ nhớ dùng để lưu giữ chương trình. ROM còn dùng để chứa số liệu
các bảng, các tham số hệ thống, các số liệu cố định của hệ thống. Trong quá
trình hoạt động nội dung ROM là cố định, không thể thay đổi, nội dung ROM
chỉ thay đổi khi ROM ở chế độ xóa hay nạp chương trình.
 RAM:
RAM là bọ nhớ dữ liệu. Bộ nhớ RAM dùng làm môi trường xử lý thông tin,
lưu trữ các kết quả trung gian và kết quả cuối cùng của các phép toán, xử lí
thông tin. Nó cũng dùng để tổ chức các vùng đệm dữ liệu, trong các thao tác
thu phát, chuyển đổi dữ liệu.
 BUS:
BUS là các đường dẫn dùng để di chuyển dữ liệu. Bao gồm: bus địa chỉ, bus
dữ liệu , và bus điều khiển
 BỘ ĐỊNH THỜI: Được sử dụng cho các mục đích chung về thời gian.
 WATCHDOG: Bộ phận dùng để reset lại hệ thống khi hệ thống gặp “bất thường”.
 ADC: Bộ phận chuyển tín hiệu analog sang tín hiệu digital. Các tín hiệu bên ngoài đi vào VDK thường ở dạng analog. ADC sẽ chuyển tín hiệu này về dạng tín hiệu digital mà VDK có thể hiểu được.
1.2 KHÁI QUÁT VỀ VI ĐIỀU KHIỂN PIC
1.2.1 PIC LÀ GÌ ?
PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dịch là “máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho vi điều khiển đầu
2.13.18 Lệnh INCFSZ
Cú pháp: INCFSZ f,d (0≤f≤127, d [0,1]). Tác dụng: tăng giá trị thanh ghi f lên 1 đơn vị. Nếu kết quả khác 0, lệnh tiếp theo được thực thi, nếu kết quả bằng 0, lệnh tiếp theo được thay bằng lệnh NOP. Kết quả sẽ được đưa vào thanh ghi f nếu d=1 hay thanh ghi W nếu d = 0.
Bit trạng thái: không có.
2.13.19 Lệnh IORLW
Cú pháp: IORLW k (0≤k≤255) Tác dụng: thực hiện phép toán OR giữa thanh ghi W và giá trị k. Kết quả được chứa trong thanh ghi W.
Bit trạng thái: Z
2.13.20 Lệnh IORWF
Cú pháp: IORWF f,d (0≤f≤127, d [0,1]). Tác dụng: thực hiện phép toán OR giữa
hai thanh ghi W và f. Kết quả được đưa vào thanh ghi W nếu d=0 hay thanh ghi f nếu d=1.
Bit trạng thái: Z
2.13.21 Lệnh RLF
Cú pháp: RLF f,d (0≤f≤127, d [0,1]). Tác dụng: dịch trái các bit trong thanh ghi f
qua cờ carry. Kết quả được lưu trong thanh ghi W nếu d=0 hay thanh ghi f nếu d=1.

Bit trạng thái: C
2.13.22 Lệnh RETURN
Cú pháp: RETURN.
Tác dụng: quay trở về chương trình chính từ một chương trình con
Bit trạng thái:không có

2.13.23 Lệnh RRF
Cú pháp: RRF f,d (0≤f≤127, d [0,1]). Tác dụng: dịch phải các bit trong thanh ghi
f qua cờ carry. Kết quả được lưu trong thanh ghi W nếu d=0 hay thanh ghi f nếu d=1.

Bit trạng thái: C
2.13.24 Lệnh SLEEP
Cú pháp: SLEEP
Tác dụng: đưa vi điều khiển về chế độ sleep. Khi đó WDT bị xóa về 0, bit được xóa về 0, bit được set lên 1 và oscillator không được cho phép hoạt động.
Bit trạng thái:
2.13.25 Lệnh SUBLW
Cú pháp: SUBLW k
Tác dụng: lấy giá trị k trừ giá trị trong thanh ghi W. Kết quả được chứa trong thanh ghi W.
Bit trạng thái: C, DC, Z
2.13.26 Lệnh SUBWF
Cú pháp: SUBWF f,d (0≤f≤127, d [0,1])
Tác dụng: lấy giá trị trong thanh ghi f đem trừ cho thanh ghi W. Kết quả được lưu trong thanh ghiaW nếu d=0 hay thanh ghi f nếu d=1.
Bit trạng thái: C, DC, Z
2.13.27 Lệnh SWAP
Cú pháp: SWAP f,d (0≤f≤127, d [0,1])
Tác dụng: đảo 4 bit thấp với 4 bit cao trong thanh ghi f. Kết quả được chứa trong thanh ghi W nếu d=0 hay thanh ghi f nếu d=1.
Bit trạng thái: không có
2.13.28 Lệnh XORLW
Cú pháp: XORLW k (0≤k≤255)
Tác dụng: thực hiện phép toán XOR giữa giá trị k và giá trị trong thanh ghi W. Kết quả được lưu trong thanh ghi W.
Bit trạng thái: Z
2.13.29 Lệnh XORWF
Cú pháp: XORWF f,d
Tác dụng: thực hiện phép toán XOR giữa hai giá trị chứa trong thanh ghi W và thanh
ghi f. Kết quả được lưu vào trong thanh ghi W nếu d=0 hay thanh ghi f nếu d=1.
Bit trạng thái: Z
Ngoài các lệnh trên còn có một số lệnh dùng trong chương trình như:
2.13.30 Lệnh #DIFINE
Cú pháp: #DEFINE
Tác dụng: thay thế một chuỗi kí tự ny bằng một chuỗi kí tự khc, có nghĩa là mỗi khi chuỗi kí tự text1 xuất hiện trong chương trình, trình biên dịch sẽ tự động thay thế chuỗi kí tự đĩ bằng chuỗi kí tự .
2.13.31 Lệnh INCLUDE
Cú pháp: #INCLUDE hay #INCLUDE “filename”
Tác dụng: đính km một file khc vo chương trình, tương tự như việc ta copy file đó vào vị trí xuất hiện lệnh INCLUDE. Nếu dùng cú pháp thì file đình km l file hệ thống (system file), nếu dùng cú pháp “filename” thì file đính kèm là file của người sử dụng.
Thông thường chương trình được đính kèm theo một “header file” chứa cc thông tin định nghịa cc biến (thanh ghi W, thanh ghi F,..) và các địa chỉ các thanh ghi chức năng đặc biệt trong bộ nhớ dữ liệu. Nếu không có header file, chương trình sẽ khs đọc và khó hiểu hơn.
2.13.32 Lệnh CONSTANT
Cú pháp: CONSTANT =
Tác dụng: khai bo một hằng số, có nghĩa là khi phát hiện chuỗi kí tự “name” trong chương trình, trình biên dịch sẽ tự động thay bằng chuỗi kí tự bằng gi trị “value” đã được định nghĩa trước đó.
2.13.33 Lệnh VARIABLE
Cú pháp: VARIABLE =
Tác dụng: tương tự như lệnh CONSTANT, chỉ có điểm khác biệt duy nhất là giá trị
“value” khi dùng lệnh VARIABLE có thể thay đổi được trong quá trình thực thi chương trình còn lệnh CONSTANT thì không.
2.13.34 Lệnh SET
Cú pháp: SET
Tác dụng: gán giá trị cho một tên biến. Tên của biến có thể thay đổi được trong quá
trình thực thi chương trình.
2.13.35 Lệnh EQU
Cú pháp: EQU
Tác dụng: gán giá trị cho tên của tên của hằng số. Tên của hằng số không thay đổi trong quá trình thực thi chương trình.
2.13.36 Lệnh ORG
Cú pháp: ORG
Tác dụng: định nghĩa một địa chỉ chứa chương trình trong bộ nhớ chương trình của vi điều khiển.
2.13.37 Lệnh END
Cú pháp: END
Tác dụng: đánh dấu kết thúc chương trình.
2.13.38 Lệnh __CONFIG
Cú pháp: __CONFIG(Configuration bit)
Tác dụng: thiết lập các bit điều khiển các khối chức năng của vi điều khiển được chứa
trong bộ nhớ chương trình (Configuration bit)
2.13.39 Lệnh PROCESSOR
Cú pháp: PROCESSOR
Tác dụng: định nghĩa vi điều khiển nào sử dụng chương trình.







CHƯƠNG 3: ỨNG DỤNG PIC 16F877A XÂY DỰNG BỘ KIT THỰC HÀNH VI ĐIỀU KHIỂN

3.1 GIỚI THIỆU
Đề tài: Thiết kế bộ KIT thực hành PIC 16F877A bao gồm các phần chính:
- Điều khiển động cơ một chiều( PWM).
- Quét Led trận( LED MATRIX).
- Quét Led 7 thanh( 7SEG).
- Quét Led đơn( LED).
- Đo nhiệt độ qua LM35 hiển thị LCD( LM35 & LCD).
- Bàn phím tính toán cộng trừ nhân chia hiển thị LCD( KEY BOARD & LCD).
- Giao tiếp với cổng nối tiếp USART(USART).
- Khối nguồn 12V, 5V( POWER).
- Khối điều khiển nguồn( CONTROL POWER).

3.2 TRÌNH TỰ THIẾT KẾ
- Tìm hiểu về vi điều khiển PIC 16F877A.
- Tìm hiểu về IC LM35.
- Tìm hiểu về LCD, Led matrix, led 7 thanh, động cơ 1 chiều…
- Vẽ mạch nguyên lý bằng phần mềm Proteus.
- Viết code chương trình bằng phần mềm CCS( lập trình và biên dịch chương trình cho vi điều khiển PIC)
- Mô phỏng và test chạy thử trên board.
- Vẽ mạch in bằng phần mềm proteus.
- Hàn linh kiện và hoàn chỉnh mạch.

Link Download bản DOC
Do Drive thay đổi chính sách, nên một số link cũ yêu cầu duyệt download. các bạn chỉ cần làm theo hướng dẫn.
Password giải nén nếu cần: ket-noi.com | Bấm trực tiếp vào Link để tải:

 
Last edited by a moderator:

lemanhhung166

New Member
Bài viết rất bổ ích và mình đang cần tham khảo bài viết này bạn có thể gửi cho mình xin link download được không ạ
 

lemanhhung166

New Member
Đề tài Nghiên cứu về vi điều khiển PIC 16F877A và một số ứng dụng - Nghiên cứu và thiết kế bộ KIT PIC 16F877A

Download miễn phí Đề tài Nghiên cứu về vi điều khiển PIC 16F877A và một số ứng dụng - Nghiên cứu và thiết kế bộ KIT PIC 16F877A


Gồm các phần:
MỤC LỤC 4
LỜI MỞ ĐẦU 6
CHƯƠNG 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN 7
1.1 GIỚI THIỆU KHÁI QUÁT VỀ VI ĐIỀU KHIỂN 7
1.1.1 GIỚI THIỆU CHUNG 7
1.1.2 PHÂN LOẠI 8
1.1.3 CẤU TRÚC TỔNG QUAN CỦA VDK 9
1.2 KHÁI QUÁT VỀ VI ĐIỀU KHIỂN PIC 9
1.2.1 PIC LÀ GÌ ? 9
1.2.2 KIẾN TRÚC PIC 10
1.2.3 RISC VÀ CISC 11
1.2.4 PIPELINING 11
1.2.5 CÁC DÒNG PIC VÀ CÁCH LỰA CHỌN VI ĐIỀU KHIỂN PIC 13
1.2.6 NGÔN NGỮ LẬP TRÌNH CHO PIC 13
1.2.7 MẠCH NẠP PIC 13
CHƯƠNG 2: VI ĐIỀU KHIỂN PIC16F877A 15
2.1 GIỚI THIỆU CHUNG 15
2.1.1 CÁC DẠNG SƠ ĐỒ CHÂN 15
2.1.2 SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN PIC16F877A 16
2.1.3 CHỨC NĂNG CÁC CHÂN CỦA PIC16F877A 17
2.1.4 ĐẶC ĐIỂM VI ĐIỀU KHIỂN PIC16F877A 19
2.2 TỔ CHỨC BỘ NHỚ 21
2.2.1 BỘ NHỚ CHƯƠNG TRÌNH 21
2.2.2 BỘ NHỚ DỮ LIỆU 21
2.2.3 STACK 24
2.3 CÁC CỔNG XUẤT NHẬP CỦA PIC16F877A 25
2.3.1 PORTA 25
2.3.2 PORTB 26
2.3.3 PORTC 26
2.3.4 PORTD 26
2.3.5 PORTE 27
2.4 TIMER 0 27
2.5 TIMER1 29
2.6 TIMER2 30
2.7 ADC 31
2.8 COMPARATOR 34
2.9 CCP (CAPTURE/COMPARE/PWM) 37
2.10 GIAO TIẾP NỐI TIẾP 41
2.11 CỔNG GIAO TIẾP SONG SONG PSP (PARALLEL SLAVE PORT) 43
2.12 TỔNG QUAN VỀ MỘT SỐ ĐẶC TÍNH CỦA CPU 43
2.12.1 BỘ DAO ĐỘNG (OSCILLATOR) 43
2.12.2 CÁC CHẾ ĐỘ RESET 44
2.12.3 NGẮT (INTERRUPT) 46
2.12.4 WATCHDOG TIMER (WDT) 48
2.12.5 CHẾ ĐỘ SLEEP 48
2.13 TẬP LỆNH CỦA VI ĐIỀU KHIỂN PIC 51
CHƯƠNG 3: ỨNG DỤNG PIC 16F877A XÂY DỰNG BỘ KIT THỰC HÀNH VI ĐIỀU KHIỂN 57
3.1 GIỚI THIỆU 57
3.2 TRÌNH TỰ THIẾT KẾ 57
3.3 MẠCH NGUYÊN LÝ CỦA BỘ KIT VÀ NGUYÊN TẮC VẬN HÀNH 58
3.3.1 Mạch nguyên lý 58
3.3.2 Nguyên tắc vận hành bộ kit 58
3.4 NGUYÊN LÝ HOẠT ĐỘNG CỦA TỪNG KHỐI. 59
3.4.1 Khối quét Led 7 thanh 59
3.4.2 Khối quét LED ma trận. 60
3.4.3 Khối Đo nhiệt độ hiển thị LCD 61
3.4.4 Khối bàn phím. 62
3.4.5 Điều khiển động cơ (PWM) 63
3.4.6 Hiển thị vào ra bằng LED đơn. 64
3.4.7 Khối truyền thông nối tiếp (USART). 65
3.4.8 Khối nguồn. 66


Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

mục đích chương trình mà có thể dùng các thanh ghi này để chứa các biến số, hằng số, kết quả hay các tham số phục vụ cho chương trình.
2.2.3 STACK
Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một vùng nhớ đặc biệt không cho phép đọc hay ghi. Khi lệnh CALL được thực hiện hay khi một ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộ đếm chương trình PC tự động được vi điều khiển cất vào trong stack. Khi một trong các lệnh RETURN, RETLW hat RETFIE được thực thi, giá trị PC sẽ tự động được lấy ra từ trong stack, vi điều khiển sẽ thực hiện tiếp chương trình theo đúng qui trình định trước.
Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA có khả năng chứa được 8 địa chỉ và hoạt động theo cơ chế xoay vòng. Nghĩa là giá trị cất vào bộ nhớ Stack lần thứ 9 sẽ ghi đè lên giá trị cất vào Stack lần đầu tiên và giá trị cất vào bộ nhớ Stack lần thứ 10 sẽ ghi đè lên giá trị 6 cất vào Stack lần thứ 2.
Cần chú ý là không có cờ hiệu nào cho biết trạng thái stack, do đó ta không biết được khi nào stack tràn. Bên cạnh đó tập lệnh của vi điều khiển dòng PIC cũng không có lệnh POP hay PUSH, các thao tác với bộ nhớ stack sẽ hoàn toàn được điều khiển bởi CPU.
2.3 CÁC CỔNG XUẤT NHẬP CỦA PIC16F877A
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. 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.
2.3.1 PORTA
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:
PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA.
TRISA (địa chỉ 85h) : chứa giá trị các pin trong PORTA.
CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh.
CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sánh điện áp.
ADCON1 (ñòa chæ 9Fh) : thanh ghi ñieàu khieån boä ADC.
2.3.2 PORTB
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.
Các thanh ghi SFR liên quan đến PORTB bao gồm:
PORTB (địa chỉ 06h,106h) : chứa giá trị các pin trong PORTB
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.3.3 PORTC
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 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:
PORTC (ñòa chæ 07h) : chöùa giaù trò caùc pin trong PORTC
TRISC (ñòa chæ 87h) : ñieàu khieån xuaát nhaäp.
2.3.4 PORTD
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:
Thanh ghi PORTD : chứa giá trị các pin trong PORTD.
Thanh ghi TRISD : điều khiển xuất nhập.
2.3.5 PORTE
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:
PORTE : chứa giá trị các chân trong PORTE.
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.
ADCON1 : thanh ghi điều khiển khối ADC.
2.4 TIMER 0
Đây là một trong ba bộ đếm hay bộ định thời của vi điều khiển PIC16F877A. Timer0 là bộ đếm 8 bit được kết nối với bộ chia tần số (prescaler) 8 bit. Cấu trúc của Timer0 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 Timer0 sẽ xuất hiện khi Timer0 bị tràn. Bit TMR0IE (INTCON) là bit điều khiển của Timer0. TMR0IE=1 cho phép ngắt Timer0 tác động, TMR0IF= 0 không cho phép ngắt Timer0 tác động. Sơ đồ khối của Timer0 như sau:
Hình 2.6 Sơ đồ khối của Timer0.
Muốn Timer0 hoạt động ở chế độ Timer ta clear bit TOSC (OPTION_REG), khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kì xung đồng hồ (tần số vào Timer0 bằng ¼ tần số oscillator). Khi giá trị thanh ghi TMR0 từ FFh trở về 00h, ngắt Timer0 sẽ xuất hiện.
Thanh ghi TMR0 cho phé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ách linh động. Muốn Timer0 hoạt động ở chế độ counter ta set bit TOSC (OPTION_REG). Khi đó xung tác động lên bộ đếm được lấy từ chân RA4/TOCK1. Bit TOSE (OPTION_REG) cho phép lựa chọn cạnh tác động vào bột đế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) sẽ được set. Đây chính là cờ ngắt của Timer0. Cờ ngắt này phải được xóa bằng chương trình trước khi bộ đếm bắt đầu thực hiện lại quá trình đếm. Ngắt Timer0 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ó nghĩa là nếu prescaler được sử dụng cho Timer0 thì WDT sẽ không có được hỗ trợ của prescaler và ngược lại. Prescaler được điều khiển bởi thanh ghi OPTION_REG. Bit PSA (OPTION_REG) xác định đối tượng tác động của prescaler. Các bit PS2:pS0 (OPTION_REG) xác định tỉ số chia tần số của prescaler. Xem lại thanh ghi OPTION_REG đ
Bạn gửi cho mình xin link download của bài viết này vào email: [email protected] được không ạ
 
Các chủ đề có liên quan khác
Tạo bởi Tiêu đề Blog Lượt trả lời Ngày
R Nghiên cứu giải pháp tăng cường quản lý nhà nước về chất lượng thức ăn đối với một số cơ sở sản xuất thức ăn chăn nuôi Nông Lâm Thủy sản 0
D Nghiên cứu sự hài lòng của người dân về nhà ở tái định cư tại các dự án xây dựng lại nhà chung cư cũ Luận văn Kinh tế 0
D Nghiên cứu về kiến thức, thái độ, thực hành sức khỏe sinh sản vị thành niên của học sinh trung học phổ thông Y dược 0
D Nghiên cứu về mạng Nơron tích chập và ứng dụng cho bài toán nhận dạng biển số xe Công nghệ thông tin 0
D Nghiên cứu về thảo luận nhóm và ảnh hưởng của nó đến khả năng nói của học sinh không chuyên ngữ Ngoại ngữ 0
D Nghiên cứu tìm hiểu về hệ thống tệp tin trong linux Công nghệ thông tin 0
D Nghiên cứu sự khác nhau về nhu cầu sử dụng dịch vụ hẹn hò của người việt tại hà nội theo độ tuổi Văn hóa, Xã hội 0
D Nghiên cứu khái quát về công nghệ sản xuất cáp điện Khoa học kỹ thuật 0
D Nghiên cứu sự luận giải về dịch đồ học chu tử của nho gia việt nam thời trung đại Văn hóa, Xã hội 0
D Nghiên cứu một số đặc điểm sinh học và tri thức địa phương về cây Trà hoa vàng tại xã Dương Phong, huyện Bạch Thông, tỉnh Bắc Kạn Khoa học Tự nhiên 0

Các chủ đề có liên quan khác

Top