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 Tiêu chuẩn về dây quấn biến ápbởi nguyendinhvanTat cả các thông tin này , do phòng kỹ thuật công nghệ, cán bộ quản lý công nghệ của cty bạn quản lý và nắm rõ. Để họ làm hồ sơ sản phẩm, để thuyết trình, để đăng ký ..... Còn cán bộ cấp thấp của nhà máy thì họ không bàn, không...
-
Channel: Thuật ngữ chuyên ngành
Hôm qua, 23:18 -
-
Trả lời cho Tiêu chuẩn về dây quấn biến ápbởi nguyendinhvanĐại ý là họ có những cái giấy tờ như thế này. Họ sản xuất nhiều chủng loại mẫu mã. Và cái loại trên hình theo chuẩn Tờ cờ vờ nờ , năm chín ba ba...
-
Channel: Thuật ngữ chuyên ngành
Hôm qua, 23:03 -
-
Trả lời cho Tiêu chuẩn về dây quấn biến ápbởi nguyendinhvanNói chuyện với bạn này cũng khá là chán .
-
Channel: Thuật ngữ chuyên ngành
Hôm qua, 23:00 -
-
bởi nhathung1101Còn xóa nick luôn ấy chứ!
Những người tự chửi bản thân là cần phải xem xét....-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 20:56 -
-
bởi mèomướpDạ cô mil... cứ bình tĩnh ạ. Những bác những chú nhìu nhìu tuổi làm kỹ thuật hay khó tính lắm ạ. Vì ngày trước thông tin, tài liệu, dụng cụ, linh kiện khó kiếm nên nghề này cao giá và kiếm nhìu tiền lắm ạ. Khách hàng mà dám có ý kiến...
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 13:01 -
-
bởi matnetgia99kaka, bạn sẽ bị... cấm nick, xóa bài vì động chạm đến anh ấy đấy! Bạn có biết anh ấy đầy quyền lực trên DD này, có thể nói mọi thứ dù tục tĩu lăng mạ người khác, không phù hợp vơí người có... kĩ thuật
...
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 10:56 -
-
bởi milanNgu dốt, bảo thủ, trì trệ cứ làm mình như cao siêu.
Già đầu mà comment nào cũng để mọi người chửi, không biết nhục.
Một kẻ thất bại....-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 10:23 -
-
bởi tuyennhanDùng mạch laptop nhỡ có hư đem khiếu nại bên bán nó bảo mối nối bán dẫn cũng có tính diod nó không bảo hành thì sao cải , dùng mối nối cơ thì nó không cải gì được ....
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 06:48 -
-
bởi vi van phamThế thái nhân tình gớm chết thay.
Mặn nồng trong chiếc túi vơi đầy........
Chạy theo mèo, bán tài liệu, có tiền mua riệu uốn, bỏ mặc đàn anh bơ ....vơ.. thèm riệu.
Nam nhi đầu đội trời, là như thế..........
-
Channel: Điện tử gia dụng
Hôm qua, 06:34 -
-
Trả lời cho Xin hỏi về chiết ápbởi nhathung1101Vậy kụ ấy chán đóng phim cấp 3 rồi, muốn chuyển lên cấp 4.......
-
Channel: Điện thanh
Hôm qua, 01:27 -
Comment