Có bác nào biết về chuẩn giao tiếp SPI và I2C là gì ko.Khái niệm cũng như ứng dụng của nó.
Thông báo
Collapse
No announcement yet.
giao tiếp SPI,I2C
Collapse
X
-
-
Mình thì chỉ biết chuẩn I2C thôi. Đây là chuẩn truyền dữ liệu dạng nối tiếp gồm hai dây là SDA (dữ liệu) và SCL (dây xung nhịp).
Bên phát sẽ tạo ra xung nhịp (SCL) để bên thu dựa vào đó tính toán dữ liệu trên đường SDA.
Chuẩn này mình hay dùng trong đồng hồ thời gian thực DS1307. Nếu bạn nào cần code cho 89C51 thì mail cho mình.
Còn nếu dùng AVR thì bộ soạn thảo Codevision nó tạo sẵn cho bạn, bạn chỉ cần khai báo là xong thôi.GTH sản xuất mạch in PCB 1 mặt:
-phủ xanh: 40.000 đ/dm2
-không phủ xanh: 30.000 đ/dm2
-Cung cấp mực cảm quang để làm mạch in
email:
-
Chao Pac gth_pcb!
bac lam on gui cho em code cua chuan giao tiep I2C cua AT 89s51 voi DS1307 voi nhe
em đang can lam.
thanks bac nhieu!!!
email cua em: jimmy_mtv21@yahoo.comKo tin vào chính mình
Tức là bạn đã thất bại một nửa trước khi bắt đầu.
Comment
-
Giao tiếp I2C
Nguyên văn bởi gth_pcb Xem bài viếtMình thì chỉ biết chuẩn I2C thôi. Đây là chuẩn truyền dữ liệu dạng nối tiếp gồm hai dây là SDA (dữ liệu) và SCL (dây xung nhịp).
Bên phát sẽ tạo ra xung nhịp (SCL) để bên thu dựa vào đó tính toán dữ liệu trên đường SDA.
Chuẩn này mình hay dùng trong đồng hồ thời gian thực DS1307. Nếu bạn nào cần code cho 89C51 thì mail cho mình.
Còn nếu dùng AVR thì bộ soạn thảo Codevision nó tạo sẵn cho bạn, bạn chỉ cần khai báo là xong thôi.
e đang làm cái đồng hồ thời gian thực dùng con 89s52 và DS12C887 có giao tiếp I2C nhưng e ko làm được pác chỉ em với nhé, e gửi code cho pác xem và giúp e phải làm như thế nào để dịch được file hex từ MikroC for 8051. trong bài viết họ để 2 đoạn code, 1 là khai báo RTCPHP Code:1- Code khởi tạo RTC (nạp lần 1 để setup time cho RTC)
#include <AT89x52.h>
unsigned char xdata xreg[14] _at_ 0xFF00;//cac thanh ghi dieu khien (second, minutes,..A,B,..)
unsigned char xdata theky _at_ 0xFF32;
//////////////////// DINH DANH CAC NHAN DIEU KHIEN
sbit CS =P3^1;
#define sqw_on xreg[0xB]|=0x08;// phat xung vuong//SQWE=1
#define sqw_off xreg[0xB]&=0xF7;// phat xung vuong//SQWE=0
#define edit_on xreg[0x0B]|=0x80;// dat che do chinh sua//SET=1
#define edit_off xreg[0x0B]&=0x7F;// tat che do chinh sua//SET=0
#define UIE_on xreg[0x0B]|=0x10;// cho phet ngat ket thuc viec cap nhap
#define UIE_off xreg[0x0B]&=0xEF;// khong cho phet ngat ket thuc viec cap nhap
data unsigned char n,c1,c2;
//////////////////// DINH NGHIA VA KHAI BAO CAC KIEU DU LIEU MOI
void delay(unsigned char n)// thu tuc tre
{
for(c1=0;c1<=n;c1++)
for(c2=0;c2<=200;c2++);
}
//////////////////////////// CHUONG TRINH CHINH
void main()
{
CS=0;//chon chan CS
xreg[0xA]=0xAF;//bat chip dong ho va tan so cua SQW=2Hz;
edit_on //10101111 UIP=1;DV=010;RS=1111
delay(100);
//xreg[0xB]|=0x04;// dat che do binary (DM=0),DSE=0
xreg[0xB]|=0x04;// dat che do BCD (DM=0),DSE=0
edit_on
xreg[0xB]|=0x2;// dat che do kieu 24h
//////// dat gio va lich
edit_on
theky=20;//thanh ghi the ky
xreg[0]=0;//dat 0 giay
xreg[2]=12;//dat phut
xreg[4]=22;//dat gio
xreg[6]=2;// thu
xreg[7]=24;// ngay
xreg[8]=11;// thang
xreg[9]=8;// nam
edit_off
sqw_on
UIE_on
}
PHP Code://////////////////////////////////// PHAN DINH NGHIA CAC THU TUC
2-Code chính của chương trình
-----------------------------------------------------------
|REG A | UIP | DV2 | DV1 | DV0 | RS3 | RS2 | RS1 | RS0 |
---------------r--------------------------------------------
|REG B | SET | PIE | AIE | UIE |SQWE | DM |24/12| DSE |
------------------------------------------------------------
|REG C |IRQF | PF | AF | UF | 0 | 0 | 0 | 0 |
---------------r-----r-----r-----r---------------------------
*/
#include <AT89x51.h>
unsigned char xdata xreg[14] _at_ 0xFF00;//vi tri cac thanh ghi gio ,phut,giay..
unsigned char xdata theky _at_ 0xFF32;//thanh ghi the ky
///////////// DINH DANH CAC NHAN DIEU KHIEN///////////////////
sbit donghe= P1^0;//dinh nghia cac cong lam nut an
sbit AMPM= P1^1;//Led AM -PM
sbit DOT= P1^2;//chan H
sbit chuong=P3^0;//bao chuong
sbit CS=P3^1;//chon chip DS
sbit chon=P3^3;//chon Led de dieu chinh
sbit role=P1^6;//chon role mac dinh =0
sbit loa=P1^7;//chon role mac dinh =1
sbit set=P3^5;//thiet lap
//////////////////////////////////////////////////////
#define sqw_on xreg[0xB]|=0x08;// phat xung vuong//SQWE=1
#define sqw_off xreg[0xB]&=0xF7;// tat phat xung vuong//SQWE=0
#define edit_on xreg[0x0B]|=0x80;// dat che do chinh sua//SET=1
#define edit_off xreg[0x0B]&=0x7F;// dat che do chinh sua//SET=0
#define intr0_on EX0=1;// cho phep ngat ngoai 0
#define intr0_off EX0=0;// khong phep ngat ngoai 0
#define UIE_on xreg[0x0B]|=0x10;// cho phet ngat ket thuc viec cap nhap
#define UIE_of xreg[0x0B]&=0xEF;// khong cho phet ngat ket thuc viec cap nhap
data unsigned char view[14]={0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // vung dem danh cho viec hien thi
data unsigned char pp[4]={0x10,0x12,0x11};
data unsigned char UIP,K,loi;
////////////////////////////////////////////////////////////////
//////////////////// DINH NGHIA VA KHAI BAO CAC KIEU DU LIEU MOI
data unsigned char giay,phut,gio,thu,ngay,thang,nam;
/////////////////gio bao chuong////////////////////
//////////////////////Khai bao cac bien du lieu/////////////////////////////
unsigned char i,j,x,t,h,m,h,p,q,ii,jj,vao2,kk,y;
///////////////thu tuc tre^~///////////////////////////
void delay(unsigned char vao)
{
for(i=0;i<=vao;i++)
for(j=0;j<=100;j++);
}
void delay2(unsigned char vao2)
{
for(ii=0;ii<=vao2;ii++)
for(jj=0;jj<=200;jj++)
for(kk=0;kk<=250;kk++);
}
///////////////thoi gian bao tiet///////////////////////////
/////////khoi tao RTC chi 1 lan////////////
/*void khoitao()
{
CS=0;//chon chan CS
delay(200);
delay(200);
xreg[0xA]=0xEF;//reset bo giao dong cua RTC
delay(100);
xreg[0xA]=0xAF;//bat chip dong ho va tan so cua SQW=2Hz;
edit_off //10101111 UIP=1;DV=010;RS=1111
delay(100);
edit_on
xreg[0xB]|=0x04;// dat che do binary (DM=1),DSE=0
xreg[0xB]|=0x2;// dat che do kieu 24h
//////// dat gio va lich
theky=20;//thanh ghi the ky
edit_on
xreg[0]=0;//dat 0 giay
xreg[2]=50;//dat phut
xreg[4]=0;//dat gio
xreg[6]=7;// thu
xreg[7]=26;// ngay
xreg[8]=8;// thang
xreg[9]=06;// nam
edit_off
sqw_on
UIE_on
}
*/
/////////////////kieu chuong////////////////
void baochuong()
{
role=0;
delay2(5);
role=1;
delay2(5);
}
//////////////////////CHUONG TRINH HIEN THI LED/////////////////////////
void displayLed()
{
view[0]=(unsigned char)(thu==1)?8:thu;// phan don vi cua thu <=8
view[1]=(unsigned char)(ngay/10);// phan chuc cua ngay
view[2]=(unsigned char)(ngay%10);// phan donvi cua ngay
view[3]=(unsigned char)(thang/10);// phan chuc cua thang
view[4]=(unsigned char)(thang%10);// phan donvi cua thang
view[5]=(unsigned char)(nam/10);// phan chuc cua nam
view[6]=(unsigned char)(nam%10);// phan donvi cua nam
view[7]=(unsigned char)(gio/10);// phan chuc cua gio
view[8]=(unsigned char)(gio%10);// phan donvi cua gio
view[9]=(unsigned char)(phut/10);// phan chuc cua phut
view[10]=(unsigned char)(phut%10);// phan donvi cua phut
view[12]=(unsigned char)(giay/10);//phan donvi cua giay
view[13]=(unsigned char)(giay%10);//phan don chuc cua giay
view[11]=view[0];
for(x=0;x<15;x++){P2=(((x+1)&0x0F)|(view[x]<<4));delay(2);}
if(gio<12)AMPM=1;else if(gio>=12) AMPM=0;
while((gio==6)&(phut==45)&(giay<=10))baochuong();//bao chuong get up
while((gio==1)&(phut==15)&(giay<=10))baochuong();//bao chuong get up
if((ngay>=15)&(thang>=10))donghe=1;else donghe=0;
}
////////////////THU TUC PHUC VU NGAT RTC/////////////
void intr0() interrupt 0//chuong trinh con phuc vu ngat
{
EA=0;//cam tat ca cac ngat
h=xreg[0x0C];// REG C=0;
while(xreg[0x0A]&0x80);//cho qua giai doan tu cap nhap
giay=xreg[0];// lay giay
phut=xreg[2];// lay phut
gio=xreg[4];// lay gio
thu=xreg[6];// lay thu trong tuan
ngay=xreg[7];// lay ngay trong thang
thang=xreg[8];// lay thang trong nam
nam=xreg[9];// lay nam
EA=1;//cho phep ngat tro lai
}
/////////////THU TUC PHUC VU NGAT PHIM//////////
void intr1() interrupt 2//chuong trinh con phuc vu ngat
{
}
//////////////////////////////////////////////////////
///////////////CHUONG TRINH CHINH//////////////////////////
void main()
{
//khoitao();//goi ham khoi tao 1 lan;
////////////khoi tao ngat////////////
chuong=0;//cam chuong
delay2(30);
role=0;//cam role
loa=1;//cam loa
CS=0;//bat RTC
EX0=1;// phep ngat ngoai 0 cua RTC
IT0=1;// ngat theo suon
EX1=1;// phep ngat ngoai 0 cua RTC
IT1=1;// ngat theo suon
///////// khoi tao RTC lien tuc
xreg[0xB]&=0x8F;// cam ngat chu ky va ngat cap nhap
edit_off//set=0;
UIE_on;//bat cho phep ngat dinh ky
sqw_on
/////////// CONG VIEC CHINH CUA MAIN BAT DAU
EA=1;// cho phep ngat toan cuc
intr0_on// ngat RTC
while(1)displayLed();
}
|
Comment
Bài viết mới nhất
Collapse
-
bởi nguyendinhvanSau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !
Chập thì thay. Cháy thì tháo
Làm thì láo. Báo thì hay
May thì khoe. Rủi thì bỏ
Thành tích nhỏ. Báo thành to
Làm cho có. Báo chi li
Sai cả li. Báo...-
Channel: Tâm tình dân kỹ thuật
hôm nay, 00:35 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 22:31 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi mèomướpDạ ý chú là màn oled ấy ạ. Cùng chuẩn lvds cùng độ phân giải thì cắm được ạ. Còn nó mà khác thì hơi khó vì oled các điểm ảnh nó tự phát sáng chứ ko dùng đèn nền như lcd. Cháu chỉ biết đến vậy thôi ạ. Chú muốn nghịch phải tự tìm hiểu kỹ trước khi mua thôi, khó mà ông thợ nào tư vấn vụ này...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 22:14 -
-
Trả lời cho Tự làm máy đo Cuộn cảmbởi bacthoHay đấy bạn ạ. Đây có thể hiểu là máy đo cuộn dây. Tiện đây xin cho hỏi bạn có hiểu rõ về máy nạp rôm pcb 45 của hãng thiên minh không giúp mình cách cài fw của nó với vì mình vừa được anh bạn cho nhưng lại không biết cài fw nên chưa dùng được. Nếu có thể thì bạn giúp mình với...
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 21:48 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11màn của mình là LCD , giờ m muốn mua màn LED để thay thế (ko muốn dùng màn LCD nữa) , lên muốn hỏi xem có cáp chuyển đổi nào có thể cắm đc màn LED vào ko , tất nhiên phải có cùng số chân pin với màn cũ rồi . VD: màn cũ là lcd mỏng , 40 pin...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 21:43 -
-
Trả lời cho các bạn giúp mình về file HEX với!!!bởi bacthoBạn vào trang phuclanshop.com ,tìm đến góc kỹ thuật. Tác giả vương khánh hưng nói rất rõ về điều bạn tìm...
-
Channel: Vi điều khiển họ 8051
Hôm qua, 21:21 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi mèomướpDạ màn hình lcd đều có thể lai cấy cho nhau được hết ạ. Các loại cáp, bo mạch chuyển đổi lvds rất nhìu, với dòng sony còn phải nhổ cả chip nhớ của main cũ đưa lên gỗ thì mới lắp sang máy khác đc, chưa kể các bệnh về màu... ngay cả...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 20:43 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11Màn của e là LCD , e muốn thay thế bằng màn led thì có cáp chuyển đổi nào thực hiện đc việc đó ko nhỉ, nếu có bác mách e với....
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 16:34 -
-
bởi bqvietServo cuối cùng vẫn chỉ là điều chỉnh tốc độ và đọc phản hồi vị trí
Qua cổng song song LPT cổ
https://www.electronicsforu.com/elec...eed-controller
Qua cổng USB - xem thêm đám FT232RL-
Channel: Điện tử công nghiệp
22-11-2024, 15:56 -
Comment