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

51单片机怎么用按键控制一个数码管,按一下显示一个数字,顺序显示,求语言程序。... 51单片机怎么用按键控制一个数码管,按一下显示一个数字,顺序显示,求语言程序。 展开
 我来答
电子科技小百科
高粉答主

2020-04-26 · 繁杂信息太多,你要学会辨别
知道答主
回答量:4367
采纳率:0%
帮助的人:71.5万
展开全部

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

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

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

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

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

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

小丑鱼啦33
2020-04-08 · TA获得超过3358个赞
知道答主
回答量:121
采纳率:0%
帮助的人:3.8万
展开全部

用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电源需要加开关电源转换);一般选择低压供电的,比较可靠稳定,高压供电的容易烧毁。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
201810800849
推荐于2017-05-22 · TA获得超过221个赞
知道答主
回答量:104
采纳率:0%
帮助的人:50.6万
展开全部
/*-----------------------------------------------
名称:单个共阳数码管动态显示变化数字
内容:通过循环检测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; //如果都没按下,直接跳出
}
}
}
有问题回复我哦
追问
你是百度给我的吧,这个答案我看过了,好像不行
追答
我是从资料里复制的,应该没问题,电路连的对不对?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式