找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1934|回复: 2
打印 上一主题 下一主题
收起左侧

新手小白想写一个计算器,到这一步了不知道该怎么办了,其中的0为什么按键也不出来

[复制链接]
跳转到指定楼层
楼主
ID:155425 发表于 2016-12-17 14:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#include<math.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
uchar temp,num;
void delay(uint z);
void display(uint aa);
uchar keyscan();
void main()
{
        dula=1;
        P0=0;
        dula=0;
        wela=1;
        P0=0xc0;
        wela=0;
        while(1)
        {
                display(keyscan());
  }
}
       

void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void display(uint aa)
{
        dula=1;
        P0=table[aa];
        dula=0;
}
uchar keyscan()               
{
        P3=0xfe;
        temp=P3;
        temp=temp&0xf0;
        while(temp!=0xf0)
        {
                delay(5);
                temp=P3;
                temp=temp&0xf0;
                while(temp!=0xf0)
                {
                        temp=P3;
                        switch(temp)
                        {
                                case 0xee:num='1';
                                                break;
                                case 0xde:num='2';
                                                break;
                                case 0xbe:num='3';
                                                break;
                                case 0x7e:num='+';
                                                break;
                                default: num = '#';       
                        }
                                while(temp!=0xf0)
                                                {
                                                        temp=P3;
                                                        temp=temp&0xf0;
                                                }
          }
  }
       
        P3=0xfd;
        temp=P3;
        temp=temp&0xf0;
        while(temp!=0xf0)
        {
                delay(5);
                temp=P3;
                temp=temp&0xf0;
                while(temp!=0xf0)
                {
                        temp=P3;
                        switch(temp)
                        {
                                case 0xed:num='4';
                                                break;
                                case 0xdd:num='5';
                                                break;
                                case 0xbd:num='6';                                       
                                                break;
                                case 0x7d:num='-';
                                                break;
                                default: num = '#';
                        }
                                while(temp!=0xf0)
                                                {
                                                        temp=P3;
                                                        temp=temp&0xf0;
                                                }
          }
  }

        P3=0xfb;
        temp=P3;
        temp=temp&0xf0;
        while(temp!=0xf0)
        {
                delay(5);
                temp=P3;
                temp=temp&0xf0;
                while(temp!=0xf0)
                {
                        temp=P3;
                        switch(temp)
                        {
                                case 0xeb:num='7';
                                                break;
                                case 0xdb:num='8';
                                                break;
                                case 0xbb:num='9';
                                                break;       
                                case 0x7b:num='*';
                                                break;       
                                default: num = '#';
                        }
                                while(temp!=0xf0)
                                                {
                                                        temp=P3;
                                                        temp=temp&0xf0;
                                                }
          }
  }

        P3=0xf7;
        temp=P3;
        temp=temp&0xf0;
        while(temp!=0xf0)
        {
                delay(5);
                temp=P3;
                temp=temp&0xf0;
                while(temp!=0xf0)
                {
                        temp=P3;
                        switch(temp)
                        {
                                        case 0xe7:num='&';
                                                        break;
                                        case 0xd7:num='0';
                                                        break;
                                        case 0xb7:num='=';
                                                        break;
                                        case 0x77:num='/';
                                                        break;
                                        default: num = '#';
                        }
                                while(temp!=0xf0)
                                                {
                                                        temp=P3;
                                                        temp=temp&0xf0;
                                                }
          }
  }       
        return num;
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:100826 发表于 2016-12-17 17:41 | 只看该作者
给你一个带时钟的数码管计算器参考(带仿真) 3.最终版本增加退格键.rar (86.23 KB, 下载次数: 12)





回复

使用道具 举报

板凳
ID:155637 发表于 2016-12-18 17:10 | 只看该作者
dfgdfgdfgdfgdfgdfg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表