51单片机怎样用一个按键实现一个数码管数字从F到0递减的变化程序,哪位大佬帮帮忙,谢谢
- 51单片机用一个按键控制一个数码管的程序怎么写
- 51单片机怎么用按键控制一个数码管,按一下显示一个数字,顺序显示
- 用51单片机,怎么让数码管显示一串矩阵键盘按下的键代表的数(0~f)?
- c51单片机如何使用一个按钮就能实现数码管从0~9的循环并且还能实现数码管清零?
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个动作循环一次的。