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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

51單片機(jī)(定時(shí)器中斷法時(shí)鐘 、數(shù)碼管顯示)

[復(fù)制鏈接]
ID:145763 發(fā)表于 2016-11-2 18:43 | 顯示全部樓層 |閱讀模式
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit duanxuan=P2^6;
sbit weixuan=P2^7;
sbit k1=P3^4;
sbit k2=P3^5;
sbit k3=P3^6;
uchar code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; //0-9的數(shù)字碼
uchar code weima[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};   
uchar aa,bb,shishi,shige,fenshi,fenge,miaoge,miaoshi,temp,shi,fen,miao,k1num=0;

void delayms(uint ms)  //延時(shí)函數(shù),數(shù)字是幾代表時(shí)延時(shí)少毫秒
{
    uint i,j;
    for(i=ms;i>0;i--)
        for(j=112;j>0;j--);
}
void display(uchar num1,uchar num2,uchar num3,uchar num4,uchar num5,uchar num6)     //數(shù)碼管顯示函數(shù)
{
    uchar temp=0x00,x1,x2,x3,x4,x5,x6;
    while(aa!=20)      //數(shù)碼管循環(huán)掃描
    {
/////////////////////////////
        if(k1num=1)       //功能鍵按下       該為閃爍
        {
            x1=num1;
            if(bb<10)    //前500ms關(guān)閉第一個(gè)數(shù)碼管
                num1=temp;
            else                 //后500ms顯示第一個(gè)數(shù)碼管的數(shù)
                num1=x1;   
        }            
        P0=duanma[num1];     //顯示小時(shí)的十位
        duanxuan=1;
        duanxuan=0;
        P0=weima[1];
        weixuan=1;
        weixuan=0;
        delayms(2);
/////////////////////////////////////   
    if(k1num=1)
        {
            x2=num2;
            if(bb<10)    //前500ms關(guān)閉第二個(gè)數(shù)碼管
                num2=temp;
            else          //后500ms顯示第二個(gè)數(shù)碼管的數(shù)
            num2=x2;   
        }
        P0=duanma[num2];    //顯示小時(shí)的個(gè)位
        duanxuan=1;
        duanxuan=0;
        P0=weima[2];
        weixuan=1;
        weixuan=0;
        delayms(2);
/////////////////////////////////////////////////   
        P0=0X40;    //在右數(shù)第三個(gè)數(shù)碼管輸出“——”符號(hào)
        duanxuan=1;
        duanxuan=0;
        P0=weima[3];
        weixuan=1;
        weixuan=0;
        delayms(2);
        P0=0XFF;//清屏

////////////////////////////////////////
        if(k1num=2)
        {
            x3=num3;
            if(bb<10)    //前500ms關(guān)閉第四個(gè)數(shù)碼管
                num3=temp;
            else            //后500ms顯示第四個(gè)數(shù)碼管的數(shù)
            num3=x3;   
        }     
        P0=duanma[num3];   //顯示分鐘的十位
        duanxuan=1;
        duanxuan=0;
        P0=weima[4];
        weixuan=1;
        weixuan=0;
        delayms(1);
///////////////////////////////
        if(k1num=2)
        {
            x4=num4;
            if(bb<10)    //前500ms關(guān)閉第五個(gè)數(shù)碼管
                num4=temp;
            else              //后500ms顯示第五個(gè)數(shù)碼管的數(shù)
            num4=x4;   
        }      
        P0=duanma[num4];       //顯示分鐘的個(gè)位
        duanxuan=1;
        duanxuan=0;
        P0=weima[5];
        weixuan=1;
        weixuan=0;
        delayms(2);
///////////////////////////////////////
   
        P0=0x40;  //左數(shù)第6個(gè)數(shù)碼管輸出“——“ 符號(hào)
        duanxuan=1;
        duanxuan=0;
        P0=weima[6];
        weixuan=1;
        weixuan=0;
        delayms(2);
        P0=0xff;//清屏
///////////////////////////////
        if(k1num=3)
        {
            x5=num5;
            if(bb<10)    //前500ms關(guān)閉第七個(gè)數(shù)碼管
                num5=temp;
            else            //后500ms顯示第七數(shù)個(gè)碼管的數(shù)
            num5=x5;   
        }   
        P0=duanma[num5];       //顯示秒鐘的十位
        duanxuan=1;
        duanxuan=0;
        P0=weima[7];
        weixuan=1;
        weixuan=0;
        delayms(2);
////////////////////////////////////////////
        if(k1num=3)
        {
            x6=num6;
            if(bb<10)    //前500ms關(guān)閉第八個(gè)數(shù)碼管
                num6=temp;
            else          //后500ms顯示第八個(gè)數(shù)碼管的數(shù)
            num6=x6;   
        }
        P0=duanma[num6];    //顯示秒鐘的個(gè)位
        duanxuan=1;
        duanxuan=0;
        P0=weima[8];
        weixuan=1;
        weixuan=0;
        delayms(2);
     }

}
void init()     //中斷初始化函數(shù)
{
    aa=0;
    miao=0;
    fen=10;
    shi=18;
    TMOD=0X01;
    TH0=(65536-46080)/256;  //晶振為11.05926MHZ   計(jì)50ms
    TL0=(65536-46080)%256;                    //0.05s=(1/晶振)*12*計(jì)數(shù)值,解得計(jì)數(shù)值=46080
    EA=1;    //開(kāi)總中斷
    ET0=1;    //允許定時(shí)器0中斷
    TR0=1;     //定時(shí)器0開(kāi)始工作
}
/*void guanbiao(uchar k1num,uchar numx)      //數(shù)碼管位閃爍函數(shù)
{
    uchar k;
    if(k==k1num)       //功能鍵按下       該為閃爍
    {
        x1=num1;
        if(bb<10)    //前500ms關(guān)閉第一個(gè)數(shù)碼管
            num1=temp;
        else                 //后500ms顯示第一個(gè)數(shù)碼管的數(shù)
            num1=x1;   
        }
} */
void scankey()
{
    if(k1==0)     //光標(biāo)指示
    {
        delayms(5);
        if(k1==0)     //延時(shí)去抖
        {
            while(!k1);  //等待按鍵放開(kāi)
            k1num=1;      //指示在小時(shí)兩位
            if(k1==0)
            {
                delayms(5);
                if(k1==0)
                {
                    while(!k1);
                    k1num=2;       //指示在分鐘兩位
                    if(k1==0)
                    {
                        delayms(5);
                        if(k1==0)
                        {
                            while(!k1);
                            k1num=3;       //指示在秒鐘兩位
                        }
                    }
                }
            }   
        }
        if(k2==0)    //k2按下時(shí)加1   
        {
            delayms(5);
            if(k2==0)
            {
                while(!k2);
                if(k1num==1)   //光標(biāo)在小時(shí)位
                {    shi++;
                    if(shi==24)
                        shi=0;
                }
                if(k1num==2)
                {
                    fen++;
                    if(fen==60)
                        fen=0;
                }
                if(k1num==3)
                {
                    miao++;
                    if(miao==60)
                        miao=0;
                }
            }
        }
/*        if(k3==0)    //k3按下時(shí)減1   
        {
            delayms(5);
            if(k3==0)
            {
                while(!k3);
                if(k1num==1)   //光標(biāo)在小時(shí)位
                {    shi--;
                    if(shi==-1)
                        shi=23;
                }
                if(k1num==2)
                {
                    fen--;
                    if(fen==-1)
                        fen=59;
                }
                if(k1num==3)
                {
                    miao--;
                    if(miao==-1)
                        miao=59;
                }
            }
        } */
    }
}

