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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5809|回復: 2
打印 上一主題 下一主題
收起左側

單片機可調式電子鐘程序+Proteus仿真與調試+設計文檔分享

[復制鏈接]
跳轉到指定樓層
樓主
電子時鐘是一種具有實際應用價值的電子設備,在日常生活中應用廣泛。基于單片機的電子鐘有按鍵電路、顯示電路和單片機基本電路組成。本文應用常用的51內核單片機設計了間可調、帶聲光報時、運行簡單的電子時鐘,并充分應用 Proteus 仿真軟件對其進行了仿真,驗證了本設計的可行性。

1 概述
1.1引言
1.2設計原理
1.3整體設計
1.4開發與運行環境
2 主要器件的選型3
3最小系統電路設計
3.1單片機最小系統
3.2按鍵部分電路
3.3鬧鐘電路
3.4數碼管及其譯碼部分電路
4 系統軟件設計
    4.1主程序流程設計
    4.2主程序及定義變量并初始化
    4.3計算月份天數程序
    4.4數碼管輸出顯示程序
5系統仿真與調試
5.1調試步驟
5.2仿真圖如圖所示
6設計經驗總結
參考文獻
附    錄
附錄A:源程序
附錄B:系統設計原理圖
附錄C:元器件列表

隨著生活壓力的增大,我們經濟的飛速發展,快生活已經悄悄地侵入了我們的世界,同時,已經成為我們人際交往等生活中必要地素質體現,從而對時間的要求提高了,同時顯示的視覺感美感也進一步提高了,要求顯示的更加直觀了更加精確了,同時也需要準時提醒的功能了。

電子鐘是當前市面上十分普及的計時裝置,它成本低廉,計時準確,而且由于其顯示裝置可以發光,因此夜間也清晰可見,它的性價比是比較高的,現在人們尤其是在青年人群中,使用電子計時裝置的人數已經大大超過了傳統的上弦表。本設計采用的是目前市面上比較普遍的 STC89C52 單片機,它是一款 8 位的處理器,即數據是以 8 位來運算和處理的。雖然現在有很多單片機比 51 單片機    性能好,但是價格卻很昂貴,這顯然不符合我們制作電子時鐘追求高性價比的初衷,而且選用的這款 STC89C52 單片機的抗干擾能力強,體積小,對于電子設計初學者來說也是比較容易的。這款單片機結合數碼管、獨立按鍵、11.0592MHz 晶振、74HC573 鎖存器、數碼管等器件,通過在萬用板上的焊接,或者將元件焊在事先設計制作好的 PCB 板上,就完成了一個電子鐘的制作。該設計能準確顯示年、月、日、時、分、秒,具有鬧鐘響鈴的功能,設計的產品壽命長,誤差低的特點。

1.2設計原理

單片機、晶振電路、復位電路構成了單片機最小系統,通過串行通信接口與PC機相連,將時鐘數值送往LED數碼管顯示。定時/計數器、數據存儲器是單片機內部的兩大部件,其中定時/計數器用來產生時鐘的最小時間單位———               秒,數據存儲器中3個單元用來存儲時、分、秒的數值。

時間先從秒單元累加,當60秒到來向分單元進1,且秒單元清0 ;當60分到來向時單元進1 ,且分單元清0 ;當24時到來,時單元清0。數據存儲器三個單元的數值將會送到 LED數碼管實時顯示。

1.3整體設計

該設計要實現的主要功能如下:

打開電源后默認顯示如下:

時間顯示:00:00:00

鬧鐘顯示:00:01:01

日歷顯示:2018 年 6 月 8日

星期顯示:星期 5

其中時間、星期、日歷、都是可以通過按鍵可以調控的,鬧鐘也是可以通過按鍵進行定時的,定的時間到了通過蜂鳴器進行報警。按照整體的設計要求,使用五大模塊相結合的設計構造,有液晶 LED展示數字,按鍵手動調整控制模塊、鬧鐘與蜂鳴、聲音報警模塊。具體的思路框圖如圖 1 所示。



  1.4開發與運行環境

本設計以C語言為開發語言,在Keil uVISION4軟件平臺上進行C程序的編輯,連接和調試,最終與Proteus仿真軟件相結合,進行相關的電路仿真及修改。 Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。Keil提供了包括C編譯器、宏匯編、鏈接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(μVision)將這些部分組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環境、強大的軟件仿真調試工具也會令你事半功倍。

2 主要器件的選型

