sự việc như lày các bác ợ : em làm một matrix 8x8 , em dùng ic 74hc595 để quét cột
nhưng nó xảy ra một việc trớ trêu làm em đau đầu mấy hôm nay
quét cột em làm như sau:
1, đưa 1 xung 1 vào chân 14 (DS) sau đó đưa các xung 0 để đẩy xung 1 quét lần lượt 8 hàng 12345678 , mô phỏng trên protues nó chạy đúng làn lượt cột 1->2->3->4->5->6->7>8
nhưng chạy thực tế nó lại chạy như sau :
cột 1 2 3 4 5--> cột 7 -->cột 6 --cột 8 hic em loại trừ ic 595 k hỏng , matrix k hỏng mạch đơn giản em mắc đúng --> chương trình của em sai nhưng em k biét nó sai ở chỗ nào ,
các bác xem hộ em cái nhé
chương trình đơn giản cho hiện lần lượt từng cột sẽ thấy ngay nó nhảy linh tinh
#include <REGX52.h>
// dung IC 74HC595 de quet cot
// P1_0 cot
// P1_1 chot thanh ghi dich
// P1_2 chot thanh ghi dau ra
#define cot P1_0
#define SH P1_1
#define ST P1_2
#define MR P1_3
#define OE P1_4
unsigned char MC[]={ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; mảng quét cột
unsigned char x;
void delay(unsigned char time)
{while(time--)// ham delay 1ms x XX
{
TL1=0x17;
TH1=0xfc;
TR1=1;
while(!TF1);
TF1=0;
TR1=0;
}}
void quet_cot(unsigned char y)
{
cot =MC[y];
OE=0;
MR=1;
SH = ST=1;
SH = ST=0; // latch cot
}
void reset_cot() //xoa 74hc595
{ OE=0; //chan 13
MR=0; //chan 10
ST=1; // xung xoa
ST=0;
OE=1;
}
void vao_data(unsigned char x) // sử dụng cổng 2 xuất dữ liệu, chương trình cho hiện lần lượt từng cột của matrix
{
P2=0xff ;
}
void main()
{
TMOD = 0x10;
P0=P1=P2=0x00;
reset_cot();
while(1)
{
for(x=0;x<8;x++)
{
quet_cot(x);
vao_data();
delay(1000);
}
}
}
nhưng nó xảy ra một việc trớ trêu làm em đau đầu mấy hôm nay
quét cột em làm như sau:
1, đưa 1 xung 1 vào chân 14 (DS) sau đó đưa các xung 0 để đẩy xung 1 quét lần lượt 8 hàng 12345678 , mô phỏng trên protues nó chạy đúng làn lượt cột 1->2->3->4->5->6->7>8
nhưng chạy thực tế nó lại chạy như sau :
cột 1 2 3 4 5--> cột 7 -->cột 6 --cột 8 hic em loại trừ ic 595 k hỏng , matrix k hỏng mạch đơn giản em mắc đúng --> chương trình của em sai nhưng em k biét nó sai ở chỗ nào ,
các bác xem hộ em cái nhé
chương trình đơn giản cho hiện lần lượt từng cột sẽ thấy ngay nó nhảy linh tinh
#include <REGX52.h>
// dung IC 74HC595 de quet cot
// P1_0 cot
// P1_1 chot thanh ghi dich
// P1_2 chot thanh ghi dau ra
#define cot P1_0
#define SH P1_1
#define ST P1_2
#define MR P1_3
#define OE P1_4
unsigned char MC[]={ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; mảng quét cột
unsigned char x;
void delay(unsigned char time)
{while(time--)// ham delay 1ms x XX
{
TL1=0x17;
TH1=0xfc;
TR1=1;
while(!TF1);
TF1=0;
TR1=0;
}}
void quet_cot(unsigned char y)
{
cot =MC[y];
OE=0;
MR=1;
SH = ST=1;
SH = ST=0; // latch cot
}
void reset_cot() //xoa 74hc595
{ OE=0; //chan 13
MR=0; //chan 10
ST=1; // xung xoa
ST=0;
OE=1;
}
void vao_data(unsigned char x) // sử dụng cổng 2 xuất dữ liệu, chương trình cho hiện lần lượt từng cột của matrix
{
P2=0xff ;
}
void main()
{
TMOD = 0x10;
P0=P1=P2=0x00;
reset_cot();
while(1)
{
for(x=0;x<8;x++)
{
quet_cot(x);
vao_data();
delay(1000);
}
}
}
Comment