📄 main.c
字号:
// Khai bao cac file header
#include <AT89X52.H>
#include <Kit8051.h>
// Khai bao cac bien toan cuc
unsigned char code LED_code[] = {Number0,
Number1,
Number2,
Number3,
Number4,
Number5,
Number6,
Number7,
Number8,
Number9};
unsigned char stt=0;
// Khai bao cac ham
void Delay(unsigned int n);
void InitSystem(void);
void ScanMatrix(void);
void Display(unsigned char number);
// Dinh nghia cac ham
void Delay(unsigned int n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<100;j++);
}
void Display(unsigned char number)
{
// Hien thi so thu tu phim bam ra LED cuoi cung
LED = LED_code[number];
K4 = 0;
Delay(1);
K4 = 1;
}
void InitSystem(void)
{
// Cam LCD
LCD_E = 0;
// Cau hinh Timer0 o che do 16 bit
TMOD = 0x01;
// Cho phep ngat tran Timer 0
ET0 = 1;
EA = 1;
// Cho Timer 0 chay
TR0 = 1;
}
void Timer0Interrupt(void) interrupt TF0_VECTOR
{
// Dung Timer 0
TR0 = 0;
// Nap lai gia tri = 55536--> con 10000 clock nua la tran
TH0 = (unsigned char)(55536>>8);
TL0 = (unsigned char)(55536);
// Tiep tuc cho chay Timer 0
TR0 = 1;
Display(stt);
}
void ScanMatrix(void)
{
// Chuyen cac hang lam dau vao, cac cot lam dau ra muc thap
ROW_1 = 1;
ROW_2 = 1;
ROW_3 = 1;
COL_1 = 0;
COL_2 = 0;
COL_3 = 0;
// Kiem tra xem co phim bam?
if((!ROW_1)|(!ROW_2)|(!ROW_3))
{
// Chong rung phim
Delay(100);
// Kiem tra lai
// Neu la hang 1 co phim bam
if(!ROW_1)
{
// Chuyen cac cot lam dau vao
COL_1 = 1;
COL_2 = 1;
COL_3 = 1;
// Hang 1 lam dau ra muc thap
ROW_1 = 0;
// Kiem tra cac cot de xac dinh phim
if(!COL_1) stt = 1;
else if (!COL_2) stt = 2;
else if (!COL_3) stt = 3;
}
// Neu la hang 2 co phim bam
if(!ROW_2)
{
// Chuyen cac cot lam dau vao
COL_1 = 1;
COL_2 = 1;
COL_3 = 1;
// Hang 2 lam dau ra muc thap
ROW_2 = 0;
// Kiem tra cac cot de xac dinh phim
if(!COL_1) stt = 4;
else if (!COL_2) stt = 5;
else if (!COL_3) stt = 6;
}
// Neu la hang 3 co phim bam
if(!ROW_3)
{
// Chuyen cac cot lam dau vao
COL_1 = 1;
COL_2 = 1;
COL_3 = 1;
// Hang 3 lam dau ra muc thap
ROW_3 = 0;
// Kiem tra cac cot de xac dinh phim
if(!COL_1) stt = 7;
else if (!COL_2) stt = 8;
else if (!COL_3) stt = 9;
}
}
}
// Chuong trinh chinh
void main(void)
{
// Khoi tao he thong
InitSystem();
// Vong lap vo tan
while(1)
{
ScanMatrix();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -