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 0975132692Cáp Tín Hiệu Vặn Xoắn Đôi Altek Kabel chính hãng
- Thương Hiệu: Altek Kabel – Germany
- Xuất xứ/ Origin: China
- Ruột dẫn: Đồng mạ bạc
- Số Lõi Dẫn: 1 Pair/ 2 Pair/ 3 Pair/ 4 Pair (1 Pair = 1 đôi = 2 lõi) + 1 dây đồng Si bạc thoát...-
Channel: Điện tử công nghiệp
hôm nay, 09:30 -
-
bởi 0975132692Dây cáp điều khiển Altek Kabel - Tiêu chuẩn Châu Âu - đầy đủ các mã
- Dây dẫn: 100% đồng
- Số lõi: 2 - 30 lõi (2-7 lõi chia màu, 8 lõi trở lên lõi đen đánh số)
- Tiết diện: 0.5, 0.75, 1.0, 1.5mm2
- Cáp điều khiển CT-500: Không...-
Channel: Điện tử công nghiệp
hôm nay, 08:57 -
-
Trả lời cho Tổng hợp các thông tin về mạch nạp cho AVRbởi bacthoMình cũng bị như vậy mà chưa biết ở đâu
-
Channel: Vi điều khiển AVR
Hôm qua, 21:00 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi nhathung1101Câu trả lời là không dùng được.
Hai lớp dán mặt trước và mặt sau, gọi là film phân cực. Muốn hiểu rõ về nó thì chịu khó search nhé. Ở đây có rất nhiều chó cứ ngửi thấy phân là sủa nhặng, nên không giải thích nhiều....-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 16:20 -
-
Comment on Tổng hợp các thông tin về mạch nạp cho AVRbởi Memem
-
Channel: Vi điều khiển AVR
Hôm qua, 15:10 -
-
Trả lời cho Tổng hợp các thông tin về mạch nạp cho AVRbởi MememMọi người ơi cho em hỏi cái này ạ, hiện tại em đang làm btl về hiển thị giá trị nhiệt độ trên led 7 thanh sử dụng atmega16, code em chạy trên mô phỏng rất oke nhưng khi lắp qua mạch thực thì bị lỗi ở led đầu tiên bị lỗi như thế này...
-
Channel: Vi điều khiển AVR
Hôm qua, 15:10 -
-
bởi mantruongepuNhờ cả nhà tìm giúp mình thông tin IC này với, thấy ghi 943B W58BAL mà mình tìm mấy ngày nay không được, nó được đóng gói dạng TSSOP 8. Cám ơn cả nhà....
-
Channel: Điện tử dành cho người mới bắt đầu
20-11-2024, 14:40 -
-
bởi TherulCảm ơn bạn đã chia sẻ câu chuyện và quá trình phát triển sản phẩm của mình. Trước tiên, thật may mắn khi bạn vượt qua tai nạn và vẫn giữ được niềm đam mê cũng như khả năng sáng tạo trong lĩnh vực kỹ thuật. Việc bạn tiếp tục...
-
Channel: từ PIC tới dsPIC
20-11-2024, 07:20 -
-
Trả lời cho Em muốn hỏi mọi người về nguyên lý hoạt động, tần số của mạch công suất trong máy rửa siêu âm ạ.bởi nguyendinhvanBạn nên nghiên cứu cái chấn lưu đèn ống Compact fluorescent lamp hay đèn compact trước đã. Nó rẻ đỡ tốn kém.
Sau khi hiểu rõ rồi thì chuyển sang cái mạch này.
Ở cái chấn lưu, tần số của nó linh tinh lắm, tùy điện áp nguồn, tùy...-
Channel: Hỗ trợ học tập
19-11-2024, 22:44 -
-
bởi yname11 E có 1 laptop bị hỏng màn hình, e tháo ra thì thấy nó có 4 lớp , lớp ngoài cùng là 1 lớp nhựa rất mỏng màu hơi đen ( chắc là 1 loại film dán), tiếp theo là 1 lớp thủy tinh bị vỡ (màu đen) , đến 1 lớp thủy tinh trắng ( lớp này có...
-
Channel: Thiết bị điện tử cá nhân
18-11-2024, 19:12 -
Comment