• 大小: 32KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: C/C++
  • 标签: 计算器  矩阵键盘  

资源简介

at89c51单片机 计算器 矩阵键盘 c语言代码 课程设计

资源截图

代码片段和文件信息

#include
#define uchar unsigned char 
#define uint unsigned int
sbit P00=P0^0;
sbit P27=P2^7;
uchar key=0;  //按键的键值
int fuhaoflag; //
float datdat0dat1;
uchar temp0;   //按键的键码
uchar num[16]={
   0xC0/*0*/
        0xF9/*1*/
        0xA4/*2*/
        0xB0/*3*/
        0x99/*4*/
        0x92/*5*/
        0x82/*6*/
        0xF8/*7*/
        0x80/*8*/
        0x90/*9*/
0x88/*A*/
0x83/*B*/
0xC6/*C*/
0xA1/*D*/
0x86/*E*/
0x8E/*F*/};
uchar select[8]={0xfe0xfd0xfb
0xf70xef0xdf0xbf0x7f}; //数码管的位选
//简单的延时1ms函数
void delay(uchar t)
{
 uchar xy;
 for(x=t;t>0;t--)
  for(y=111;y>0;y--);
}
//按键的扫描
void keyscan()
{
uchar tempm0m1;
P1=0xf0;
temp=P1;
if(temp!=0xf0)
{
delay(10);
temp=P1;
if(temp!=0xf0)
{
m0=temp;    //行的键码
flag=1;
P00=~P00;
P1=0x0f;
temp=P1;
if(temp!=0x0f)  
{
m1=temp;//列的键码
do{
temp=P1;
   temp&=0X0f;
      }while(temp!=0x0f);
}
    temp0=m0|m1; //按键的键码
switch(temp0)
   {
    case 0xee:key=0;break;
case 0xde:key=1;break;
case 0xbe:key=2;break;
case 0x7e:key=10;break;//清除键

case 0xed:key=3;break;
case 0xdd:key=4;break;
case 0xbd:key=5;break;
case 0x7d:key=11;break; //等号键

case 0xeb:key=6;break;
case 0xdb:key=7;break;
case 0xbb:key=8;break;
case 0x7b:key=12;break;    // 除号

case 0xe7:key=9;break;
case 0xd7:key=13;break;    //加号
case 0xb7:key=14;break;    //减号
case 0x77:key=15;break;    //乘号
   }
}
}
}
void yunsuan()  //运算函数
{
switch(fuhao)
{
case 12:dat=dat0/(dat1*1.0);break; //除法运算
case 13:dat=dat0+dat1;break;
case 14:dat=dat0-dat1;break;
case 15:dat=dat0*dat1;break;
}
}
//键值的判断函数
void judge()
{
    static int i;
if(flag) //有键按下标注
{
if(key==10) //清除键
{
dat=0;//清屏为0

}
else
{
if(key<=9)
{
dat=dat*10+key; //计算按键的结合值
i++;
if(i==6)
{
   i=0;
}
}
else
{
if(key==11)//按键是等号键
{
dat1=dat;//等号前将第二个数字存放在dat1中
yunsuan();
}
else  //按键是运算符号
{
fuhao=key;
dat0=dat;  //把第一个数存在dat0中
dat=0;   //dat清零
}
}


}
    flag=0;  //清标志位
}
}

void display()
{
if((dat-((int)dat))!=0) //判断是否是小数
{
if(dat>=0.01) 
{
P3=0xfe;
P2=num[(int)(dat*100)%10];
delay(10);
P2=0xff;
}
if(dat>=0.1) 
{
P3=0xfd;
P2=num[(int)(dat*10)%10];
delay(10);
P2=0xff;
}
}
if(dat>=0) 
{
P3=0xfb;
P2=num[(int)dat%10000%1000%100%10];
P27=0;
delay(10);
P2=0xff;
}
if(dat>=10)
{
P3=0xf7;
P2=num[(int)dat%10000%1000%100/10];
delay(10);
P2=0xff;
}
if(dat>=100)
{
P3=0xef;
P2=num[(int)dat%10000%1000/100];
delay(10);
P2=0xff;
}
if(dat>=1000)
{
P3=0xdf;  
P2=num[(int)dat%10000/1000];
delay(10);
P2=0xff;
}
if(dat>=10000)
{
P3=0

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       9887  2011-01-05 14:06  计算器\xounter

     文件       3614  2011-01-05 14:07  计算器\xounter.c

     文件       6905  2011-01-05 14:06  计算器\xounter.hex

     文件         46  2011-01-05 14:06  计算器\xounter.lnp

     文件      10797  2011-01-05 14:06  计算器\xounter.LST

     文件      14915  2011-01-05 14:06  计算器\xounter.M51

     文件      10816  2011-01-05 14:06  计算器\xounter.OBJ

     文件       1027  2011-01-09 13:39  计算器\xounter.Opt

     文件        168  2011-01-09 12:04  计算器\xounter.plg

     文件       2110  2011-01-04 22:24  计算器\xounter.Uv2

    .......      1028  2011-01-07 18:33  计算器\xounter_Opt.Bak

     文件          0  2011-01-04 20:47  计算器\xounter_Uv2.Bak

     文件       3710  2011-01-05 09:45  计算器\矩阵键盘(反转法)\key

     文件       1477  2011-01-05 09:45  计算器\矩阵键盘(反转法)\key.c

     文件       1257  2011-01-05 09:45  计算器\矩阵键盘(反转法)\key.hex

     文件         38  2011-01-05 09:45  计算器\矩阵键盘(反转法)\key.lnp

     文件       4817  2011-01-05 09:45  计算器\矩阵键盘(反转法)\key.LST

     文件       6664  2011-01-05 09:45  计算器\矩阵键盘(反转法)\key.M51

     文件       4213  2011-01-05 09:45  计算器\矩阵键盘(反转法)\key.OBJ

     文件       1010  2011-01-05 10:07  计算器\矩阵键盘(反转法)\key.Opt

     文件        211  2011-01-05 10:44  计算器\矩阵键盘(反转法)\key.plg

     文件       2095  2010-11-26 22:12  计算器\矩阵键盘(反转法)\key.Uv2

     文件       1011  2011-01-05 09:52  计算器\矩阵键盘(反转法)\key_Opt.Bak

     文件       1976  2010-09-15 13:56  计算器\矩阵键盘(反转法)\key_Uv2.Bak

     目录          0  2011-01-06 17:47  计算器\矩阵键盘(反转法)

     目录          0  2011-01-09 13:39  计算器

----------- ---------  ---------- -----  ----

                89792                    26


评论

共有 条评论