![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 2 túi
Tham gia ngày: May 2005
Bài gửi: 39
: |
Cùng khai hoang con 16F88
Sau một thời gian làm quen với PIC noisepic thấy học 16F84 là dễ nhất, và thấy 16F88 nhiều chức năng hơn như:
- ADC - PWM - Comparator (bộ so sánh) .. Nói chung hơn hẳn 16F84. Hiện nay phong trào học PIC đang diễn ra sôi nổi, noisepic biết bên BKHN có hẳn một nhóm học PIC. Hi vọng chúng ta cùng học và khám phá nó. Bắt đầu nhé! ![]() //************************************************** **** PORTA Các chức năng có thể làm: - Biến đổi AD - Bộ so sánh - I/O Các thanh ghi liên qua đến PORTA, các bạn có thể xem thêm trong datasheet. - Thanh ghi PORTA (RA7:RA0) - Thanh ghi TRISA(TRISA7:TRISA0)--> I/O? - Thanh ghi ADCON1(ADFM,ADCS2,VCFG1,VCFG0) - Thanh ghi ANSEL (Bit ANS4:ANS0)--> cấu hình cho 1 chân là Analog/digital Nếu dùng chức năng A/D, comparator thì dùng thanh ghi ADCON1. //************************************************** **** ![]() Chương trình sau viết bằng CCS_ làm cho 1 LED nháy tại chân RA0 với khoảng thời gian là 1s Code:
#include<16F88.h> #include<def_16F88.h> #use delay(clock=4000000) #fuses NOWDT,MCLR,HS main() { TRISA=0;// Chân RA0 là Output ANS0 =0;// Chân RA là Digital RA0 =1;// RA0~5V while(1) { RA0=!RA0; delay_ms(1000); } } thay đổi nội dung bởi: noisePIC, 30-09-2005 lúc 06:08 PM. Lý do: Sửa lại cho dễ nhìn |
![]() |
![]() |
![]() |
#2 |
Đệ tử 3 túi
Tham gia ngày: Sep 2005
Bài gửi: 54
: |
Chào Noisepic:
Tớ là thành viên của nhóm BK ấy đây, Hôm nay vừa mới nhận được Pic+Mach Nạp từ anh BinhAnh , cho nên bây giờ mới đủ diều kiện thực hành về Pic.( mấy hôm trước chỉ viết chay) Cậu dung CCS còn tớ dung Mpasm như thế sẽ có sự tương đương . Chúng ta sẽ làm từng phần một, khi làm đến phần nào cậu viết lý thuyết ( bao gồm các thanh ghi, các chức năng ) . Coi như cậu là người cầm trịch của box này, đẫn dắt anh em Anh em sẽ theo sau để hỗ trợ và bổ sung nếu cần thiết Tài liệu chính của chúng ta sẽ là cuốn datasheet 16f88 Có lẽ nhưng người tham gia box này đều là những người mới học Pic( như tui) hoặc mới bẳt đầu làm trên 16f88 ( như bác NoisePic) , do đó kinh nghiệm ko nhiều Và chắc chắn ko tránh khỏi sai sót , rất mong sự giúp đỡ của các bậc tiền bối đi trước Working together to improve ourselves Bắt đầu thôi ………………. thay đổi nội dung bởi: mafd_47a, 30-09-2005 lúc 08:52 AM. |
![]() |
![]() |
![]() |
#3 |
Đệ tử 2 túi
Tham gia ngày: May 2005
Bài gửi: 39
: |
Bộ dao động dùng cho 16F88
Có nhiều nguồn cấp xung nhịp cho 16F88
![]() Có 3 nguồn tạo dao động chính: - Bộ dao động sơ cấp (Primary Oscillator) - Bộ dao động thứ cấp (Secondary Oscillator) - Bộ dao động bên trong (Internal Oscillator) Việc cấu hình các bit trong thanh ghi CONFIG1, OSCCON sẽ để PIC làm việc với bộ dao động nào! tần số bao nhiêu? //********************************************* thanh ghi CONFIG1 FOSC2:FOSC0 = 010 // Làm việc với bộ dao động thạch anh, tần số >= 4MHz, cách này thường sử dụng = 101 // Làm việc với bộ dao động bên trong (INTRC), RA7: I/O = 100 // INTRC, RA6,RA7: I/O Thanh ghi OSCCON (0x8F) SCS<1:0> = 00 // Chế độ dao động chọn bởi FOSC2:FOSC0 = 01 // xung nhịp hệ thống lấy từ Timer1 = 10 // xung nhịp hệ thống lấy từ bộ dao động RC bên trong. OSCCON<6:4> 3 bit này sẽ quyết định xung nhịp của bộ dao động bên trong. //********************************************** Có 8 chế độ dao động: LP Lowpower Crystal XT Crystal/ Resonator HS High Speed Crystal/Resonator RC External Resitor/ Capacitor với Fosc/4 tại lối ra RA6 RCIO External Resitor/ Capacitor với I/O trên RA6 INTIO1 Bộ dao động bên trong với Fosc/4 lối ra trên RA6 và I/O trên RA7 INTIO2 Bộ dao động bên trong với I/O trên RA6, và RA7 ECIO Xung nhịp bên ngoài với I/O trên RA6 Do vậy khi lắp bộ dao động thế nào, bạn phải cấu hình bit cho phù hợp! thay đổi nội dung bởi: noisePIC, 30-09-2005 lúc 03:07 PM. |
![]() |
![]() |
![]() |
#4 |
Đệ tử 4 túi
Tham gia ngày: Aug 2005
Bài gửi: 83
: |
NoiPIC viết rất hay. cảm ơn em nhiều.
|
![]() |
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Sep 2005
Bài gửi: 5
: |
Khoan đã nào, chương trình thì hay thiệt nhưng sau mình thử chạy chương trình của bạn noisePIC thi máy lại báo lỗi ở phần def_16F88.h nhỉ? Bạn hãy giải thích giùm mình đi.
|
![]() |
![]() |
![]() |
#6 |
Đệ tử 2 túi
Tham gia ngày: May 2005
Bài gửi: 39
: |
Bạn hamchoi chắc chưa đọc những bài viết cũ của noisepic, vì file def_16f88.h chứa định nghĩa các thanh ghi và các bit của 16F88. Cách lập trình này giúp bạn hiểu rõ hơn về phần cứng. Trong các bài viết của noisepic, dùng đến thanh ghi nào noisepic sẽ bổ sung vào file def_16F88.h--> khi làm xong hết chắc là đủ số thanh ghi và các bit.
Ví dụ file def_16F88.h dủng trong chương trình trên Code:
// dinh nghia cac thanh ghi #byte TMR0=0x01 // Dia chi thanh ghi TRM0 #byte PORTA=0x05 // Dia chi thanh ghi PORTA #byte PORTB=0x06 // Dia chi thanh ghi PORTB #byte TRISA=0x85 ................................................................... #byte ADCON=0x1F // dinh nghia cac bit #bit TRISA0 = 0x85.0 #bit TRISA1 = 0x85.1 ..... Chúc bạn vui vẻ! thay đổi nội dung bởi: noisePIC, 03-10-2005 lúc 08:51 PM. |
![]() |
![]() |
![]() |
#7 |
PIC Bang chủ
|
Em có thể lấy các file .h này trong MPASM, nó đã định nghĩa sẵn rồi, và nó định nghĩa tất cả các thanh ghi có trong danh sách của nó. Nó có rất đầy đủ, em không cần phải viết lại như thế này.
Với CCS C, nó cũng có đầy đủ rồi, không cần viết lại. Ngoại trừ một số thanh ghi mà em muốn tạo thêm, tuy nhiên, nói chung không nên đặt thêm nhiều ngoài các thanh ghi có trong map registers của nó. Bởi vì mỗi chương trình có một đặc thù riêng, dùng của nó là đủ rồi.
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
![]() |
![]() |
![]() |
#8 |
Nhập môn đệ tử
Tham gia ngày: Sep 2005
Bài gửi: 5
: |
Chào falleaf và noisePIC, sao mình tìm hoài trong MPASM mà không thấy có files có đuôi (.h) nhỉ? Các bác có thể post nó lên để mình download nó về dùng được không?
Cảm ơn trước nhé! |
![]() |
![]() |
![]() |
#9 |
Đệ tử 3 túi
Tham gia ngày: Sep 2005
Bài gửi: 54
: |
Moi nguoi khi hoc F88 hay ho 16x noi chung , chu y doc qua ca quan " PICmicro™Mid-Range MCU family Reference Manual" Quan nay viet rat chi tiet va co code mau bang MPASM.
Co the down tai ( 2.7MB): http://www.microchip.com/stellent/id...elect=&x=5&y=4 |
![]() |
![]() |
![]() |
#10 |
Đệ tử 3 túi
Tham gia ngày: Sep 2005
Bài gửi: 54
: |
Khi moi lap trinh cho F88 chac co nhieu ban bo ngo ve phan "Configuration Bits", va toi cung vay. Sau day la mot so diem khac biet so voi F84
+ Cac bit Configuration duoc luu o hai dia chi bo nho 2007h( gom 14 bit) va 2008h (2 bit) va cac bit nay duoc dinh nghia trong MPASM do la PHP Code:
Nhu vay khac voi F84 , F88 co lenh thong thuong de dua ra _config_ trong MPASM do la PHP Code:
|
![]() |
![]() |
![]() |
#11 |
Đệ tử 3 túi
Tham gia ngày: Sep 2005
Bài gửi: 54
: |
Mot dieu dac biet o PortA ma moi nguoi can phai chu y: sau khi Reset hoac bat dau mot chuong trinh thi PortA( 5 pin RA4,RA3,RA2,RA1,RA0), va hai pin RB7,RB6 ko phai la dang I/O nua ma la analog input
va trang thai nay duoc quy dinh boi thanh ghi ANSEL (9bh) ( cac ban tham khao them o trang 51 datasheet) Do do de ban dau thiet lap trang thai cua cac chan nay la dang I/O thi ta phai CLRF ANSEL Den day moi thiet lap trang thai I/O: Do la nhung loi tuong nhu nho nhat, nhung rat de mac phai doi voi nhung newbie, Rat mong duoc su hop tac cua moi nguoi thay đổi nội dung bởi: mafd_47a, 08-10-2005 lúc 01:54 AM. |
![]() |
![]() |
![]() |
#12 |
Đệ tử 3 túi
Tham gia ngày: Sep 2005
Bài gửi: 54
: |
Hi everybody, sau một thời gian vật lộn với con 16f88 cuối cùng mình cũng thành công với bản đầu tay, nay muốn chia sẻ cho tất cả mọi người
Đây là chương trình hiển thị LCD dung 16f88, trong chương trình có sử dụng kỹ thuật bảng , dung thạch anh 4M , dung 4 chân data ( trong đó D7=>D4 của LCD nối với Port7=>Port4 của F88) và các chân EN, RS, RW của LCD được nối với port2,1,0 của F88). Các bạn có thể tham khảo kiến thức cơ bản của LCD ở http://www.dientuvietnam.net/board/s...1&page=1&pp=10 PHP Code:
Rất mong chương trình này giúp đỡ được một phần nào cho các bạn Nếu bạn nào thác mắc vấn đề về chương trình này thì hãy mở một luông mới để thảo luận về vấn đề này nhé ![]() thay đổi nội dung bởi: mafd_47a, 09-10-2005 lúc 04:58 PM. |
![]() |
![]() |
![]() |
#13 |
Đệ tử 2 túi
Tham gia ngày: May 2005
Bài gửi: 39
: |
Code:
To mafd_47a: //************************************************** *********** Tớ rất thích chữ kí của bạn! rất đúng đó Code:
ONE WORK, ONE PURPOSE or NOTHING! |
![]() |
![]() |
![]() |
#14 |
Đệ tử 1 túi
Tham gia ngày: Sep 2005
Bài gửi: 15
: |
To mafd_47a: Tôi đang dùng CCS viết cho con PIC16F88 để điều khiển LCD 20x4 và thấy rất dễ dàng, vì nó có sẵn thư viện LCD420.c.
Tôi thấy con PIC16F88 này rất hay, vì nó sẵn mấy đường vào ADC, tôi sử dụng 4 kênh vào ADC, hiển thị kết quả đo được nên LCD. |
![]() |
![]() |
![]() |
#15 |
Đệ tử 1 túi
Tham gia ngày: Sep 2005
Bài gửi: 15
: |
Chào bạn,
Mình cũng ở HN. Mình sẵn lòng ủng hộ các chương trình của mình đã làm để mọi người cùng tham khảo. Mình vừa làm 1 chương trình rất nhỏ, với 1 mục đích là đo đồng thời 4 tín hiệu tương tự, và hiển thị kết quả lên LCD 4x20. Mình sử dụng PIC16F88. Đồng thời kết quả đó được đưa về PC qua cổng RS232. Mình phải sửa lại thư viện LCD420.C của CCS một chút, vì trong thư viện này, nó dùng chân Tx và Rx để điều khiển LCD, do vậy tôi phải diều chỉnh lại sơ đồ chân nối với LCD. Mặt khác, trong ứng dụng của tôi, tôi không sử dung các hàm đọc từ LCD xuồng PIC, thế nên tôi cũng không nối chân RW của LCD về PIC nữa, mà nối chân RW xuống đất. Chức năng của PIC16F88 là rất nhiều, nhưng số cổng ra ngoài lại có hạn, do số chân PIC chỉ có 18, thế nên khi thiết kế, chúng ta lên tối ưu lại sơ đồ nối bên ngoài để tận dụng các chức năng có sẵn của PIC và hạn chế số lượng linh kiện phụ trợ bên ngoài. Rất mong nhận được ý kiến đóng góp của mọi người để thiết kế của tôi được hoàn thiện hơn. Thanks P/S: Làm sao để upload file lên diễn đàn đây ??? |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
Tìm mua PIC 16F84 or 16F88 | rmitoday | Tìm mua sản phẩm | 4 | 09-08-2008 02:36 PM |
Can mua 16f88 | Khikom | Tìm mua sản phẩm | 1 | 09-03-2007 08:17 AM |
Khai giảng lớp vi điều khiển ,cung cấp tài liệu | tamphong | Quảng cáo và bán sản phẩm | 2 | 12-11-2006 08:40 PM |
Tìm mua 16F88 | ndtoan | Tìm mua sản phẩm | 2 | 24-04-2006 11:59 AM |
Cách khai báo biến và liên kết chương trình | tuan795 | Cơ bản về vi điều khiển và PIC | 3 | 13-01-2006 09:06 AM |