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

標(biāo)題: 數(shù)字鐘的設(shè)計(jì) [打印本頁(yè)]

作者: hantao    時(shí)間: 2021-7-26 18:19
標(biāo)題: 數(shù)字鐘的設(shè)計(jì)
/*******************************************************************************
* 實(shí)驗(yàn)名                           : 數(shù)字鐘實(shí)驗(yàn)
* 使用的IO             : P0,P1,P2
* 實(shí)驗(yàn)效果       :HH:MM:SS
*選擇設(shè)置加1。
*******************************************************************************/
#include<reg51.h>
sbit time=P1^0;  //時(shí)間設(shè)置
sbit timer=P1^1;        //鬧鐘設(shè)置
sbit add=P1^2;         //加
sbit dec=P1^3;        //減
sbit speaker=P3^5;        //鬧鐘輸出
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;


bit        disp_sd;        //數(shù)碼管閃動(dòng)顯示標(biāo)志位
bit        disp_ms;        //數(shù)碼管顯示時(shí)間/鬧鐘標(biāo)志位
bit        disp_sdt;        //數(shù)碼管閃動(dòng)間隔反轉(zhuǎn)標(biāo)志位
bit        zhengdian=0;                //整點(diǎn)報(bào)時(shí)標(biāo)志位


unsigned char        code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//數(shù)字0-9的編碼
unsigned char time_cc,timer_cc;                //調(diào)時(shí)計(jì)數(shù)器
unsigned char count0,count1,second,minit,hour;        //時(shí)間時(shí)分秒
unsigned char second1,minit1,hour1;                   //鬧鐘時(shí)分秒
unsigned char hour_zd;                                    //整點(diǎn)小時(shí)記錄
unsigned char TempData[8],Key_Num;




/*******************************************************************************
* 函數(shù)名         : delay
* 函數(shù)功能                   : 延時(shí)函數(shù)
*******************************************************************************/
void delay(void)
{
        unsigned int i ;
        for(i=0; i<100 ; i++);
}


/*******************************************************************************
* 函數(shù)名         : display
* 函數(shù)功能                   : 時(shí)間顯示函數(shù)
*******************************************************************************/




/*******************************************************************************
* 函數(shù)名         : key_scan
* 函數(shù)功能                   : 按鍵處理函數(shù)
*******************************************************************************/
void key_scan(void)
{
        unsigned int i ;
        if(time==0)
        {
                speaker=1;//鬧鐘輸出
                for(i=0;i<10;i++)
                display();
                if(time==0)
                {
                TR0=0;
                do
                display();
                while(time==0);
                disp_sd=1;
                disp_ms=0;
                time_cc++;
                if(time_cc==4)


                        {
                                TR0=1;
                                time_cc=0;
                                disp_sd=0;
                        }
                }       
        }
                if(timer==0)
                {
                        speaker=1;
                        for(i=0;i<10;i++)
        {
                        display();
        }
                if (timer==0)
                {
                        do
                        display();
                        while(timer==0);
                        disp_sd=1;        //數(shù)碼管閃動(dòng)顯示
                        disp_ms=1;        //顯示模式為鬧鐘時(shí)間
                        timer_cc++;
                        if(timer_cc==4)
                                {                       
                                        timer_cc=0;
                                        disp_sd=0;        //閃動(dòng)關(guān)閉
                                        disp_ms=0;        //切換到時(shí)間模式
                                }
                }
                        }
                if(add==0)
                {
                        for(i=0;i<10;i++)
                {               
                        display() ;
                }
                        if(add==0)
                        {               
                                do
                                        display();
                                while(add==0);
                                if(disp_ms==0)
                        {
switch(time_cc)
{
case(0x01): {hour++;  if(hour>23)         hour=23; break;}
case(0x02): {minit++;         if(minit>59)         minit=59; break;}
case(0x03): {second++; if(second>59)  second=59; break;}
default: break;
}
                 }
else
{
switch(timer_cc)
{
case(0x01): {if (hour1==23)  hour1=23;  else hour1++; break;}
case(0x02): {if (minit1==59)  minit1=59;  else minit1++;break;}
case(0x03): {if (second1==59) second1=59; else second1++; break;}
default :break;
}
                }
                }
                }
if(dec==0)
{
        for(i=0;i<10;i++)
        {
                display();
        }
if(dec==0)
{
        do
                display() ;
        while(dec==0) ;
        if(disp_ms==0)
        {
switch(time_cc)
{
case(0x01): {if (hour==0) hour=0; else hour--; break;}
case(0x02): {if (minit==0) minit=0; else minit-- ;break;}
case(0x03): {if (second==0) second=0; else second--;break;}
default: break;
}
}
else
{
switch(timer_cc)
{
case(0x01): {if(hour1==0) hour1=0; else hour1--;break;}
case(0x02): {if (minit1==0) minit1=0; else minit1--;break;}
case (0x03): {if (second1==0) second1=0; else second1-- ;break;}
default: break;
}}}}}


