Kết quả 1 đến 10 của 42
-
01-01-2015, 05:04 AM #1
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bắt Đầu với IO với PIC16f877a trên Mplab XC8
Do lần đầu làm Mod mình đã hiểu sai chỉ thị của Admin dẫn tới làm mất các bài hướng dẫn cơ bản về PIC16f877a
Để chuộc lỗi việc này, mình xin viết 1 tutorial để các bạn làm quen với PIC và lựa chọn PIC16f877a để bắt đầu sẽ dễ dàng tiếp cận hơn .
Mình gửi lời xin lỗi tới người đã viết tutorial cũ, và xin lỗi mọi người do sai sót của mình.
Và đây cũng là món quà của mình cho các bạn đang học pic và bắt đầu học pic cũng như có ý định học pic nhân dịp năm mới 2015.
Mình sẽ hướng dẫn các bạn qua hình ảnh nhé, mình sẽ không làm video.
- Mình giới thiệu qua về PIC16f877a
+ Pic16f877a là dòng vđk 8bit của hãng microchip
+ Tần số dao động ngoại lớn nhất 20Mhz
+ 8k x 14word flash program memory
+ 368 x 8byte data memory (RAM)
+ 256 x8byte eeprom
+ Bao gồm 3 bộ Timer với 2 bộ timer 8bit và 1 bộ 16bit
+ 2 bộ capture, compare, PWM
+ Hỗ trợ đầy đủ các chuẩn truyền thông cơ bản như SPI, I2C, UART
+ 1 bộ ADC 10bit với 8 kênh input
+ 1 bộ watchdog timer
+ 40 chân
+ sử dụng dãi điện áp rộng 2V-5V
- Bài đầu tiên sẽ bắt đầu với việc tạo 1 project trên mplab x và xuất nhập IO + mô phỏng trên proteus
+ Tạo project thì mình đã hướng dẫn cụ thể ở bài hướng dẫn sử dụng mplab x
+ Bắt đầu lập trình
B1: Tạo 1 main file
[IMG]http://*************/attachments/48367/[/IMG]
B2: Mở phần configure bit để cấu hình bit cho vđk:
[IMG]http://*************/attachments/48369/[/IMG]
Chọn FOSC là HS : sử dụng thạch anh ngoại
Chọn WDTE là OFF : Không sử dụng bộ watchdog timer
Chọn BOREN là OFF
Chọn LVP là OFF
các lựa chọn khác để mặc định
các bạn chọn tiếp vào Generate Source Code to Output
B3: Copy các fuse bit vào file main vừa tạo ở bước 1
[IMG]http://*************/attachments/48370/[/IMG]
*** Trước khi bắt đầu viết 1 chương trình IO, mình sẽ giới thiệu 1 chút về bộ ngoại vi IO của vđk PIC16f877a
Port A: Gồm có 6 chân từ RA0- RA5 , port A ngoài chức năng thông thường là IO còn có chức năng input analog(cái này mình sẽ nói trong bài ADC)
Để làm việc với port A ở chế độ IO chung ta cần quân tâm tới các thanh ghi
PORTA - Thanh ghi dữ liệu
TRISA - thanh ghi điều hướng
PortB : Gồm có 8 chân từ RB0-RB7, cũng như portA thì PortB ngoài chức năng IO thông thường còn có chức năng là bộ ngắt ngoài của pic16f877a, gồm 2 chế độ ngắt, là ngắt ngoài ở chân RB0 và ngắt ngoài trên chân RB4-RB7, khác với các port khác của pic16f877 thì PortB còn có chế độ kéo trở treo lên VCC trong thường hợp phần cứng các bạn không hỗ trợ kéo trở lên VCC
Bit thứ 7 của thanh ghi OPTION_REG quản lý việc cho phép hay không cho phép kéo trở treo ở portB lên vcc
Tương tự portA thì port B cũng có 2 thanh ghi để làm việc ở chế độ IO :
PORTB - Thanh ghi dữ liệu
TRISB - Thanh ghi điều hướng
PORTC: Gồm 8 chân từ RC0-RC7, Portc ngoài chức năng IO thông thường thì là cổng hỗ trợ các bộ ngoại CCP, UART, I2C, SPI của PIC16f877a
Để làm việc với port C ở chế độ IO chúng ta cũng có 2 thanh ghi là:
PORTC - thanh ghi dữ liệu
TRISC - thanh ghi điều hướng
PORT D: Gồm 8 chân từ RD0-RD7
Để làm việc với port D ở chế độ IO chúng ta cũng có 2 thanh ghi là:
PORTD - thanh ghi dữ liệu
TRISD - thanh ghi điều hướng
PORT E: Gồm 3 chân RE0 - RE2, giống port A thì port E ngoài chức năng IO còn có chức năng input Analog
Để làm việc với port E ở chế độ IO chúng ta cũng có 2 thanh ghi là:
PORTE - thanh ghi dữ liệu
TRISE - thanh ghi điều hướng
********************************
B4: Chúng ta sẽ viết 1 chương trình đọc phím nhấn ở chân RB0 và bật đèn ở chân RD0
Đầu tiên các bạn phải định nghĩa
Mã:#define _XTAL_FREQ 20000000
Chúng ta sẽ cấu hình chân RB0 trên PORTB là chân input và sử dụng trở kéo lên VCC
Mã:TRISB0 = 1; // RB0 input mode OPTION_REG &= 0x7F; //kéo trở treo lên VCC RBPU = 0
Mã:TRISD0 = 0; //RD0 output mode
Mã:while(1) { RD0 = 1; // tắt led while(RB0 == 0) // nếu phím được nhấn { RD0 = 0; // cho led sáng } }
B6: tạo 1 chương trình mô phỏng trên proteus
[IMG]http://*************/attachments/48376/[/IMG]
Nạp file hex vào vđk và ấn run để bắt đầu mô phỏng
Code mẫu và file mô phỏng mình đã đính kèm ở dưới.
Bài viết còn nhiều thiếu sót, mong mọi người ủng hộ !!!
Thanks all !!!View more random threads:
- LED MATRIX CHẠY CHỮ - PIC16F877A
- Bắt Đầu với IO với PIC16f877a trên Mplab XC8
- mạch cảm biến ánh sáng
- mini kit pic 16f877a
- anh chị nào biết viết code 16f877 giúp em cho em nha!
- Timer và cách tính thông số cài đặt cho timer.
- led ma trận 8x8 pic 16f887
- AI giúp em VS2010 đọc tín hiệu từ RS232.
- anh chị nào biết về lập trinh vi xử lí trong pic16f877a giúp e với?
- Code đèn giao thông ngã tư dùng PIC16F877A
-
01-03-2015, 07:46 PM #2
Silver member
- Ngày tham gia
- May 2016
- Bài viết
- 48
cảm ơn bạn, cho mình hỏi, khi có gì cần trao đổi thì mình gặp các bạn ở forum nào?? >
<
-
01-04-2015, 12:27 AM #3
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi trongpdl
-
01-04-2015, 12:44 AM #4
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Tại sao dùng trình Complier này mà không phải những trình complier khác ?
Phiền bạn đưa ra ưu điểm của trình complier này
-
01-04-2015, 01:11 AM #5
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi 2young2die
Ưu điểm của IDE này có lẽ là nó được hỗ trợ bởi chính nhà sản xuất IC
điều này đảm bảo 1 điều rằng, IDE này hỗ trợ tất cả các dòng sản phẩm mà NSX bán ra thị trường
Còn 1 ưu điểm nữa mà có lẽ dân Code rất thích đó là có thể tự tạo ra các thư viện cho bản thân, khác với các IDE tích hợp, việc lập trình chỉ cần tick chọn thì IDE này buộc bạn phải đọc datasheet cũng như tài liệu liên quan để có thể viết 1 chương trình hoàn thiện cho vđk qua đó trình độ của bạn cũng sẽ lên khơ khớ .
hết, còn gì nữa ae bổ xung nhé
-
01-04-2015, 01:17 AM #6
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi hoanglocmdc
-
01-04-2015, 01:19 AM #7
Junior Member
- Ngày tham gia
- Jun 2016
- Bài viết
- 0
Gửi bởi 2young2die
có lẽ sẽ làm bạn k vui khi k có 2 bài đó
sau loạt bài basic có lẽ sẽ làm 1 cái topic cho ae thảo luận về bootloader và can, modbus, tcp/ip
-
01-04-2015, 04:25 PM #8
Junior Member
- Ngày tham gia
- Jun 2016
- Đang ở
- Россия
- Bài viết
- 0
Gửi bởi hoanglocmdc
Hình như pic này chỉ có portB là có pull-up resistor.Vậy thì hơi bất tiện nhĩ
-
01-05-2015, 03:51 AM #9
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi hoanglocmdc
Cũng không biết có loạt TUT đề cập đến một ứng dụng nào đó không vì thấy chủ thớt có vẻ rất giỏi về ứng dụng của VĐK :-?
Gửi bởi hoanglocmdc
)
-
01-05-2015, 04:18 AM #10
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi Concept
trong loạt bài basic sẽ có thêm bài về timer/counter, PWM, truyền thông RS232, cơ bản là như thế, sẽ ứng dụng gần hết các ngoại vi tích hợp trên vđk PIC
Còn ứng dụng thì không bạn ah
1 vài ứng dụng của VĐK mà bản thân mình đã tham gia thực hiện:
+ Ổn định nhiệt độ, tốc độ động cơ DC bằng thuật toán PID
+ Lập trình cho hộp đen taxi (nó cho oai thế chứ cái này trình mình chỉ đọc, check và sửa code cũng như bổ sung thôi các tính năng thôi, phần lõi đã có các cao thủ làm roài)
+ Thiết kế bộ điều khiển cho máy làm hương tự động
+ thiết kế bộ giám sát từ xa qua GSM, GPRS
+ điều khiển từ xa bằng hồng ngoại, RF
+ Thiết kế bộ đo và ổn định nhiệt độ, độ ẩm lò ấp trứng gà (cái này đang tiến hànhchưa hoàn thành)
---> trước khi làm những việc đó, mình cũng phải rèn luyện qua các tut như thế này để nắm rõ về hoạt động cũng như cách làm việc với vđk.
Colgate: Khoe tí
Quà tặng sinh nhật ý nghĩa cho...
Hôm nay, 06:48 PM in Rao vặt tổng hợp