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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2807|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

請問各位大神如果讓數(shù)碼管0-60增加程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:218360 發(fā)表于 2017-9-20 20:48 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
    附件里的是我的開發(fā)板原理圖,P0口接到J12位置,由595鎖存器供給段顯,P1直接接到到J16端口,單片機用的是STC90C516RC+。我可以正常點亮數(shù)碼管,就是不會怎么讓數(shù)碼管從0-60自動增加,到60后再重復(fù)0-60.請各位大神寫下這個程序,最好注釋下發(fā)給我,可以發(fā)我郵箱353898172@qq.com.本人正在學(xué)習(xí)單片機,學(xué)到這來就卡住了,死活不知道怎么來控制這個數(shù)碼管。請給位大神幫幫忙。

數(shù)碼管.png (134.96 KB, 下載次數(shù): 62)

數(shù)碼管

數(shù)碼管
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:213173 發(fā)表于 2017-9-21 07:09 | 只看該作者
給你一個數(shù)碼管時鐘程序,有詳細注釋,只要把按鍵I/O口對照實際電路改一下就可以直接使用。
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit K1 = P3^5;                        //小時+
sbit K2 = P3^6;                        //分鐘+
sbit K3 = P3^7;                        //秒清0
sbit A0=P1^0;                        //位A
sbit A1=P1^1;
sbit A2=P1^2;
sbit A3=P1^3;
sbit A4=P1^4;
sbit A5=P1^5;
sbit A6=P1^6;
sbit A7=P1^7;

uchar code table[]={                //共陰數(shù)碼管0~F數(shù)組
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71,0x40};
uint Cnt100us;                                //定義100微秒變量
uchar hour=12,min=0,sec=0;//定義時、分、秒變量

/**************************************
        定時器0初始化程序 100微秒@12.000MHz
**************************************/

