1. 首页 > 科技

51单片机怎样用一个按键实现一个数码管数字从F到0递减的变化程序,哪位大佬帮帮忙,谢谢

51单片机怎样用一个按键实现一个数码管数字从F到0递减的变化程序,哪位大佬帮帮忙,谢谢

51单片机用一个按键控制一个数码管的程序怎么写

#include

sbit key1=P3^0;

unsigned char XX[10]={0xc0,0xf9,0xa4,0Xb0,0X99,0x92,0x82,0Xf8,0X80,0x90};

unsigned char i=0;

/****************延时程序******************/

void delay10ms(void)

{

unsigned char j,k;

for(j=20;j>0;j-- )

for(k=250;k>0;k-- );

}

/************开关控制程序********************/

key()

{

if(key1==0)

{

delay10ms();

if(key1==0)

{

i++;

if(i>9)i=0;

while(key1==0);

}

}

}

/************主函数********************/

void main(void)

{

P2=i;

while(1)

{

key(); //调用开关程序

P2=XX[i];

delay10ms();

}

}

51单片机怎么用按键控制一个数码管,按一下显示一个数字,顺序显示

/*-----------------------------------------------

名称:单个共阳数码管动态显示变化数字

内容:通过循环检测P1口按键输入值,然后用数码管输出,

没有按键按下时原值不变

------------------------------------------------*/

#include<reg52.h> //包含头文件,一般情况不需要改动,

//头文件包含特殊功能寄存器的定义

unsigned char code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,

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

// 显示数值表0-9

/*------------------------------------------------

主函数

------------------------------------------------*/

void main (void)

{

while (1) //主循环

{

switch(P1) //P1口作为独立按键输入端,检测端口电平并做如下判断

{

case 0xfe:P1=table[1];break;//0xfe = 1111 1110,

//说明连接在P1.0端口的按键被按下,显示对应的数字然后跳出循环

case 0xfd:P1=table[2];break;

case 0xfb:P1=table[3];break;

case 0xf7:P1=table[4];break;

case 0xef:P1=table[5];break;

case 0xdf:P1=table[6];break;

case 0xbf:P1=table[7];break;

case 0x7f:P1=table[8];break;

default:break; //如果都没按下,直接跳出

}

}

}

有问题回复我哦

用51单片机,怎么让数码管显示一串矩阵键盘按下的键代表的数(0~f)?

这种显示方式就和手机拨号时,按下号码的显示是一样,第一个数码先在右边显示,再按键,依此向左移动显示。要是6位数码管,就保留6位显示了,按键超过6位时,先按的自然丢掉了。

c51单片机如何使用一个按钮就能实现数码管从0~9的循环并且还能实现数码管清零?

从你的仿真图中没有看到P1.0接什么,看程序也看不出来那个 t 是怎么能控制数码管循环显示和暂停的,都不能实现哪,只能是不停的循环显示,根本停不下来。

数码管的段码表只有11个数,可数组却声明了70个元素,smg[70] ,这是根据什么确定的70,应该是smg[11] 就行。按理,一个按键是不可能实现计数,暂停,清0的,因为,要实现,必然是按计数,暂停,清0这3个动作循环一次的。