void main()
{
    init();      //初始化
    while(1)
    {      
        if(aa==20)
        {
            aa=0;
            miao++;
            if(miao==60)
            {
                miao=0;
                fen++;
                if(fen==60)
                {   
                    fen=0;
                    shi++;
                    if(shi==24)
                        shi=0;
                }
            }
        }
        miaoshi=miao/10; //取十位
        miaoge=miao%10;        //取個(gè)位
        fenshi=fen/10;
        fenge=fen%10;
        shishi=shi/10;
        shige=shi%10;
        display(shishi,shige,fenshi,fenge,miaoshi,miaoge);   
    }  
}

void timer_() interrupt 1         //定時(shí)器中斷函數(shù)  
{
    TH0=(65536-46080)/256;
    TL0=(65536-46080)%256;    //定時(shí)50ms
    aa++;
    bb++;//用于閃爍
    if(bb==20)
        bb=0;
}

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:284307 發(fā)表于 2018-2-17 17:27 | 顯示全部樓層
新新菜鳥(niǎo)一枚,請(qǐng)問(wèn)uchar aa,bb,shishi,shige,fenshi,fenge,miaoge,miaoshi,temp,shi,fen,miao,k1num=0;
這一串都設(shè)定成什么意思?uchar temp=0x00,x1,x2,x3,x4,x5,x6;while(aa!=20)  這一段為什么這樣做?
回復(fù)

使用道具 舉報(bào)

ID:140489 發(fā)表于 2018-3-2 14:13 | 顯示全部樓層
程序都沒(méi)調(diào)好的就不要發(fā)到論壇來(lái)了,免得誤導(dǎo)別人
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频免费在线观看 | 伊人狠狠操 | 中文字幕日韩一区二区 | 99亚洲精品| 国产91在线视频 | 欧美三级在线 | 91精品成人久久 | 精品国产一区二区三区日日嗨 | 欧美激情一区二区三区 | 国产精品一区二区三区免费观看 | 欧美精品久久 | 超碰97av | 欧美成人久久 | 日韩欧美在线观看 | 午夜伦4480yy私人影院 | 欧美在线亚洲 | 久久久成人动漫 | 中文字幕一区二区三区四区五区 | 9999视频| 日韩a视频| 国产精品s色 | 国产精品视频yy9299一区 | 自拍偷拍一区二区三区 | 国内精品免费久久久久软件老师 | 四虎影院免费在线播放 | 一区二区三区亚洲 | 在线播放中文 | 久久国产一区二区三区 | www.99热.com| 久久精品久久久 | 亚洲精品一区国语对白 | 国产精品爱久久久久久久 | 亚洲三区在线观看 | 伊人久久综合 | 精品日韩一区二区 | 国产福利视频在线观看 | 日韩欧美二区 | 亚洲精品女优 | 精品一区av | 日韩精品一区二区三区在线播放 | 成人网址在线观看 |