/*******************************************************************************
* 函數(shù)名         : timer_alam
* 函數(shù)功能                   : 鬧鐘函數(shù)
*******************************************************************************/
void timer_alam(void)
{
        if((disp_ms==0)&&(disp_sd==0))  //正常運(yùn)行時(shí)間的狀態(tài)下
        {
                if((hour1==hour)&&(minit1==minit))
                {
                        speaker=disp_sdt;
                }
else
        {
                if(zhengdian==1)
                {
                speaker=disp_sdt;
                }
                else
                speaker=1;
        }
        }
}


/*******************************************************************************
* 函數(shù)名         : main
* 函數(shù)功能                   :主函數(shù)
*******************************************************************************/
void main(void)
{
        second=0x00;//時(shí)間初始化為 12:00:00
        minit=0x00;
        hour=12;
        count0=0x00;
        count1=0x00;
        P1=0xFF;
        TMOD=0x11;
        TL0=0xba;
        TH0=0x3c;
        TL1=0xba;
        TH1=0x3c;
        EA=1;
        ET0=1;
        ET1=1;
        TR0=1;
        TR1=1;
        while(1)
        {
                key_scan();
                display();
                timer_alam();
        }
}


/*******************************************************************************
* 函數(shù)名         : time0_int
* 函數(shù)功能                   : 中斷函數(shù)T0
*******************************************************************************/
void time0_int(void) interrupt 1
{
                TL0=0xba;
                TH0=0x3c;
                TR0=1;
                count0++ ;
                if(count0==20)
                {
                        count0=0;
                        second++;
                        if(hour_zd==second)  //報(bào)時(shí)到小時(shí)數(shù)后關(guān)閉報(bào)時(shí)標(biāo)志。
                        {
                                zhengdian=0;
                        }
                if(second==60)
                {
                        second=0;
                        minit++;
                        if(minit==60)
                                {
                                        zhengdian=1;//開啟整點(diǎn)報(bào)時(shí)
                                        minit=0;
                                        hour++;
                                        hour_zd=hour;
                                        if(hour_zd>12)
                                                hour_zd=hour_zd-12;        //12小時(shí)制報(bào)時(shí)方式
                                        if(hour==24)
                                        {
                                                hour=0;
                                        }
}}}}


/*******************************************************************************
* 函數(shù)名         : time1_int
* 函數(shù)功能                   : 中斷函數(shù)T1
*******************************************************************************/
void timel_int(void) interrupt 3
{
                TL1=0xba;
                TH1=0x3c;
                TR1=1;
                count1++ ;
                        if(count1==10)
                        {
                                count1=0;
                                disp_sdt=~disp_sdt;
                        }
}







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 中文在线a在线 | 91精品国产综合久久福利软件 | 国产欧美精品一区二区三区 | 亚洲精品丝袜日韩 | 亚洲精品福利在线 | 97人人超碰| 国产精品99久久久精品免费观看 | 99视频入口 | 日本精品裸体写真集在线观看 | 国产精品国产三级国产aⅴ中文 | 欧美日韩理论 | av一区二区三区 | 爱爱免费视频 | 欧美电影免费观看高清 | 美女日批免费视频 | 亚洲精品久久视频 | 成人在线精品视频 | 亚洲精品乱码久久久久久蜜桃91 | av一区二区三区四区 | 欧美日韩国产不卡 | 在线国产小视频 | 亚洲国产一区二区三区 | 99爱免费 | 亚洲精品视频一区二区三区 | 亚洲乱码国产乱码精品精的特点 | 国产乱码精品一品二品 | 最新av中文字幕 | 成人不卡视频 | 欧美电影网| 男女又爽又黄视频 | 欧美激情在线精品一区二区三区 | 亚洲一区二区在线视频 | 91av视频 | 亚洲一区中文字幕 | 中文字幕在线观看 | 欧美一级在线观看 | 欧美激情欧美激情在线五月 | 秋霞电影院午夜伦 | 伊人网综合在线 | 免费一看一级毛片 | 欧美手机在线 |