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

发布网友 发布时间:2022-04-23 21:38

我来回答

3个回答

热心网友 时间:2023-10-10 15:27

1、首先,要把代码写好,点亮数码管。

2、代码写完后,要确认原先写好的代码是不是正确的。

3、确认代码无误后,进入下一步,就是在这一行代码(箭头所指)的地方,将这四个字删去。

4、然后如图所示,四个字已经删去,只要改成数字相应的代码即可。

5、这里改成的是代表数字0的代码,如图所示。

6、最后写好代码后,将生成的hex文件写进单片机,数码管显示的数字就变成0了。

热心网友 时间:2023-10-10 15:27

用P0口控制共阴数码管,具体程序如下:

#include"stc15.h"
sbit y1=P4^4;
sbit y2=P4^5;
sbit k1=P3^3;
sbit k2=P3^2;

char LED7CodeRight[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

void delay(int x)
{int i,j;
for(i=x;i>01;i--)
{for(j=255;j>0;j--);}} 

void main()
{  int n=0;
P2=0xfe;              // 初始显示0
P4MO=1<<4 | 1<<5;//强推
P4M1=0x00;

while(1)
{ if(k1==0)         //如果第一个按键按下
{delay(30)};    //延时去抖

if(k1==0)     //再判断是否按下
{ ++n};      //N加1

if(n==10) //如果N等于10,N为0
{n=0;}}

 while(k1==0); //等待按键松开
{ if(k2==0)
{ delay(30); }   //延时去抖
if(k2==0)     //再判断是否按下
{  --n;       //N减1}
if(n<0)   //如果N小于0,N为9
{n=9;}}

while(k2==0);    //等待按键松开  } }
y2=1;y1=1;
P2=LED7CodeRight[n];          //将段码送P0口
y2=0;y1=0;}}

扩展资料:

led数码管的分类:

1、按控制方式分:分为内控方式(内部有单片机,通电自动变色)和外控方式(需要外接控制器才能变色)。

2、按变化方式分:分为固定色彩的和七彩、全彩的;固定色彩的是用来勾轮廓的,全彩的可以勾轮廓,也可以组成管屏显示文字、视频等。

3、按尺寸分:有D50的、D30的,这是直径;长度基本上1米的(可以定制);这个需要根据实际需要进行选择就行了。

4、按内部可控性分:有1米6段的,有1米8段的和1米12段、1米16段、1米32段的。也就是1米的管子内有几段可以受控; 1米段数越多,做视频的效果越好。如果密度低,或者做些追逐效果,做1米6段也就可以了。

5、按led数量分:有1米96颗灯的,有1米144颗灯的;灯越多效果越好。一般做全彩的都是用1米144颗灯的。

6、按供电分:分为高压供电(直接220V供电)和低压供电(12v供电,220v电源需要加开关电源转换);一般选择低压供电的,比较可靠稳定,高压供电的容易烧毁。

热心网友 时间:2023-10-10 15:28

/*-----------------------------------------------
名称:单个共阳数码管动态显示变化数字
内容:通过循环检测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; //如果都没按下,直接跳出
}
}
}
有问题回复我哦追问你是百度给我的吧,这个答案我看过了,好像不行

追答我是从资料里复制的,应该没问题,电路连的对不对?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com