Quét led PIC 16f887

http://codepad.org/WWJMN7nj
Minh đang tập quét 8 led qua 595 , nhưng chỉ hiện thị 2 led cuối là led6 , led7 từ 0 đến 99 nhưng nạp vào mạch mô phỏng thì chạy loạn hết 8 led lên . ai chỉ mình sai chỗ nào với ạ

void byte_595(unsigned int8 data) // 20us
{
  for(i = 0; i < 8; i++)
  {
    if((data&0x80) == 0x80)   output_high(dl);
    else                      output_low(dl);
  }
  output_high(cl);            delay_us(10);
  output_low(cl);             delay_us(10);
}

Xung clock phải trigger theo từng bit chứ không phải hết 8 bit.

ngoài ra trong hiện thị

xuat_2_byte_595(led0, 0xfe);   delay_ms(1);   xuat_2_byte_595(0xff, 0xff);

không cần clear data sau mỗi lần xuất

 xuat_2_byte_595(0xff, 0xff); // bỏ đi

tăng delay time lên, vì có thể đáp ứng tần số của bộ này hơn 1ms.

3 Likes

xuat_2_byte_595(0xff, 0xff) hay xuat_2_byte_595(led0, 0xff) chỉ để e tắt led đấy thôi ạ . e nghĩ xóa đi sao đc ạ

Code có rất nhiều lỗi.

2 Likes

anh chỉ cho em với ạ , để e rút kinh nghiệm . e cảm ơn

Sao không không đẩy hàm quét vào timer ?
Là yêu cầu hay chưa biết cách dùng ngắt timer ?

2 Likes

dạ chưa học tới timer ạ .

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?