Đây là code quét trên phòng thực hành ***-VĐK với matrix đơn quét hàng!
Xin mời anh em nhắm !
Xin mời anh em nhắm !
- Code:
#include <reg51.h>
sbit DuLieu = 0x97; //chan 1,2,3,4,5,6,7,8 cong P1 cua 8951 duong dl song song noi den dau vao bo *** ghi dich
sbit clkIN = 0xB3; //chan 21 8951 tao xung dich vao bo *** ghi dich
sbit clkOUT = 0xB4; //chan 22 8951 tao xung xuat ra dong thoi cua bo ***
sbit DongBo = 0xB5; //chan 23 8951 tao xung dong bo hang dau tien, chan nay noi toi dau vao bo ghi dich quet hang
unsigned char data X[2][8] = {0x00,0xff,0xff,0x18,0x18,0xff,0xff,0x00,//chu H
0x08,0x18,0x28,0x48,0x08,0x08,0x08,0x7e //so 1
};
int k;
void main (void)
{
char temp;
int i,j;
TMOD=0x01; // khai bao timer0 che do 1 16bit (Ban dau TH0=TL0=0);
TR0=1; // khoi dong Timer 0 bat dau chay
ET0=1; //Cho phep ngat timer 0
EA=1; // cho phep ngat toan cuc
k=0; // bien de demhang
while (1)
{
DongBo = 1;
for (i=0;i<=7;i++)
{
temp = X[k][i];
for (j=0;j<=7;j++)
{
DuLieu=temp%2; //chia lay phan du (lay bit 0 va 1)
temp=temp/2; //chia lay phan nguyen
clkIN = 1; //tao mot xung vuong kich vao bo *** ghi dich
clkIN = 0;
}
clkOUT = 1; //tao mot xung vuong de bo *** xuat ra dong thoi mot hang
clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo
DongBo = 0; //tat xung dong bo o cac hang sau
}
}
}
void ngat_timer0(void) interrupt 1
{
int time;
time++;
if(time==50)
{
time=0;
k++;
if(k==2) k=0;
}
}