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 heidi123Phòng Họp Thông Minh: Cuộc cách mạng khoa học Cho Mọi doanh nghiệp
Trong kỷ nguyên số hóa, phòng họp thông minh không còn là điều viển vông. Hãy nghĩ đến 1 không gian họp nơi mọi thứ – trong khoảng âm thanh, ánh sáng đến kỹ thuật – hoạt động...-
Channel: Công nghệ internet và mạng có dây
hôm nay, 00:42 -
-
bởi thanghiCùng với sự bùng nổ của công nghệ và xu hướng chuyển đổi số, ngành điện tử đang trở thành một trong những lĩnh vực thu hút nhiều doanh nhân và nhà đầu tư. Việc thành lập công ty trong ngành này không chỉ giúi hạn ở việc sản xuất phần cứng mà còn mở rộng sang các dịch vụ...
-
Channel: Xu hướng, nhu cầu và thị trường
Hôm qua, 21:02 -
-
Trả lời cho Hỏi cách điều chế xungbởi thetungBạn cho qua cái Tờ ri gơ Sờ mít ấy ......
-
Channel: Kỹ thuật điện tử tương tự
16-12-2024, 11:26 -
-
Trả lời cho Hỏi cách điều chế xungbởi nguyendinhvanCó gì mà khó ?
Răn cưa vuông đây
...-
Channel: Kỹ thuật điện tử tương tự
15-12-2024, 23:36 -
-
Trả lời cho hỏi về tụ điệnbởi ndp62Chữ " VENT" không phải là tên hãng sx tụ đâu ,vó thế là 1 ký hiệu liên quan tụ lowesr ?
-
Channel: Điện thanh
15-12-2024, 18:24 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi bqvietTrừ trường hợp công suất (rất) thấp, hầu như tất cả các loại nguồn xung thông thường đều có tụ nhỏ 1 - 10nF nối giữa sơ cấp và thứ cấp, để thoát nhiễu và để chống hiện tượng tương tự tĩnh điện. Vụ này đã thảo luận vài...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 22:02 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi namlangnhoE thử 3 cái nguồn nó đều giống nhau. Nên e làm tiếp địa luôn.
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 19:58 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi mèomướpDạ chú sắm con át chống giật và thay nguồn tổ ong khác cho an toàn ạ. Đa phần nguồn xung đều xả nhiễu của bên thứ cấp về điện lưới qua 1 con tụ nên cảm giác tê sẽ khó xác định rõ ràng là do rò điện hay là nó vốn vậy...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 18:51 -
-
bởi namlangnhoXin chào mọi người. E có sử dụng 1 cục nguồn tổ ong 12v-30A chạy đèn led xe trà sữa. Mà thợ thi công bị rò điện nên điện rò ra khung xe. E dùng đồng hồ đo điện ở khung xe và cả output thì thấy có dòng điện xoay chiều hơn 100v. Nên chạm...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 00:12 -
-
bởi Manh.n.trCác bác cho em hỏi cách điều chế xung răng cưa sang xung vuông với ạ. Em đang thấy khó ạ...
-
Channel: Kỹ thuật điện tử tương tự
13-12-2024, 20:46 -
Comment