#include <REGX51.H>
#include<keyscan.h>
#define uchar unsigned char
#define uint unsigned int
uchar key;
uchar code disp[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
uchar code disp_dot[11]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xc0};
unsigned long dat1=0,dat2=0,dat3=0;
//////////////////////
int0()interrupt 0 using 0
{ uchar temp;
EA=0; //关中断
switch(keyaction())
{
case 0: { dat1=dat1*10+0; dat3=dat1; } break;
case 1: {dat1=dat1*10+1; dat3=dat1; } break;
case 2: {dat1=dat1*10+2;dat3=dat1;} break;
case 3: {dat1=dat1*10+3;dat3=dat1;} break;
case 4: {dat1=dat1*10+4;dat3=dat1;} break;
case 5: {dat1=dat1*10+5;dat3=dat1;} break;
case 6: {dat1=dat1*10+6;dat3=dat1;} break;
case 7: {dat1=dat1*10+7;dat3=dat1;} break;
case 8: {dat1=dat1*10+8;dat3=dat1;} break;
case 9: { dat1=dat1*10+9;dat3=dat1;} break;
case 'c': {dat1=0;dat2=0;dat3=0;break;}
case '#': break;
case '+': {dat3=0;dat2=dat1;dat1=0;temp='+';dat3=dat2;} break;
case '-': {dat3=0;dat2=dat1;dat1=0;temp='-';dat3=dat2;} break;
case '*': {dat3=0;dat2=dat1;dat1=0;temp='*';dat3=dat2;} break;
case '/': {dat3=0;dat2=dat1;dat1=0;temp='/';dat3=dat2;} break;
case '=': { dat3=0;
switch(temp)
{case '+':dat3=dat2+dat1;break;
case '-':dat3=dat2-dat1;break;
case '*':dat3=dat2*dat1;break;
case '/':dat3=dat2/dat1;break;
}
} break;
}
EA=1; //开中断
}
/*
display_4(uint dat, uchar i)
{
P0=0;
P0=disp[dat/1000]; //4位
P2=3+4*i;
Delay1ms(2);
P0=0;
P0=disp[dat/100%10]; //3位
P2=2+4*i;
Delay1ms(2);
P0=0;
P0=disp[dat/10%10]; //2位
P2=1+4*i;
Delay1ms(2);
P0=0;
P0=disp[dat%10]; //1位
P2=0+4*i;
Delay1ms(2);
} */
display_8(long dat) ///定义八位数12345678
{ P0=0;
P0=disp[dat/10000000]; //8位
P2=7;
Delay1ms(1);
P0=0;
P0=disp[dat/1000000%10]; //7位
P2=6;
Delay1ms(1);
P0=0;
P0=disp[dat/100000%10]; //6位
P2=5;
Delay1ms(1);
P0=0;
P0=disp[dat/10000%10]; //5位
P2=4;
Delay1ms(1);
P0=0;
P0=disp[dat/1000%10]; //4位
P2=3;
Delay1ms(1);
P0=0;
P0=disp[dat/100%10]; //3位
P2=2;
Delay1ms(1);
P0=0;
P0=disp[dat/10%10]; //2位
P2=1;
Delay1ms(1);
P0=0;
P0=disp[dat%10]; //1位
P2=0;
Delay1ms(1);
}
main()
{
EA=1; /*开中断*/
IT0=1;
EX0=1;
/*允许外部中断1*/
P1=0xf0;
while(1)
{ P1=0xf0;
// display_4(key,0); ///第0块显示屏
// display_4(1234,1); /// 第一块显示屏
display_8(dat3);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
cal+4X4中断键盘
共23个文件
lst:2个
obj:2个
sdf:2个
需积分: 3 21 下载量 141 浏览量
2008-11-22
18:59:03
上传
评论 1
收藏 84KB RAR 举报
温馨提示
这里面包含了4X4矩阵键盘的电路图和C程序代码,是基于AT89C51实现计算机功能 的一个例子。
资源推荐
资源详情
资源评论
收起资源包目录
cal+4X4中断键盘.rar (23个子文件)
cal+4X4中断键盘
wanneng.M51 11KB
STARTUP.LST 14KB
万能实验板.SDF 0B
Last Loaded 万能实验板.DBK 99KB
Last Loaded cal_4X4.DBK 105KB
wanneng_Uv2.Bak 2KB
wanneng.Uv2 2KB
wanneng.plg 1KB
wanneng.c 3KB
STARTUP.A51 6KB
wanneng.lnp 47B
万能实验板.PWI 742B
cal_4X4.PWI 1KB
wanneng.LST 7KB
wanneng 9KB
wanneng_Opt.Bak 2KB
cal_4X4.DSN 105KB
STARTUP.OBJ 749B
keyscan.h 2KB
wanneng.hex 5KB
wanneng.Opt 2KB
wanneng.OBJ 11KB
LISA1.SDF 26KB
共 23 条
- 1
资源评论
sunnan850123ok
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功