chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

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

CHANBAEK ? 來源: Zi Jin Code ? 作者: 錕醬不是醬 ? 2023-11-02 10:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

計算出初始值為60928,換算

TH0 = 0xEE;
TL0 = 0x00;

整個項目的電路圖:

圖片

這里不得不提醒一下,我們之前設計的電路圖中,左邊的數(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]對應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()
{//注意設置定時器初始值要在main函數(shù)里面設置

  TMOD = 0x01;

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

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

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


        a = Time[SmgSelect];
        P0 = Smg[a];
        //這個過程先從Time[]里面取出位數(shù)的數(shù)值
        //再把這個數(shù)值送到Smgbit里面選擇出這位數(shù)對應的數(shù)碼管取模
        //最后把這個取模的數(shù)據送給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;//設置定時器初始值低位
        TH0 = 0xEE;//設置定時器初始值高位
        TF0 = 0;//設置好初始值后再復位定時器
      }
  }
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6074

    文章

    45322

    瀏覽量

    662972
  • 寄存器
    +關注

    關注

    31

    文章

    5588

    瀏覽量

    128994
  • 數(shù)碼管
    +關注

    關注

    32

    文章

    1890

    瀏覽量

    93687
  • 定時器
    +關注

    關注

    23

    文章

    3359

    瀏覽量

    121666
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    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)設計與制作 精選資料分享

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

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

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

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

    基于單片機的綜合應用程序數(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ù)碼管計時器按鍵可調節(jié)

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

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

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

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