久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1717|回復: 0
收起左側

藍橋杯單片機第八屆初賽-基于單片機的電子時鐘

[復制鏈接]
ID:514797 發表于 2020-1-10 21:03 | 顯示全部樓層 |閱讀模式
#include<STC15F2K60S2.H>
#include "DEPUTY.H"

#define uchar unsigned char
#define uint unsigned int

uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6};
uchar yi,er,san,si,wu,liu,qi,ba;
extern unsigned char shijian[];
uchar Alarm_clock[3]={0,0,0};
uchar Time_set=5,Alarm_set=0;
uchar s4=0;
bit wendu=0;
uchar LED_shan=0;
uchar tt=0;
bit fla=0;
uint miao=0;

void allinit(void);
void delayms(uint ms);
void keyscan(void);
void display1(uchar yi,uchar er);
void display2(uchar san,uchar si);
void display3(uchar wu,uchar liu);
void display4(uchar qi,uchar ba);
void Timer0Init(void);               

void main(void)
{
        allinit();
        Timer0Init();
        DS_init();
        yi=0;er=8;san=10;si=3;wu=0;liu=10;qi=0;ba=0;
        while(1)
        {
                DS_get();
                if(wendu==0)
                {
                        if(Time_set==5)
                        {
                                yi=shijian[2]/10;er=shijian[2]%10;san=10;si=shijian[1]/10;wu=shijian[1]%10;liu=10;qi=shijian[0]/10;ba=shijian[0]%10;
                        }
                        else if(Time_set==1)
                        {
                                if(shijian[0]%2==1){yi=shijian[2]/10;er=shijian[2]%10;san=10;si=shijian[1]/10;wu=shijian[1]%10;liu=10;qi=shijian[0]/10;ba=shijian[0]%10;}
                                else {yi=11;er=11;san=10;si=shijian[1]/10;wu=shijian[1]%10;liu=10;qi=shijian[0]/10;ba=shijian[0]%10;}
                        }
                        else if(Time_set==2)
                        {
                                if(shijian[0]%2==1){yi=shijian[2]/10;er=shijian[2]%10;san=10;si=shijian[1]/10;wu=shijian[1]%10;liu=10;qi=shijian[0]/10;ba=shijian[0]%10;}
                                else {yi=shijian[2]/10;er=shijian[2]%10;san=10;si=11;wu=11;liu=10;qi=shijian[0]/10;ba=shijian[0]%10;}
                        }
                        else if(Time_set==3)
                        {
                                if(shijian[0]%2==1){yi=shijian[2]/10;er=shijian[2]%10;san=10;si=shijian[1]/10;wu=shijian[1]%10;liu=10;qi=shijian[0]/10;ba=shijian[0]%10;}
                                else {yi=shijian[2]/10;er=shijian[2]%10;san=10;si=shijian[1]/10;wu=shijian[1]%10;liu=10;qi=11;ba=11;}
                        }       
                       
                        if(Alarm_set==5)
                        {
                                yi=Alarm_clock[2]/10;er=Alarm_clock[2]%10;san=10;si=Alarm_clock[1]/10;wu=Alarm_clock[1]%10;liu=10;qi=Alarm_clock[0]/10;ba=Alarm_clock[0]%10;
                        }
                        else if(Alarm_set==1)
                        {
                                if(shijian[0]%2==1){yi=Alarm_clock[2]/10;er=Alarm_clock[2]%10;san=10;si=Alarm_clock[1]/10;wu=Alarm_clock[1]%10;liu=10;qi=Alarm_clock[0]/10;ba=Alarm_clock[0]%10;}
                                else {yi=11;er=11;san=10;si=Alarm_clock[1]/10;wu=Alarm_clock[1]%10;liu=10;qi=Alarm_clock[0]/10;ba=Alarm_clock[0]%10;}
                        }
                        else if(Alarm_set==2)
                        {
                                if(shijian[0]%2==1){yi=Alarm_clock[2]/10;er=Alarm_clock[2]%10;san=10;si=Alarm_clock[1]/10;wu=Alarm_clock[1]%10;liu=10;qi=Alarm_clock[0]/10;ba=Alarm_clock[0]%10;}
                                else {yi=Alarm_clock[2]/10;er=Alarm_clock[2]%10;san=10;si=11;wu=11;liu=10;qi=Alarm_clock[0]/10;ba=Alarm_clock[0]%10;}
                        }
                        else if(Alarm_set==3)
                        {
                                if(shijian[0]%2==1){yi=Alarm_clock[2]/10;er=Alarm_clock[2]%10;san=10;si=Alarm_clock[1]/10;wu=Alarm_clock[1]%10;liu=10;qi=Alarm_clock[0]/10;ba=Alarm_clock[0]%10;}
                                else {yi=Alarm_clock[2]/10;er=Alarm_clock[2]%10;san=10;si=Alarm_clock[1]/10;wu=Alarm_clock[1]%10;liu=10;qi=11;ba=11;}
                        }
                }
                else if(wendu==1)
                {
                        yi=11;er=11;san=11;si=11;wu=11;liu=Tempget()/10;qi=Tempget()%10;ba=12;
                }

               
                if((shijian[0]==Alarm_clock[0])&&(shijian[1]==Alarm_clock[1])&&(shijian[2]==Alarm_clock[2]))
                {
                        LED_shan=1;tt=0;miao=0;
                }
               
                keyscan();
               
                display1(yi,er);
                display2(san,si);
                display3(wu,liu);
                display4(qi,ba);
        }
}

void keyscan(void)
{
        if(P30==0)
        {
                delayms(5);
                if(P30==0)
                {
                        if(LED_shan==0)
                        {
                                if(Time_set==0){Time_set=5;Alarm_set=0;}
                                else if(Time_set==5)Time_set=1;
                                else if(Time_set==1)Time_set=2;
                                else if(Time_set==2)Time_set=3;
                                else if(Time_set==3)Time_set=5;
                        }
                        else if(LED_shan==1)
                        {
                                LED_shan=0;P2=0X80;P0=0XFF;
                        }
                }
                while(!P30);
        }
        else if(P31==0)
        {
                delayms(5);
                if(P31==0)
                {
                        if(LED_shan==0)
                        {
                                if(Alarm_set==0){Alarm_set=5;Time_set=0;}
                                else if(Alarm_set==5)Alarm_set=1;
                                else if(Alarm_set==1)Alarm_set=2;
                                else if(Alarm_set==2)Alarm_set=3;
                                else if(Alarm_set==3)Alarm_set=5;
                        }
                        else if(LED_shan==1)
                        {
                                LED_shan=0;P2=0X80;P0=0XFF;
                        }
                }
                while(!P31);
        }
        else if(P32==0)
        {
                delayms(5);
                if(P32==0)
                {       
                        if(LED_shan==0)
                        {
                                if(Time_set==1)
                                {
                                        if(shijian[2]==23)shijian[2]=0;
                                  else shijian[2]++;
                                        DS_init();
                                }
                                else if(Time_set==2)
                                {
                                  if(shijian[1]==59)shijian[1]=0;
                                        else shijian[1]++;DS_init();
                                }
                                else if(Time_set==3)
                                {
                                        if(shijian[0]==59)shijian[0]=0;
                                        else shijian[0]++;DS_init();
                                }
                                else if(Alarm_set==1)
                                {
                                        if(Alarm_clock[2]==23)Alarm_clock[2]=0;
                                        else Alarm_clock[2]++;
                                }
                                else if(Alarm_set==2)
                                {
                                        if(Alarm_clock[1]==59)Alarm_clock[1]=0;
                                        else Alarm_clock[1]++;
                                }
                                else if(Alarm_set==3)
                                {
                                        if(Alarm_clock[0]==59)Alarm_clock[0]=0;
                                        else Alarm_clock[0]++;
                                }
                        }
                        else if(LED_shan==1)
                        {
                                LED_shan=0;P2=0X80;P0=0XFF;
                        }
                }
                while(!P32);
        }
        else if(P33==0)
        {
                delayms(5);
                if(P33==0)
                {
                        s4=1;
                        if(Time_set==5)wendu=1;
                }
        }
       
        if((s4==1)&&(P33==1))
        {       
                s4=0;
                if(LED_shan==0)
                {
                        wendu=0;
                        if(Time_set==1)
                        {
                                if(shijian[2]==0)shijian[2]=23;
                                else shijian[2]--;
                                DS_init();
                        }
                        else if(Time_set==2)
                        {
                                if(shijian[1]==0)shijian[1]=59;
                                else shijian[1]--;
                                DS_init();
                        }
                        else if(Time_set==3)
                        {
                                if(shijian[0]==0)shijian[0]=59;
                                else shijian[0]--;
                                DS_init();
                        }
                        else if(Alarm_set==1)
                        {
                                if(Alarm_clock[2]==0)Alarm_clock[2]=23;
                                else Alarm_clock[2]--;
                        }
                        else if(Alarm_set==2)
                        {
                                if(Alarm_clock[1]==0)Alarm_clock[1]=59;
                                else Alarm_clock[1]--;
                        }
                        else if(Alarm_set==3)
                        {
                                if(Alarm_clock[0]==0)Alarm_clock[0]=59;
                                else Alarm_clock[0]--;
                        }
                }
                else if(LED_shan==1)
                {
                        LED_shan=0;P2=0X80;P0=0XFF;
                }
        }
}


