Tổng số bài gửi : 55 Điểm : 97 Danh tiếng : 11 Ngày tham gia : 25/12/2010 Đến từ : UNETI
Tiêu đề: kết nối 8051 với ma trận phím 8x8 Sun May 08, 2011 7:09 am
#include /* Khai bao cac bien bit gan voi chan vi dieu khien*/
/* Khai bao bien */ long n;// Cho vong for /* Khai bao ham */ /* Ham tre */ void delay(long time) { for(n=0; n{ ; } } /* Ham tat tat ca cac thanh */
void phim_duoc_an(unsigned char phim) //HAM HIEN THI SO PHIM DUOC AN { switch(phim)// Tuy vao so lan { case 0: { P1=0xc0; break; }// Neu so lan =0 hien so 0 thoat khoi switch case 1: { P1=0xF9; break; }// Neu so lan =1 hien so 1 thoat khoi switch case 2: { P1=0xA4; break; }// .... case 3: { P1=0xB0; break; } case 4: { P1=0x99; break; } case 5: { P1=0x92; break; } case 6: { P1=0x82; break; } case 7: { P1=0xF8; break; } case 8: { P1=0x80; break; } case 9: { P1=0x90; break; } case 0x0A:{P1=0x80; break;}// Neu so lan =9 hien so 9 thoat khoi switch } } /*Khai bao 1 mang 4 phan tu nhu sau: quetphim[4]={P0=0xFE,0xFD,0xFB,0xF7} De dua 0 ra lan luot cac hang phim, khi do neu nut nao duoc an thi chan vi dieu khien se xuong 0.Chu y fai kiem tra phim khoang 100 lan.*/ unsigned char quetphim[4]={0xfe,0xFD,0xFB,0xF7}; // DUA LAN LUOT CAC HANG XUONG 0 // Dinh nghia so lan quet phim #define solanquetphim 100 // Cac ban co the thay doi gia tri nay cho phu hop unsigned char quetbanphim(void) //CAN TRA LAI GIA TRI PHIM T DUNG HAM NAY { unsigned char giatribanphim;// Bien de luu gia tri phim an tu 0 den 15 ma hoa 16 phim unsigned char x,y; //Quet 4 hang phim for(x=0; x<4;x++) { P2=quetphim[x];// Dua lan luot cac hang xuong 0 for(y=0;y{ if(P2_4==0) giatribanphim=0+4*x;// Gia tri phim tuong ung if(P2_5==0) giatribanphim=1+4*x;// Tuy thuoc vao hang x if(P2_6==0) giatribanphim=2+4*x;// La may ma gia tri cua if(P2_7==0) giatribanphim=3+4*x;// gia tri ban phim tuong ung. } } return(giatribanphim); } //Hàm Main. void main(void) { unsigned char i; while(1) { i=quetbanphim(); phim_duoc_an(i); } }