欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用定時器和數(shù)碼管實現(xiàn)簡易秒計時器

CHANBAEK ? 來源: Zi Jin Code ? 作者: 錕醬不是醬 ? 2023-11-02 10:50 ? 次閱讀

從今天開始,我們利用上前幾天學(xué)習(xí)的定時器數(shù)碼管,一起設(shè)計一個簡單的秒計時器

項目工作流程:單片機開機機器自動啟動計時器,計時器從0開始計時,每一秒加一,直到9999后自動復(fù)位成0000。

這個項目中我們使用到數(shù)碼管和單片機C51的Timer0,定時器每次定時5ms,每次滿5ms的時候輸出一次一位的顯示,同時數(shù)碼管位控為一一位,移到最后一位數(shù)碼管就自動回到第一位,累計計滿200次5ms(也就是1秒以后),計時器+1,直到9999

我們用一個數(shù)組存下寄存器的數(shù)值,這個數(shù)組是Time[4],其中Time[0]對應(yīng)個位,Time[1]對應(yīng)十位,Time[2]對應(yīng)百位,Time[3]對應(yīng)千位

計算出初始值為60928,換算

TH0 = 0xEE;
TL0 = 0x00;

整個項目的電路圖:

圖片

這里不得不提醒一下,我們之前設(shè)計的電路圖中,左邊的數(shù)碼管是第一位

圖片

//從左往右數(shù):最左邊第一位數(shù)碼管,接下來是二,三,四


sbit Smg_1 = P2^0;//第一位數(shù)碼管接在P2.0
sbit Smg_2 = P2^1;//第一位數(shù)碼管接在P2.1
sbit Smg_3 = P2^2;//第一位數(shù)碼管接在P2.2
sbit Smg_4 = P2^3;//第一位數(shù)碼管接在P2.3


//整個數(shù)碼管取模
unsigned char code Smgbit[] = {0xFE,0XFD,0xFB,0xF7};

現(xiàn)在,為了讓數(shù)碼管配合我們存放時間的變量Time[],所以我們換了一下數(shù)碼管的位,現(xiàn)在是左邊第一位是第一位

圖片

不過這個大家不用記住,我們的工程用到的時候要我會跟大家說的,所以本工程中的數(shù)碼管的位控

//從左往右數(shù):最左邊第一位數(shù)碼管,接下來是二,三,四


sbit Smg_1 = P2^3;//第一位數(shù)碼管接在P2.0
sbit Smg_2 = P2^2;//第一位數(shù)碼管接在P2.1
sbit Smg_3 = P2^1;//第一位數(shù)碼管接在P2.2
sbit Smg_4 = P2^0;//第一位數(shù)碼管接在P2.3


//整個數(shù)碼管取模
unsigned char code Smgbit[] = {0xF7,0xFB,0XFD,0xFE};

程序大概流程(畫的有點丑,見諒):

圖片

程序框圖:

圖片

代碼:

//這個代碼展示的是一個0~9999秒的計時器
#include< reg52.h >


unsigned char Time[4] = {0,0,0,0};//我們的計時器時間的變量
//這四個TIME元素分別代表千位(TIME(3))百位(TIME(2))十位(TIME(1))個位(TIME(0))
//----------------------------------------------------------------


//----------------------------------------------------------------


unsigned char code Smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//數(shù)碼管取模


unsigned char code Smgbit[] = {0xF7,0xFB,0XFD,0xFE};
//數(shù)碼管位控
//操作的時候直接用P2 = Smgbit[0~3]對應(yīng)1~4位數(shù)碼管


unsigned char SmgSelect = 0;//數(shù)碼管選位
//這里不得不特別說明
//SmgSelect不僅僅是控制我們的數(shù)碼管位控,還控制著數(shù)碼管顯示時對描述位置的選位操作


//Smgbit  0  1  2  3
//數(shù)碼管  1  2  3  4 位
//秒數(shù)   個 十  百 千


//----------------------------------------------------------------


unsigned char TimerCount = 0;//這個變量記錄定時器定時溢出次數(shù)
//(定時器一次定時5ms)
//----------------------------------------------------------------




  unsigned char a = 0;
