51单片机的共阴数码管怎么显示数字(c语言)

#include<reg52.h>sbitLED1=P1^1;voidmain(){LED1=0;//下面的代码:八位共阴数码管的第一位显示一个0LatchWei=1;L... #include<reg52.h>

sbit LED1=P1^1;

void main()
{
LED1=0;
//下面的代码:八位共阴数码管的第一位显示一个0
LatchWei=1;
L0=0;
L1=1;
L2=1;
L3=1;
L4=1;
L5=1;
L6=1;
L7=1;
LatchWei=0;
LatchDuan=1;
L0=1;
L1=1;
L2=1;
L3=1;
L4=1;
L5=1;
L6=0;
L7=0;
LatchDuan=0;

while(1)
{
}
}

按照以上的类似的代码,我想做到在 任意一位 显示任意一个数 ,能够实现吗?要怎么写?如果不能的话,又要怎么实现我的想法?
展开
 我来答
alpharms
2019-12-05
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

要让51单片机共阴数码管显示数字,只需要将单片机的P2端口输出数字对应的段码即可。

以显示数字“0”为例,c语言程序如下:

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

//数码管的段码编码

Uchar table[10] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

 void main(){//主函数

P0 = table[0];//显示0,大家可以修改里面的数据。

while(1);//程序不再执行其他步骤;

}

扩展资料:

数字0-9的对应段码:

数字0      0x3f

数字1      0x06

数字2      0x5b

数字3      0x4f

数字4      0x66

数字5      0x6d

数字6      0x7d

数字7      0x07

数字8      0x7f

数字9      0x6f

zhxiufan
推荐于2017-09-29 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38379
国家科技进步奖

向TA提问 私信TA
展开全部

共阴极数码管也就是说,当控制信号为1时该段LED点亮,8段数码管的数字0~9定义为:

3FH,06H,5BH,4FH,66H ;01234

6DH,7DH,07H,7FH,6fh ;56789

以下为简易8路抢答器的例程:

#include<reg51.h>

#define uchar unsigned char

uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};

sbit rstkey=P2^2;

sbit speaker=P2^0;

void delay()//延时约400毫秒

{

uchar i,j;

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

for(j=0;j<250;j++);

}

main()

{

uchar i,key;

P2=0xff;

while(1)

{

i=0;

P1=table[i];

while(1)

{

key=P3;

if(key!=0)break;

}

switch(key)

{

case 0x01:i=1;break;

case 0x02:i=2;break;

case 0x04:i=3;break;

case 0x08:i=4;break;

case 0x10:i=5;break;

case 0x20:i=6;break;

case 0x40:i=7;break;

case 0x80:i=8;break;

default:break;

}

P1=table[i];//显示按下抢答器的号

P0=key;//显示按下键号的LED

while(1)

{

if(rstkey==0)break;//主持人按下复位键则重新开始

speaker=~speaker;//否则蜂鸣器报警

delay();

}

}

}


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shine1991
科技发烧友

推荐于2017-09-09 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部

不涉及动态显示,未用锁存器




#include <reg51.h>

#define _x10  (0xfe)

#define _x1   (0xfd)

unsigned char code Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void main()

{

    void show(unsigned char duan,unsigned char wei);

    while(1)

    {

        show(0,_x1);

    }

}

void show(unsigned char duan,unsigned char wei)

{

    P2=wei;

    if(duan<10)

    {

        P0=Tab[duan];

    }

    else

    {

        ;

    }

}

更多追问追答
追问
我是新手  没看太明白,能解释一下么,而且我下到单片机内数码管也没显示啥
追答
不给我实际的硬件连接,接口定义,怎么可能会有反应呢,这个代码只是个演示,只对应上面的那副图的连接
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
走在时间的前头
2013-03-05 · TA获得超过200个赞
知道小有建树答主
回答量:662
采纳率:0%
帮助的人:178万
展开全部
你的L1/L2/L3都是什么啊?还有LatchDuan??我有做过类似的设计,需要可以互相交流一下!
追问
是少了
sbit L0=P0^0;
sbit L1=P0^1;
sbit L2=P0^2;
sbit L3=P0^3;
sbit L4=P0^4;
sbit L5=P0^5;
sbit L6=P0^6;
sbit L7=P0^7;
sbit LatchWei=P2^1;
sbit LatchDuan=P2^0;
追答
有必要这么麻烦么、、、、、、、、、、、、、、、、、、、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式