PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Dạy bang chủ học PIC18 (http://www.picvietnam.com/forum/showthread.php?t=810)

tam.sakura 08-01-2010 11:16 AM

hihi!
Nhờ các bật tiền bối giúp em nhé! em mới học Pic, ai có souce code chớp - tắt đèn 8Led,cho em xin nhé!
arigatoo gozaimasu!

bravesoldier 22-02-2010 11:31 AM

I/O đơn giản với 18F4550
 
Code:

#include <18f4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,PLL3,CPUDIV1,VREGEN
#device *=16 ADC=8
#use delay(clock=48000000) // thạch anh lắp vào mạch là 12MHz

#use fast_io(b)
#byte portb=0xf81
#byte latb=0xf8a

byte numm[]={
0b01000000, //- 0
0b01111001, //- 1
0b00100100, //- 2
0b00110000, //- 3
0b00011001, //- 4
0b00010010, //- 5
0b00000010, //- 6
0b01011000, //- 7
0b00000000, //- 8
0b00010000  //- 9
};

void main()
{
 byte i;
 
 set_tris_b(0);
 i=0;
 while(true)
  { 
  latb=numm[i];
  delay_ms(250);
  i++;
  if (i==10) i=0;
  }
}

mong các tiền bối xem xét và góp ý. mạch này cho LED 7 thanh đếm từ 0->9 em mô phỏng bằng proteus 7.6 (mới down hôm qua) cũng ok. em muốn học thêm về USB để làm quang báo có trao đổi data với máy tính. :)
http://i387.photobucket.com/albums/o...esoldier/a.gif

thundernhut 09-05-2010 08:52 PM

ở trang 4 thấy có bro nào có vẻ giỏi quá, liệt kê liên hồi cách config cho 18f4550 thì phải
Nhưng mà tiếc người ấy có hiểu biết nhưng hoặc là hiểu biết nữa vời hoặc không có tâm khi chi dẫn người mới.
Cách chỉ đó chỉ là cho người ta con cá không cho cần câu, ví như truyền cho quyền cước chưa truyền cho nội công tâm pháp. tiếc quá

Minh tìm hiểu mãi mới biết ý nghĩa các phần config nó nằm trong cái file tên_PIC_tương_ứng.INC trong thư mục cài đặt của phần mềm MPLAD chánh hãng.

vào đó xem nó có liệt kê mọi thông số, ý nghĩa và nhiều tùy chọn cho 1 thông số theo đó mà ta cấu hình cho đúng ý muốn
Còn bạn gì chỉ cho mình 1 đống dòng config mẫu thế là mình máy móc copy vào. Đáng tiếc nếu bạn gì cũng đang học theo kiểu này thì mình khuyện bạn sựa lại nếu ko thì thành tựu chỉ có hạn thôi.
còn nếu bạn giấu nghề thì ok , biểu diễn như vậy là vừa đủ khoe tài mà không ai biết gì cả. Bạn khéo lắm . bái phục bái phục

manh.monitor 23-07-2010 03:16 AM

ô hay, cái luồng này là dành cho những người mới học pic 18f.sao mấy người cứ hỏi lằng nhằng đâu đâu vậy
bác F ko lên nữa ah, đang học mà

manh.monitor 23-07-2010 03:18 AM

em là người mới tìm hiểu về pic 18f.đang muốn các bác chỉ giùm thì các bác cứ chuyền hết sang các vấn đề đâu đâu thế

phamhiepst 23-07-2010 09:11 AM

mình ko hiểu dòng #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,PLL3,CPUDIV1,V REGEN
để lảm gì nữa

bravesoldier 25-07-2010 04:59 PM

Trích:

Nguyên văn bởi phamhiepst (Post 37492)
mình ko hiểu dòng #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,PLL3,CPUDIV1,V REGEN
để lảm gì nữa

PLL3 là liên quan đến thạch anh cứng 12MHz để cấp 12/3=4MHz cho bộ nhân tần, CPUDIV1 - 96/2=48MHz cấp clock cho CPU. Mình xem các post của luồng này mà rút ra chứ xem datasheet thì lờ mờ lắm - tiếng Anh kém mà. Cái mạch trên mình cắm breadboard đã chạy được, song có lẽ config vẫn chưa chuẩn.

