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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11242|回復: 2
打印 上一主題 下一主題
收起左側(cè)

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

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
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ù)字是幾代表時延時少毫秒
{
    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關閉第一個數(shù)碼管
                num1=temp;
            else                 //后500ms顯示第一個數(shù)碼管的數(shù)
                num1=x1;   
        }            
        P0=duanma[num1];     //顯示小時的十位
        duanxuan=1;
        duanxuan=0;
        P0=weima[1];
        weixuan=1;
        weixuan=0;
        delayms(2);
/////////////////////////////////////   
    if(k1num=1)
        {
            x2=num2;
            if(bb<10)    //前500ms關閉第二個數(shù)碼管
                num2=temp;
            else          //后500ms顯示第二個數(shù)碼管的數(shù)
            num2=x2;   
        }
        P0=duanma[num2];    //顯示小時的個位
        duanxuan=1;
        duanxuan=0;
        P0=weima[2];
        weixuan=1;
        weixuan=0;
        delayms(2);
/////////////////////////////////////////////////   
        P0=0X40;    //在右數(shù)第三個數(shù)碼管輸出“——”符號
        duanxuan=1;
        duanxuan=0;
        P0=weima[3];
        weixuan=1;
        weixuan=0;
        delayms(2);
        P0=0XFF;//清屏

////////////////////////////////////////
        if(k1num=2)
        {
            x3=num3;
            if(bb<10)    //前500ms關閉第四個數(shù)碼管
                num3=temp;
            else            //后500ms顯示第四個數(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關閉第五個數(shù)碼管
                num4=temp;
            else              //后500ms顯示第五個數(shù)碼管的數(shù)
            num4=x4;   
        }      
        P0=duanma[num4];       //顯示分鐘的個位
        duanxuan=1;
        duanxuan=0;
        P0=weima[5];
        weixuan=1;
        weixuan=0;
        delayms(2);
///////////////////////////////////////
   
        P0=0x40;  //左數(shù)第6個數(shù)碼管輸出“——“ 符號
        duanxuan=1;
        duanxuan=0;
        P0=weima[6];
        weixuan=1;
        weixuan=0;
        delayms(2);
        P0=0xff;//清屏
///////////////////////////////
        if(k1num=3)
        {
            x5=num5;
            if(bb<10)    //前500ms關閉第七個數(shù)碼管
                num5=temp;
            else            //后500ms顯示第七數(shù)個碼管的數(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關閉第八個數(shù)碼管
                num6=temp;
            else          //后500ms顯示第八個數(shù)碼管的數(shù)
            num6=x6;   
        }
        P0=duanma[num6];    //顯示秒鐘的個位
        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   計50ms
    TL0=(65536-46080)%256;                    //0.05s=(1/晶振)*12*計數(shù)值,解得計數(shù)值=46080
    EA=1;    //開總中斷
    ET0=1;    //允許定時器0中斷
    TR0=1;     //定時器0開始工作
}
/*void guanbiao(uchar k1num,uchar numx)      //數(shù)碼管位閃爍函數(shù)
{
    uchar k;
    if(k==k1num)       //功能鍵按下       該為閃爍
    {
        x1=num1;
        if(bb<10)    //前500ms關閉第一個數(shù)碼管
            num1=temp;
        else                 //后500ms顯示第一個數(shù)碼管的數(shù)
            num1=x1;   
        }
} */
void scankey()
{
    if(k1==0)     //光標指示
    {
        delayms(5);
        if(k1==0)     //延時去抖
        {
            while(!k1);  //等待按鍵放開
            k1num=1;      //指示在小時兩位
            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按下時加1   
        {
            delayms(5);
            if(k2==0)
            {
                while(!k2);
                if(k1num==1)   //光標在小時位
                {    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按下時減1   
        {
            delayms(5);
            if(k3==0)
            {
                while(!k3);
                if(k1num==1)   //光標在小時位
                {    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;        //取個位
        fenshi=fen/10;
        fenge=fen%10;
        shishi=shi/10;
        shige=shi%10;
        display(shishi,shige,fenshi,fenge,miaoshi,miaoge);   
    }  
}

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

評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:284307 發(fā)表于 2018-2-17 17:27 | 只看該作者
新新菜鳥一枚,請問uchar aa,bb,shishi,shige,fenshi,fenge,miaoge,miaoshi,temp,shi,fen,miao,k1num=0;
這一串都設定成什么意思?uchar temp=0x00,x1,x2,x3,x4,x5,x6;while(aa!=20)  這一段為什么這樣做?
回復

使用道具 舉報

板凳
ID:140489 發(fā)表于 2018-3-2 14:13 | 只看該作者
程序都沒調(diào)好的就不要發(fā)到論壇來了,免得誤導別人
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产91久久综合桃花 | 国产成人精品免费视频大全最热 | 国产精品久久久久久久三级 | 日韩久草| 亚洲淫视频 | 国内自拍视频在线观看 | 国产精品污污视频 | 天天搞夜夜操 | 日韩av一区在线观看 | 国产欧美三区 | 国产目拍亚洲精品99久久精品 | 午夜精品一区二区三区免费视频 | 日本视频中文字幕 | 欧美久久一区 | 国产精品视频一二三区 | 龙珠z国语版在线观看 | 亚洲天堂一区二区 | 欧洲精品久久久久毛片完整版 | 国产成人精品一区二区三区网站观看 | 蜜臀av日日欢夜夜爽一区 | 亚洲黄色av | 干狠狠 | 亚洲国产aⅴ精品一区二区 免费观看av | 亚洲国产精品区 | 日本黄色影片在线观看 | 在线视频一区二区 | 久久精品久久综合 | 久久综合888 | 免费观看黄色片视频 | 日韩精品不卡 | 精品久| 久久久久久久夜 | 欧洲精品久久久久毛片完整版 | 欧美一区二区三区在线看 | 日韩 欧美 二区 | 人人澡视频 | 日韩免费视频一区二区 | 久久国产婷婷国产香蕉 | 婷婷精品| 久久精品亚洲 | 亚洲国产成人av |