c51单片机怎么用两个按键控制两个数码管的加减,加到99就好,求程序

 我来答
yesyes科
2020-02-25 · TA获得超过2.6万个赞
知道答主
回答量:608
采纳率:0%
帮助的人:9.2万
展开全部

1、首先先在proteus画出仿真图,方便仿真程序。

2、接着来编写程序,先来写入头函数。

2、根据自己在proteus画的图,定义一下管脚根据你的原理图进行编写。

3、然后写一个延时函数,来调节流水灯的时间间隔延时时间自己定义。

4、下图就是主函数,包括流水灯的反复循环和j流水灯的方向。

5、检查没有错误,编译一下,就可以进行仿真了。

山水阿锐
推荐于2017-11-27 · TA获得超过34.3万个赞
知道顶级答主
回答量:23.7万
采纳率:91%
帮助的人:3.1亿
展开全部
#include <reg51.h>
void delay(unsigned int i); //这个函数自己写出来
int key = 0;
sbit key1 = P?? ;//哪个管教不知道
sbit key2 = P/?;
sbit ge = P??;
sbit shi = P??;
//此表为 LED 的字模, 共阴数码管 0-9 -
unsigned char code tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};

void keykey()
{
if(key1 == 1)//默认高电平是按键按下
{
delay(5);
if(key1 == 1)
{
key++;
}
}

else if(key2 == 1)//默认高电平是按键按下
{
delay(5);
if(key2 == 1)
{
key--;
}
}
if(key >99) //防止越界 也可以用与的方式写 key &= 0x63;这句话就能顶了下面俩判断
key = 0;
else if(key < 0)
key = 99;

}
void display(int x)
{
P0 = tap[x%10];
ge = 1;
delay(10);
ge = 0;
delay(10);
P0 =tap[x/10];
shi = 1;
delay(10);
shi = 0;
delay(10);
}
void main(void)
{
while(1)
{
display(key);
keykey();
}
}
追问
这个程序编译出来很多错误啊
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式