bravesoldier 15-01-2011 11:13 PM

Có bác nào dùng CCS-C và PIC18F4550 pha màu cho LED RGB chưa?
Em đang thử mà chật vật quá.

hieu89tx 01-03-2011 06:22 PM

chào các bạn
có ai làm việc với dòng pic18F97j60 chưa cho mình hỏi với
mình đang gặp khó khăn trong việc dùng con pic này để truyền thông với vdk khác qua modul ESUART ,ứng dụng để đo lường và dk nhiệt độ ,độ ẩm hiển thị lcd ,
ai có sơ đồ nguyên lý giúp mình với

hieu89tx 01-03-2011 06:27 PM

chào các bạn
có ai làm việc với dòng pic18F97j60 chưa cho mình hỏi với
mình đang gặp khó khăn trong việc dùng con pic này để truyền thông với vdk khác qua modul ESUART ,ứng dụng để đo lường và dk nhiệt độ ,độ ẩm hiển thị lcd ,
ai có sơ đồ nguyên lý giúp mình với

hieu89tx 05-03-2011 10:47 AM

sao k bac nao giup em ha

nhoczin 06-03-2011 07:27 PM

Apnote của Microchip cho 18F97J60 về Ethernet đủ cả, lên Microchip mà seach, Dùng 18F97J60 để làm những cái kia liệu có phải lấy máy chém ra thịt gà ko ? còn ứng dụng của bạn chỉ cần mấy em 16F low cost là đủ, vd 16F887 có ESUART

hieu89tx 07-03-2011 01:46 PM

nhưng thầy giáo giao đề tài la dùng con này ,, và phải giao tiếp với 2 con vdk , mà 16f887 nó chỉ có 1 eusart thui ,em mới học về pic ,mong anh chỉ giúp với

hieu89tx 11-03-2011 11:39 PM

mọi người có ai đã làm về cái nay giup minh voi
minh nan qua

goldstar09 07-04-2011 11:15 AM

Em cung tim hieu ve pic 18f4550, nhung sao gio moi nguoi khong tham gia nua vay?

caremlanh 16-04-2011 03:55 PM

Trích:

Nguyên văn bởi QUOC_DUNG-NVN (Post 44001)
Dạo này không ai dạy ban chủ học pic nữa àh. có lẽ đã "nội công thâm hậu rồi", vậy có ai giúp mình không vậy???????????????

buồn quá đã lâu lắm rồi nhưng k ai trả lời hết

Bạn mở thư mục MPASM Suite, mở 2 file P18F1320.INC và P18f4520.INC
Trong 2 file đó tìm đến đoạn nói về OSC (khoảng gần cuối) và so sánh các thanh ghi, kết quả như sau
FSCM -> FCMEN
BOR -> BOREN
STVR -> STVREN
INTIO2 -> INTIO67

Sau đó tìm đoạn CONFIG, thì thấy giá trị khác nhau ở đây thôi

_BOR_ON_2L EQU H'FF' ; Brown-out Reset enabled
_BOR_OFF_2L EQU H'FD' ; Brown-out Reset disabled

_BOREN_OFF_2L EQU H'F9' ; Brown-out Reset disabled in hardware and software
_BOREN_ON_2L EQU H'FB' ; Brown-out Reset enabled and controlled by software

Các thanh ghi kia tên thì khác nhưng giá trị ON, OFF giống nhau
Chúc bạn thành công. Bạn nên đưa code lên thì dễ kiểm tra hơn nha :D

caremlanh 16-04-2011 05:58 PM

gửi project lun đi bạn :D
bạn để code ở trên trong thẻ
Code:

[ code]...[ /code]
đi, để vậy dài quá đọc hoa mắt @-)

caremlanh 16-04-2011 06:43 PM

mail minh đi quangtri7121@gmail.com
yahoo thì dưới avatar đó

headman8x 15-05-2011 04:02 AM

giao tiếp pic8f4550 với LCD 4x16
 
Chào tất cả mọi người!
Các bạn giúp mình cách đổi Port xuất dữ liệu từ thư viện LCD420.c với.
hiện tại trong thư viện LCD420.C của trình biên dịch CCS complier mặc định PortB xuất dữ liệu ra LCD 4x16 . Bây giờ mình muốn thay portB bằng PortD cho phù hợp với bài toán của mình , mình đã thử nhưng không đúng. Mong mọi người giúp đỡ

cảm ơn tất cả !

////////////////////////////////////////////////////////////////////////////
//// LCD420.C ////
//// Driver for common 4x20 LCD modules ////
//// ////
//// lcd_init() Must be called before any other function. ////
//// ////
//// lcd_putc(c) Will display c on the next position of the LCD. ////
//// The following have special meaning: ////
//// \f Clear display ////
//// \n Go to start of second line ////
//// \b Move back one position ////
//// ////
//// lcd_gotoxy(x,y) Set write position on LCD (upper left is 1,1) ////
//// ////
//// lcd_getc(x,y) Returns character at position x,y on LCD ////
//// ////
////////////////////////////////////////////////////////////////////////////
//// (C) Copyright 1996,1997 Custom Computer Services ////
//// This source code may only be used by licensed users of the CCS C ////
//// compiler. This source code may only be distributed to other ////
//// licensed users of the CCS C compiler. No other use, reproduction ////
//// or distribution is permitted without written permission. ////
//// Derivative programs created using this software in object code ////
//// form are not restricted in any way. ////
////////////////////////////////////////////////////////////////////////////

// As defined in the following structure the pin connection is as follows:
// B0 enable
// B1 rs
// B2 rw
// B4 D4
// B5 D5
// B6 D6
// B7 D7
//
// LCD pins D0-D3 are not used and PIC B3 is not used.

struct lcd_pin_map { // This structure is overlayed
BOOLEAN enable; // on to an I/O port to gain
BOOLEAN rs; // access to the LCD pins.
BOOLEAN rw; // The bits are allocated from
BOOLEAN unused; // low order up. ENABLE will
int data : 4; // be pin B0.
} lcd;

#byte lcd = 6 // This puts the entire structure
// on to port B (at address 6)

#define lcd_type 2 // 0=5x7, 1=5x10, 2=2 lines


BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};
// These bytes need to be sent to the LCD
// to start it up.


// The following are used for setting
// the I/O port direction register.

struct lcd_pin_map const LCD_WRITE = {0,0,0,0,0}; // For write mode all pins are out
struct lcd_pin_map const LCD_READ = {0,0,0,0,15}; // For read mode data pins are in


BYTE lcdline;

BYTE lcd_read_byte() {
BYTE low,high;

set_tris_b(LCD_READ);
lcd.rw = 1;
delay_cycles(1);
lcd.enable = 1;
delay_cycles(1);
high = lcd.data;
lcd.enable = 0;
delay_cycles(1);
lcd.enable = 1;
delay_us(1);
low = lcd.data;
lcd.enable = 0;
set_tris_b(LCD_WRITE);
return( (high<<4) | low);
}


void lcd_send_nibble( BYTE n ) {
lcd.data = n;
delay_cycles(1);
lcd.enable = 1;
delay_us(2);
lcd.enable = 0;
}


void lcd_send_byte( BYTE address, BYTE n ) {

lcd.rs = 0;
while ( bit_test(lcd_read_byte(),7) ) ;
lcd.rs = address;
delay_cycles(1);
lcd.rw = 0;
delay_cycles(1);
lcd.enable = 0;
lcd_send_nibble(n >> 4);
lcd_send_nibble(n & 0xf);
}


void lcd_init() {
BYTE i;

set_tris_b(LCD_WRITE);
lcd.rs = 0;
lcd.rw = 0;
lcd.enable = 0;
delay_ms(15);
for(i=1;i<=3;++i) {
lcd_send_nibble(3);
delay_ms(5);
}
lcd_send_nibble(2);
for(i=0;i<=3;++i)
lcd_send_byte(0, LCD_INIT_STRING[i]);
}


void lcd_gotoxy( BYTE x, BYTE y) {
BYTE address;

switch(y) {
case 1 : address=0x80;break;
case 2 : address=0xc0;break;
case 3 : address=0x90;break;
case 4 : address=0xd0;break;
}
address+=x-1;
lcd_send_byte(0,address);
}

