8279数码管显示和键盘扫描程序 能运行的

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include
#include
#include
#define COM8279 XBYTE [0XFDFF] //定义8279控制口 DB接P0 A0接P2.0 CS/接P2.1
#define DATA8279 XBYTE [0XFCFF] //定义8279数据口
#define uchar unsigned char
#define uint unsigned int
uint keyval; //定义键内码传递参数
uint time; //定义延时时间参数
void delay(uint time);
void key(void);
void main()
{
delay(1300); //开机延时约10ms
IT1=1; //外部中断1选用下降沿
EA=1; //开总中断
EX1=1; //开外部中断
COM8279=0XD2; //清除显示RAM和FIFO
delay(100);

COM8279=0X00; //8279键盘双键互锁,编码扫描,左端入口
COM8279=0X32; //时钟分频设置,分频数为18
COM8279=0X70; //设置读显示命令
COM8279=0X90; //设置写显示命令
while(1)
{
}
}

void int1_serve(void) interrupt 2 using 1
{
keyval=DATA8279;
key();
}

void delay (uint time) //传递参数为time
{
uchar j;
while (time--) //用time-1来进行循环
{
for (j=100;j>0;j--); //用j来进行100次循环,大约8us
}

}

//按键确认显示程序
void key(void)
{

switch(keyval)
{
case 0XC0: //0号键赋值
{
P0=0X3F;
DATA8279=P0;
break;
}
case 0XC1: //1号键赋值;
{
P0=0X06;
DATA8279=P0;
break;
}
case 0XC2: //2号键赋值;
{
P0=0X5B;
DATA8279=P0;
break;
}
case 0XC3: //3号键赋值;
{
P0=0X4F;
DATA8279=P0;
break;
}
case 0XE0: //4号键赋值;
{
P0=0X66;
DATA8279=P0;
break;
}
case 0XE1: //5号键赋值;
{
P0=0X6D;
DATA8279=P0;
break;
}
case 0XE2: //6号键赋值;
{
P0=0X7D;
DATA8279=P0;
break;
}
case 0XE3: //7号键赋值;
{
P0=0X07;
DATA8279=P0;
break;
}
case 0XD0: //8号键赋值;
{
P0=0X7F;
DATA8279=P0;
break;
}
case 0XD1: //9号键赋值;
{
P0=0X6F;
DATA8279=P0;
break;
}
case 0XD2: //A号键赋值;
{
P0=0X77;
DATA8279=P0;
break;
}
case 0XD3: //B号键赋值;
{
P0=0X7C;
DATA8279=P0;
break;
}
case 0XF0: //C号键赋值;
{
P0=0X39;
DATA8279=P0;
break;
}
case 0XF1: //D号键赋值;
{
P0=0X5E;
DATA8279=P0;
break;
}
case 0XF2: //E号键赋值;
{
P0=0X79;
DATA8279=P0;
break;
}
case 0XF3: //F号键赋值;
{
P0=0X71;
DATA8279=P0;

break;
}
default:
break;
}
}



相关文档
最新文档