void Timer0Init(void)                //5毫秒@11.0592MHz
{
        AUXR |= 0x80;                //定時器時鐘1T模式
        TMOD &= 0xF0;                //設置定時器模式
        TL0 = 0x00;                //設置定時初值
        TH0 = 0x28;                //設置定時初值
        TF0 = 0;                //清除TF0標志
        TR0 = 1;                //定時器0開始計時
       
        ET0=1;
        EA=1;
}


void time0() interrupt 1
{
        tt++;miao++;
        if((tt==40)&&(LED_shan==1))
        {
                tt=0;
                if(fla==0){fla=1;P2=0X80;P0=0XFE;}
                else if(fla==1){fla=0;P2=0X80;P0=0XFF;}
        }
       
        if(miao==1000)
        {
                miao=0;LED_shan=0;P2=0X80;P0=0XFF;
        }
}


void allinit(void)
{
        P2=0XA0;
        P0=0x00;//關閉蜂鳴器繼電器
       
        P2=0X80;
        P0=0XFF;//關閉LED燈
       
        P2=0XC0;
        P0=0XFF;//選擇所有數碼管
        P2=0XFF;
        P0=0XFF;//關閉多有數碼管       
}

void display1(uchar yi,uchar er)
{
        P2=0XC0;
        P0=0X01;//選擇所有數碼管
        P2=0XFF;
        P0=tab[yi];//關閉多有數碼管       
        delayms(1);
       
        P2=0XC0;
        P0=0X02;//選擇所有數碼管
        P2=0XFF;
        P0=tab[er];//關閉多有數碼管       
        delayms(1);
}

void display2(uchar san,uchar si)
{
        P2=0XC0;
        P0=0X04;//選擇所有數碼管
        P2=0XFF;
        P0=tab[san];//關閉多有數碼管       
        delayms(1);
       
        P2=0XC0;
        P0=0X08;//選擇所有數碼管
        P2=0XFF;
        P0=tab[si];//關閉多有數碼管       
        delayms(1);
}

void display3(uchar wu,uchar liu)
{
        P2=0XC0;
        P0=0X10;//選擇所有數碼管
        P2=0XFF;
        P0=tab[wu];//關閉多有數碼管       
        delayms(1);
       
        P2=0XC0;
        P0=0X20;//選擇所有數碼管
        P2=0XFF;
        P0=tab[liu];//關閉多有數碼管       
        delayms(1);
}

void display4(uchar qi,uchar ba)
{
        P2=0XC0;
        P0=0X40;//選擇所有數碼管
        P2=0XFF;
        P0=tab[qi];//關閉多有數碼管       
        delayms(1);
       
        P2=0XC0;
        P0=0X80;//選擇所有數碼管
        P2=0XFF;
        P0=tab[ba];//關閉多有數碼管       
        delayms(1);
       
        P2=0XC0;
        P0=0XFF;//選擇所有數碼管
        P2=0XFF;
        P0=0XFF;//關閉所有數碼管       
}

void delayms(uint ms)
{
        uint i,j;
        for(i=ms;i>0;i--)
                for(j=845;j>0;j--);
}

第08講:第八屆初賽-基于單片機的電子時鐘.rar

184.12 KB, 下載次數: 15, 下載積分: 黑幣 -5

回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区福利视频 | 国产欧美精品一区二区色综合朱莉 | 欧美日产国产成人免费图片 | 日韩午夜一区二区三区 | 国产成人免费视频 | 国产三区在线观看视频 | 日本字幕在线观看 | 久久中文字幕一区 | 欧美一区二区三区视频在线观看 | 日本xx视频免费观看 | 亚洲精品二区 | 国产精品自拍一区 | 国产精品一区二区三区久久 | 欧美精品在欧美一区二区少妇 | 日本一区二区三区在线观看 | 欧美成人精品在线 | 中文字幕在线观看一区 | 日韩三级一区 | 国产乱码精品一区二三赶尸艳谈 | 色婷婷久久久久swag精品 | 欧美一级二级三级 | 精品久久一区 | www一级片| 麻豆精品国产免费 | 亚洲视频精品在线 | av资源中文在线 | 在线播放91 | 99久久夜色精品国产亚洲96 | 久国久产久精永久网页 | 中文字幕欧美一区 | 日本黄色短片 | 精品在线一区二区 | 欧美一级久久精品 | 韩国av网站在线观看 | 成人福利在线 | 日韩久久久久 | 一区二区三区四区电影视频在线观看 | 一区二区三区在线 | 婷婷精品 | 一二区成人影院电影网 | 国产精品久久久久久久 |