STC89C52單片機:本設計中采用型號為STC89C52的單片機,STC89C52是一個低功耗高性能單片機,40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含6個中斷源,3個16位可編程定時計數器,2個全雙工串行通信口,片內含8KB的可反復擦寫的Flash只讀程序存儲器(ROM)和256B的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-52指令系統。STC89C52兼容MCS51指令系統,提供以下標準功能8K字節Flash閃速存儲器,256字節內部RAM,32個I|O口線,3個16位定時器計數器,一個6向量兩級中斷結構,一個全雙工串行通信口,片內振蕩器及時鐘電路。同時STC89C52可以降至0HZ的靜態邏輯系操作,并支持兩種軟件可選的節電工作模式。空閑方式停止CPU的工作,但允許RAM,定時器計數器,串行通信接口,以及中斷系統繼續工作。掉電方式保存RAM中的內容,但振蕩器停止工作并禁止其他所有部件工作,直到下一個硬件復位。

數碼管:分段式顯示器(LED數碼管)由7條線段圍成8字型,每一段包含一個發光二極管。外加正向電壓時二極管導通,發出清晰的光。只要按規律控制各發光段亮、滅,就可以顯示各種字形或符號。LED數碼管有共陽、共陰之分。

RESPACK-8排阻:即8個阻值為10K的電阻

電解電容CAP-ELEC:電解電容是一種按結構、制作工藝劃分的電容種類。通常,電解電容是一種有極性的電容。電解電容的陽極采用可鈍化的金屬材料,比如鋁、鉭、鈮、鈦等;介電材料為陽極金屬材料表面生成的致密氧化物薄膜;電解電容的陰極材料為電解質。電解電容的主要特點是,在相同的體積下,可以得到比普通電容大得多的電容量(假設耐壓相等)。

晶振CRYSTAL:石英晶體諧振器(英文:quartz crystal unit或quartz crystal resonator,常簡寫成Xtal),簡稱石英晶體或晶振,是利用石英晶體(又稱水晶)的壓電效應,用來產生高精度振蕩頻率的一種電子元件,屬于被動元件。該元件主要由石英晶片、基座、外殼、銀膠、銀等成分組成。根據引線狀況可分為直插(有引線)與表面貼裝(無引線)兩種類型。現在常見的主要封裝型號有HC-49U、HC-49/S、GLASS、UM-1、UM-4、UM-5與SMD。

與開關BUTTON、22pf的電容CAP等

3 最小系統電路設計

3.1單片機最小系統

本設計采用 AT89C52 為核心控制器件。單片機想要工作,需要有時鐘電路、供電電路及復位電路配合。AT89C52 為常用的時鐘電路采用內部時鐘電路,配 合 外 部 12M 晶 振 和 電 容 與 XTAL1 和XTAL2 連接組成,為單片機提供基本的機器周期脈沖。單片機復位電路為手動復位電路,當單片機發生異常工作時可通過復位按鈕讓單片機復位。AT89C52 是一個低電壓,高性能 CMOSX8 位單片機,兼容標準 MCS -51 指令系統,所以編程簡單。AT89C52 單片機由于其控制結構簡單,標準編程,價格低廉在電子行業中有著廣泛的應用。AT89C52有 40 個引腳,32 個外部雙向輸入/輸出(I/O)端口, AT89C52 可以按照常規方法進行編程,也可以在線編程。其將通用的微處理器和 Flash 存儲器結合在一起,特別是可反復擦寫的 Flash 存儲器可有效地降低開發成本。單片機最小系統如圖 2 所示。

3.2按鍵部分電路

開關采用一種常開型按鍵開關,在常態時開關觸點處于斷開狀態,只有按下按鍵時點閉合短路,所以可以用萬用表檢測開關的管腳排列、好壞和質量。

按鍵是利用機械觸點的合、斷來實現鍵的閉合與釋放,由于彈性作用,機械觸點在閉合及斷開瞬間會有抖動的過程,從而使鍵輸入電壓的信號也存在抖動現象。

抖動時間的長短與開關的機械特性有關,一般為5~10ms,穩定閉合期時間的長短由按鍵的動作決定,一般為幾百毫秒到幾秒。為了保證按鍵按動一次,CPU對鍵閉合僅作一次按鍵處理,必須去除抖動的影響。

去除抖動的方法一般有硬件和軟件兩種:

硬件方法就是在按鍵輸出通道上添加去抖動電路,從根本上避免電壓抖動的產生,去抖動電路可以是雙穩態電路或者濾波電路。

軟件方法通常是在檢測到有鍵按下時延遲10~20ms的時間,待抖動期過去后,再次檢測按鍵的狀態,如果仍然為閉合狀態,才認為是有鍵按下,否則認為是一個擾動信號。按鍵釋放的過程與此相同,都要利用延時進行消抖處理。由于人的按鍵速度與單片機的運行速度相比要慢很多,所以,軟件延時的方法簡單可行,而且不需要增加硬件電路,成本低,因而被廣泛采用。

其中第一個按鍵控制選擇需要的鐘位,第二個按鍵控制加一調節,第三個按鍵控制減一調節。

3.3鬧鐘電路

