请各位大神帮我看下代码那里问题

2019-07-15 09:37发布

电路是P0接的J12,P1接的J16.单片机采用STC90C516RC+,现在想实现0-60动态显示。现在显示出现8个数码管都会显示,但是前面2个数码管可以正常从0-60的增加再重复。现在想只要前面2个数码管显示即可,代码如下,请各位看看那里出错了。代码:
#include<stc90.h>
#include<intrins.h>        //**延时函数头文件**//
#define uchar unsigned char
#define uint unsigned int
uint count=0,sec=0;
uchar table[10]=
{0Xfc,0X60,0Xda,0xf2,
0x66,0xb6,0xbe,0xe0,0xfe,                                                
0xf6,};
uchar  wei[]=
{0Xfe,0Xfd
};
void Delay10ms()                //@12.000MHz  //延时10MS//STC软件复制
{
        unsigned char i, j;

        i = 20;
        j = 113;
        do
        {
                while (--j);
        } while (--i);
}
void display()                //显示函数//
{
        uchar i,temp=0x01;
        wei[1]=sec/10;
        wei[0]=sec%10;
        for(i=0;i<2;i++)
        {
                P0=table[wei];
                P1=temp;
                Delay10ms();
                P0=0XFF;
                P1=0XFF;
                temp<<=1;
               
        
        }
}
void time0()interrupt 1
{
        TH0=(65536-50000);         //高8位给初值//
        TL0=(65536-50000);         //低8位给初值//
        if(++count==50)                 //定时器延时1秒//
        {
                count=0;           //到1秒清零//
                sec++;                   //开始计数//
                if(sec==60)           //如果计数到60秒就清0//
                sec=0;
        }        



}
void main(void)
{
        TMOD=0X01;                         //开启定时器0//
        TH0=(65536-50000);         //高8位给初值//
        TL0=(65536-50000);         //低8位给初值//
        IE=0X82;
        TR0=1;                        //开启计数//
        while(1)                 //循环计数//
        {
                        
           display();

                                                                                                
        }
}


数码管.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
达菲奇
1楼-- · 2019-07-16 15:46
想要控制哪个数码管灭,就给阴极加上高电平,就是J16,P1脚,代码里面的temp
打杂的
2楼-- · 2019-07-16 20:07
按照人中狼 的程序,只要把P1口取反即可。P1=~temp.

一周热门 更多>