void lcd_putc( char c) {
switch (c) {
case '\f' : lcd_send_byte(0,1);
lcdline=1;
delay_ms(2);
break;
case '\n' : lcd_gotoxy(1,++lcdline); break;
case '\b' : lcd_send_byte(0,0x10); break;
default : lcd_send_byte(1,c); break;
}
}

char lcd_getc( BYTE x, BYTE y) {
char value;

lcd_gotoxy(x,y);
lcd.rs=1;
value = lcd_read_byte();
lcd.rs=0;
return(value);
}

hc.coltech 17-08-2011 10:46 AM

Các pro giúp hộ cái..em dùng pic 18F2550 định built ra file .hex nhưng không có thư viện của p18cxxx.h nên ko built được ..pro nào có share cho với ...thanks nhiều

pdkxlily 28-09-2011 04:11 AM

mình đang làm mạch nạp dùng con 18f4550 giao tiếp usb . bạn nào share mình đc ko

nhat_minh1 07-10-2011 05:09 PM

vậy ma nói học lại tu đầu

nhat_minh1 07-10-2011 05:12 PM

mọi người viết từng đoạn code cơ bản + mạch (có kèm chu thích nha)
gửi lên cho em học với,
bất đầu bằng việc điều khiển led trước di
thanks cả nhà

trungduc 17-02-2012 11:38 AM

Mình mới mua 1 con pic18f4550 về học tài liệu về con này ít so với 16f877a. Mình bắt đầu bằng bài bật tắt LED nhưng vẫn chưa được. Các bạn nhiệt tình cho mình 1 đoạn code về tham khảo với. (ASM nha ).
Cảm ơn nhiều!

kyanh911 18-04-2012 05:35 PM

trungduc: hoc asm làm chi cho khổ....xài ccs đi bác ơi

kyanh911 18-04-2012 05:50 PM

em có đoạn code này giao tiếp lcd 4bit đã chạy ổn định....chân rs,rw,e đã nói trong code. còn chân D7 của LCD nối chân RB0, D6 nối RB1, D5 nối RB2, D4 nối RB3

#include<18f4550.h>
#fuses nowdt,hs,noprotect,nolvp
#use delay(clock=20000000)
#use fast_io(b)
#define rs pin_b7
#define rw pin_b6
#define e pin_b5

int8 dao(int8 xx)
{
int8 buff;
buff=0;
buff+=(xx>>7)&0x01;
buff+=(xx>>5)&0x02;
buff+=(xx>>3)&0x04;
buff+=(xx>>1)&0x08;

buff+=(xx<<1)&0x10;
buff+=(xx<<3)&0x20;
buff+=(xx<<5)&0x40;
buff+=(xx>>7)&0x80;
return buff;
}

void ghilenh(int8 malenh)
{
int8 tam;
tam=dao(malenh);
output_b(tam&0xf); //xuat 4 bit cao truoc
output_low(rs); //chon thanh ghi lenh
output_low(rw); //cho phep ghi
delay_us(2);
output_high(e);
delay_us(5);
output_low(e);
delay_us(500);

output_b(tam>>4); //xuat 4 bit thap sau
output_low(rs);
output_low(rw);
delay_us(2);
output_high(e);
delay_us(5);
output_low(e);
delay_us(500);
}

void ghikytu(int8 makytu)
{
int8 tam;
tam=dao(makytu);
output_b(tam&0xf);
output_high(rs);
output_low(rw);
delay_us(2);
output_high(e);
delay_us(5);
output_low(e);
delay_us(500);

output_b(tam>>4);
output_high(rs);
output_low(rw);
delay_us(2);
output_high(e);
delay_us(5);
output_low(e);
delay_us(500);
}
void khoitaolcd()
{
ghilenh(0x28);
ghilenh(0x28); //mã 28 chu k phai 38
delay_ms(10);
ghilenh(0x28); //vi giao tiep 4 bit
delay_ms(10);

ghilenh(0x28);
delay_ms(1);
ghilenh(0x0c);
delay_ms(1);
ghilenh(0x01);
delay_ms(1);
ghilenh(0x06);
delay_ms(100);
}
main()
{
set_tris_b(0x00);
khoitaolcd();
ghikytu('N');
ghikytu('b');
}


Vấn đề thắc mắc ở đây là sao đưa qua port D thì lại hổng chạy?


Múi giờ GMT. Hiện tại là 04:16 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam