帮助我完成 51 MCU 数码管程序,谢谢

发布于 数码 2024-06-23
11个回答
  1. 匿名用户2024-01-29

    #include

    #include

    typedef unsigned char uchar;

    typedef unsigned int uint;

    数码管显示定义。

    #define led_port p0

    #define led_wx p2

    uint a,b;

    uchar led_num;

    uchar bcd[4];

    uchar code dxian={

    0xc0,//0

    0xf9,//1

    0xa4,//2

    0xb0,//3

    0x99,//4

    0x92,//5

    0x82,//6

    0xf8,//7

    0x80,//8

    0x90//9

    void bin_bcd(uint a);

    void delay(uint a);

    void main()

    led_port=0xff;

    led_wx=0xef;

    led_num=0;

    tmod=0x10;

    th1=0xfc;

    tl1=0x70;

    ea=1;et1=1;

    tr1=1;

    while(1)

    bin_bcd(a);

    void i_display(void) interrupt 3a++;if(a==9999)

    a=0;led_port=dxian[bcd[led_num]];

    led_num++;

    if(led_num==0)

    led_wx=0xef;

    if(led_num==1)

    led_wx=0xdf;

    if(led_num==2)

    led_wx=0xbf;

    if(led_num==3)

    led_wx=0x7f;

    if(led_num==4)

    led_num=0;

    led_wx=0xef;

    th1=0xfc;

    tl1=0x70;

    void bin_bcd(uint a)

    bcd[2]=a/1000;

    bcd[1]=(a%1000)/100;

    bcd[0]=(a%100)/10;

    bcd[3]=a%10;

    我是LY 51系列0--9999数码管自加程序,希望对您有用。

    这是电路。 <>

  2. 匿名用户2024-01-28

    您先静态显示,两位数码管固定选择,WM不改变0x3f; 如果可以动态显示。

  3. 匿名用户2024-01-27

    您是否将闩锁用于电路? 程序需要配合电路才能看,你们的数码管控制指令有问题吗? 似乎控件与显示器混淆了。

  4. 匿名用户2024-01-26

    没错,你是在板上还是你自己做电路?

  5. 匿名用户2024-01-25

    数字引脚连接到单片机的PX端口,PX端口由程序控制显示数字字符,如:数码管显示段)。

    相应。 依次分配 PX 端口需要控制输出数字 0 9:

    C0H、F9H、A4H、B0H、99H、92H、82H、F8H、80H、90H(共阳极)。

  6. 匿名用户2024-01-24

    利用引脚输出高低电平控制数码管的8个子管的导通和断电平,达到数字和小数点显示的效果,通常要为每个数字制作一个换算表,这样在编程时就忽略了转换过程,达到快速编程的目的, 转换表一般采用枚举的方式,具体的转换编号与你电路中的连接方式是相关的,用二进制写出,然后转换成十六进制。

  7. 匿名用户2024-01-23

    对于共阳极,一个数码管由8个二极管组成,它们的阳极连接到+5V电源,每个阴极连接到某个端口,如P1的8个引脚,当一个引脚输出低电平时,数码管对应的二极管亮亮。

    问题补充:因为人眼有滞后,如果你给一个数码管第二次开机,然后给另一个数码管第二次开,并不断给几个数码管第二次开,因为人眼的滞后,它会显示你需要显示的数字, 当然,具体开机时间,要视数码管的位数等条件自行调整。

  8. 匿名用户2024-01-22

    单片机原理及控制方法 从小白系列(16)LED数码管开始。

  9. 匿名用户2024-01-21

    它可以以优化的方式简化。

    1.设置延时功能。

    延时功能具有使单片机实延的能力,该延时可以通过在本程序中使用for循环模式进行,如下所示:

    void delay()

    uinti,j;

    for(i=100;i>0;i--)

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

    2.设置数码管显示阵列。

    数组易于定义且易于访问。 所有元件均为同一类型,可在数码管显示程序中减少。 数组如下:

    chara[10]={0xff,0x3,0x9f,0x25,0xd,0x99,0x49,0x41,0x1f,0x1,0x9};

    3.设置数码管显示环路。

    数码管显示循环无需反复书写数码管显示**,方便简洁。 具体如下:

    for(int i=0;i<10;i++)

    p0=a[i];

    delay();

  10. 匿名用户2024-01-20

    1. 一开始,让我们先打开 Keil。

    2. 接下来,我们需要定义库函数,如果我们想实现动态数字灯光,这一步非常重要。

    3. 接下来,让我们添加一个循环语句。

    4. 最后,我们编写先前定义的延迟语句。

    5. 最后,单击此处编译并生成十六进制文件。

    6.如果这里没有错误警告,则表示我们的程序写得正确,那么我们就可以点亮动态数码管了。

  11. 匿名用户2024-01-19

    是的,带来了硬件原理图。

相关回答
14个回答2024-06-23

不知道您的硬件是如何连接的。

但是你的程序不可能是现实的! >>>More

11个回答2024-06-23

你用什么样的AD芯片---不同的芯片是不同的。

3个回答2024-06-23

#include

char disp_buff =;显示缓冲单元。 >>>More

9个回答2024-06-23

例如,如果公共阳极数码管连接到P1端口,则七段数码管的编号一般为从上A到右B,C到下D,最后到左E和F,水平数码管的编号为G。 >>>More

19个回答2024-06-23

原理:只是执行一些所谓的“无意义指令”,比如缩放或执行一个int自加法,简单来说,就像高中数学中的“乘法原理”一样,很容易快速增加上面提到的“无意义指令”的数量。 >>>More