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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機計時和點亮燈的功能沒法同時發(fā)生

查看數(shù): 2100 | 評論數(shù): 3 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2018-6-10 00:03

正文摘要:

這是我自己設計的計時和點亮三個小燈的設計,現(xiàn)在發(fā)現(xiàn)計時和點亮小燈沒法同時實現(xiàn). 遇到的問題如下: 1.假如我把led_display程序發(fā)在while語句最后一行,會發(fā)生數(shù)碼管前五位會隨著小燈一起閃爍 ...

回復

ID:264029 發(fā)表于 2018-6-10 18:53
wulin 發(fā)表于 2018-6-10 06:43
因為你使用delay處理兩個程序,就會產(chǎn)生互相干擾。你把數(shù)碼管動態(tài)顯示放在中斷里,中斷時間改為1ms就不會互 ...

問題解決了,謝謝解答。
ID:168971 發(fā)表于 2018-6-10 14:58
放在中斷里試試,弄個標志位,應該可以
ID:213173 發(fā)表于 2018-6-10 06:43
因為你使用delay處理兩個程序,就會產(chǎn)生互相干擾。你把數(shù)碼管動態(tài)顯示放在中斷里,中斷時間改為1ms就不會互相干擾了。
#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int

uchar code dispcode[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};   /*七段共陰管顯示定義*/

uchar seconde=0;   /*定義并初始化變量*/
uchar minite=0;
uchar hour=0;
uint mstcnt=0;

/*函數(shù)聲明*/
void delay(uchar k );             //延時子程序
void time_pro( );          //時間處理子程序
void display( );           //顯示子程序
void keyscan( );           //鍵盤掃描子程序
void led_display( );           // led閃爍程序

/*****************************/
/*led燈閃爍程序*/
/****************************/
void led_display(void)
{
        delay(50);     //led燈閃爍三次后熄滅
        P2=0x07;       //賦初始值
        delay(50);
        P2=0x00;
        delay(50);
        P2=0x07;
        delay(50);
        P2=0x00;
        delay(50);
        P2=0x07;
        delay(50);
        P2=0x00;  
}

/*****************************/
/*延時子程序*/
/****************************/
void delay (uchar k)
{
        uchar j;
        while((k--)!=0)
        {
                for(j=0;j<125;j++)
                {;}
        }
}

/**************************/
/*時間處理子程序*/
/**************************/
void time_pro( void)
{
        if(seconde==60)                  //秒鐘設為60進制
        {
                seconde=0;
                minite++;
                if(minite==60)              //分鐘設為60進制
                {
                        minite=0;
                        hour++;
                        if(hour==24)              //時鐘設為24進制       
                        {
                                hour=0;
                        }
                }
        }
}

/*****************************/
/* 顯示子程序*/
/*****************************/
void display()
{
        static uchar i=0;
        P0=0x00; //消隱
        switch(i)
        {
                case 0: P1=0xfe;
                                P0=dispcode[hour/10];//顯示小時的十位
                                i++;
                                break;

                case 1: P1=0xfd;
                                P0=(dispcode[(hour%10)])|0X80;//顯示小時的個位
                                i++;
                                break;

                case 2: P1=0xfb;
                                P0=dispcode[minite/10];//顯示分的十位
                                i++;
                                break;

                case 3: P1=0xf7;
                                P0=(dispcode[minite%10])|0X80;//顯示分的個位
                                i++;
                                break;

                case 4: P1=0xef;
                                P0=dispcode[seconde/10];//顯示秒的十位
                                i++;
                                break;

                case 5: P1=0xdf;
                                P0=dispcode[seconde%10];//顯示秒的個位
                                i=0;
                                break;
        }
}


/**************************/
/*主函數(shù)*/
/**************************/
void main(void)
{   
        P1=0xff;                //初始化p1口,全設為1  
        TMOD=0x01;            //time0為定時器,方式1
        TH0=0xfc;               //預置計數(shù)初值1ms
        TL0=0x18;
        EA=1;
        ET0=1;
        TR0=1;
        while (1)
        {      
                led_display( );         //led燈閃爍
                time_pro( );   //時間處理
//                display( );    //顯示時間
        }
}
void timer0(void) interrupt 1 using 0     //定時器0方式1,50ms中斷一次
{
        TH0=0xfc;               //重置計數(shù)初值1ms
        TL0=0x18;
        mstcnt++;
        if(mstcnt>=1000)
        {
                seconde++;
                mstcnt=0;   
        }               
        display( );    //顯示時間
}



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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日日摸夜夜爽人人添av | 精品久久久久久久久久久久久久 | 日本精品视频在线 | 丝袜一区二区三区 | 欧美日韩在线看 | 欧美性猛交一区二区三区精品 | 一区精品视频在线观看 | 日日夜夜天天 | 国产精品免费一区二区 | 亚洲国产高清高潮精品美女 | 91五月天 | 欧美精品一区二区三区在线四季 | 国产成人精品区一区二区不卡 | 一区二区播放 | 日韩欧美理论片 | 欧产日产国产精品国产 | 久久神马| 伊人天堂网 | 亚洲精品久久久久久久久久久久久 | 日本成人二区 | 欧美精品日韩 | 国产在线精品一区二区三区 | 日本在线黄色 | 国产区免费视频 | 国产精品国产精品国产专区不片 | 一区二区三区国产 | 日韩久久久久久久久久久 | 国产日韩免费视频 | 精品中文字幕在线观看 | 精品国产色 | 亚洲高清av在线 | 无码国模国产在线观看 | 久久精品成人 | 欧美极品在线 | 亚洲狠狠爱一区二区三区 | 久久久久久成人网 | 日韩欧美在线视频播放 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 久久男人 | 99精品欧美一区二区三区 | 国产一级一级 |