Em muốn đẩy 4 Byte dữ liệu ra cho 4 chú 595 thì làm thế nào. Em đang dùng CODEversion AVR, các bac giúp em với.(Chú ý em đã hiểu rõ hoạt động của 595)
Thông báo
Collapse
No announcement yet.
đẩy dữ liệu ra 595
Collapse
X
-
đây là chương trình em viết, nó hơi lộn xộn chút.
while (1)
{
z++;y++;
// đành phải dùng thanh ghi portb làm thanh ghi đệm
PORTB=x;
x=t;
// lấy 1 bit dữ liệu đưa ra chân SDA
PORTD.0=PORTB.7;
// tạo một xung đến chân SCL
PORTD.1=1;
delay_ms(100);
PORTD.1=0; // dịch bit
x<<=y;
delay_us(10);
if (z==8){t=0b11111001;
y=0;}
if (z==16){t=0b10100100;
y=0;}
if (z==24){t=0b10110000;
y=0;}
if (z==33){
while (1){};}
// Place your code here
};
}Last edited by mrcuongcon; 19-12-2007, 10:21.
-
Nguyên văn bởi mrcuongcon Xem bài viếtEm muốn đẩy 4 Byte dữ liệu ra cho 4 chú 595 thì làm thế nào. Em đang dùng CODEversion AVR, các bac giúp em với.(Chú ý em đã hiểu rõ hoạt động của 595)
http://dientuvietnam.net/forums/showthread.php?t=9310
email:mahaco@fpt.vn
Comment
-
//khai báo các chân
#define SHCP PORTB.0
#define STCP PORTB.1
#define DS PORTB.2
void send595(unsigned char byte1,unsigned char byte2,unsigned char byte3,unsigned char byte4)
{
unsigned char i;
unsigned int k;
//send byte thu 1
k=128;//send bit cao nhất đầu tiên.
for(i=0;i<16;i++)
{
if((byte1 & k)==k)
DS=1;//neu bit la 1 thi send 1 ra chan DS
else
DS=0;//Nguoc lai send 0
SHCP=0; //
delay_us(1); //
SHCP=1; //
delay_us(1); // các tín hiệu xung nhịp để 595 dịch giá trị ra ngõ ra
STCP=1; //
delay_us(1); //
STCP=0; //
delay_us(1); //các tín hiệu để ngắt việc gửi bít trước và bắt đầu gửi bít tiếp theo.
k >>= 1; //chuẩn bị cho bít tiếp theo
}
//send byte thu 2
k=128;
for(i=0;i<16;i++)
{
if((byte2 & k)==k)
DS=1;
else
DS=0;
SHCP=0;
delay_us(1);
SHCP=1;
delay_us(1);
STCP=1;
delay_us(1);
STCP=0;
delay_us(1);
k >>= 1;
}
//send byte thu 3
k=128;
for(i=0;i<16;i++)
{
if((byte3 & k)==k)
DS=1;
else
DS=0;
SHCP=0;
delay_us(1);
SHCP=1;
delay_us(1);
STCP=1;
delay_us(1);
STCP=0;
delay_us(1);
k >>= 1;
}
//send byte thu 4
k=128;
for(i=0;i<16;i++)
{
if((byte4 & k)==k)
DS=1;
else
DS=0;
SHCP=0;
delay_us(1);
SHCP=1;
delay_us(1);
STCP=1;
delay_us(1);
STCP=0;
delay_us(1);
k >>= 1;
}
}
Ban co the tim cach rut gon chuong trinh nay hon.
Comment
-
đây là chương trình em đã viết gọn lại:gửi 1 byte dữ liệu ra 595
dữ liệu là PORTD.0, clock là PORTD.1
k=128;
data=0x0f;// 1 byte dữ liệu cần gửi
for(i=0;i<9;i++)
{
if ((data & k)==k) PORTD.0=1;
else PORTD.0=0;
PORTD.1=0;
PORTD.1=1;
k>>= 1;
}Last edited by mrcuongcon; 23-12-2007, 11:31.
Comment
-
Nguyên văn bởi mrcuongcon Xem bài viếtđây là chương trình em đã viết gọn lại:gửi 1 byte dữ liệu ra 595
dữ liệu là PORTD.0, clock là PORTD.1
k=128;
data=0x0f;// 1 byte dữ liệu cần gửi
for(i=0;i<9;i++)
{
if ((data & k)==k) PORTD.0=1;
else PORTD.0=0;
PORTD.1=0;
PORTD.1=1;
k>>= 1;
}
Ví dụ
nếu PORTD.1 là đường latch thì cậu định nghĩa như vậy thì người khác khi nhìn code của cậu viết sẽ có thể sửa lỗi ngay mà không cần phải dò từ đầu chương trình
#define LATCH PORTD.1
Sông dài, Thuyền lớn, Biển rộng bao la.
Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.
Comment
-
//chang can delay gi het dau.
#define serin PORTB.5
#define clk PORTB.6
#define sclk PORTB.7
void spi(unsigned char _data)
{
unsigned char i;
for(i=0;i<8;i++)
{
serin=(_data>>i)&0x01;
clk=0;
clk=1;
}
sclk=0;
sclk=1;
}Cty TNHH Cơ Điện tử Hiệp Phát.
------------------------------------------
Trần Hoàng Giang
11-04-1985
Mobil: 0905 438 533
Comment
-
Em là thành viên mới tinh, vừa "chào" diễn đàn 10 phút
Em thấy cách giải quyết của bác irf540 là chuẩn nhất
xin góp ý thêm: Fclock của 595 Max = 20MHz nên cần có thêm trễ đối với các AVR dùng tần số làm việc lớn hơn 20MHz
Mong các tiền bối chỉ giáoHôm nay trời nắng chang chang.
Mèo con đi học chẳng mang thứ gì.
Chỉ mang một cái bút chì.
Và mang một mẩu bánh mì con con.
Comment
-
Nguyên văn bởi traihole Xem bài viếtthe nay hay hon nhieu
sbit Data = P2^2;
sbit Clock = P2^0;
sbit Strobe = P2^4;
void Dieukhien(unsigned char input){
unsigned char i;
Clock = 0;
for(i=0;i<8;i++){
if(input&0x01) Data = 1;
else Data = 0;
input>>=1;
Clock = 1;
Clock = 0;
}
}
riêng mấy cái lệnh IF và ELSE đã thấy thừa thải rồi chớ đừng nói là hay nhât
một bài toán có rất nhiều cách giải quyết nhưng muốn tối ưu nhất là cả vấn đề.soure của tui tuy không hay nhất nhưng chắc là xử lý nhanh hơn đoạn code của bác.
#define serin PORTB.5
#define clk PORTB.6
#define sclk PORTB.7
void spi(unsigned char _data)
{
unsigned char i;
for(i=0;i<8;i++)
{
serin=(_data>>i)&0x01;
clk=0;
clk=1;
}
sclk=0;
sclk=1;
}Cty TNHH Cơ Điện tử Hiệp Phát.
------------------------------------------
Trần Hoàng Giang
11-04-1985
Mobil: 0905 438 533
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Năm mới dientuvietnam.netbởi mèomướpDạ năm mới cháu xin kính chúc ông, bà, cô, dì, chú, bác, anh, chị, em, các bạn, các cháu... trong diễn đàn sức khỏe dồi dào, gặp nhìu may mắn và thành công...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 05:42 -
-
Trả lời cho Năm mới dientuvietnam.netbởi nhathung1101Chúc cả nhà ăn no mặc ấm, quần lúc có lúc không.
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 00:02 -
-
Trả lời cho Năm mới dientuvietnam.netbởi vandong1111Năm mới 2025 cháu chúc các chú, các bác mạnh khỏe, vui vẻ, gặp nhiều may mắn.
-
Channel: Tâm tình dân kỹ thuật
29-01-2025, 20:59 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi bqvietNói một cách xây dựng thì kiểu đồng hồ kiêm kẹp dòng NJTY3266 mà bạn Mèo đề cập là đúng nhu cầu người hỏi rồi. Một số cửa hàng bán trên 200ng, vài sàn thương mại điện tử bán dưới - thế là đúng nhu cầu về giá. Nếu khéo săn...
-
Channel: Điện tử dành cho người mới bắt đầu
27-01-2025, 20:02 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi nhathung1101Đa năng còn chưa dùng hết, nếu không biết cách dùng.
200k thì hơi khó mua, nhưng 50k chắc là có. Cứ bảo bán cho tôi cái đồng hồ hỏng.-
Channel: Điện tử dành cho người mới bắt đầu
26-01-2025, 23:21 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi nhathung1101Lão Đinh Vặn học giải phương trình hồi đi trẻ mà. Mẫu giáo học lập trình AI rồi. Lớp lão ấy gần lớp em nên em biết....
-
Channel: Điện tử công suất
26-01-2025, 23:11 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Vậy chú đã hỏi hãng SIEMEN chưa? Tại sao cái PLC S7-200 cổ lỗ mà họ vẫn thiết kế riêng cho thị trường TQ với chữ SMART? Thậm chí phần mềm riêng để đọc file ngu.smart?
Vấn đề không còn là công nghệ "cốt lõi" nữa, mà là giá thành quyết định. Ham rẻ là trả giá mà....-
Channel: Điện tử công suất
26-01-2025, 23:01 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi vi van phamĐồng ý với Bqv.
50 năm làm nghề, tôi đã chứng kiến 3 lần máy x quang mới nhập từ nước ngoài về bị lỗi.
- Lần thứ 1 máy xq của Pháp được ks Pháp lằp đặt bị lỗi 1 con didode, đưa cho ks Pháp con didode khác cùng mã số, ông...-
Channel: Điện tử công suất
26-01-2025, 08:09 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi mèomướpDạ chú dinh... muốn sửa lỗi cho hãng thì chú cứ gửi những hình ảnh, video cho họ đi ạ, chú có thể tìm thông tin của những lãnh đạo bên ấy để gửi thì sẽ hiệu quả hơn ạ. Về tổng quan thì họ sẽ ko phản hồi rõ ràng đâu ạ, vì nhận...
-
Channel: Điện tử công suất
26-01-2025, 06:19 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi bqvietCuối năm bàn thêm chuyện to hơn chút, đấy là 2 vụ rơi đám 737 đời mới và trục trặc ở cả tá chiếc khác. Ngay cả những thứ tưởng như cao siêu sang xịn thật thì vẫn có thể gặp trường hợp oái oăm như thường. Từ hồi đó bqv đã thấy khó hiểu làm sao lại đẻ ra đám MCAS quái thai đến thế được. Rồi...
-
Channel: Điện tử công suất
24-01-2025, 19:40 -
Comment