BÀI BÁO CÁO THỰC TẬP-THIẾT KẾ MẠCH VÀ LẬP TRINH CHO PIC 16F877A

18 603 0
BÀI BÁO CÁO THỰC TẬP-THIẾT KẾ MẠCH VÀ LẬP TRINH CHO PIC 16F877A

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Báo cáo thực tập chuyên môn BÁO CÁO THỰC TẬP THIẾT KẾ MẠCH VÀ LẬP TRINH CHO PIC 16F877A Nội dung: - Tìm hiểu về vi xử lý PIC16F877A của Microchip - Thiết kế một PIC KIT gồm 4 module: nút nhấn, led đơn, LCD, UART - Viết chương trình điều khiển hoạt động của 4 module trên I. Tổng quan về PIC 16F877A 1. Sơ đồ chân của PIC 16F877A PIC16F877A có 5 cổng vào/ra đa chức năng: PORTA, PORTB, PORTC, PORTD, PORTE Mặc định: PORT A là các đầu vào tương tự. Để sử dụng PORT A như các cổng vào/ra số cần thiết lập tham số cho thanh ghi ADCON1 (ADCON1 = 0x06, 0x07). Điện tử tin học công nghiệp K48 1 Báo cáo thực tập chuyên môn + Điều khiển chức năng cổng là vào hay ra bằng thanh các thanh ghi TRISA, TRISB, TRISC, TRISD, TRISE + Xuất dữ liệu ra cổng, hoặc nhận dữ liệu từ cổng chỉ đơn giản bằng sử dụng phép gán. - Chân OSC1/CLKI(13) : là ngõ vào kết nối với dao động thạch anh hoặc ngõ vào nhận xung clock bên ngoài . +.OSC1 : ngõ vào dao động thạch anh hoặc ngõ vào nguồn xung bên ngoài. Ngõ bòa có mạch schmitt trigger nếu sử dụng dao động RC +. CLKI : ngõ vào nguồ xung bên ngoài . - Chân OSC2/CLKO(14) : là ngõ ra dao động thạch anh hoặc ngõ ra cấp xung clock. +. OSC2 : ngõ ra dao động thạch anh . Kết nối đến thạch anh hoặc bộ cộng hưởng. +. CLKO : ở chế độ RC, ngõ ra của OSC2 bằng ¼ tần số của OSC1 và chính là tốc độ của chu kì lệnh . - Chân MCLR /V pp (1) : có 2 chức năng : + MCLR : là ngõ vào reset tích hợp mức thấp . + V pp : khi lập trình cho pic thì đóng vai trò là ngõ vào nhận điện áp lập trình . - Chân RA0 / AN0 (2) : có 2 chức năng + RA0 : xuất nhập số . + AN0 : ngõ vào tương tự của kênh thứ 0 . - Chân RA1/ AN1 (3) : + RA1 : xuất nhập số . + AN1 : ngõ vào tương tự của kênh thứ 1. - Chân RA2/ AN2/ VREF-/CVREF (4) : + RA2 : xuất nhập số . + AN2 : ngõ vào tương tự của kênh thứ 2 . + VREF- : ngõ vào điện áp chuẩn (thấp) của bộ A/D + CVREF : điện áp tham chiếu VREF ngõ ra bộ so sánh - Chân RA3/ AN3/ VREF+ (5) : + RA3 : xuất nhập số . + AN3 : ngõ vào tương tự của kênh thứ 3 + VREF+ : ngõ vào điện áp chuẩn (cao) của bộ A/D - Chân RA4/ TOCKI/ C1OUT (6) : + RA4 : xuất nhập số - mở khi được cấu tạo ngõ ra . + TOCKI : ngõ vào xung clock bên ngoài cho timer 0 . + C1OUT : ngõ ra bộ so sánh 1 . - Chân RA5/ AN4/ SS / C2OUT (7) : + RA5 : xuất nhập số Điện tử tin học công nghiệp K48 2 Báo cáo thực tập chuyên môn + AN4 : ngõ vào tương tự của kênh thứ 4 + SS : ngõ vào chọn lựa SPI phụ . + C2OUT : ngõ ra bộ so sánh 2 . - Chân RB0 /INT (33) : có 2 chức năng + RB0 : xuất nhập số . + INT : ngõ vào nhận tín hiệu ngắt ngoài . - Chân RB1(34) : xuất nhập số . - Chân RB2(35) : xuất nhập số . - Chân RB3/PGM(36) : + RB3 :xuất nhập số . + Chân cho phép lập trình điện áp thấp ICSP . - Chân RB4(37)và RB5(38) : xuất nhập số . - Chân RB6/ PGC (39) : + RB6 : xuất nhập số + PGC : mạch gỡ rối và xung clock lập trình ICSP . - Chân RB7/ PGD (40) : + RB7 : xuất nhập số + PGD : mạch gỡ rối và dữ liệu lập trình ICSP . - Chân RC0/T1OCO/T1CKI (15) : + RC0 : xuất nhập số + T1OCO : ngõ vào bộ dao động timer 1 + T1CKI : ngõ vào xung clock bên ngoài timer1 - Chân RC1/T1OSI/CCP2 (16) : + RC1 : xuất nhập số + T1OSI : ngõ vào bộ dao động timer 1 + CCP2 : ngõ vào capture2, ngõ ra compare2, ngõ ra PWM2 . - Chân RC2/CCP1 (17): + RC2 : xuất nhập số + CCP1: ngõ vào capture1, ngõ ra compare1, ngõ ra PWM1 . - Chân RC3/SCK/SCL (18) : + RC3 : xuất nhập số + SCK : ngõ vào xung clock nối tiếp đồng bộ, ngõ ra của chế độ SPI + SCL : ngõ vào xung clock nối tieepos đồng bộ/ ngõ ra của chế độ I 2 C. - Chân RC4/ SDI/ SDA (23) + RC4 : xuất nhập số + SDI : dữ liệu vào SPI + SDA : xuất nhập dữ liệu I 2 C - Chân RC5/ SDO (24) + RC5 : xuất nhập số + SDO : dữ liệu ra SPI Điện tử tin học công nghiệp K48 3 Báo cáo thực tập chuyên môn - Chân RC6/ TX/ CK (25) + RC6 : xuất nhập số + TX : truyền bất đồng bộ USART + CK : xung đồng bộ USART - Chân RC7/RX/ DT (26) + RC7 : xuất nhập số + RX : nhận bất đồng bộ USART + DT : dữ liệu đồng bộ USART - Chân RD0/ PSP0 (19) + RD0 : xuất nhập số + PSP0 : dữ liệu port tớ song song - Chân RD1/ PSP1 (20) + RD1 : xuất nhập số + PSP1 : dữ liệu port tớ song song - các chân RD2/PSP2 (21), RD3/PSP3 (22), RD4/PSP4 (27), RD5/PSP5 (28), RD6/PSP6 (29), RD7/PSP7(30) tương tự chân 19, 20 - Chân RE0/ RD /AN5 (8) + RE0 : xuất nhập số + RD : điều khiển đọc port tớ song song + AN5 : ngõ vào tương tự 5 - Chân RE1/ WR /AN6 (9) + RE1 : xuất nhập số + WR : điều khiển ghi port tớ song song + AN6 : ngõ vào tương tự kênh thứ 6 - Chân RE2/ CS /AN7 (10) + RE2 : xuất nhập số + CS : chip chọn lựa điều khiển port tớ song song +AN7 : ngõ vào tương tự kênh thứ 7 - Chân VDD(11,32) và VSS (12, 31) là các chân nguồn của pic Điện tử tin học công nghiệp K48 4 Báo cáo thực tập chuyên môn 2. Cấu trúc bên trong của PIC 16f877A Điện tử tin học công nghiệp K48 5 Báo cáo thực tập chuyên môn Điện tử tin học công nghiệp K48 6 Báo cáo thực tập chuyên môn - Khối ALU: - Khối bộ nhớ chứa chương trình - Khối bộ nhớ chứa dữ liệu EEPROM - Khối bộ nhớ file thanh ghi RAM - Khối giải mã lệnh và điều khiển - IDC - Khối thanh ghi đặc biệt - Khối ngoại vi timer - Khối giao tiếp nối tiếp USART - Khối chuyển đổi tín hiệu tương tự sang số - Khối các Port xuất nhập 3. Một số đặc điểm của PIC 16F877A Vi xử lý PIC16F877A thuộc họ vi điều khiển PIC do hãng Atmel sản xuất, là bộ xử lý RISC với cấu trúc kiểu Harvard (đơn vị trung tâm có bộ nhớ chương trình và bộ nhớ dữ liệu tách biệt). Chip xư lý tốc độ cao, tiêu thụ năng lượng thấp - Tập lệnh gồm 35 lệnh có độ dài 14bit - Tốc độ hoạt động tối đa cho phép là 20MHz với một chu kì lệnh là 200ns 8K*14bit bộ nhớ chương trình - Bộ nhớ dữ liệu 368*8 byte RAM - Bộ nhớ dữ liệu EEPROM với dung lượng 256*8 byte - Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit - Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep. - Timer2: bộ đếm 8 bit - Hai bộ Capture/so sánh/ điều chế độ rộng xung - Hỗ trợ các chuẩn giao tiếp nối tiếp SSP, SPI, I2C - Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ. - 8 kênh chuyển đổi ADC 10 bit - Bộ nhớ Flash với khả năng ghi xóa được 100000 lần - Bộ nhớ EEPROM với khả năng ghi xóa 1000000 lần Thiết bị ngoại vi và tính năng: - 02 timer/counter 8 bit - 01 timer/counter 16 bit - 02 modules PWM độ phân giải 10 bit - Có hỗ trợ giao tiếp SPI và I 2 C - 01 USART - 08 kênh ADC 10 bit - Điện áp hoạt động từ 2V đến 5.5V Điện tử tin học công nghiệp K48 7 Báo cáo thực tập chuyên môn 4. Tổ chức bộ nhớ - Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dung lượng bộ nhớ 8 K word (1 word= 14 bit) và được phân thành nhiều trang (từ trang 0 đến trang 3). Như vậy bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh . Để mã hóa được địa chỉ của 8 k word bộ nhớ chương trình, bộ đếm chương tình có dung lượng 13 bit. Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h. Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đế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 Điện tử tin học công nghiệp K48 8 Báo cáo thực tập chuyên môn Lớp: ĐT&THCN - 48 II. Thiết kế PIC KIT sử dụng vi xử lý PIC16F877A 1. Mạch nguyên lý R C 7 D 2 L E D P 1 C O N N E C T O R D B 9 5 9 4 8 3 7 2 6 1 M C L R R D 6 R 1 6 R + 5 V G N D R C 6 R A 5 D 1 L E D C 7 C A P N P R B 3 R D 7 S W 2 S W P U S H B U T T O N R 4 R R D 0 O S C 1 + 5 V R E 0 R B 4 + 5 V R D 1 S W 1 S W P U S H B U T T O N C 4 C A P N P O S C 2 G N D R E 1 D 5 L E D R 6 R J 2 C O N 3 1 2 3 R B 5 G N D R D 2 M C L R U 1 P I C 1 6 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 M C L R / V p p R A 0 / A N 0 R A 1 / A N 1 R A 2 / A N 2 / V r e f - / C V r e f R A 3 / A N 3 / V r e f + R A 4 / T O C K 1 / C 1 O U T R A 5 / A N 4 / S S / C 2 O U T R E 0 / R D / A N 5 R E 1 / W R / A N 6 R E 2 / C S / A N 7 V d d V s s O S C 1 / C L K I O S C 2 / C L K O R C 0 / T 1 O S O / T 1 C K 1 R C 1 / T 1 O S I / C C P 2 R C 2 / C C P 1 R C 3 / S C K / S C L R D 0 / P S P 0 R D 1 / P S P 1 R D 2 / P S P 2 R D 3 / P S P 3 R C 4 / S D I / S D A R C 5 / S D O R C 6 / T X / C K R C 7 / R X / D T R D 4 / P S P 4 R D 5 / P S P 5 R D 6 / P S P 6 R D 7 / P S P 7 V s s V d d R B 0 / I N T R B 1 R B 2 R B 3 / P G M R B 4 R B 5 R B 6 / P G C R B 7 / P G D G N D R E 2 G N D C 1 2 C A P D 3 L E D R B 3 R D 3 C 1 0 C A P R 1 2 R + 5 V + 5 V T 2 O U T R B 2 S W 5 S W P U S H B U T T O N R D 4 C 9 C A P S W 3 S W P U S H B U T T O N G N D R 2 I N T U 2 M A X 2 3 2 _ 1 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 C 1 + V + C 1 - C 2 + C 2 - V - T 2 O U T R 2 I N R 2 O U T T 2 I N T 1 I N R 1 O U T R 1 I N T 1 O U T G N D V C C R 1 R R B 1 R D 5 R 9 R M C L R T 2 O U T R B 0 D 6 L E D R 7 R R D 6 R 5 R R 1 4 R E S I S T O R V A R C 5 C A P N P + 5 V R A 5 R 2 I N T R B 5 D 1 0 L E D R D 7 G N D R 2 R C 1 1 C A P R E 0 G N D R 1 3 R R B 4 D 4 L E D R D 1 R B 7 R E 1 R 1 5 R E S I S T O R V A R + 5 V R B 0 R 1 0 R C 1 3 C A P R D 0 C 1 C A P N P R B 6 U 4 L M 7 8 0 5 C / T O 1 3 2 I N O U T G N D R E 2 + 5 V R B 1 R D 2 J 1 C O N 5 1 2 3 4 5 D 7 L E D R B 7 O S C 2 C 6 C A P N P L C D 1 1 6 x 2 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 G N D V C C V - C o n s t R S R / W E D B 0 D B 1 D B 2 D B 3 D B 4 D B 5 D B 6 D B 7 A K G N D R B 2 D 9 D I O D E S W 4 S W P U S H B U T T O N R D 3 R B 6 O S C 1 R C 7 Y 1 Z T A R 3 R < D o c > < R e v C o d e > < T i t l e > B 1 1W e d n e s d a y , J u n e 0 9 , 2 0 1 0 T i t l e S i z e D o c u m e n t N u m b e r R e v D a t e : S h e e t o f R D 4 C 3 C A P N P D 8 L E D + 5 V C 8 C A P G N D R 8 R R C 6 R D 5 C 2 C A P N P R 1 1 R G N D + 5 V 2. Mạch in: - 9 - Báo cáo thực tập chuyên môn Lớp: ĐT&THCN - 48 III. Chương trình điều khiển hoạt động của KIT 1. Nháy led int i; int ma[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; int ma1[]={0xff,0x7e,0x3c,0x18,0x00}; int ma2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void main() { trisD=0; portD=0; while(1) { for(i=0;i<8;i++) { portD=ma[i]; - 10 - [...].. .Báo cáo thực tập chuyên môn Lớp: ĐT&THCN - 48 delay_ms(500); } for(i=7;i>=0;i ) { portD=ma[i]; delay_ms(500); } for(i=0;i=0;i ) { portD=ma1[i]; delay_ms(500); } portD=0x00; for(i=0;i . Báo cáo thực tập chuyên môn BÁO CÁO THỰC TẬP THIẾT KẾ MẠCH VÀ LẬP TRINH CHO PIC 16F877A Nội dung: - Tìm hiểu về vi xử lý PIC1 6F877A của Microchip - Thiết kế một PIC KIT gồm 4. stack và không được địa chỉ hóa bởi bộ đếm chương trình Điện tử tin học công nghiệp K48 8 Báo cáo thực tập chuyên môn Lớp: ĐT&THCN - 48 II. Thiết kế PIC KIT sử dụng vi xử lý PIC1 6F877A 1. Mạch. +AN7 : ngõ vào tương tự kênh thứ 7 - Chân VDD(11,32) và VSS (12, 31) là các chân nguồn của pic Điện tử tin học công nghiệp K48 4 Báo cáo thực tập chuyên môn 2. Cấu trúc bên trong của PIC 16f877A Điện

Ngày đăng: 02/06/2015, 17:34

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan