国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于單片機的電子時鐘設(shè)計

2023-03-20 04:44金士豪
無線互聯(lián)科技 2023年1期
關(guān)鍵詞:電子鐘晶振數(shù)碼管

金士豪

(湖南科技學院 智能制造學院,湖南 永州 425199)

1 背景及意義

單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上[1]。單片機相當于一個微型計算機,與計算機相比,它只缺少了I/O設(shè)備。一塊芯片就構(gòu)成了一臺計算機。單片機的體積小、質(zhì)量輕、價格便宜,為學習、應用和開發(fā)提供了便利條件[2]。單片機的使用領(lǐng)域十分廣泛,如智能儀表、實時工控、通信設(shè)備、導航系統(tǒng)、家用電器等。在各種產(chǎn)品中集成單片機,能夠起到使產(chǎn)品升級換代的作用。人們常在這些產(chǎn)品名稱前冠以形容詞——“智能型”,如智能型洗衣機等[3]。

電子鐘是一種利用數(shù)字電路顯示時間的計時裝置。石英鐘是一種利用石英振蕩器所產(chǎn)生的振蕩頻率驅(qū)動時鐘的3針顯示秒、分、時的計時裝置。電子鐘與機械時鐘相比,直觀性為其主要特點,因非機械驅(qū)動具有更長的使用壽命,相較石英鐘的石英機芯驅(qū)動,其更具準確性。它的特點可歸結(jié)為“兩強一弱”:電子鐘比機械鐘強在觀看時顯著,比石英鐘強在走時準確,它的弱點是顯時較為單調(diào)。電子鐘更為方便、快捷和實用。由于電子鐘的數(shù)字集成電路構(gòu)成方式,使電子鐘具有走時準確、性能穩(wěn)定、攜帶方便等優(yōu)點。電子鐘也可用于定時自動報警、按時自動打鈴、時間程序自動控制等[4]。

2 設(shè)計方案

本文設(shè)計的數(shù)字電子時鐘系統(tǒng)需要考慮數(shù)碼管的掃描復用方式。采用函數(shù)進行調(diào)用時,注意函數(shù)的參數(shù)應直接設(shè)置為小時、分鐘和秒,此過程還需要設(shè)置一個參數(shù)進行鬧鐘模式的切換。自動顯示功能需要考慮設(shè)置若干個全局變量,使其在定時中斷時不斷被調(diào)用,實現(xiàn)數(shù)據(jù)自增。另外,在LCD部分,一定要加上LCD驅(qū)動。系統(tǒng)的具體組成如圖1所示。該數(shù)字電子鐘系統(tǒng)可以分為主控制單元、復位電路、晶振電路、鍵盤電路和顯示電路等。

圖1 系統(tǒng)組成

3 各功能模塊設(shè)計與實現(xiàn)

本設(shè)計利用KEIL5軟件實現(xiàn)程序設(shè)計。C語言是硬件設(shè)計時常用的編程語言之一。除匯編語言外,最接近硬件的編程語言是C語言。很多操作系統(tǒng)軟件的底層部分和驅(qū)動代碼都是用C語言編寫,由C語言負責將應用層用戶的指令轉(zhuǎn)化為具體的硬件驅(qū)動指令進行驅(qū)動。現(xiàn)在常見的Unix,Linux和Windows操作系統(tǒng),工業(yè)控制和嵌入式領(lǐng)域常見的RTOS系統(tǒng)都是由標準的C語言開發(fā)而來?,F(xiàn)在手機端火熱的安卓系統(tǒng)也是在封裝Linux內(nèi)核的基礎(chǔ)上,實現(xiàn)對底層硬件的驅(qū)動和控制。

3.1 各功能模塊說明

3.1.1 晶振電路

