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.
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:
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
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ô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:
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:
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.
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:
You must be registered for see links
Tags: thiết kế bộ kit vdk, ĐIỀU KHIỂN NHIỆT ĐỘ BẰNG PIC 16F877A, dieu khien led 7 thanh PIC16F877A mã code trong ccs c, một số đề tài liên quan đén vi điều khiển, chức năng bộ kit 8051 dùng pic16f877a, thiet ke che tao bo kitpic16f877a, bộ kit lập trình pic16f877a, tai lieu ve pic16f87, giới thiệu giao tiếp trong vi điều khiển pic
Last edited by a moderator: