PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 10-08-2012, 02:29 PM   #1
quangsangpro
Nhập môn đệ tử
 
Tham gia ngày: Nov 2011
Bài gửi: 9
:
Anh nào có code dùng pic 16f887 với 74hc595

em ko biết cách đưa tín hiệu ra với pic 16f887 và con 74hc595 ai bik cách và code thì chỉ em với.em cảm ơn trc nha ^_^
quangsangpro vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-08-2012, 05:49 PM   #2
binhbk247
Đệ tử 2 túi
 
Tham gia ngày: Jun 2011
Bài gửi: 37
:
16f887 thì cũng như 16f877a thôi, còn xuất ra bằng 595 bằng thử dùng 2 hàm này nhé

//ser: chan 14
//rck: chan 12
//sck: chan 11

void init_595()
{
ser=0;
rck=0;
sck=0;
}

void out_595(unsigned char so)
{
int i, data;
data=so;
for(i=1;i<=8;i++)
{
if(data & 0x80)
ser=1;
else
ser=0;
sck=1;
sck=0;
data=data<<1;
}
rck=1;
rck=0;
}
binhbk247 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-08-2012, 10:45 PM   #3
quangsangpro
Nhập môn đệ tử
 
Tham gia ngày: Nov 2011
Bài gửi: 9
:
đây hình như chỉ cho 1 con 74hc595 thui phải ko anh..như em nối 3 or 4 con 74hc595 thì sao anh......
quangsangpro vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-08-2012, 10:56 PM   #4
binhbk247
Đệ tử 2 túi
 
Tham gia ngày: Jun 2011
Bài gửi: 37
:
ví dụ 2 con 595 thì hàm xuất ra 595 sẽ như sau:

void out_595(unsigned char so1,unsigned char so2)
{
int i;
int16 data;
data=so1;
data=(data<<8)+so2;
for(i=1;i<=16;i++)
{
if(data & 0x8000)
ser=1;
else
ser=0;
sck=1;
sck=0;
data=data<<1;
}
rck=1;
rck=0;
}

3,4 con thì e cứ theo thuật toán tương tự vậy mà làm nhé
binhbk247 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-08-2012, 11:06 PM   #5
quangsangpro
Nhập môn đệ tử
 
Tham gia ngày: Nov 2011
Bài gửi: 9
:
cái này cần khai báo ji ko anh sao em build mah nó báo lỗi

Error [192] F:\project\timer2\Untitled.c; 68.1 undefined identifier "ser"
Error [192] F:\project\timer2\Untitled.c; 69.1 undefined identifier "rck"
Error [192] F:\project\timer2\Untitled.c; 70.1 undefined identifier "sck"
Error [192] F:\project\timer2\Untitled.c; 80.1 undefined identifier "ser"
Error [192] F:\project\timer2\Untitled.c; 83.1 undefined identifier "sck"
Error [192] F:\project\timer2\Untitled.c; 87.1 undefined identifier "rck"
quangsangpro vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-08-2012, 11:41 PM   #6
quangsangpro
Nhập môn đệ tử
 
Tham gia ngày: Nov 2011
Bài gửi: 9
:
nếu anh làm với con 16f877 rùi thì share cho em với.... em đang cần
mail em là : prince_black_mask@yahoo.com
quangsangpro vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-08-2012, 12:58 AM   #7
binhbk247
Đệ tử 2 túi
 
Tham gia ngày: Jun 2011
Bài gửi: 37
:
báo lỗi là đúng rồi, vì đây chỉ là đoạn chương trình thôi chứ có phải là toàn bộ chương trình đâu, e phải định nghĩa các chân ser,rck,sck chứ, các chân này sẽ nối với chân của vđk
ví dụ ở đây chân ser nối với rb0, rck nối với rb1, sck nối với rb2 thì e khai báo

#byte portb = 0x06 // địa chỉ của thanh ghi portb, e coi lại thử 887 cái đúng là địa chỉ này ko

#bit ser = portb.0
#bit rck = portb.1
#bit sck = portb.2

còn ser,rck,sck là chân số mấy của 74hc595 thì a đã nói ở trên rồi đấy
binhbk247 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-08-2012, 11:13 AM   #8
CHIPKUTI
Nhập môn đệ tử
 
Tham gia ngày: Aug 2012
Bài gửi: 2
:
em cũng đang kiếm code làm led cube với hướng dẫn anh binhbk247 thì em là thế này mah nó van bao loi
#byte portb = 0x06

#bit ser = portb.0
#bit rck = portb.1
#bit sck = portb.2
dù em copy đoạn trên để chổ nào nó cũng báo lỗi như bạn đó
#include<htc.h>

__CONFIG( INTIO & MCLREN & WDTDIS & UNPROTECT & DUNPROTECT & BORDIS & LVPDIS & IESODIS & PWRTDIS);
#byte PORTB = 0x06

#bit ser = PORTB.0
#bit rck = PORTB.1
#bit sck = PORTB.2
void main ()
{TRISB=0X00;
while (1)
{
}
}
void init_595()
{
ser=0;
rck=0;
sck=0;
}

void out_595(unsigned char so)
{
int i, data;
data=so;
for(i=1;i<=8;i++)
{
if(data & 0x80)
ser=1;
else
ser=0;
sck=1;
sck=0;
data=data<<1;
}
rck=1;
rck=0;
}
CHIPKUTI vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-08-2012, 11:26 AM   #9
CHIPKUTI
Nhập môn đệ tử
 
Tham gia ngày: Aug 2012
Bài gửi: 2
:
anh naod làm với con pic16f887&& 595 cho em xin code c
nguyên lý càng tốt
CHIPKUTI vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-08-2012, 04:21 PM   #10
quangsangpro
Nhập môn đệ tử
 
Tham gia ngày: Nov 2011
Bài gửi: 9
:
sao chẳng có ai giúp vậy ta ^_^
quangsangpro vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-08-2012, 04:24 PM   #11
binhbk247
Đệ tử 2 túi
 
Tham gia ngày: Jun 2011
Bài gửi: 37
:
e cần thì gởi code qua, có time anh sửa cho, chứ a ko có code lập trình sẵn cái ni. e gởi qua mail congbinhdbk@gmail.com nhé
binhbk247 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 01:20 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam