找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3484|回復(fù): 0
收起左側(cè)

stc15w4k32s4的電子時鐘不顯示,程序和仿真在附件中,新手小白求助

[復(fù)制鏈接]
ID:780023 發(fā)表于 2020-7-9 22:13 | 顯示全部樓層 |閱讀模式
51hei.png
#include<stc15.h>
/*共陰數(shù)碼管編碼*/
unsigned char code tab1[]={
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
/*位選編碼*/
unsigned char code tab2[]={            
        0xfe,0xfd,0xfb,0xf7,
        0xef,0xdf,0xbf,0x7f};
unsigned char dis_buf[8]={0,0,0x40,0,0,0x40,0,0};
sbit duanxuan=P1^0;
/*按鍵位定義*/
sbit key0=P1^0;
sbit key1=P1^1;
sbit key2=P1^2;
sbit key3=P1^3;
sbit key4=P1^4;
sbit key5=P1^5;
sbit key6=P1^6;
sbit key7=P1^7;
/*秒、分、時的初始化*/
unsigned int  tt=0;
unsigned char i=0;
char sec=0,fen=0,shi=12;
unsigned int sign=1;
/*延時函數(shù)*/
void delay(unsigned int n)
{
    while(n--);
}
/*定時器0初始化函數(shù)*/
void chushihua()                //1毫秒@12.000MHz
{            
        AUXR &= 0x7F;                //定時器時鐘12T模式
        TMOD &= 0xF0;                //設(shè)置定時器16位自動重載模式
        TL0 = 0x18;                        //設(shè)置定時初值
        TH0 = 0xFC;                        //設(shè)置定時初值
        TR0 = 1;                                //定時器0開始計時
        EA=1;
        ET0=1;
}
/*按鍵設(shè)定函數(shù)*/
void sheding()
{
        if(key0==0)
        {
                delay(3500);
                if(key0==0)
                {
                        sign=0;
                }
        }
        if(key1==0)
        {
                delay(3500);
                if(key1==0)
                {
                        sec++;
                        if(sec>59)
                                sec=0;
                        while(!key1);
                }                                         
        }
        if(key2==0)
        {
                delay(3500);
                if(key2==0)
                {
                        fen++;
                        if(fen>59)
                                fen=0;
                        while(!key2);
                }                                         
        }
        if(key3==0)
        {
                delay(3500);
                if(key3==0)
                {
                        shi++;
                        if(shi>23)
                                shi=0;
                        while(!key3);
                }                                         
        }
        if(key5==0)
        {
                delay(3500);
                if(key5==0)
                {
                        sec--;
                        if(sec<0)
                                sec=59;
                        while(!key5);
                }         
        }
        if(key6==0)
        {
                delay(3500);
                if(key6==0)
                {
                        fen--;
                        if(fen<0)
                                fen=59;
                        while(!key6);
                }                                         
        }
        if(key7==0)
        {
                delay(3500);
                if(key7==0)
                {
                        shi--;
                        if(shi<0)
                                shi=23;
                        while(!key7);
                }
        }
        if(key4==0)
        {
                delay(3500);
                if(key4==0)
                {
                        sign=1;
                }
        }
}
/*顯示函數(shù)*/
void display()
{
              P7=tab2[0];
              P6=tab1[sec%10];
              delay(3500);
              P6=0x00;//消影
              P7=tab2[1];
              P6=tab1[sec/10];
              delay(3500);
              P6=0x00;//消影
              P7=tab2[2];
              P6=0x40;
              delay(3500);
              P6=0x00;//消影
              P7=tab2[3];
              P6=tab1[fen%10];
              delay(3500);
              P6=0x00;//消影
              P7=tab2[4];
              P6=tab1[fen/10];
              delay(3500);
              P6=0x00;//消影
              P7=tab2[5];
              P6=0x40;
              delay(3500);
              P6=0x00;//消影

              P7=tab2[6];
              P6=tab1[shi%10];
              delay(3500);
              P6=0x00;//消影
              P7=tab2[7];
              P6=tab1[shi/10];
              delay(3500);
              P6=0x00;//消影
      }
/*主函數(shù)*/
void main(void)
{
        chushihua();
        while(1)
        {
                sheding();
         display();
        }
}
/*定時器0中斷函數(shù)*/
void time0() interrupt 1
{
        if(sign)
        {
                tt++;
                if(tt>=1000)
                {
                        tt=0;
                        sec++;
                        if(sec>=60)
                        {
                                sec=0;
                                fen++;
                                if(fen>=60)
                                {
                                        fen=0;
                                        shi++;
                                        if(shi>=24)
                                        {
                                                shi=0;
                                        }
                                }
                        }
                }
        }
}

1.rar

86.54 KB, 下載次數(shù): 37

相關(guān)帖子

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表