該設計的默認鬧鐘電路當00:01:01時,蜂鳴器發出 500 Hz 的聲音,該聲音為一首《祝你平安》,由于是由方波輸出,故音質較差。時鐘的初始值為00:00:00,為了在盡快時間看到效果,故將本次設計將鬧鐘的默認時間定為00:01:00。

3.4數碼管及其譯碼部分電路

數碼管是四位共陽極數碼管,即每位數碼管上的 8 個 8 個發光二極管以共陽極方式連接,那么數碼管的 8 位段選碼只要在相應位置低電平即可使某一二極管亮,若要顯示“8.”那么段選碼應為“0x00”,這樣才能使每位數碼管上的 8 個發光二極管都被點亮,數碼管的 8 個段選引腳是分別接到 P0.0 到 P0.7 引腳的,因此控制 P0 口的輸出信號來控制數碼管的段選。由于 6 位數碼管的每位的 8 個段選都是連在一起的,因此在段選引腳上輸入的信號會被同時送到 6 個數碼管上去。所以為了實現四位數碼管可以顯示不同的數字,則必須要用掃描的方式使各位數碼管輪流顯示。6 位數碼管有 6 個位選引腳,將它們分別接到單片機的 P2.0到 P2.5 引腳上去。這樣通過控制 P2 口低四位的輸出電平的高低即可控制哪一位數碼管點亮。比如將 P2.0 引腳置為低電平,則顯示“分鐘的十位”的數碼管允許通入段選信號,將 P2.3 引腳置為低電平,則顯示“秒的個位”的數碼管允許通入段選信號。這樣通過比較快速的掃描,即可實現 6 位數碼管輪流被位選導通。由于人眼的視覺暫留效應,因此以很快的速度掃描的話,人眼會認為是四個數碼管一起在亮。利用這個原理,我在程序中設定大約是每 10us 就換一個位顯示,保證人眼看到是一起亮的。

4 系統軟件設計

4.1主程序流程設計