數(shù)字電路需要各種高頻率開關(guān)信號使計數(shù)器正常計數(shù),使各種數(shù)字模塊能夠同步,因此,需要一個高頻率電子振蕩電路產(chǎn)生振蕩信號。這個振蕩電路最重要的一個元件就是晶振,它生成的振蕩信號頻率可以達到幾兆甚至十幾兆,再經(jīng)過分頻器或倍頻器,得到各種不同的頻率信號。在某些通信系統(tǒng)中,由于系統(tǒng)的基頻和射頻使用不同的晶振,通常通過電子調(diào)頻的方式保持同步。在本文設(shè)計的電子時鐘中,為了讓各個部分保持同步,該電子時鐘共用一個晶振,利用該晶振提供基本的時鐘信號。

3.1.2 復位電路

復位電路等同于電腦的重啟部分。電腦在使用中出現(xiàn)死機,按下重啟按鈕后,電腦內(nèi)的程序從頭開始執(zhí)行。單片機也一樣,單片機系統(tǒng)在運行中受到環(huán)境干擾程序時,按下復位按鈕,內(nèi)部的程序可自動從頭開始執(zhí)行,即把一些寄存器及存儲設(shè)備恢復到出廠時的狀態(tài)。

3.1.3 鍵盤電路

根據(jù)4×4矩陣鍵盤,它是用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤。在行線和列線的每個交叉點上設(shè)置一個按鍵。因此,鍵盤上按鍵的個數(shù)為4×4個。采用此方法設(shè)計的鍵盤電路結(jié)構(gòu)可以大大提高電子時鐘中I/O口的利用率。本文設(shè)計實現(xiàn)了按鍵控制鬧鐘和按鍵設(shè)置時間的功能。

在按鍵內(nèi)部設(shè)置兩個觸點,首先將電路中的一條線路截斷,然后將兩個斷線分別連接到按鍵的兩個觸點上。當按下按鍵或按下按鍵不放,按鍵內(nèi)部的觸點結(jié)合在一起,該條線路導通;再按下按鍵或者松開按鍵,觸點釋放,線路斷開。

3.1.4 顯示電路

采用4位共陰極數(shù)碼管驅(qū)動方式,P2口連接相應的位置,即選擇要顯示的數(shù)碼管位,P0口連接相應的位置,即顯示相應的數(shù)碼管段,從而負責顯示時鐘的時和分。

3.2 硬件系統(tǒng)設(shè)計

電子時鐘的硬件部分主要包括控制芯片、時鐘芯片、按鍵、顯示屏等幾個部分??刂菩酒?,也就是單片機,可以采用ST/STC/ALTER等8位單片機或者根據(jù)需求采用PCI或更高級的ARM等進行控制以及對時鐘芯片的操作等。時鐘芯片,采用DS12C887,DS1302等時鐘芯片,通過單片機對時鐘芯片進行配置、操作、讀取、設(shè)置等。按鍵,外部按鍵可以對時鐘芯片進行外部設(shè)置,比如設(shè)置初始時間等,按鍵的采集可以用并行、串行、模擬AD采集等方式。如果單片機的I/O口足夠,可采用并行采集;如果I/O口有限,則可采用為不同按鍵分配不同阻值的電阻,掛在同一數(shù)據(jù)線上通過串行AD進行采集,再通過單片機分析采集到的電壓值判斷按鍵。顯示屏可以采用點陣顯示屏或者彩色TFT(8Bit/16Bit/24Bit)模擬/數(shù)字屏,如果只是一般的應用,采用一般的單行或多行點陣顯示屏即可。

本文使用了Produce軟件進行硬件原理圖的仿真設(shè)計。主控電路采用80C51單片機。80C51單片機的內(nèi)振蕩電路是一種高增益逆變放大器。導線xtal1和xtal2分別是逆變器振蕩放大器的輸入、內(nèi)部時鐘工作電路的輸入和逆變器振蕩器的輸出。本文將逆變器放大器配置為片上振蕩器。由電容器進行充電,RST可以在通電后的一段時間內(nèi)保持在高水平,以實現(xiàn)通電復位操作。通電復位是復位電路使用的主要方法。此方法不僅能使單片機復位,還能使單片機的外圍設(shè)備同時復位。程序出現(xiàn)錯誤時,可以隨時使電路復位。鍵盤電路的設(shè)計主要考慮如何實現(xiàn)按下同一個鍵時,可以執(zhí)行不同的功能程序。每個鍵以一對多的方式對應多個功能程序。在按下某個鍵時,該鍵對應的引腳被拉低,系統(tǒng)進行一次掃描,返回鍵值,執(zhí)行當下鍵值對應的功能程序。顯示電路主要是由數(shù)碼管顯示數(shù)字電子鐘的時和分。

