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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1590|回復: 1
打印 上一主題 下一主題
收起左側

6位時鐘可調可復位

[復制鏈接]
跳轉到指定樓層
樓主
ID:653143 發表于 2019-12-6 14:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 環境開會看見和 于 2019-12-10 21:46 編輯

#include<reg52.h> //頭文件
#define uc unsigned char //宏定義
#define ui unsigned int    //宏定義

sbit key1=P1^0;//定義調小時
sbit key2=P1^1;//定義調分鐘
sbit key3=P1^2;//定義秒清零        

sbit LED=P1^6;//定義LED
sbit beep=P1^7;//設蜂鳴器

uc min,hour,sec,led,num; //無符號字符型變量

bit bdata hourLED,halfLED,hourbeep,halfbeep; //位變量

//uc code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};                //共陰極編碼
uc code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};           //共陽級編碼

void delay(ui x)//1ms延時函數
{
    ui i,j;
    for(i=0;i<x;i++)
    for(j=0;j<121;j++);
}
void display()        //掃描顯示函數,高位到低位
{

    P0=tab[hour/10];        //給小時的十位送形
          P2=0x01;                        //1000 0000   共陽打開位選          共陽需要接高電平才亮
    delay(1);                         //延時動態掃描
        P2=0x00;                   //共陽的  關閉位選

    /*P3=0xfe;                //1111 1110   共陰打開位選         共陰需要接低電平才亮
        delay(1);
        P3=0xff;                 //共陰的  關閉位選           */

    P0=(tab[hour%10]);        //|0x80;*//給第二位后加“點
        P2=0x02;        //0100 0000
    delay(1);
        P2=0x00;

        /*P3=0xfd;        //1111 1101          共陰
        delay(1);
        P3=0xff;*/

/***********G橫杠效果***************/

        P0=0xbf;        //        橫杠共陽                          
        P2=0x04;        //0010 0000         
        delay(1);
        P2=0x00;

        /*P2=0x40;          //共陰
        P3=0xfb;                   //1111 1011
        delay(1);
        P3=0xff;*/
/***********G橫杠效果***************/


    P0=tab[min/10];
        P2=0x08;    //0001 0000
    delay(1);
        P2=0x00;

        /*P3=0xf7;        //1111 0111
        delay(1);
        P3=0xff; */

    P0=(tab[min%10]);        /*|0x80;*/        //給第四位后加“點”
        P2=0x10;                //0000 1000
    delay(1);
        P2=0x00;

        /*P3=0xef;                //1110 1111
            delay(1);
     P3=0xff;*/


/***********G橫杠效果***************/

        P0=0xbf;                 //共陽        
        P2=0x20;                //0000 0100
        delay(1);
        P2=0x00;

        /*P2=0x40;                //共陰
        P3=0xdf;                //1101 1111         共陰
        delay(1);
        P3=0xff;*/

/***********G橫杠效果***************/


    P0=tab[sec/10];
        P2=0x40;                //0000 0010
    delay(1);
        P2=0x00;

        /*P3=0xbf;        //1011 1111
        P3=0xff;
        delay(1);*/        

    P0=tab[sec%10];   
        P2=0x80;        //0000 0001
    delay(1);
        P2=0x00;

        /*P3=0x7f;        //0111 1111
        delay(1);
        P3=0xff;*/

}

void keyscan()//鍵盤掃描,開關接地
{
    if(key1==0)     //如果小時加按鍵按下
    {
        delay(5);  //延時去抖
        if(key1==0)     //確定是否按鍵
        {
            hour++;     //小時加一
            if(hour==24) //如果小時等于24
            hour=0;        //小時歸零
        }
        while(!key1) display();//判斷是否松開
    }
    if(key2==0)      //如果分鐘加按鍵按下
    {
        delay(5);  //延時去抖
        if(key2==0)    //確定是否按鍵
        {
            min++; //分鐘加一
            if(min==60)// 如果分鐘等于60
            min=0;    //分鐘歸零
        }
        while(!key2) display();//判斷是否松開
    }
    if(key3==0)//判斷調整秒按鍵
    {
        delay(5);  //延時去抖
        if(key3==0)    //確定是否按鍵
        {sec=0;} //秒清零
        while(!key3) display();//判斷是否松開
    }
}
void strike()//報時函數
{
    if((hour>6)&&(hour<22))//判斷大于6點并且小于22點
    {
        if(sec==0)//以下判斷是否整點
        {
            if(min==0)//如果秒和分都等于0
            {
                hourbeep=1;    //那么蜂鳴器和小燈位開啟
                hourLED=1;
            }
            else if(min==30)//如果分鐘等于30
            {
                if(num<10)    //閃5下響一聲
                halfbeep=1;
                halfLED=1;
            }
        }
    }
    else //小于6點和大于22點的時候
    {
        if(sec==0)//以下判斷是否整點
        {
            if(min==0)//如果分鐘等于0
            hourLED=1; //led位開
            else if(min==30)//如果分鐘=0
            halfLED=1;//進行半點報時
        }
    }
}

void init()//初始化函數
{
    sec=0;//一通電,顯示12:30:00,蜂鳴器響一下
    min=30;
    hour=12;
    TMOD=0x01;//設置定時器為定時器0工作方式為1
    TH0=(65536-46083)/256;    //賦初值
    TL0=(65536-46083)%256;  //賦初值
    EA=1; //開總中斷
    ET0=1; //開定時器0中斷
    TR0=1; //啟動定時器0
}

void main()//主函數
{
    init();//初始化函數
    while(1) //主循環
    {
        display(); //顯示
        keyscan();//掃描是否有鍵按下
        strike();//報時函數
    }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2019-12-10 00:26 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国内自拍偷拍视频 | 久操伊人| 一区二区三区四区国产 | 久久精品一级 | 很很干很很日 | 久99久视频 | 国产高清在线精品一区二区三区 | 亚洲精品影院 | 一级毛片大全免费播放 | 国产精品欧美一区二区三区不卡 | 国产日韩一区二区三区 | 欧美一级二级三级视频 | 国产一区二区三区免费 | 999久久久久久久 | 亚洲精品久久久久中文字幕二区 | www.操com| 在线天堂免费中文字幕视频 | 国产精品视频观看 | 国产永久免费 | 色视频在线免费观看 | 中日韩av | 国产成人精品一区二区三区在线 | 国产一区欧美一区 | 中文字幕的av | 欧美xxxx黑人又粗又长 | 免费观看一级毛片 | 免费观看一级毛片视频 | 欧美不卡网站 | a级在线 | 91一区二区| 国产精品久久久久久久久污网站 | 99在线资源 | 日韩欧美专区 | 国产综合视频 | 国产精品久久久久一区二区三区 | 色伊人 | 中文字幕国产精品 | 91精品久久久久久久 | 亚洲成人精品在线观看 | 日韩久久久久久 | 97视频网站 |