| Tiêu đề: 595 bằng c đây Thu Dec 01, 2011 2:36 am |
| | | | | Cách sử dụng 595 Về cơ bản 595 cũng không có gì là phức tạp nhưng khi đưa vào mạch thì giải quyết nó cũng là cả 1 vấn đề đặc biệt là dùng để quét, Về 595 (loại 74hc 595) có các chân cần xài như sau( 3 chân này nối với 3 của chân vdk) Có 1 chân cho phép dữ liệu đưa vào là chấn DS và chỉ có thể đưa từng bit vào mà thôi Sao khi đưa dữ liệu vào rồi thì có 1 cửa SHCP( tạm gọi là vậy) cho phép dữ liệu vào hay không vào.Muốn cho dữ liệu vào thì cần 1 xung âm tác động. Ngoài ra nó còn 1 cửa STCP cho phép đưa dữ liệu ra. Do vậy mình có thể cho vào rồi ra luôn hay 8 bit ra luôn 1 lúc. Và muốn nó ra cũng cần 1 xung âm tác động. Lần trước post bài = ASEM có vẻ chẳng mấy ai đọc. Lớp mình nhiều tín đồ C quá. Em mới chuyển qua học C thấy cũng hay nên Post cho đầy đủ Đây là ví dụ //==========dua dl vao595=========== void dulieu(unsigned char dt) { unsigned char i; unsigned int k; k=128; //k=1000 0000 for(i=0;i<8;i++) // 8 lần để đẩy 8 bít dữ liệu vào 595 { if((dt&k)==k) ds=1; else ds=0; shcp=1; //nối với 1 chân vkd vd " sbit shcp=P1^0 " shcp=0; // cho phep du lieu vào stcp=1; // cho du lieu ra( có thể đe full 8 bit rồi cho ra 1 thể để ngoài vòng for hoặc xài lúc nào thì gọi nó ra) stcp=0; k>>=1; // dich K đi 1 vi trí } } trên là cách đưa dữ liệu vào 595 bác nào chưa hỉu đê em post ví dụ cụ thể. bài viết có gì sai sót mong các bác bổ sung ai có tài liệu về 595 đặc biệt trong quét ma trận hay quét led 7 đoạn thì cho em xin. thank trước | | | | |
| | | | Tiêu đề: Re: 595 bằng c đây Thu Dec 01, 2011 2:37 am |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Thu Dec 01, 2011 3:03 am |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Thu Dec 01, 2011 7:36 am |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Thu Dec 01, 2011 10:56 am |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Thu Dec 01, 2011 12:18 pm |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Thu Dec 01, 2011 6:47 pm |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Thu Dec 01, 2011 7:53 pm |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Thu Dec 01, 2011 10:18 pm |
| | | | | đây là bài mô phỏng đồng hồ nhưng không xài thời gian thực cơ bản là chưa hiểu đc con đó. bài vẫn dùng tran để quét còn bác nào thích thì có thể dùng 595 quét cũng được. đây là cách đưa dữ liệu vào 595. các bác tham khảo chỗ nào chưa hiểu em sẽ cố giải thích híc híc bài viết có gì cần bổ sung thì xin các hạ chỉ giáo thêm #include #include #include #define bat 1 #define tat 0 //================================= sbit shcp=P3^0; sbit ds=P3^1; sbit stcp=P3^2; sbit led1=P2^0; sbit led2=P2^1; sbit led3=P2^2; sbit led4=P2^3; sbit led5=P2^4; sbit led6=P2^5;
//=============delay============== void delay(int ms) { int a,b; for(a=0;a for(b=0;b<125;b++) { } } //================================ int m[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int giay,donvi1,chuc1; int phut,donvi2,chuc2; int gio,donvi3,chuc3;
//==========dua dl vao595=========== void dulieu(unsigned char dt) { unsigned char i; unsigned int k; k=128; for(i=0;i<8;i++) { if((dt&k)==k) ds=1; else ds=0; shcp=1; shcp=0; stcp=1; stcp=0; k>>=1; } } //============ hien thi============= void hienthi(void) { int c; for(c=0;c<10;c++) { chuc1=giay/10; donvi1=giay%10; dulieu(m[chuc1]); led5=bat; delay(5); led5=tat; dulieu(m[donvi1]); led6=bat; delay(5); led6=tat; chuc2=phut/10; donvi2=phut%10; dulieu(m[chuc2]); led3=bat; delay(5); led3=tat; dulieu(m[donvi2]); led4=bat; delay(5); led4=tat;
chuc3=gio/10; donvi1=gio%10; dulieu(m[chuc3]); led2=bat; delay(5); led2=tat; dulieu(m[donvi3]); led1=bat; delay(5); led1=tat; } } //==============ham chinh======= void main(void) { while(1) { gio=phut=giay=0; for(gio=0;gio<23;gio++) { hienthi(); for(phut=0;phut<59;phut++) { hienthi(); for(giay=0;giay<59;giay++) { hienthi(); } } } } }
| | | | |
| | | | Tiêu đề: Re: 595 bằng c đây Thu Dec 01, 2011 10:24 pm |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Thu Dec 01, 2011 10:32 pm |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Thu Dec 01, 2011 11:02 pm |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Thu Dec 01, 2011 11:45 pm |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Fri Dec 02, 2011 7:04 am |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Fri Dec 02, 2011 12:31 pm |
| | | | | #include < REGX51.H > #include< stdio.h > #include< math.h > #define bat 1 #define tat 0 //================================= sbit shcp=P3^0; sbit ds=P3^1; sbit stcp=P3^2; sbit led1=P2^0; sbit led2=P2^1; sbit led3=P2^2; sbit led4=P2^3; sbit led5=P2^4; sbit led6=P2^5; //=============delay============== void delay(int ms) { int a,b; for(a=0; a< ms; a++) for(b=0;b<125;b++) { } } //================================ int m[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int giay,donvi1,chuc1; int phut,donvi2,chuc2; int gio,donvi3,chuc3; //==========dua dl vao595=========== void dulieu(unsigned char dt) { unsigned char i; unsigned int k; k=128; for(i=0;i<8;i++) { if((dt&k)==k) ds=1; else ds=0; shcp=1; shcp=0; stcp=1; stcp=0; k>>=1; } } //============ hien thi============= void hienthi(void) { int c; for(c=0;c<10;c++) { chuc1=giay/10; donvi1=giay%10; dulieu(m[chuc1]); led5=bat; delay(5); led5=tat; dulieu(m[donvi1]); led6=bat; delay(5); led6=tat; chuc2=phut/10; donvi2=phut%10; dulieu(m[chuc2]); led3=bat; delay(5); led3=tat; dulieu(m[donvi2]); led4=bat; delay(5); led4=tat; chuc3=gio/10; donvi1=gio%10; dulieu(m[chuc3]); led2=bat; delay(5); led2=tat; dulieu(m[donvi3]); led1=bat; delay(5); led1=tat; } } //==============ham chinh======= void main(void) { while(1) { gio=phut=giay=0; for(gio=0;gio<23;gio++) { hienthi(); for(phut=0;phut<59;phut++) { hienthi(); for(giay=0;giay<59;giay++) { hienthi(); } } } } } híc đại khái là vậy mừ | | | | |
| | | | Tiêu đề: Re: 595 bằng c đây Fri Dec 02, 2011 12:32 pm |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Fri Dec 02, 2011 1:05 pm |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Fri Dec 02, 2011 4:44 pm |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Fri Dec 02, 2011 6:56 pm |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Fri Dec 02, 2011 9:19 pm |
|
|
| | | | Tiêu đề: Re: 595 bằng c đây Fri Dec 02, 2011 10:02 pm |
| | | | | #include < REGX51.H > #include< stdio.h > #include< math.h > #define bat 1 #define tat 0 //================================= sbit shcp=P3^0; sbit ds=P3^1; sbit stcp=P3^2; sbit led1=P2^0; sbit led2=P2^1; sbit led3=P2^2; sbit led4=P2^3; sbit led5=P2^4; sbit led6=P2^5; //=============delay============== void delay(int ms) { int a,b; for( a=0; a< ms ; a++) for(b=0;b<125;b++) { } } //================================ int m[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int giay,donvi1,chuc1; int phut,donvi2,chuc2; int gio,donvi3,chuc3; //==========dua dl vao595=========== void dulieu(unsigned char dt) { unsigned char i; unsigned int k; k=128; for(i=0;i<8;i++) { if((dt&k)==k) ds=1; else ds=0; shcp=1; shcp=0; stcp=1; stcp=0; k>>=1; } } //============ hien thi============= void hienthi(void) { int c; for(c=0;c<1;c++) { chuc1=giay/10; donvi1=giay%10; dulieu(m[chuc1]); led5=bat; delay(2); led5=tat; dulieu(m[donvi1]); led6=bat; delay(2); led6=tat; chuc2=phut/10; donvi2=phut%10; dulieu(m[chuc2]); led3=bat; delay(2); led3=tat; dulieu(m[donvi2]); led4=bat; delay(2); led4=tat; chuc3=gio/10; donvi3=gio%10; dulieu(m[chuc3]); led1=bat; delay(2); led1=tat; dulieu(m[donvi3]); led2=bat; delay(2); led2=tat; } } //==============ham chinh======= void main(void) { while(1) { gio=phut=giay=0; for(gio=0;gio<23;gio++) { hienthi(); for(phut=0;phut<59;phut++) { hienthi(); for(giay=0;giay<59;giay++) { hienthi(); } } } } } sory anh em code viet sai lỗi bản chuẩn mà còn sai thì các bác tự chỉnh | | | | |
| | | | Free forum | ©phpBB | Free forum support | Báo cáo lạm dụng | Cookies | Thảo luận mới nhất |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|