3.3 軟件系統(tǒng)設(shè)計

主函數(shù)的流程設(shè)計過程首先進行初始化設(shè)定初值,然后執(zhí)行相關(guān)子程序的調(diào)用。具體流程如圖2所示。

調(diào)用中斷服務子程序,循環(huán)次數(shù)自增,因為定時時長為50 ms,所以循環(huán)次數(shù)為20時,循環(huán)次數(shù)清0,秒自增;秒為60時,分自增,秒清0;分為60時,時自增,分清0;時為24時,時清0,中斷返回。

先確認彈簧消抖是否有鍵按下,接著判斷掃描按鍵,不同的按鍵觸發(fā)不同功能。

其中,控制鬧鐘的核心代碼如下。

void almkozi(){

if((hour1==hour)&&(minit1==minit)&&(second<4)){

speaker=0; //鬧鐘時間到,蜂鳴器響

}

if(minit==0&&second<4){

//整點報時,蜂鳴器響

speaker=0;

}

if(second>4) {//控制蜂鳴器響的時長

speaker=1; //關(guān)閉蜂鳴器

}

}

數(shù)碼管的核心代碼如下。

void show(int){

P0=tc[h/10];

P2=0xCD;

retardation();P2=0xCE; //片選關(guān)

P0=tc[h%10]; //p0口送數(shù)據(jù),拆數(shù)顯示,時的個位

P2=0xCF; //P2.1

retardation(); P2=0xDC;

P0=tc[m/10]; //p0口送數(shù)據(jù),拆數(shù)顯示,分的十位

P2=0xDE; //P2.2

retardation();

P2=0xEF;

P0=tc[m%10]; //p0口送數(shù)據(jù),拆數(shù)顯示,分的個位

P2=0XD9; //P2.3

retardation();

P2=0xEE;

}

4 結(jié)語

本文設(shè)計的電子時鐘,顯示屏清晰,可顯示基本的時、分和秒,還可通過按鍵調(diào)整時間、設(shè)置鬧鐘和提醒。其鬧鐘一天內(nèi)可設(shè)置3次且音量可調(diào)節(jié)。該電子時鐘功能基本齊全,能夠滿足人們生活的基本需求。但因為本次設(shè)計還有部分智能功能未實現(xiàn),有待在后期設(shè)計和實現(xiàn)中進行擴展。

圖2 程序總體流程

猜你喜歡
電子鐘晶振數(shù)碼管
兩非門晶振振蕩電路的設(shè)計
基于晶振的高性能時間保持方法研究
電子鐘被拆之后
Arduino編程
基于STC80C51的電子鐘研制
MC9S08FL16單片機數(shù)碼管靜態(tài)顯示分析
單片機控制的四位數(shù)碼管動態(tài)顯示編程
基于Qt的數(shù)碼管數(shù)字編碼系統(tǒng)的設(shè)計與實現(xiàn)
幾種導致恒溫晶振頻率偏移的因素分析
恒溫晶振環(huán)境溫度特性測試系統(tǒng)設(shè)計
广丰县| 宜兰县| 鹿泉市| 青冈县| 宣武区| 岳阳市| 平邑县| 安塞县| 调兵山市| 无极县| 菏泽市| 德钦县| 扬中市| 来宾市| 金坛市| 荆门市| 广东省| 长宁县| 庄河市| 蚌埠市| 车险| 麦盖提县| 化德县| 海伦市| 枞阳县| 历史| 宁南县| 漳浦县| 荔波县| 友谊县| 城固县| 宁乡县| 承德县| 从化市| 建水县| 隆尧县| 沁源县| 清水河县| 繁昌县| 宣化县| 工布江达县|