4.2主程序及定義變量并初始化
#include <absacc.h> //包含頭文件
#include <reg52.h> //包含頭文件
#define uchar unsigned char //數據類型定義
定義變量并初始化
uchar n=31; //定義月份天數變量并初始化
uchar ms=0; //定義毫秒變量并初始化
uchar h1=0,m1=0,s1=0; //定義計時時、分、秒變量并初始化
uchar h2=0,m2=1,s2=1; //定義定時時、分、秒變量并初始化
uchar year=18,month=6,day=8; //定義年、月、日變量并初始化
uchar wday=5; //定義星期變量并初始化
uchar *h=&h1,*m=&m1,*s=&s1; //定義顯視位變量并初始化
uchar *p; //定義調節指針
uchar k1=0,k2=0,k3=0,k4=0,k5=0; //定義控制變量并初始化
uchar counter=0; //定義鈴聲節拍變量并初始化
uchar count=0; //定義鈴聲音符變量并初始化
sbit sound=P1^0; //定義鈴聲輸出位
uchar a[8]={1,2,3,4,5,6,7}; //定義顯視輸出位數組并初始化
4.3計算月份天數程序
電子鐘上電后從 00:00:00 開始計時。同時日歷星期也同時開始計時,每滿24小時日歷與星期就同時加一,該電路只設計兩個按鈕,簡單方便,功能齊全。
* 函數名稱:mon()
* 功 能:計算并返回每個月的天數
* 入口參數:month
* 出口參數:無
uchar mon(uchar month) //計算并返回每個月的天數
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:return 31;break; //1,3,5,7,8,10,12月每月31天
case 4:
case 6:
case 9:
case 11:return 30;break; //4,6,9,11月每月30天
case 2: return leap(year);break;//返回二月份的天數
default:break;
由于又平年瑞年之分,所以二月份天數較為特別,單獨給二月份編的程序如下:
* 函數名稱:leap()
* 功 能:計算二月份天數
* 入口參數:year
* 出口參數:無
uchar leap(uchar year) //判斷是否閏年并返回二月份的天數
{ //閏年返回29,平年返回28
year+=2000;
if(year%4==0)
{if(year%100==0)
{if(year%400==0)
return 29;
else return 28;
}
else return 29;
}
else return 28;
}
這樣就使得月份的功能更為精準,市場上很多的電子鐘往往忽視了這個細節,雖然每四年才會出錯,但也會應使用,這里本著精益求精的原則,實現一款能區分平年瑞年的電子鐘。
4.4數碼管輸出顯示程序
* 函數名稱:d3()
* 功 能:數碼管輸出顯示
* 入口參數:無
* 出口參數:無
  1. void d3(void) //顯示輸出
  2. {
  3. uchar sel=0x80,i ; //定義sel為位選通變量并初使化
  4. if(k2) //判斷是否處于調時狀態
  5. {
  6. if(k2==4)a[0]=a[1]=a[4]=a[6]=a[7]=10; //星期顯示設置
  7. if(k1&&(k3--==0)) k3=255; //設置位調節閃爍初值
  8. }
  9. for(i=0;i<=8;i++) //循環顯示八個數碼管
  10. {
  11. P2=0xff; //清屏
  12. P0=tt[a[i]]; //輸出顯示數值
  13. if(k1&&(k3>200)) //判斷是否閃爍
  14. if (k1==1&&(i==6||i==7))P2=0xff; //時位閃爍
  15. else if(k1==2&&(i==3||i==4))P2=0xff; //分位閃爍
  16. else if(k1==3&&(i==0||i==1))P2=0xff; //秒位閃爍
  17. else P2=~sel; //非閃爍狀態
  18. else P2=~sel; //非閃爍狀態
  19. sel=sel>>1; //顯示位移位
復制代碼

5 系統仿真與調試

Proteus 軟件是一種混合電路仿真軟件,Proteus軟件是英國Lab Center Electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前比較好的仿真單片機及外圍器件的工具。雖然目前國內推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發應用的科技工作者的青睞。

5.1調試步驟

1)在KEIL軟件中編寫程序,完成后,單擊“項目”下的“編譯”,產生“.hex”文件。

(2)打開pro t e us軟件,畫上硬件電路圖,保存。

(3)雙擊AT89C52芯片,在program file中加入“.hex”文件,按確定。

(4)調試運行。

5.2仿真圖如圖所示

顯示時間為凌晨16分

顯示鬧鐘為在凌晨1分1秒時響

顯示日歷為18年6月8日

顯示星期為星期5

6、設計經驗總結

此設計使用數字進行清晰的顯示,將所需要的信息如時間、年份、月份和當時的溫度與濕度等得到的信息在液晶顯示屏上展示出來,同時還可以手動對時間以及鬧鐘進行設定。此設計使用 5V 的電壓作為電源來供電,利用的是以 STC89C52 單片機為主要控制系統,耗能低。設計的多功能智能電子鐘易于閱讀,液晶顯示清晰,設計電路所用元器件少且簡單,成本低,同時展示的功能比較齊全,優點多,根據現在科學技術和電子測量儀器的不斷完善,其市場需求是非常樂觀的。

簡易電子鐘是基于 STC89C51 單片機的一個最小系統設計,在完成原理電路圖的設計之后,要進行的是焊接工作。要準備焊錫在萬用板上焊接,焊接過程中要注意防止出現虛焊、漏焊、錯焊等問題。在焊接好后,不要忙于通電,首先要檢測有沒有短路,萬一有短路就通電,將會很麻煩,容易燒毀電路板或元器件,更容易引發安全隱患,應確保無短路再通電。本電子鐘所需的元器件購買的成本價很低,并且在制作過程中有助于理解 51 單片機的性能及應用方法,同時用 Keil C51 軟件編寫程序有助于鍛煉程序編寫能力。同時設計這個簡易電子時鐘使我運用已有的專業基礎知識,對其進行設計,分析和解決一個理論問題或實際問題,把知識轉化為能力的實際訓練,培養了我運用所學知識解決實際問題的能力。



附錄B:系統設計原理圖


全部資料51hei下載地址:

電子鐘程序及仿真.zip (87.17 KB, 下載次數: 67)

單片機課設.docx (258.8 KB, 下載次數: 44)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:328014 發表于 2019-4-17 03:41 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

板凳
ID:1119863 發表于 2024-5-8 23:10 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产午夜精品一区二区三区四区 | 国产日韩一区二区三区 | 精品综合久久 | 自拍视频在线观看 | 中日韩av | 天堂中文av| 91精品国产综合久久久亚洲 | 欧美精品欧美精品系列 | 日韩1区2区 | 蜜桃臀av一区二区三区 | 视频一区在线 | 亚洲视频免费在线观看 | 国产精品一区在线观看 | 亚洲欧美激情四射 | 日韩高清一区 | 久久久久久久久综合 | www.国产一区 | 99久久国产综合精品麻豆 | 久久剧场 | 久久精品国产亚洲 | 精品久久久久久亚洲精品 | 日韩乱码一二三 | 国产在线观看不卡一区二区三区 | 亚洲激情专区 | 国产精品99久久久久久久久久久久 | 老司机成人在线 | 99精品国产一区二区三区 | 日韩中文字幕免费在线观看 | 色综合天天天天做夜夜夜夜做 | 久久成人18免费网站 | 久久久新视频 | 久久久精品视 | 亚洲看片 | 亚洲一区二区网站 | 久久免费精品视频 | 国产黄色免费网站 | 91毛片网 | 中文字幕在线看第二 | 少妇一区在线观看 | 亚洲成人动漫在线观看 | 青青久久|