void Timer0Init()                //100微秒@12.000MHz
{
        TMOD = 0x02;                //設(shè)置自動重載模式
        TL0 = 0x9C;                        //設(shè)置定時初值
        TH0 = 0x9C;                        //設(shè)置定時重載值
        TF0 = 0;                                //清除TF0標(biāo)志
        TR0 = 1;                                //定時器0開始計時
}
/************************************
        計時子程序
************************************/
void Time()       
{
        if(TF0==1)                                        //如果查詢定時器溢出標(biāo)志TF0為1
        {                                                        //定時器溢出周期100us
                TF0=0;                                        //定時器溢出標(biāo)志TF0清0
                Cnt100us++;                                //時間變量Cnt100us自+1
                if(Cnt100us>=10000)                //在此增減可以按萬分之一秒調(diào)整精度
                {
                        Cnt100us=0;                                //變量Cnt100us清0
                        sec++;                                        //秒自+1
                        if(sec>=60)                                //如果秒>=60
                        {
                                sec=0;                                //秒清0
                                min++;                                //分自+1
                                if(min>=60)                        //分>=60
                                {
                                        min=0;                        //分清0
                                        hour++;                  //小時自+1
                                        if(hour>=24)        //小時>=24
                                                hour=0;                //小時清0
                                }
                        }
                }
        }
}
/*************************
          按鍵掃描程序
*************************/
void key_scan()
{
        static bit key1_sign,key2_sign,key3_sign;        //按鍵自鎖標(biāo)志變量
        static uchar count1,count2,count3=0;                //消抖計數(shù)變量                       

        if(K1==1)                                        //檢測按鍵1沒有按下
        {
                key1_sign=0;                        //按鍵1自鎖標(biāo)志清0
                count1=0;                                //消抖計數(shù)1清0
        }
        else                                                        //按鍵1按下
        {
                count1++;                                //消抖計數(shù)1自+1
                if(count1>=200)                        //200次檢測按鍵如果為0
                {                       
                        count1=200;                        //防止溢出
                        if(key1_sign==0)        //按鍵1自鎖標(biāo)志為0
                        {
                                key1_sign=1;        //按鍵1自鎖標(biāo)志置1
                                hour++;                        //小時自+1
                                if(hour>=24)        //小時>=24
                                        hour=0;                //小時清0
                        }
                }
        }

        if(K2==1)                                        //檢測按鍵2沒有按下
        {
                key2_sign=0;                        //按鍵2自鎖標(biāo)志清0
                count2=0;                                //消抖計數(shù)2清0
        }
        else                                                        //按鍵2按下
        {
                count2++;                                //消抖計數(shù)2自+1
                if(count2>=200)                        //200次檢測按鍵如果為0
                {                       
                        count2=200;                        //防止溢出
                        if(key2_sign==0)        //按鍵2自鎖標(biāo)志為0
                        {
                                key2_sign=1;        //按鍵2自鎖標(biāo)志置1
                                min++;                        //分自+1
                                if(min>=60)                //分>=60
                                        min=0;                //分清0
                        }
                }
        }
        if(K3==1)                                        //檢測按鍵3沒有按下
        {
                key3_sign=0;                        //按鍵3自鎖標(biāo)志清0
                count3=0;                                //消抖計數(shù)2清0
        }
        else                                                        //按鍵3按下
        {
                count3++;                                //消抖計數(shù)3自+1
                if(count3>=200)                        //200次檢測按鍵如果為0
                {                       
                        count3=200;                        //防止溢出
                        if(key3_sign==0)        //按鍵3自鎖標(biāo)志為0
                        {
                                key3_sign=1;        //按鍵3自鎖標(biāo)志置1
                                Cnt100us= 0;        //100微秒變量清0
                                sec = 0;                        //秒清0
                        }
                }
        }
}
/********************************
        顯示程序  
********************************/
void display()
{
        static uchar xx=0;        //時分顯示變量
        static uchar yy=0;        //計數(shù)延時變量
        yy++;       
        if(yy>=60)        //1~255可調(diào),數(shù)碼管閃爍可減小,有鬼影可加大
        {
                yy=0;
                switch(xx)
                {
                        case 0:
                        P0=0x00;                        //消隱
                        P1=0xfe;                        //顯示時十位位碼
                        P0=table[hour/10];                //顯示時十位段碼
                        xx=1;
                        break;       
                       
                        case 1:
                        P0=0x00;
                        P1=0xfd;                        //顯示時個位位碼
                        P0=table[hour%10];                //顯示時個位段碼
                        xx=2;
                        break;       
                       
                        case 2:
                        P0=0x00;
                        P1=0xfb;                        //顯示時-
                        P0=table[16];                //顯示時-
                        xx=3;
                        break;       
                       
                        case 3:
                        P0=0x00;
                        P1=0xf7;                        //顯示時十位位碼
                        P0=table[min/10];                //顯示分十位段碼
                        xx=4;
                        break;       
                       
                        case 4:
                        P0=0x00;
                        P1=0xef;                        //顯示分個位位碼
                        P0=table[min%10];                //顯示分個位段碼
                        xx=5;
                        break;       
                       
                        case 5:
                        P0=0x00;
                        P1=0xdf;                        //顯示分-
                        P0=table[16];                //顯示分-
                        xx=6;
                        break;       
                       
                        case 6:
                        P0=0x00;
                        P1=0xbf;                        //顯示秒十位位碼
                        P0=table[sec/10];                //顯示秒十位段碼
                        xx=7;
                        break;       
                       
                        case 7:
                        P0=0x00;
                        P1=0x7f;                        //顯示秒個位位碼
                        P0=table[sec%10];                //顯示秒個位段碼
                        xx=0;
                        break;       
                }
        }
}

/********************************
                主程序
********************************/
void main(void)
{
        Timer0Init();        //初始化定時器
        while(1)
        {
                key_scan();//按鍵掃描
                Time();                //計時
                display();        //顯示
        }
}




回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久免费高清 | 91看国产| 久久久久久久久久久久久久av | 日日干日日射 | 少妇诱惑av | 精品国产一区二区三区久久狼黑人 | 成人免费网站 | av在线亚洲天堂 | 成人一区二区三区在线观看 | 久久久久久美女 | 大象视频一区二区 | 视频在线一区 | 亚洲国产成人精品女人久久久 | 成人亚洲网站 | 一级片片 | 日本天堂一区二区 | 亚洲国产成人精品久久久国产成人一区 | 成人精品一区二区三区中文字幕 | 在线中文字幕av | 女同久久另类99精品国产 | 欧美高清成人 | 久久久久国产精品 | 日韩成人免费 | 国产精品久久久久久网站 | 精品一区二区三区av | 国产精品一区二区在线播放 | 99免费 | 噜噜噜噜狠狠狠7777视频 | 91精品久久 | 男女免费网站 | 91av视频在线播放 | 精品一区二区三区在线观看国产 | 亚洲视频在线一区 | 中文字幕亚洲在线 | 男人的天堂中文字幕 | 中文字幕日韩三级 | 成人网视频 | av网站免费看 | 成人欧美一区二区三区在线播放 | 综合二区 | av片网站 |