//----------這個是一個臨時變量
void main()
{//注意設(shè)置定時器初始值要在main函數(shù)里面設(shè)置

  TMOD = 0x01;

  /*設(shè)置定時器模式寄存器TMOD為 0000 0001
  GATE = 0
  C/T = 0
  M1 =0
  M0 = 1
  標準16位定時器
  */

  //先設(shè)置定時器初始值,我們一次延遲5ms,計算得初始值為60928
  TL0 = 0x00;//設(shè)置定時器初始值低位
  TH0 = 0xEE;//設(shè)置定時器初始值高位

  TR0 = 1;//記得一定要設(shè)置定時器開啟
  while(1)
  {
    if (TF0 == 1)
      { 
        P2 =  0xFF;//注意每次寫數(shù)碼管之前都要把所有的數(shù)碼管關(guān)閉


        a = Time[SmgSelect];
        P0 = Smg[a];
        //這個過程先從Time[]里面取出位數(shù)的數(shù)值
        //再把這個數(shù)值送到Smgbit里面選擇出這位數(shù)對應(yīng)的數(shù)碼管取模
        //最后把這個取模的數(shù)據(jù)送給P0 IO組,顯示
        P2 = Smgbit[SmgSelect];
        //選擇數(shù)碼管位置

        SmgSelect++;

        if (SmgSelect >3){SmgSelect = 0;}//如果選位變量超過3,歸零

        TimerCount++;

        if(TimerCount > 200)
        {
          Time[0]++;
          TimerCount = 0;
          //檢測第一位有沒有滿
          if(Time[0] >9)
          {
            Time[0] = 0;
            Time[1]++;
          }
          //檢測第二位有沒有滿
          if(Time[1] >9)
          {
            Time[1] = 0;
            Time[2]++;
          }
          //檢測第三位有沒有滿
          if(Time[2] >9)
          {
            Time[2] = 0;
            Time[3]++;
          }
          //檢測第三位有沒有滿
          if(Time[3] >9)
          {
            Time[3] = 0;
          }    
        }
        TL0 = 0x00;//設(shè)置定時器初始值低位
        TH0 = 0xEE;//設(shè)置定時器初始值高位
        TF0 = 0;//設(shè)置好初始值后再復(fù)位定時器
      }
  }
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6043

    文章

    44623

    瀏覽量

    638788
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5367

    瀏覽量

    121222
  • 數(shù)碼管
    +關(guān)注

    關(guān)注

    32

    文章

    1887

    瀏覽量

    91434
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3256

    瀏覽量

    115410
收藏 人收藏

    評論

    相關(guān)推薦

    4位數(shù)碼管計時器

    4位數(shù)碼管計時器
    發(fā)表于 04-12 00:33

    定時器問題

    我用兩個定時器到數(shù)計時,通過數(shù)碼管來顯示,第一個計時器正常計時,可是第二個60,
    發(fā)表于 11-06 16:20

    通過定時器來控制跑時間間隔,數(shù)碼管的動態(tài)顯示能實現(xiàn)

    大大……通過定時器來控制跑的時間間隔,然后用其中兩個數(shù)碼管來顯示!這個用數(shù)碼管的動態(tài)顯示能實現(xiàn)嗎?請各位大大們教教小弟……如圖
    發(fā)表于 05-12 23:40

    數(shù)碼管10計時程序

    數(shù)碼管10計時程序,C51單片機之數(shù)碼管實現(xiàn)99計時
    發(fā)表于 07-14 07:50

    51單片機如何實現(xiàn)數(shù)碼管99計時

    51單片機99計時C語言源程序51單片機實現(xiàn)數(shù)碼管99計時,其實很簡單,就是使用
    發(fā)表于 07-15 06:25

    基于單片機的時鐘計時器系統(tǒng)設(shè)計與制作 精選資料分享

    基于單片機的時鐘計時器系統(tǒng)設(shè)計與制作[摘要]這次課程設(shè)計以STC89C51單片機為核心,輔以必要的電路,設(shè)計了一個簡易的電子時鐘,它由5V直流電源供電,通過數(shù)碼管能夠準確顯示時間,調(diào)整時間,從而到達
    發(fā)表于 07-21 07:47

    請問51單片機定時器數(shù)碼管如何實現(xiàn)9999到0的倒計時C語言?

    請問51單片機定時器數(shù)碼管如何實現(xiàn)9999到0的倒計時C語言?
    發(fā)表于 10-14 06:02

    基于單片機的綜合應(yīng)用程序數(shù)碼管【C語言】定時器控制數(shù)碼管

    基于單片機的綜合應(yīng)用程序數(shù)碼管【C語言】定時器控制數(shù)碼管
    發(fā)表于 01-06 13:44 ?27次下載

    基于8051的Proteus仿真-定時器控制數(shù)碼管顯示

    基于8051的Proteus仿真-定時器控制數(shù)碼管顯示
    發(fā)表于 09-01 23:33 ?19次下載

    定時器1計數(shù),數(shù)碼管顯示0-999程序代碼【下載】

    定時器1計數(shù),數(shù)碼管顯示0-999
    發(fā)表于 12-20 14:23 ?18次下載

    51單片機+4位數(shù)碼管計時器按鍵可調(diào)節(jié)

    51單片機+4位數(shù)碼管計時器按鍵可調(diào)節(jié)4位數(shù)碼管計時,采用定時器proteus仿真源代碼#in
    發(fā)表于 11-20 10:36 ?29次下載
    51單片機+4位<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>計時器</b>按鍵可調(diào)節(jié)

    51單片機數(shù)碼管顯示60計時(C語言)

    51單片機數(shù)碼管顯示60計時基于普中51單片機開發(fā)板,運用定時器/計數(shù)0和1,實現(xiàn)60
    發(fā)表于 11-21 17:21 ?71次下載
    51單片機<b class='flag-5'>數(shù)碼管</b>顯示60<b class='flag-5'>秒</b>倒<b class='flag-5'>計時</b>(C語言)

    STM32+Proteus仿真實現(xiàn)滴答定時器計時和數(shù)碼管實時顯示功能

    STM32+Proteus仿真實現(xiàn)滴答定時器計時和數(shù)碼管實時顯示功能
    發(fā)表于 11-24 21:06 ?73次下載
    STM32+Proteus仿真<b class='flag-5'>實現(xiàn)</b>滴答<b class='flag-5'>定時器</b><b class='flag-5'>計時</b><b class='flag-5'>和數(shù)碼管</b>實時顯示功能

    EDA程序設(shè)計之計時器設(shè)計

    計時器的設(shè)計1. 設(shè)計任務(wù) 設(shè)計并制作一臺計時器。2. 設(shè)計要求① 用EDA實訓(xùn)儀的I/O設(shè)備和PLD芯片實現(xiàn)計時器的設(shè)計。② 計時器能夠顯
    發(fā)表于 08-22 10:16 ?2次下載

    用555定時器怎樣實現(xiàn)15計時電路?

    用555定時器怎樣實現(xiàn)15計時電路 555定時器是一種常用的集成電路,它可以將電路中的電壓信號轉(zhuǎn)換為周期性的脈沖信號或方波信號,是數(shù)字電路
    的頭像 發(fā)表于 09-02 16:20 ?4733次閱讀