欧美日韩欧美,女人和拘做受大片免费看,麻花豆传媒剧国产mv免费版特色,欧美成人精品高清在线观看,麻豆产精国品一二三产区区

【E421】利用89C51系列單片機實現(xiàn)數(shù)字鬧鐘

2021-08-22 13:21:09      索煒達電子      840     

項目編號:E421

文件大?。?33K

源碼說明:帶中文注釋

開發(fā)環(huán)境:C編譯器

簡要概述

本文將向你介紹如何利用89c51系列單片機實現(xiàn)數(shù)字鬧鐘。包含時間調(diào)整和鬧鐘設(shè)定(本篇文章面向一點都不懂得小白,很啰嗦,高手略過文字)注意:本文hex文件超過4k,請選擇較大內(nèi)存的單片機


需求分析

  首先我們需要了解需求:做一個數(shù)字鬧鐘,可以計時,可以通過按鈕調(diào)時,通過按鈕設(shè)定鬧鈴時間。我們平時所見的數(shù)字鐘,總是有一個‘:’在不停閃動表示頻率。同時時間以時、分、秒的形式顯示。所以我們需要驅(qū)動八個數(shù)碼管,用以實現(xiàn)日、時、分、秒(當然,你也可以選擇月日時分,只要你明白其中運行的原理)。本例將使用閃動的‘.’代替‘:’,使用5個按鈕實現(xiàn)調(diào)時,設(shè)鐘。


標題所需材料

-STC89C52 *1

-7seg mpx8 ca 數(shù)碼管 *1

-10Ω排阻(RX8) *1

-100Ω電阻 *1

-1KΩ電阻*1

-無源蜂鳴器 *1

-晶體管2N4403 *1

-12MHz晶振 *1

-47uF電容 *3

-按鈕 *5

-開關(guān)*1

-導(dǎo)線若干 如果沒有,可以用模擬器實現(xiàn)

電路原理圖

【E421】利用89C51系列單片機實現(xiàn)數(shù)字鬧鐘

程序設(shè)計

  這里是關(guān)鍵的一步,關(guān)系到我們的時鐘能否點亮和正常運行。 時鐘需要計時,并且經(jīng)過顯示才能被我們看到。我們需要單片機在后臺計時,并通過驅(qū)動數(shù)碼管顯示時間。單片機驅(qū)動數(shù)碼管的方式是掃描,我們使用的是7seg-mpx8-ca數(shù)碼管(七段八位數(shù)碼管)

【E421】利用89C51系列單片機實現(xiàn)數(shù)字鬧鐘

上圖是七段一位數(shù)碼管 只有一個陰極端口和和七個陽極端口,想要讓它顯示數(shù)字需要讓a-g的陽極端按照一定規(guī)律接入高電平,陰極需要接地。a-g和dp都是一個單獨的LED。 

【E421】利用89C51系列單片機實現(xiàn)數(shù)字鬧鐘

#define FOSC 120000L//晶振頻率

void delay(unsigned int ms)

{

unsigned int t = FOSC/1200;//計算周期為12

for(;ms != 0;ms--,t = FOSC/1200)

while(t--);

}

但本文采用單片機內(nèi)置定時/計數(shù)器計算時間。(因為機器周期是可調(diào)的,并且機器在做任何計算的過程中都會占用計算周期,計算的步驟和方式消耗時間是不定的,而且會占用當前線程,所以delay有時是不準確的,占位置的。)


定時器的操作比delay要復(fù)雜一些,但優(yōu)勢在于它計時較為準確(時鐘的必需品),而且計時器不會干擾到我們的主線程(節(jié)約資源)。

上圖為七段八位數(shù)碼管 可以看做八個一位數(shù)碼管共用七段陽極接口。


你可能會想這么多管共用七個端口,它們怎么會顯示不同的數(shù)字呢? 這就是為什么需要掃描的原因了——當我們希望在數(shù)碼管顯示‘12’的時候,需要在第一個數(shù)碼管的七段中輸入‘1’,并且設(shè)置第一個陰極口為低電平,第二個陰極口為高電平,這樣第一個數(shù)碼管顯示‘1’第二個數(shù)碼管黑屏;以極快的速度,再將七段接口輸入‘2’,同時第二個數(shù)碼管置低電平,第一個置高電平,如此循環(huán)。這樣就造成了交替閃爍的‘12’。由于人眼有視覺殘留,所以看到的是靜止的‘12’(掃描周期小于20ms效果更好)。


講完如何驅(qū)動數(shù)碼管,現(xiàn)在需要考慮如何讓單片機在后臺計時了。 后臺計時的方法有很多種, 有根據(jù)晶振頻率和機器計算周期的比計時。

目錄│文件列表:

 └ C52DigitalClock

    │ LICENSE.txt

    ├ keil

    │  │ STARTUP.A51

    │  │ timer2.c

    │  │ timer2.uvgui.Klaoye

    │  │ timer2.uvopt

    │  │ timer2.uvproj

    │  ├ Listings

    │  │  │ STARTUP.lst

    │  │  │ timer2.lst

    │  │  └ timer2.m51

    │  └ Objects

    │     │ STARTUP.obj

    │     │ timer2

    │     │ timer2.build_log.htm

    │     │ timer2.hex

    │     │ timer2.lnp

    │     └ timer2.obj

    ├ pictures

    │  │ 1.PNG

    │  │ main.PDF

    │  │ main.png

    │  │ thread.png

    │  └ 捕獲.PNG

    └ protues

       │ Backup Of main.pdsbak

       │ Last Loaded main.pdsbak

       │ main.pdsprj

       └ main.pdsprj.Klaoye-PC.Klaoye.workspace

TAG數(shù)字鬧鐘
  • 3 次
  • 1 分