为什么用proteus8仿真,数码管第一位不显示??

2019-03-24 11:18发布

#include<msp430f249.h>

#define CPU_F ((double)8000000)
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))      //延时1毫秒

const char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0X40};
char time[3];
char dis_buff[8];
char time_counter;//1s计数器


void display(void)//显示扫描函数,执行时间16ms
{
        static char i;
        P3OUT=0xFF;
        P1OUT=tab[dis_buff[i+1]];//字段码送数码管
        P3OUT=~(1<<i);//位置选低
        if(++i==8)
                i=0;
        delay_ms(0.1);
}


void time_to_disbuffer(void)//时间值送显示缓冲函数
{
        dis_buff[0]=time[2]/10;//小时
        dis_buff[1]=time[2]%10;
        dis_buff[3]=time[1]/10;
        dis_buff[4]=time[1]%10;//分钟
        dis_buff[6]=time[0]/10;
        dis_buff[7]=time[0]%10;//秒
}

void main(void)
{
        P1DIR=0xFF;//P1初始化为输出端口
        P3DIR=0xFF;//P2初始化为输出端口
        time[2]=23;
        time[1]=58;
        time[0]=55;//时间初值23:58:55
        time_to_disbuffer();
        dis_buff[2]=dis_buff[5]=10;
        while(1)
        {
                display();//显示扫描
                if(++time_counter>=250)//更新时间
                {
                        time_counter=0;
                        if(++time[0]>=60)
                        {
                                time[0]=0;
                                if(++time[1]>=60)
                                {
                                        time[1]=0;
                                        if(++time[2]>=24)
                                                time[2]=0;
                                }
                        }
                        time_to_disbuffer();//修改显示缓冲区
                }

        }
}






此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
尹大贵
2019-03-24 18:03
 精彩回答 2  元偷偷看……0人看过

一周热门 更多>

相关问题

    相关文章