一个按键控制数码管的开和关_求单个开关按键控制数码管显示(动态)1234的程序,或者帮我改下下面这段数码管的代码程序...

按键按一下,数码管显示(动态)1234,按键再按一下,数码管显示全灭。开关按键接P3.2,数码管段选P0,位选P2,共阳数码管4位//我的问题在于全灭的时候它会显示4,还有个4在上面,而且显...

按键按一下,数码管显示(动态)1234,按键再按一下,数码管显示全灭。开关按键接P3.2,数码管段选P0,位选P2,共阳数码管4位

//我的问题在于全灭的时候它会显示4,还有个4在上面,而且显示1234还有点一闪一闪的

//程序如下:

#include

#define uchar unsigned char

#define uint unsigned int

sbit led0=P2^7;

sbit k1=P3^2;

uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90};

void delay10ms(uchar a)

{

uchar b,c;

for(c=1;c>0;c--)

for(b=38;b>0;b--)

for(a=130;a>0;a--);

}

void main(void)

{

uint flag=0;

uint i=0;

uint temp;

led0=temp;

while(1)

{

if(k1==0x00)

{

delay10ms(1);

if(k1==0x00)

{

P1=0xff;

flag=!flag;

}

while(k1==0);

}

if(flag==1)

{

temp=0x80;

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

{

P0=tab[i];

P2=~temp;

delay10ms(10);

temp=temp>>1;

}

}

}

}

展开

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以你生成一个通过按键控制数码管显示的51单片机程序的框架。以下是一个简单的示例程序,你可以根据自己的需进行修改和扩展: ```c #include <reg51.h> #define SEGMENT_PORT P1 // 数码管段选信号的输出端口 #define BUTTON_PORT P2 // 按键输入端口 unsigned char display[4] = {0, 0, 0, 0}; // 数码管显示的四位数字 unsigned char buttonState = 0; // 按键状态变量 void delay(unsigned int ms) { unsigned int i, j; for (i = 0; i < ms; i++) { for (j = 0; j < 125; j++) { // 空循环,延时一段时间 } } } void updateDisplay() { unsigned char i; for (i = 0; i < 4; i++) { SEGMENT_PORT = ~(0x01 << i); // 设置段选信号 P0 = display[i]; // 设置显示的数字 delay(5); // 延时一段时间,使数码管能够显示 P0 = 0x00; // 关闭显示 } } void main() { BUTTON_PORT = 0xFF; // 将按键端口设置为输入模式 SEGMENT_PORT = 0xFF; // 将段选信号端口设置为初始状态 while (1) { buttonState = BUTTON_PORT; // 读取按键状态 // 根据按键状态进行相应操作 if (buttonState == 0xFE) { // 按下第一个按键,数码管自增 display[0]++; if (display[0] > 9) { display[0] = 0; } } else if (buttonState == 0xFD) { // 按下第二个按键,数码管清零 display[0] = 0; } updateDisplay(); // 更新数码管显示 } } ``` 以上是一个简单的示例程序,通过按下不同的按键来控制数码管的显示。程序中,使用P1口作为数码管的段选信号输出口,P2口作为按键输入口。你可以根据你具体使用的数码管和按键接口进行相应的修改。 希望这个程序框架可以助你开始实现你的项目!如果有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值