c语言 怎样用两个独立按键控制一位数码管显示 就是按下其中一个按键就加1 按下另一个按键就减1 0~9显示

如题所述

这个实现是很容易的,定义两个键,一个为加,一个为减,数码管因为只有一个,所以可以用静态显示。程序和仿真图如下:

#include<reg51.h>

#define uchar unsigned char

uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};

sbit keyup=P3^0;

sbit keydn=P3^1;

main()

{

uchar i;

i=0;

while(1)

{

P1=table[i];

if(keyup==0)

{

i++;

while(keyup==0);

}

if(keydn==0)

{

if(i>0)i--;

while(keydn==0);

}

i%=10;

}

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-03
#include<reg51.h>
#define Duan P0
#define Wei P1
unsigned char CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//unsigned char PLACE[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned int num,shi,ge;
sbit K3=P3^0; //K3中断加一
sbit K4=P3^1; //K4中断减一
void delay(unsigned int z);
//void display(unsigned int z);
void main()
{
Duan=0x3f;
Wei=0x7f;
while(1)
{

if(K3==0)
{
delay(10);
if(K3==0)
{
num++;
Wei=0x7f;
Duan=CODE[num];
delay(5000);
}
}
if(K4==0)
{
delay(10);
if(K4==0)
{
if(num--)
{
Wei=0x7f;
Duan=CODE[num];
delay(5000);
}
else {
num=0;
Wei=0x7f;
Duan=CODE[num];
}
}
}
}
}

void delay(unsigned int z)
{
unsigned int y;
for(;z>0;z--)
for(y=10;y>0;y--);
}
/*void display(unsigned int z)
{
shi=z/10;
ge=z%10;
while(shi==0)
{
Wei=0x7f;
Duan=CODE[ge];
}
while(shi!=0)
{
Wei=0x7F;
Duan=CODE[ge];
delay(1);
Duan=0;
Wei=0xbf;
Duan=CODE[shi];
delay(1);
Duan=0x00;
}

} */
/*void int0() interrupt 0
{
if(K3==0)
Key=1;
}
void int1() interrupt 2
{
if(K4==0)
Key=1;
} */
第2个回答  2011-04-19
没有人回答?

c语言 怎样用两个独立按键控制一位数码管显示 就是按下其中一个按键就...
这个实现是很容易的,定义两个键,一个为加,一个为减,数码管因为只有一个,所以可以用静态显示。程序和仿真图如下:include<reg51.h> define uchar unsigned char uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};sbit keyup=P3^0;sbit keydn=P3^1;main(){ uchar i...

单片机 怎样用两个独立按键控制一位数码管显示,就是按下其中一个按键...
比如你定义的数是AA,汇编的是这样写的:MAIN;JB P3.0 ,S1 MOV A, AA INC A MOV AA,A S1:JB P3.1 ,MAIN MOV A, AA DEC A MOV AA,A JMP MAIN C语言的 if(P3^0==0){ delay(50);if(P3^0==1){ aa++;if(aa>=10)aa=0;}} if(P3^1==0){ delay(50);...

怎么用单片计C语言编出两个按键控制一位数码管,一个按健控制0至9就是...
可以不用中断。 你只要写个段码的数值,然后在数组里加一个变量。比如“ uchar dm[]={0xc0,0xa4,0xf9...}“ 每次按下一个键数组里的变量就加一。 做按键的时候要记住去斗。 归0的按键就更好写了,只要按下数组里的变量等于0就行了。 希望能帮到你, 亲~...

怎样用单片机编程:独立按键两个键控制一个数码管的加减 一个键加 一...
这个很容易嘛,你先设置一个寄存器,然后一直扫描两个按键(假设K1按下为加,K2按下为减),假设检测到K1被按下,寄存器就加1,如果检测到K2被按下,寄存器就减1;然后再调用显示函数就OK了。、

怎样用单片机编程。两个独立按键,控制数码管的加减?
这个很容易嘛,你先设置一个寄存器,然后一直扫描两个按键(假设K1按下为加,K2按下为减),假设检测到K1被按下,寄存器就加1,如果检测到K2被按下,寄存器就减1;然后再调用显示函数就OK了。、 ORG 0000H LJMP START ORG 0030H START:MOV R2, #1 LOOP:CALL DISP JB P1.6,...

用两个按键控制数码管一个加一个减 都是按一下一加 按一下一减 用汇 ...
这个用外部中断写很简单的,只要一个中断INC 30H,一个DEC30H(30只是暂存器,随便定义的,30到7F之间都可以)就行,其他的跟数码管静态显示一样的 参考资料:JIU

单片机上用两个按键独立控制两个数码管,怎样使在按下一个按键使对应的...
给你个思路,在while循环里要实时刷新数码管显示,按键的判断放在定时器里,设一个变量,当按键按下时累加定时器中断次数,然后在主函数里判断变量值,超过一定数量则判断为按下,这时数码管计数变量++,当然你还要设按键抬起标志,仔细思考一下,肯定能写出来 ...

怎么用按键控制数码管显示和关闭
要关闭数码管,首先要知道你的显示方式,现在从你的位码看,应该是低电平有效吧,那就是在位选为高的时候就不显示了,这样就好办了啊,两个按键,那就直接独立按键,检测按键后,是关闭的那个按键按下,那就把位选全部置位,这样就不现实了,要显示的时候,取消置位,正常显示就好。

...采用独立式按键)按下一次,让液晶第一位显示的数码加1,显示范围0~9...
DelayNms(2); \/\/ 短暂的延时 P0 = 0x00; \/\/ 让数码管熄灭,否则会造成数字重叠 } void main( void ){ while(1){ if( Key == 0 ){ DelayNms(30);if( Key == 0 ){ Count += 1;Count = (Count>9)? 0 : Count;} while( !Key );} Display( Count );} } ...

...C语言程序:0~59秒计数器;1个独立按键控制,2个数码管显示
\/\/注意;P0口要加上拉电阻 。include<reg52.h> include<intrins.h> define uint unsigned int define uchar unsigned char sbit KEY=P1^0;uchar aa,num,num1,flag;uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voi...

相似回答