📄 mm2.c
字号:
/*********************************************************************/
//
// 自动报警控制
// ancleyan 2007.04.17
/*********************************************************************/
//使用AT89C51单片机,12MHZ晶振,P1口输入,P2口作列扫描,p3数据输出,用共阳LED数码管
#include"reg51.h"
#define char unsigned char
//
char code dis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
/* 共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" */
//char code dis_7[10]={0xC0,0xF9,0xA4,0x99,0xB0,0x82,0xF8,0x80,0x99,0xff};
/* 共阳LED段码表 "0" "1" "2" "8" "3" "5" "6" "7" "4" "9" "不亮" */
//char code scan_con[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; // 列扫描控制字
char code scan_con[9]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; // 列扫描控制字
char data keytmp[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//显示单元数据初值,共8个
//char data keytmp[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//显示单元数据初值,共8个
char data key[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
char m,t;
//*******初始化程序*******//
void clear()
{
char t;
for(t=0;t<8;t++)
{keytmp[t]=0x00;}
}
/****************/
//1毫秒延时程序//
/***************/
delay1ms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
/**********键功能函数************/
scankey()
{ P3=0xf0;
if(P3!=0xf0)
{ delay1ms(10); //括号3
if(P3!=0xf0)
{switch(P3) //括号2
{ //括号1
case 0xb0: //如果是第3列有键按下
{
P3=0x0f;
switch(P3)
{case 0x0e:return keytmp[t]=9;t++;break;
case 0x0d:return keytmp[t]=6;t++;break;
case 0x0b:return keytmp[t]=3;t++;break;
default: break;
}
}; break;
case 0xd0: //如果是第2列有键按下
{P3=0x0f;
switch(P3)
{case 0x0e:return keytmp[t]=8;t++;break;
case 0x0d:return keytmp[t]=5;t++;break;
case 0x0b:return keytmp[t]=2;t++;break;
default: break;
}}; break;
case 0xe0: //如果是第1行有键按下
{P3=0x0f;
switch(P3)
{case 0x0e:return keytmp[t]=7;t++;break;
case 0x0d:return keytmp[t]=4;t++;break;
case 0x0b:return keytmp[t]=1;t++;break;
default: break;
}}; break;
default: break;
}//括号1
}//括号2
} //括号3
return t;
}
//*****数码管扫描函数*********//
void scan_7(void)
{
char j;
for(j=0;j<=8;j++)
{
P2=scan_con[keytmp[j]];// j
P0=dis_7[keytmp[j]];//j
delay1ms(1);
}
}
//*******主程序*******//
void main()
{
while(1)
{
//if(P1^0==1) {clear();}
scan_7();
scankey();
delay1ms(1);
//password();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -