15按键控制数码管加减

2025-10-26 22:52:56

1、#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

//段码

uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

//待显示的 3 位缓冲

uchar Num_Buffer[]={0,0,0}; 

//按键代码,按键计数

uchar Key_Code,Key_Counts=0;

//延时

void DelayMS(uint x)

{

 

uchar i;

while(x--) for(i=0;i<120;i++);

}

//显示函数

void Show_Counts_ON_DSY()

{

uchar i,j=0x01;

Num_Buffer[2]=Key_Counts/100;

Num_Buffer[1]=Key_Counts/10%10;

Num_Buffer[0]=Key_Counts%10;

for(i=0;i<3;i++)

{

j=_cror_(j,1);

P0=0xff;

P0=DSY_CODE[Num_Buffer[i]];

P2=j;

DelayMS(1); 

}

}

//主程序

void main()

{

uchar i;

P0=0xff;

P1=0xff;

P2=0x00;

Key_Code=0xff;

while(1)

{

Show_Counts_ON_DSY();

P1=0xff;

Key_Code=P1;

//有键按下时,数码管刷新显示 30 次,该行代码同时起到延时作用

if(Key_Code!=0xff)

for(i=0;i<30;i++) Show_Counts_ON_DSY();

switch(Key_Code)

case 0xfe: if(Key_Counts<255)

Key_Counts++;

break; 

case 0xfd: if(Key_Counts>0)

Key_Counts--;

break; 

case 0xfb: Key_Counts=0;

Key_Code=0xff;

}

}

15按键控制数码管加减

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