局部变量07 2023-10-13 18:18 采纳率: 50%
浏览 7

单片机定时器控制数码管显示

为什么我的数码管动态显示非常快,单片机是CT170D,怎么让他隔500ms显示一个一个显示啊

#include <STC15F2K60S2.H>
#define uchar unsigned char
#define uint unsigned int
uchar code tabledu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0x91,0x86,0x8e};
uchar code tablewei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uint tt,num,num1;

void init()
{
    TMOD=0X01;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    EA=1;
    ET0=1;
    TR0=1;
    P2=0X80;
    P0=0XFF;
}

void main()
{
    init();
    

    while(1);

}

void extor0() interrupt 1
{
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    tt++;
    if(tt=200)
    {
        tt=0;
        P2=0XC0;
        P0=tablewei[num1];
        P2=0XF0;
        num1++;
        if(num1==8)
            num1=0;
        P2=0XE0;
        P0=tabledu[num];
        P2=0XF0;
        num++;
        if(num==16)
            num=0;
        
    }

    
}



  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-13 20:08
    关注

    【以下回答由 GPT 生成】

    我们可以使用以下代码来修改程序:

    #include <STC15F2K60S2.H>
    #define uchar unsigned char
    #define uint unsigned int
    uchar code tabledu[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0x91,0x86,0x8e};
    uchar code tablewei[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
    uint tt,num,num1;
    
    void init()
    {
        TMOD=0X01;
    
        // 修改定时器0的初值为(65536-5000)
        TH0=(65536-5000)/256;
        TL0=(65536-5000)%256;
    
        EA=1;
        ET0=1;
        TR0=1;
        P2=0X80;
        P0=0XFF;
    }
    
    void main()
    {
        init();
    
        while(1);
    }
    
    void extor0() interrupt 1
    {
        // 修改定时器0的初值为(65536-5000)
        TH0=(65536-5000)/256;
        TL0=(65536-5000)%256;
    
        tt++;
        if(tt==200)
        {
            tt=0;
            P2=0XC0;
            P0=tablewei[num1];
            P2=0XF0;
            num1++;
            if(num1==8)
                num1=0;
            P2=0XE0;
            P0=tabledu[num];
            P2=0XF0;
            num++;
            if(num==16)
                num=0;
        }
    }
    

    将以上修改后的代码重新烧录到CT170D单片机中,数码管将会每隔500ms显示一个数字。

    如果你对以上有任何疑问,请随时向我提问!


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月13日

悬赏问题

  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
  • ¥15 python螺旋图像
  • ¥15 算能的sail库的运用
  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析
  • ¥200 sqlite3数据库设置用户名和密码