找回密码
 立即注册

QQ登录

只需一步,快速开始

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

为什么按键不能实现加减(求助)

[复制链接]
跳转到指定楼层
楼主
ID:78064 发表于 2015-4-25 21:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#define Dataport P0
sbit key_add=P3^2;
sbit key_dec=P3^3;
sbit wei_latch=P2^3;
sbit duan_latch=P2^2;
unsigned char code duan_ma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段码1~9显示
unsigned char code wei_ma[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//维玛第一个数码管到最后一个
unsigned char temp[8];
//函数申明
void display(unsigned char firstbit,unsigned char Num);
void delay2x(unsigned char t);
void delayMs(unsigned char t);
main()
{unsigned int num=0;
key_add=1; //按键输入端口电平置高
key_dec=1;
while(1)
{
if(!key_add)
{delayMs(10);
  if(!key_add)
  {
   while(!key_add)
   {
   if(num<99)
   num++;
   }
  }
}
if(!key_dec)
{
  delayMs(10);
  if(!key_dec)
  {
   while(!key_dec)
   {
   if(num>0)
   num--;
   }
  }
}
temp[0]=duan_ma[num/10];
temp[1]=duan_ma[num%10];
display(0,8);
}
}

void display(unsigned char firstbit,unsigned char Num)
{
unsigned int i;
for(i=0;i<Num;i++)
{
Dataport=0;
duan_latch=1;
duan_latch=0;
Dataport=wei_ma[i+firstbit];
wei_latch=1;
wei_latch=0;
Dataport=temp[i];
duan_latch=1;
duan_latch=0;
delay2x(200);
//delayMs(1);
}
}
void delay2x(unsigned char t)
{
while(--t);
}
void delayMs(unsigned char t)
{
while(t--);
{
delay2x(245);
delay2x(245);
}
}
以上是我仿照例子写的按键来实现数字的加减。但是按一下加号键就直接跳到99,减号键就直接跳到00.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:74784 发表于 2015-4-25 22:26 | 只看该作者
看不懂C
帮不了你~~~~~~~~~~~~
回复

使用道具 举报

板凳
ID:78064 发表于 2015-4-26 09:53 | 只看该作者
lxa0 发表于 2015-4-25 22:26
看不懂C
帮不了你~~~~~~~~~~~~

我也不是很懂
回复

使用道具 举报

地板
ID:78064 发表于 2015-4-26 16:43 | 只看该作者
问题在while(!key_add)后应该加分号,这样就是按键释放后进行加1.不加就是按下按键,一直进行加
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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