1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Vi xử lý PIC 16f887

106 2.8K 6

Đ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

Vi xử lý PIC 16f887 Vi xử lý PIC 16f887 Vi xử lý PIC 16f887 Vi xử lý PIC 16f887 Vi xử lý PIC 16f887 Vi xử lý PIC 16f887 Vi xử lý PIC 16f887 Vi xử lý PIC 16f887 Vi xử lý PIC 16f887 Vi xử lý PIC 16f887 Vi xử lý PIC 16f887 Vi xử lý PIC 16f887 Vi xử lý PIC 16f887 Vi xử lý PIC 16f887 Vi xử lý PIC 16f887 Vi xử lý PIC 16f887

BÀI   TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC MỘT SỐ ĐẶC TÍNH CHUNG CỦA VI ĐIỀU KHIỂN PIC      CÁC ĐẶC TÍNH NGOẠI VI CÁC ĐẶC TÍNH VỀ TƢƠNG TỰ CÁC ĐẶC TÍNH ĐẶC BIỆT CỦA VI ĐIỀU KHIỂN CƠNG NGHỆ CMOS VI ĐIỀU KHIỂN PIC 16F877A    CẤU HÌNH PIC16F877A SƠ ĐỒ KHỐI BÊN TRONG PIC16F877A SƠ ĐỒ CHÂN VÀ CHỨC NĂNG CÁC CHÂN PIC16F877A Đại học sư phạm kỹ thuật HCM Khoa điện – điện tử Nguyễn Đình Phú TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC I PIC họ vi điều khiển RISC đƣợc sản xuất cơng ty Microchip Technology Thế hệ PIC PIC1650 đƣợc phát triển Microelectronics Division thuộc General – Instrument PIC viết tắt "Programmable Intelligent Computer" sản phẩm hãng General Instruments đặt cho dòng sản phẩm PIC1650 Thời điểm PIC1650 đƣợc dùng để giao tiếp với thiết bị ngoại vi cho máy chủ 16 bit CP1600, vậy, ngƣời ta gọi PIC với tên "Peripheral Interface Controller" – điều khiển giao tiếp ngoại vi CP1600 CPU mạnh nhƣng lại yếu hoạt động xuất nhập PIC 8-bit đƣợc phát triển vào năm 1975 để hỗ trợ cho hoạt động xuất nhập CP1600 ROM để chứa mã, khái niệm RISC chƣa đƣợc sử dụng thời giờ, nhƣng PIC thực vi điều khiển với kiến trúc RISC, chạy lệnh với chu kỳ máy – gồm chu kỳ dao động Năm 1985 General Instruments bán cơng nghệ vi điện tử họ, chủ sở hữu hủy bỏ hầu hết dự án - lúc q lỗi thời Tuy nhiên PIC đƣợc bổ sung EEPROM để tạo thành điều khiển vào lập trình Ngày nhiều dòng PIC đƣợc xuất xƣởng với hàng loạt module ngoại vi tích hợp sẵn (nhƣ USART, PWM, ADC ), với nhớ chƣơng trình từ 512 Word đến 32K Word MỘT SỐ ĐẶC TÍNH CHUNG CỦA VI ĐIỀU KHIỂN PIC II Hiện có nhiều dòng PIC có nhiều khác biệt phần cứng, nhƣng điểm qua vài nét nhƣ sau:  Là CPU 8/16 bit, xây dựng theo kiến trúc Harvard  Có nhớ Flash ROM tuỳ chọn từ 256 byte đến 256 Kbyte  Có cổng xuất – nhập (I/O ports)  Có timer 8/16 bit  Có chuẩn giao tiếp nối tiếp đồng bộ/khơng đồng USART  Có chuyển đổi ADC 10/12 bit  Có so sánh điện áp (Voltage Comparators)  Có khối Capture/Compare/PWM  Có hỗ trợ giao tiếp LCD  Có MSSP Peripheral dùng cho giao tiếp I²C, SPI, I²S  Có nhớ nội EEPROM - ghi/xố lên tới triệu lần  Có khối Điều khiển động cơ, đọc encoder  Có hỗ trợ giao tiếp USB  Có hỗ trợ điều khiển Ethernet  Có hỗ trợ giao tiếp CAN Đặc điểm thực thi tốc độ cao CPU RISC họ vi điều khiển PIC16F87XA là:  Chỉ gồm 35 lệnh đơn  Thời gian thực tất lệnh chu kì máy, ngoại trừ lệnh gọi chƣơng trình  Tốc độ hoạt động: * DC- 20MHz ngõ vào xung clock * DC- 200ns chu kì lệnh  Dung lƣợng nhớ chƣơng trình Flash 8K×14words  Dung lƣợng nhớ liệu RAM 368×8bytes  Dung lƣợng nhớ liệu EEPROM 256×8 bytes CÁC ĐẶC TÍNH NGOẠI VI  Timer0: định thời timer/counter bit có chia trƣớc Bài giảng: Cấu trúc vđk PIC Đại học sư phạm kỹ thuật HCM    Nguyễn Đình Phú Timer1: định thời timer/counter 16 bit có chia trƣớc, đếm CPU chế độ ngủ với nguồn xung từ tụ thạch anh nguồn xung bên ngồi Timer2: định thời timer/counter bit với ghi 8-bit, chia trƣớc chia sau Hai khối Capture, Compare, PWM  Capture có độ rộng 16-bit, độ phân giải 12.5ns  Compare có độ rộng 16-bit, độ phân giải 200ns  Độ phân giải lớn PWM 10-bit CÁC ĐẶC TÍNH TƯƠNG TỰ    Có kênh chuyển đổi tín hiệu tƣơng tự thành tín hiệu số ADC 10-bit Có reset BOR (Brown – Out Reset) Khối so sánh điện áp tƣơng tự:  Hai so sánh tƣơng tự  Khối tạo điện áp chuẩn VREF tích hợp bên lập trình  Đa hợp ngõ vào lập trình từ ngõ vào CPU với điện áp chuẩn bên  Các ngõ so sánh truy xuất từ bên ngồi CÁC ĐẶC TÍNH ĐẶC BIỆT CỦA VI ĐIỀU KHIỂN           Khoa điện – điện tử Bộ nhớ chƣơng trình Enhanced Flash cho phép xóa ghi 100,000 lần Bộ nhớ liệu EEPROM cho phép xóa ghi 1,000,000 lần Bộ nhớ EEPROM lƣu giữ liệu 40 năm tự lập trình lại Mạch lập trình nối tiếp ISP thơng qua chân (In-Circuit Serial Programming) Nguồn sử dụng nguồn đơn 5V cấp cho mạch lập trình nối tiếp Có Watchdog Timer (WDT) với dao động RC tích hợp Chip Có thể lập trình mã bảo mật Có thể hoạt động chế độ ngủ để tiết kiệm lƣợng Có thể lựa chọn dao động Có mạch điện gỡ rối ICD (In-Circuit Debug) CƠNG NGHỆ CMOS: Có đặc tính: cơng suất thấp, cơng nghệ nhớ Flash/EEPROM tốc độ cao Điện áp hoạt động từ 2V đến 5,5V tiêu tốn lƣợng thấp Phù hợp với nhiệt độ làm việc cơng nghiệp thƣơng mại Bảng 1-1 trình bày tóm tắt cấu trúc loại PIC16F87X Hình 1-1 trình bày sơ đồ chân loại PIC16F87XA Bài giảng: Cấu trúc vđk PIC Đại học sư phạm kỹ thuật HCM Khoa điện – điện tử Nguyễn Đình Phú Hình 1-1: Sơ đồ chân họ PIC16F87XA III VI ĐIỀU KHIỂN PIC 16F877A CẤU HÌNH PIC16F877A: PIC16F877A có 40/44 chân với cấu trúc nhƣ sau:  Có port xuất/ nhập  Có kênh chuyển đổi A/D  Có port giao tiếp song song  Có nhớ gấp đơi so với PIC16F873A/PIC16F874A Bảng 1-2 tóm tắt đặc điểm PIC16F877A: Đặc điểm Tần số hoạt động Reset (và Delay) Bộ nhớ chƣơng trình Flash (14-bit word) Bộ nhớ liệu (byte) Bộ nhớ liệu EEPROM (byte) Các nguồn ngắt Các port xuất nhập Timer Các module capture/compare/PWM Giao tiếp nối tiếp Giao tiếp song song Module A/D 10bit Bộ so sánh tƣơng tự Tập lệnh Số chân PIC16F877A DC- 20MHz POR, BOR (PWRT, OST) 8K 368 256 15 Các port A, B, C, D, E MSSP, USART PSP kênh ngõ vào 35 lệnh 40 chân PDIP 44 chân PLCC 44 chân TQFP 44 chân QFN Cấu hình đƣợc minh họa nhƣ hình sau: Bài giảng: Cấu trúc vđk PIC Đại học sư phạm kỹ thuật HCM Khoa điện – điện tử Nguyễn Đình Phú Hình 1-2: Cấu hình PIC16 SƠ ĐỒ KHỐI BÊN TRONG PIC16F877A: Hình 1-3 trình bày sơ đồ khối PIC16F877A, gồm khối:               Khối ALU – Arithmetic Logic Unit Khối nhớ chứa chƣơng trình – Flash Program Memory Khối nhớ chứa liệu EEPROM – Data EPROM Khối nhớ file ghi RAM – RAM file Register Khối giải mã lệnh điều khiển – Instruction Decode Control Khối ghi đặc biệt Khối nhớ ngăn xếp Khối reset mạch có điện, khối định thời reset mạch có điện, khối định thời ổn định dao động có điện, khối định thời giám sát, khối reset sụt giảm nguồn, khối gỡ rối, khối lập trình nhớ điện áp thấp Khối ngoại vi timer T0, T1,T2 Khối giao tiếp nối tiếp Khối chuyển đổi tín hiệu tƣơng tự sang số –ADC Khối so sánh điện áp tƣơng tự Khối tạo điện áp tham chiếu Khối port xuất nhập SƠ ĐỒ CHÂN VÀ CHỨC NĂNG CÁC CHÂN PIC16F877A: Sơ đồ chân PIC gồm nhiều loại nhƣng khảo sát loại PIC 40 chân nhƣ hình 1-4 Chức chân nhƣ sau: Bài giảng: Cấu trúc vđk PIC Đại học sư phạm kỹ thuật HCM Khoa điện – điện tử Nguyễn Đình Phú Hình 1-3: Sơ đồ khối PIC16F87XA     Chân MCLR /VPP (1): có chức năng:  MCLR : ngõ vào reset tích cực mức thấp  VPP: ngõ vào nhận điện áp ghi liệu vào nhớ nội flash Chân RA0/AN0 (2): có chức năng:  RA0: xuất/ nhập số  AN0: ngõ vào tƣơng tự kênh thứ Chân RA1/AN1(3):  RA1: xuất/nhập số  AN1: ngõ vào tƣơng tự kênh thứ Chân RA2/AN2/VREF-/CVREF (4):  RA2: xuất/nhập số Bài giảng: Cấu trúc vđk PIC Đại học sư phạm kỹ thuật HCM    Khoa điện – điện tử Nguyễn Đình Phú AN2: ngõ vào tƣơng tự kênh thứ VREF-: ngõ vào điện áp chuẩn (thấp) ADC CVREF: điện áp tham chiếu VREF ngõ so sánh Hình 1-4: Sơ đồ chân    Chân RA3/AN3/VREF+ (5):  RA3: xuất/nhập số  AN3: ngõ vào tƣơng tự kênh thứ  VREF+: ngõ vào điện áp chuẩn (cao) A/D Chân RA4/TOCKI/C1OUT (6):  RA4: xuất/nhập số – mở đƣợc cấu tạo ngõ  TOCKI: ngõ vào xung clock từ bên ngồi cho Timer0  C1OUT: ngõ so sánh Chân RA5/AN4/ SS /C2OUT (7):  RA5: xuất/nhập số  AN4: ngõ vào tƣơng tự kênh thứ    Chân RE0/ RD /AN5 (8):  RE0: xuất/nhập số    RD : điều khiển đọc port song song AN5: ngõ vào tƣơng tự Chân RE1/ WR /AN6 (9):  RE1: xuất/nhập số    SS : ngõ vào chọn lựa SPI phụ C2OUT: ngõ so sánh WR : điều khiển ghi port song song AN6: ngõ vào tƣơng tự kênh thứ Chân RE2/ CS /AN7 (10):  RE2: xuất/nhập số   CS : Chip chọn lựa điều khiển port song song AN7: ngõ vào tƣơng tự kênh thứ Bài giảng: Cấu trúc vđk PIC Đại học sư phạm kỹ thuật HCM                 Khoa điện – điện tử Nguyễn Đình Phú Chân OSC1/CLKI (13): ngõ vào kết nối với dao động thạch anh ngõ vào nhận xung clock bên ngồi  OSC1: ngõ vào dao động thạch anh ngõ vào nguồn xung bên ngồi Ngõ vào có mạch Schmitt Trigger sử dụng dao động RC  CLKI: ngõ vào nguồn xung bên ngồi Chân OSC2/CLKO (14): ngõ dao động thạch anh ngõ cấp xung clock  OSC2: ngõ dao động thạch anh Kết nối đến thạch anh cộng hƣởng  CLKO: chế độ RC, ngõ OSC2, ¼ tần số OSC1 tốc độ chu kì lệnh Chân RC0/T1OSO/T1CKI (15):  RC0: xuất/nhập số  T1OSO: ngõ dao động Timer1  T1CKI: ngõ vào xung clock từ bên ngồi Timer1 Chân RC1/T1OSI/CCP2 (16):  RC1: xuất/nhập số  T1OSI: ngõ vào dao động Timer1  CCP2: ngõ vào Capture2, ngõ compare2, ngõ PWM2 Chân RC2/CCP1 (17):  RC2: xuất/nhập số  CCP1: ngõ vào Capture1, ngõ compare1, ngõ 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õ chế độ SPI  SCL: ngõ vào xung clock nối tiếp đồng bộ/ngõ chế độ I2C Chân RD0/PSP0 (19):  RD0: xuất/nhập số  PSP0: liệu port song song Chân RD1/PSP1 (20):  RD1: xuất/nhập số  PSP1: liệu port 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 RB0/INT (33):  RB0: xuất/nhập số  INT: ngõ vào nhận tín hiệu ngắt ngồi Chân RB1 (34): xuất/nhập số Chân RB2 (35): xuất/nhập số Chân RB3/PGM:  RB3: xuất/nhập số  PGM: Chân cho phép lập trình điện áp thấp ICSP Chân RB4 (37), RB5 (38): xuất/nhập số Chân RB6/PGC (39):  RB6: xuất/nhập số  PGC: mạch gỡ rối xung clock lập trình ICSP Chân RB7/PGD (40):  RB7: xuất/nhập số Bài giảng: Cấu trúc vđk PIC Đại học sư phạm kỹ thuật HCM      Khoa điện – điện tử Nguyễn Đình Phú  PGD: mạch gỡ rối liệu lập trình ICSP Chân RC4/SDI/SDA (23):  RC4: xuất/nhập số  SDI: liệu vào SPI  SDA: xuất/nhập liệu I2C Chân RC5/SDO (24):  RC5: xuất/nhập số  SDO: liệu SPI Chân RC6/TX/CK (25):  RC6: xuất/nhập số  TX: truyền bất đồng USART  CK: xung đồng USART Chân RC7/RX/DT (26):  RC7: xuất/nhập số  RX: nhận bất đồng USART  DT: liệu đồng USART Chân VDD (11,32) VSS (12, 31): chân nguồn PIC Để dễ tiếp cận chức chân ta phân loại theo chức chung:  Khi tất chân port xuất nhập (I/O): có tổng cộng port, 33 đƣờng IO: xem hình 1-5 Bài giảng: Cấu trúc vđk PIC PORT E –3 BIT Khoa điện – điện tử RA0 RB0 RA1 RB1 RA2 RB2 RA3 RB3 RA4 RB4 RA5 RB5 RB6 RE0 RB7 RE1 RE2 RD0 RC0 RC2 RC3 RC4 RC5 RC6 RD1 RD2 RD3 RD4 RD5 RD6 PORT D – BIT RC1 PORT C – BIT Nguyễn Đình Phú PORT B – BIT PORT A – BIT Đại học sư phạm kỹ thuật HCM RD7 RC7 Hình 1-5: PIC với chân có chức IO  10 Các chức ngoại vi: xem hình 1-6 Bài giảng: Cấu trúc vđk PIC Đại học sư phạm kỹ thuật HCM Khoa điện – điện tử Nguyễn Đình Phú Bit 3-0: PCFG3:PCFG0: bit điều khiển định cấu hình port (A/D Port Configuration Control bits) Giải thích bảng định cấu hình cho port: Hàng thứ 1: bit định cấu hình 0000: ADC sử dụng kênh tƣơng tự, nguồn điện áp tham chiếu dƣơng nối với VDD, nguồn điện áp tham chiếu âm nối với VSS Cột cuối hệ số kênh tƣơng tự với hệ số chọn nguồn tham chiếu bên ngồi - trƣờng hợp 8/0 có nghĩa kênh tƣơng tự khơng sử dụng nguồn tham chiếu bên ngồi Hàng thứ 15: bit định cấu hình 1111: ADC sử dụng kênh tƣơng tự, nguồn điện áp tham chiếu dƣơng nối với bên ngồi qua chân AN3, nguồn điện áp tham chiếu âm nối với bên ngồi qua chân AN2 Các port lại số (Digital) c Thanh ghi ADRESH ADRESL Cặp ghi 16 bit ADRESH:ADRESL dùng để lƣu kết chuyển đổi 10 bit ADC sau chuyển đổi xong Do kết có 10 bit nhƣng lƣu cặp ghi 16 bit nên có kiểu định dạng tuỳ thuộc vào bit ADFM (ADC Format) Hình sau trình bày kiểu định dạng cặp ghi kết quả: 88 Bài 6: ADC PIC lập trình C Đại học sư phạm kỹ thuật HCM Khoa điện – điện tử Nguyễn Đình Phú Hình 6-2: Định dạng cặp ghi lưu kết TRÌNH TỰ THỰC HIỆN CHUYỂN ĐỔI ADC Để thực chuyển đổi ADC phải thực bƣớc sau: Bƣớc 1: Thiết lập cấu hình ADC:  Định cấu hình cho chân tƣơng tự/điện áp chuẩn xuất/nhập số (ADCON1)  Chọn kênh ngõ vào ADC (ADCON0)  Chọn xung clock cho chuyển đổi ADC (ADCON0)  Mở nguồn cho ADC (ADCON0) Bƣớc 2: Thiết lập cấu hình ngắt ADC sử dụng:  Xóa cờ báo ngắt ADIF  Làm bit ADIE lên phép ADC ngắt  Làm bit PEIE lên phép ngắt ngoại vi  Làm bit GIE lên phép ngắt tồn cục Bƣớc 3: Chờ hết thời gian ổn định theo u cầu Bƣớc 4: Bắt đầu chuyển đổi cách cho bit GO/ DONE lên Bƣớc 5: kiểm tra chuyển đổi ADC kết thúc cách:  Kiểm tra liên tục bit GO/ DONE hay chƣa (nếu khơng dùng ngắt)  Nếu dùng ngắt chờ ngắt ADC xảy Bƣớc 6: Đọc cặp ghi kết (ADRESH:ADRESL), xóa bit ADIF dùng ngắt Bƣớc 7: Thực chuyển đổi Thời gian chuyển đổi cho bit TAD LỰA CHỌN NGUỒN XUNG CHO CHUYỂN ĐỔI ADC Thời gian chuyển đổi ADC cho bit đƣợc xác định TAD Chuyển đổi ADC dùng tối thiểu 12 TAD để chuyển đổi cho 10 bit Nguồn xung cấp cho ADC đƣợc lựa chọn phần mềm Bảy khả lựa chọn cho TAD là:  TOSC  TOSC  TOSC  16 TOSC  32 TOSC  64 TOSC  Bộ dao động RC bên khối ADC Để chuyển đổi ADC xác xung đƣợc chọn có thời gian nhỏ TAD = 1,6µs Bảng sau trình bày thời gian TAD đƣợc tính tốn từ tần số hoạt động vi điều khiển PIC lựa chọn hệ số chia Khi PIC sử dụng tần số dao động 1.25MHz ba bit chọn hệ số chia tần số cho ADC 000 - tần số cấp cho ADC FOSC/2 - 625 KHz, chu kỳ 1.6µs TAD = 1.6 µs Ngắn gọn PIC sử dụng tần số 1.25MHz chu kỳ 0.8µs, chuyển đổi ADC cần chu kỳ TOSC 1.6µs Bài 6: ADC PIC lập trình C 89 Đại học sư phạm kỹ thuật HCM III Khoa điện – điện tử Nguyễn Đình Phú TẬP LỆNH C CHO ADC Các lệnh ngơn ngữ lập trình C liên quan đến ADC bao gồm: Lệnh SETUP_ADC(MODE) Lệnh SETUP_ADC_PORT(VALUE) Lệnh SET_ADC_CHANNEL(CHAN) Lệnh VALUE=READ_ADC(MODE) LỆNH SETUP_ADC(MODE) - LỆNH ĐỊNH CẤU HÌNH CHO ADC Cú pháp: Thơng số: setup_adc (mode); mode- Analog to digital mode Xem file device Một vài thơng số chọn kiểu: ADC_OFF :tắt ADC – khơng dùng ADC_CLOCK_INTERNAL :dùng xung clock bên – khơng chia ADC_CLOCK_DIV_32 :dùng xung clock nội chia cho 32 Chức năng: định cấu hình cho ADC Có hiệu lực: Cho PIC có tích hợp ADC u cầu: Các số định nghĩa file devices.h Ví dụ: setup_adc_ports( ALL_ANALOG ); setup_adc(ADC_CLOCK_INTERNAL ); LỆNH SETUP_ADC_PORT(VALUE) - LỆNH ĐỊNH CẤU HÌNH CHO PORT Cú pháp: Hằng số: Chức năng: Hiệu lực: u cầu: Ví dụ: LỆNH SET_ADC_CHANNEL(chan) - LỆNH CHỌN KÊNH ADC Cú pháp: Thơng số: Chức năng: Hiệu lực: Ví dụ: 90 setup_adc_ports (value) value - số định nghĩa file devices h Thiết lập chân ADC tƣơng tự, số tổ hợp Xem file device để có lựa chọn xác Hằng số ALL_ANALOG NO_ANALOGS có tác dụng cho tất chip Vài ví dụ:  ANALOG_RA3_REF - tất analog RA3 điện tham chiếu bên ngồi  RA0_RA1_RA3_ANALOG - RA0, RA1 RA3 analog Chức có hiệu lực cho PIC có ADC Hằng số định nghĩa devices h setup_adc_ports( ALL_ANALOG ); // tất analog setup_adc_ports( RA0_RA1_RA3_ANALOG ); setup_adc_ports( A0_RA1_ANALOGRA3_REF ); set_adc_channel (chan) - chọn kênh cần chuyển đổi đo nhiều kênh, đo kênh khơng cần chan thứ tự kênh cần chuyển đổi Kênh số Chỉ định kênh để thực chuyển đổi ADC Phải chờ khoảng thời gian ngắn chuyển kênh trƣớc tiến hành đọc kết chuyển đổi, thời gian chờ phụ thuộc vào tổng trở kênh ngõ vào, thƣờng thời gian chờ khoảng 10µs Có hiệu lực cho PIC có ADC SET_ADC_CHANNEL(2); DELAY_US(10); VALUE = READ_ADC(); LỆNH value=READ_ADC(mode) - LỆNH ĐỌC KẾT QUẢ CHUYỂN ĐỔI ADC Bài 6: ADC PIC lập trình C Đại học sư phạm kỹ thuật HCM Khoa điện – điện tử Nguyễn Đình Phú value = read_adc ([mode]) - đọc kết sau chuyển đổi xong mode số sau:  ADC_START_AND_READ (thực đọc liên tục, mode này)  ADC_START_ONLY (bắt đầu chuyển đổi đọc kết quả)  ADC_READ_ONLY (đọc kết lần chuyển đổi sau cùng) Trả về: Kết bit hay 16 bit tùy thuộc khai báo #DEVICE ADC= directive Chức năng: Lệnh đọc giá trị số sau chuyển đổi xong Khai báo #DEVICE ADC= directive nhƣ sau: #DEVICE bit 10 bit 11 bit 16 bit ADC=8 00-FF 00-FF 00-FF 00-FF ADC=10 x 0-3FF x x ADC=11 x x 0-7FF x ADC=16 0-FF00 0-FFC0 0-FFEO 0-FFFF Chú ý: x khơng xác định Cú pháp: Hằng số: Hiệu lực: Ví dụ: Cho PIC có ADC setup_adc( ADC_CLOCK_INTERNAL ); setup_adc_ports( ALL_ANALOG ); set_adc_channel(1); while ( input(PIN_B0) ) { delay_ms( 5000 ); value = read_adc(); printf("A/D value = %2x\n\r", value); } read_adc(ADC_START_ONLY); sleep(); value=read_adc(ADC_READ_ONLY); IV CÁC CHƯƠNG TRÌNH ỨNG DỤNG ADC ỨNG DỤNG ĐO NHIỆT ĐỘ HIỂN THỊ LED ĐOẠN QT BÀI 6-1 ĐO NHIỆT ĐỘ SỬ DỤNG PIC 16F877A - KÊNH THỨ HIỂN THỊ KẾT QUẢ ĐO TRÊN LED ĐOẠN QT SỬ DỤNG NGUỒN ĐIỆN ÁP THAM CHIẾU VREF+=VDD=5V, VREF=VSS=0V  SƠ ĐỒ MẠCH Bài 6: ADC PIC lập trình C 91 Đại học sư phạm kỹ thuật HCM Khoa điện – điện tử Nguyễn Đình Phú Hình 6-3 Mạch đo nhiệt độ hiển thị led đoạn  CHƢƠNG TRÌNH ĐIỀU KHIỂN #INCLUDE #DEVICE ADC=10 // KHAI BAO ADC 10 BIT, MAC NHIEN LA BIT #FUSES NOWDT,PUT,HS,NOPROTECT,NOLVP #USE DELAY(CLOCK=20000000) CONST UNSIGNED CHAR MA7DOAN[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; INT16 KQADC; INT UNSIGNED CHAR DONVI, CHUC, TRAM, NGAN; MDONVI, MCHUC, MTRAM, MNGAN; VOID DIV_DECODE (INT16 TAM) { NGAN = TAM/1000; TRAM = TAM/100; CHUC = TAM/10; DONVI= TAM %10; TAM = TAM %1000; TAM = TAM %100; //LAY HANG CHUC //LAY DONVI MNGAN = MA7DOAN[NGAN];MTRAM = MA7DOAN[TRAM]; MCHUC = MA7DOAN[CHUC];MDONVI= MA7DOAN[DONVI]; IF (NGAN == 0) { MNGAN=0XFF; IF (TRAM == 0) { MTRAM=0XFF; IF (CHUC == 0) MCHUC=0XFF; 92 Bài 6: ADC PIC lập trình C Đại học sư phạm kỹ thuật HCM Khoa điện – điện tử Nguyễn Đình Phú } } } VOID DISPLAY () { OUTPUT_B(MDONVI); DELAY_MS(1); OUTPUT_LOW(PIN_D0); OUTPUT_HIGH(PIN_D0); OUTPUT_B(MCHUC); DELAY_MS(1); OUTPUT_LOW(PIN_D1); OUTPUT_HIGH(PIN_D1); OUTPUT_B(MTRAM); DELAY_MS(1); OUTPUT_LOW(PIN_D2); OUTPUT_HIGH(PIN_D2); OUTPUT_B(MNGAN); DELAY_MS(1); OUTPUT_LOW(PIN_D3); OUTPUT_HIGH(PIN_D3); } VOID MAIN() { SET_TRIS_B(0x00); SET_TRIS_D(0x00); OUTPUT_D(0XFF); SETUP_ADC(ADC_CLOCK_DIV_32); SETUP_ADC_PORTS(AN0); // KENH AN0 WHILE(1) { KQADC=READ_ADC(); // DOC KET QUA ADC DISPLAY(); DIV_DECODE(KQADC); } }   NHẬN XÉT: KẾT QUẢ ĐO CHƢA ĐÚNG, LED HIỂN THỊ CHẬP CHỜN KHẮC PHỤC: TÍNH TỐN: ĐIỆN ÁP THAM CHIẾU V REF  0V ,V REF  VDD  5V 5000mV NÊN ĐỘ PHÂN GIẢI (STEP SIZE) LÀ SS   4,887mV 1023 ĐIỆN ÁP TỒN GIAI FULL SCALE = FS: FS  SS 1023  4,887mV 1023  5,000mV  5V CẢM BIẾN LM35 THÌ HỆ SỐ CHUYỂN ĐỔI LÀ 10MV/1ĐỘ CÁC HỆ SỐ KHƠNG PHÙ HỢP, NẾU HIỂN THỊ KẾT QUẢ CHUYỂN ĐỔI THÌ KHƠNG ĐÚNG, CÁCH HIỆU CHỈNH LẤY KẾT QUẢ ĐO SS * N  4,887mV * N / 10 ĐỂ DỄ NHÌN THẤY THÌ CHO HIỂN THỊ NHIỀU LẦN BÀI 6-2 ĐO NHIỆT ĐỘ SỬ DỤNG PIC 16F877A - KÊNH THỨ HIỂN THỊ KẾT QUẢ ĐO TRÊN LED ĐOẠN QT SỬ DỤNG NGUỒN ĐIỆN ÁP THAM CHIẾU VREF+=VDD=5V, VREF=VSS=0VKHẮC PHỤC CÁC NHƢỢC ĐIỂM #INCLUDE #DEVICE ADC=10 // KHAI BAO ADC 10 BIT, MAC NHIEN LA BIT #FUSES NOWDT,PUT,HS,NOPROTECT,NOLVP #USE DELAY(CLOCK=16000000) Bài 6: ADC PIC lập trình C 93 Đại học sư phạm kỹ thuật HCM Khoa điện – điện tử Nguyễn Đình Phú CONST UNSIGNED CHAR MA7DOAN[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80, 0x90}; INT16 KQADC; INT UNSIGNED CHAR DONVI, CHUC, TRAM, NGAN,I; MDONVI,MCHUC,MTRAM,MNGAN; VOID DIV_DECODE (INT32 TAM) { NGAN = TAM/1000; TAM = TAM %1000; TRAM = TAM/100; TAM = TAM %100; CHUC = TAM/10; //LAY HANG CHUC DONVI= TAM %10; //LAY DONVI MNGAN = MA7DOAN[NGAN];MTRAM = MA7DOAN[TRAM]; MCHUC = MA7DOAN[CHUC];MDONVI= MA7DOAN[DONVI]; MCHUC = MCHUC & 0X7F; //HIEN THI DAU CHAM IF (NGAN == 0) { MNGAN=0XFF; IF (TRAM == 0) { MTRAM=0XFF; IF (CHUC == 0) } } } VOID DISPLAY () { OUTPUT_B(MDONVI); DELAY_MS(1); MCHUC=0XFF; OUTPUT_LOW(PIN_D0); OUTPUT_HIGH(PIN_D0); OUTPUT_B(MCHUC); DELAY_MS(1); OUTPUT_LOW(PIN_D1); OUTPUT_HIGH(PIN_D1); OUTPUT_B(MTRAM); DELAY_MS(1); OUTPUT_LOW(PIN_D2); OUTPUT_HIGH(PIN_D2); OUTPUT_B(MNGAN); DELAY_MS(1); OUTPUT_LOW(PIN_D3); OUTPUT_HIGH(PIN_D3); } VOID MAIN() { SET_TRIS_B(0x00); SETUP_ADC(ADC_CLOCK_DIV_32); SETUP_ADC_PORTS(AN0); SET_ADC_CHANNEL(0); WHILE(1) { KQADC=READ_ADC(); KQADC= KQADC *4.887; FOR (I=0;I[...]... Power -down bit: bit báo CPU đang làm vi c ở chế độ ngủ Với lệnh xử lý byte: thì 'f' đại diện cho file thanh ghi và 'd' đại diện cho hướng lưu dữ liệu: nếu 'd' bằng 0 thì dữ liệu sau khi xử lý lưu vào thanh ghi 'W', nếu 'd' bằng 1 thì dữ liệu sau khi xử lý lưu vào thanh ghi 'f' Với lệnh xử lý bit: thì 'b' đại diện cho bit nằm trong file thanh ghi 'f'' Với lệnh xử lý hằng số hoặc điều khiển: thì 'k' đại... TĨM TẮT TẬP LỆNH CHI TIẾT TẬP LỆNH Đại học sư phạm kỹ thuật tp HCM Khoa điện – điện tử Nguyễn Đình Phú I TĨM TẮT TẬP LỆNH Tập lệnh của PIC 16 là trực giao và được chia ra làm 3 nhóm lệnh:    Lệnh xử lý bit Lệnh xử lý byte Lệnh xử lý hằng số và điều khiển Mỗi lệnh của PIC là một từ dữ liệu 14 bit được chia ra làm 2 nhóm gồm mã lệnh hoạt động (opcode: operation code) và tác tố (operand) Mã lệnh Opcode... 1-7: PIC với các chân có chức năng là ngoại vi IV TÀI LIỆU THAM KHẢO Bài giảng: Cấu trúc vđk PIC 11 Đại học sư phạm kỹ thuật tp HCM 12 Khoa điện – điện tử Nguyễn Đình Phú Bài giảng: Cấu trúc vđk PIC BÀI 2      GIỚI THIỆU BỘ NHỚ CỦA PIC KIẾN TRÚC BỘ NHỚ CỦA PIC KHẢO SÁT BỘ NHỚ CHƯƠNG TRÌNH CỦA PIC MỖI Ơ NHỚ CỦA BỘ NHỚ CHƯƠNG TRÌNH LÀ 14 BIT KHẢO SÁT BỘ NHỚ DỮ LIỆU VÀ THANH GHI TRẠNG THÁI CỦA PIC. .. CỦA PIC PIC16F877A có 3 khối bộ nhớ tích hợp bên trong: bộ nhớ chương trình (Program memory) có dung lượng 8K, bộ nhớ dữ liệu RAM có 368 ơ nhớ byte cùng với các thanh ghi có chức năng đặc biệt SFR (Special Function Register) và bộ nhớ EEPROM có dung lượng 256 byte Hình ảnh các bộ nhớ tích hợp bên trong PIC1 6F8xx: Hình 2-1 Hình ảnh bộ nhớ tích hợp bên trong vi điều khiển 2 KIẾN TRÚC BỘ NHỚ CỦA PIC PIC... bộ đếm chương trình PC (Program Counter) sẽ quản lý địa chỉ của bộ nhớ chương trình, thanh ghi PC có độ dài 13 bit sẽ quản lý 8192 ơ nhớ tương đương với 8K ơ nhớ Mỗi ơ nhớ chương trình lưu 14 bit dữ liệu Khi PIC bị reset thì thanh ghi PC có giá trị là 0000H và PIC sẽ bắt đầu thực hiện chương trình tại địa chỉ 0000H Khi có bất kỳ ngắt nào tác động thì PIC sẽ thực hiện chương trình phục vụ ngắt tại địa... liệu Xem hình 2-5: Hình 2-5 Tổ chức bộ nhớ chứa cả mã lệnh và dữ liệu Vậy với tổ chức bộ nhớ của PIC thì tiết kiệm được 1 chu kỳ đọc dữ liệu vì thế PIC sẽ có tốc độ thực hiện chương trình nhanh hơn Tập lệnh của PIC là tập lệnh rút gọn nên chỉ dùng có 6 bit nhị phân để mã hóa các lệnh, cùng với dữ liệu xử lý là byte - 8 bit nên tổng cộng là 14 bit 16 Bài giảng 2: Tổ chức bộ nhớ của PIV 16F8xx Đại học... ngõ ra PortD có thể định cấu hình nhƣ port của vi xử lý 8 bit bằng cách thiết lập bit điều khiển PSPMODE (TRISE) Trong cấu hình này thì các bộ đệm ngõ vào dạng TTL Chú ý: PortD và TRISD khơng đƣợc xây dựng cho chip PIC 28 chân Hình 4-17: Sơ đồ mạch các chân PORTD Các thanh ghi kết nối với PortD 34 Bài 4: Cấu hình port và lệnh C dùng cho các port của PIC Đại học sư phạm kỹ thuật tp HCM Khoa điện –... điện tử Nguyễn Đình Phú GIỚI THIỆU Vi điều khiển có các port để xuất nhập dữ liệu giao tiếp với các đối tƣợng điều khiển Tín hiệu điều khiển từ CPU gởi ra port để điều khiển, đồng thời có các port nhận dữ liệu về để xử lý Trong một hệ thống ln có các tín hiệu vào ra ví nhƣ hệ thống điều khiển robo nhƣ hình sau: Hình 4-1: Sơ đồ kết nối port với đối tượng điều khiển Mỗi vi điều khiển khác nhau có cấu hình... Sơ đồ kết nối port với đối tượng điều khiển Mỗi vi điều khiển khác nhau có cấu hình các port cũng khác nhau, phần này sẽ khảo sát các port của vi điều khiển PIC bao gồm port A, B, C, D , E và các lệnh ngơn ngữ C liên quan đến các port Mỗi port của vi điều khiển PIC gồm có thanh ghi port và thanh ghi định hƣớng cho Port ví dụ nhƣ hình 4-2 là PORTA và TRISA Bit của thanh ghi định hƣớng TRIS bằng 0 thì... thì chương trình có thể vi t bắt đầu và liên tục tại địa chỉ 0000H, nhưng nếu sử dụng ngắt thì nên dùng lệnh nhảy để tránh vùng nhớ bắt đầu tại địa chỉ 0004H - vì vùng nhớ này dùng để vi t chương trình con phục vụ ngắt Bộ nhớ chương trình có chức năng lưu trữ chương trình Chương trình sau khi vi t xong trên máy tính, dịch ra số nhị phân sẽ được nạp vào bộ nhớ chương trình để vi điều khiển thực hiện ... QUAN VỀ VI ĐIỀU KHIỂN PIC I PIC họ vi điều khiển RISC đƣợc sản xuất cơng ty Microchip Technology Thế hệ PIC PIC1650 đƣợc phát triển Microelectronics Division thuộc General – Instrument PIC vi t... CPU làm vi c chế độ ngủ Với lệnh xử lý byte: 'f' đại diện cho file ghi 'd' đại diện cho hướng lưu liệu: 'd' liệu sau xử lý lưu vào ghi 'W', 'd' liệu sau xử lý lưu vào ghi 'f' Với lệnh xử lý bit:... Nguyễn Đình Phú I TĨM TẮT TẬP LỆNH Tập lệnh PIC 16 trực giao chia làm nhóm lệnh:    Lệnh xử lý bit Lệnh xử lý byte Lệnh xử lý số điều khiển Mỗi lệnh PIC từ liệu 14 bit chia làm nhóm gồm mã lệnh

Ngày đăng: 18/01/2017, 11:34

Xem thêm: Vi xử lý PIC 16f887

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w