<code id="aciqg"></code>

    <nav id="aciqg"></nav>
      <mark id="aciqg"></mark><mark id="aciqg"><ruby id="aciqg"></ruby></mark>
      購買

      ¥ 20.0

      加入VIP
      • 專屬下載特權
      • 現金文檔折扣購買
      • VIP免費專區
      • 千萬文檔免費下載

      上傳資料

      關閉

      關閉

      關閉

      封號提示

      內容

      首頁 基于ds1302的單片機時鐘設計(修改版)

      基于ds1302的單片機時鐘設計(修改版).doc

      基于ds1302的單片機時鐘設計(修改版)

      中小學精品課件
      2019-03-05 0人閱讀 舉報 0 0 暫無簡介

      簡介:本文檔為《基于ds1302的單片機時鐘設計(修改版)doc》,可適用于工程科技領域

      單片機課程設計單片機課程設計報告題目:基于DS電子實時時鐘姓名:XXX同組人:XXX班級學號:XX指導老師:XXXXX日期:目錄摘要第一部分:題目要求………………………………………第二部分:方案論證與選擇………………………………第三部分:電路設計與參數選擇…………………………第四部分:系統軟件設計…………………………………第五部分:系統調試與儀器使用…………………………第六部分:測試數據與結果分析…………………………第七部分:使用說明書……………………………………總結……………………………………………………摘要本作品是以C單片機為核心DS時鐘芯片、數碼管做顯示器及LS與門構成的小時制單功能電子實時時鐘。這種單功能電子實時時鐘不僅具有了一般數字鐘的基本功能并且通過兩個按鈕實現時鐘運行與停止功能。如果我們要設置時間只需在軟件程序上改變時鐘芯片的初始化程序。在電子產品盛行的今天像這樣的設計我們可以給它更大的發展空間。第一部分題目要求我們設計的這種小時制功能鐘可以在數碼管上顯示時、分、秒并且我們可以通過按鈕來控制時鐘的運行及停止(按鈕KEY控制時鐘停止運行按鈕KEY控制時鐘運行)并采用V交流電源供電。第二部分方案論證與選擇一、系統功能框圖在現今的這個社會每天的時間都很緊迫有些人怕誤了時間做自己重要的事尤其是對現在的學生而言他們早上要早起上課要準時這樣都少不了有一個時鐘早上干早班的人在外出行的人工廠里某些要嚴格按時間標準來控制的產品等等一些我們身邊無時無刻都有的而在這個關鍵的部分就要用到我們本次設計的時鐘來計時了。下面我們就介紹一下本次設計的基本設計框圖。二、系統主要部分有::中央處理器電路:采用單片機芯片機外圍電路構成最小系統。:時鐘信號產生電路:時鐘芯片:人機接口電路:按鍵電路、數碼管顯示電路。三、方案論證及選擇.時鐘電路部分方案一:利用單片機內部的定時功能來實現時鐘的走時通過計算可知使定時器每ms產生一次中斷當產生次中斷后秒單元將加一以此類推從而實現時、分、秒的走時并加以顯示。由于這種方式在斷電的情況下將停止走時且通電后必須再初始化而且需要調表故不用此方法。方案二:我們選用DS時鐘芯片該芯片是美國DALLAS公司推出的一種高性能、低功耗的實時時鐘芯片附加字節靜態RAM采用SPI三線接口與CPU進行同步通信并可采用突發方式一次傳送多個字節的時鐘信號和RAM數據。實時時鐘可提供秒、分、時、日、星期、月和年一個月小與天時可以自動調整且具有閏年補償功能。工作電壓寬達~V。采用雙電源供電(主電源和備用電源)可設置備用電源充電方式提供了對后背電源進行涓細電流充電的能力。DS用于數據記錄特別是對某些具有特殊意義的數據點的記錄上能實現數據與出現該數據的時間同時記錄因此廣泛應用于測量系統中。外部引腳分配各引腳的功能為:??????Vcc:備用電源Vcc:主電源。當Vcc>VccV時由Vcc向DS供電當Vcc<Vcc時由Vcc向DS供電。??????SCLK:串行時鐘輸入???????IO:三線接口時的雙向數據線??????CE:輸入信號在讀、寫數據期間必須為高。該引腳有兩個功能:第一CE開始控制字訪問移位寄存器的控制邏輯其次CE提供結束單字節或多字節數據傳輸的方法。DS有關日歷、時間的寄存器共有個其中有個寄存器(讀時h~Dh寫時h~Ch)存放的數據格式為BCD碼形式。所以最后本設計采用DS時鐘芯片。、顯示部分本設計中顯示部分我們可以采用液晶顯示器或多個LED數碼管顯示器下面我們就對這兩個顯示進行比較看看那個顯示器更加的適合該設計。比較一:采用LCD液晶顯示器。在我們的日常生活中我們對LCD液晶顯示器并不陌生在計算器、萬用表、電子表及很多家用電子產品中都可以用到它顯示的主要是數字、專用符號和圖形。特別是在單片機的人機交流界面中用它作為輸出器件有顯示質量高、采用數字式接口、體積小、重量輕。功耗低等優點。通常按顯示方式咳咳分為段式、字符式、點陣式等。但是在用它做顯示器的時候我們要對它進行編程比如我們要顯示一個字符那么這個時候就復雜了因為一個字符由x或x點陣組成我們這時候既要找到和顯示屏幕上某幾個位置對應的顯示RAM區字節還要使每個字節的不同位為“”其他的為“”為“”的點亮為“”的不亮。這樣一來在顯示簡單的數字上就大大的加大了我們設計的難度所以對于一些簡單的數字我們不應采用LCD液晶顯示來顯示。比較二:使用多個LED數碼管顯示。LED數碼管實際上是由七個發光管組成字形構成的加上小數點就是個。這些段分別由字母a,b,c,d,e,f,g,dp來表示。當數碼管特定的段加上電壓后這些特定的段就會發亮以形成我們眼睛看到的個數碼管字樣了。如:顯示一個“”字那么應當是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED數碼管有一般亮和超亮等不同之分也有寸、寸等不同的尺寸。小尺寸數碼管的顯示筆畫常用一個發光二極管組成而大尺寸的數碼管由二個或多個發光二極管組成一般情況下單個發光二極管的管壓降為V左右電流不超過mA。發光二極管的陽極連接到一起連接到電源正極的稱為共陽數碼管發光二極管的陰極連接到一起連接到電源負極的稱為共陰數碼管。常用LED數碼管顯示的數字和字符是、、、、、、、、、、A、B、C、D、E、F。再一個數碼管相對于LCD液晶顯示器來說具有亮度大、接口設計比較容易價格相對較便宜等優點。且在本次設計中恰好能把我們要顯示的數字顯示出來。所以本次設計采用多個LED數碼管顯示器來顯示數字。、按鍵部分方案一:并口輸入式的按鍵控制。它的優點是電路設計簡單但每一管腳對應一個按鍵雖然說單片機有多個外部引腳但本系統采用多個LED數碼管顯示、時鐘芯片等外圍電路他們占用外部接口線較多要是此時要在單片機上再添加幾個按鍵的話那么這樣單片機的外部引腳就有點供應不了所以在占用如此多管腳的情況下該方案是不可取的。方案二:我們可以采用芯片LS與門來擴展接口雖然在該設計中我們只用到二個按鈕但用這個芯片就足可以了。我們采用這種方式只占用個口線另外按鍵去抖動較方便是一種明智的選擇。第三部分電路設計與參數選擇一、單片機最小系統電路設計和元件的選擇根據設計要求和計算簡便的原則我們選擇M的石英晶振、PF的陶瓷電容、uF的瓷片電容、k電阻、V電源最小系統圖如下:二、數碼管顯示電路設計電路如下圖:我們這里采用個數碼管來顯示時分秒在單片機的P引腳上外接上k的上拉電阻。P口輸出段碼P口輸出位碼。三、DS時鐘芯片電路設計部分電路圖如下:在這里我們采用kMZ的晶振接在DS的X和X之間DS的、、引腳分別接在單片機的P、P、P三個引腳上VCC接上V電源VCC可以外接電源。四、按鍵電路設計部分電路圖如下:這里我們采用LS與門芯片來擴展接口同時我們在編程時用外部中斷來設計程序以便更好的實現效果。在按鍵與單片機和引腳之間接上一k的上拉電阻電阻上接V電源。第四部分軟件設計部分一、主程序單元部分。主程序流程圖如上所示在主程序中調用時分秒顯示子程序通過按鍵來判斷DS時鐘芯片運行還是停止。二、外部中斷部分用外部中斷來是秒停止或開始計數。三、顯示程序單元部分。此系統的顯示部分采用的是多個LED數碼管顯示主要顯示時分秒內的數據通過輸出端口一次輸出到顯示器上。時、分、秒顯示流程圖如下:注釋:該顯示大概流程圖是這樣但在該程序設計中是把時、分、秒的顯示程序分別提出來單獨做一個子程序。四、DS時鐘芯片判斷時鐘是否停止流程圖第五部分系統調試與儀器使用一、系統調試調試工作分硬件調試和軟件調試兩部分調試方法介紹如下:首先硬件調試主要是先搭建硬件平臺然后利用萬用表等工具對電路檢測最后用程序進行功能調試硬件調試比較費時需要細心和耐心也需要熟練掌握電路原理。然后可以直接應用編輯或仿真軟件進行調試比如單片機C編輯軟件Keil該軟件提供了一個集成開發環境uVision它包括C編輯、宏編輯、連接器、庫管理和一個功能強大的仿真調試器。通過編譯。運行可以檢查程序錯誤。但使用此方法仍需要十分了解所使用元器件的工作方式和管腳連接方式。軟件調試過程中要仔細耐心即便是要多寫一兩個字符都無法編譯成功。而有時往往在Keil中編譯。運行無錯但燒錄到單片機中運行出錯很有可能是編程時管腳或時序編輯得不對。還有一種方式即應用仿真軟件搭建電路的軟件平臺再導入程序進行仿真調試如果電路出錯可以在計算機上方便的修改電路程序出錯可以重新編輯程序這種方法節時、省力、經濟、方便。我們這里應用的是Protuse總之調試過程是一個軟硬件結合調試的過程硬件電路是基礎軟件是檢測硬件電路和實現其功能的關鍵。、時鐘顯示:我們首先進行時鐘信號測試、多個LED數碼管顯示的的調試以實現基本功能看看在把程序導進去是否有線路沒有接通或虛焊的現象出現。在這個過程中我們主要讓數碼管上有數字顯示出來具體是什么數這就不用關了。、DS的調試該電路含DS芯片、主電源、備用電源、晶振等部分。在與單片機連接的過程中需要注意以下幾點:)、清楚DS與單片機連接的管腳。本設計定義為:DS的SCLK連接P,IO口連接P,RST口連接P)、注意電源正負極連接。)、DS連接KHz的晶振。該晶振體形比較小在焊接是要小心的注意不要將晶振引腳弄斷。同時也要盡量使晶振離DS的X、X引腳近距離焊接。)、編寫DS的時鐘日歷程序只要能夠正確顯示時間。燒錄進單片機檢查電路電源正負極連接是否正確。檢查無誤后再上電檢查。、按鍵電路調試按鍵電路比較簡單故而調試起來也比較容易只需要保證按鍵焊接正確沒有虛焊或忘焊的現象出現一般不會出很大的問題。二、程序導入所用儀器采用單片機開發板軟件和PZISP軟件把程序導入C單片機中。三、源程序#include<regh>頭文件#include<intrinsh>#defineucharunsignedchar#defineuintunsignedintsbitDATA=P^位定義芯片的接口數據輸出端定義在P引腳sbitRST=P^位定義芯片的接口復位端口定義在P引腳sbitSCLK=P^位定義芯片的接口時鐘輸出端口定義在P引腳sbitkey=P^sbitkey=P^ucharcodedisplaytable={xf,x,xb,xf,x,xd,xd,x,xf,xf}ucharsecond,minute,hourvoiddelaynus(ucharn){ucharifor(i=i<ni)}voiddelayms(ucharn){uchariwhile(n)for(i=i<i)}voidwrite(uchardat){uchariSCLK=拉低SCLK為脈沖上升沿寫入數據做好準備delaynus()稍微等待使硬件做好準備for(i=i<i)連續寫個二進制位數據{DATA=datx取出dat的第位數據寫入delaynus()稍微等待使硬件做好準備SCLK=上升沿寫入數據delaynus()稍微等待使硬件做好準備SCLK=重新拉低SCLK形成脈沖dat>>=將dat的各數據位右移位準備寫入下一個數據位}}voidwriteset(ucharCmd,uchardat){RST=禁止數據傳遞SCLK=確保寫數居前SCLK被拉低RST=啟動數據傳輸delaynus()稍微等待使硬件做好準備write(Cmd)寫入命令字write(dat)寫數據SCLK=將時鐘電平置于已知狀態RST=禁止數據傳遞}unsignedcharread(void){uchari,datdelaynus()稍微等待使硬件做好準備for(i=i<i)連續讀個二進制位數據{dat>>=將dat的各數據位右移位因為先讀出的是字節的最低位if(DATA==)如果讀出的數據是dat|=x將取出寫在dat的最高位SCLK=將SCLK置于高電平為下降沿讀出delaynus()稍微等待SCLK=拉低SCLK形成脈沖下降沿delaynus()稍微等待}returndat將讀出的數據返回}ucharreadset(ucharCmd){unsignedchardatRST=拉低RSTSCLK=確保寫數居前SCLK被拉低RST=啟動數據傳輸write(Cmd)寫入命令字dat=read()讀出數據SCLK=將時鐘電平置于已知狀態RST=禁止數據傳遞returndat將讀出的數據返回}voidsetprotect(bitflag)設置保護{if(flag)writeset(xe,x)寫入保護指令elsewriteset(xe,x)寫入不保護指令}voidstoptime(bitflag)是否將時鐘停止{uchardatdat=readset(x)setprotect()if(flag)writeset(x,dat|x)elsewriteset(x,datxf)}voidinitds(void){setprotect()根據寫狀態寄存器命令字寫入不保護指令writeset(x,(()<<|()))根據寫秒寄存器命令字寫入秒的初始值writeset(x,(()<<|()))根據寫分寄存器命令字寫入分的初始值writeset(x,(()<<|()))根據寫小時寄存器命令字寫入小時的初始值}voiddisplayhour(ucharh)顯示小時{P=xfeP=displaytablehdelayms()P=xfdP=displaytablehdelayms()P=xfbP=xdelayms()}voiddisplayminute(ucharm)顯示分鐘{P=xfP=displaytablemdelayms()P=xefP=displaytablemdelayms()P=xdfP=xdelayms()}voiddisplaysecond(uchars)顯示秒{P=xbfP=displaytablesdelayms()P=xfP=displaytablesdelayms()}voidmain(){ucharReadValue緩沖數據用的initds()ds初始化IT=外部中斷EX=EA=while(){ReadValue=readset(x)從秒寄存器讀數據second=((ReadValuex)>>)*(ReadValuexF)將讀出數據轉化displaysecond(second)顯示秒ReadValue=readset(x)從分寄存器讀minute=((ReadValuex)>>)*(ReadValuexF)將讀出數據轉化displayminute(minute)顯示分ReadValue=readset(x)從分寄存器讀hour=((ReadValuex)>>)*(ReadValuexF)將讀出數據轉化displayhour(hour)顯示小時}}voidint()interrupt外部中斷{if(key==){stoptime()}elseif(key==){stoptime()}}第六部分測試數據與結果分析我們利用一只走時準確的電子表進行時鐘比對證明本作品走時準確按鍵是否會實現效果。顯示圖從以上圖中可以看出數碼管顯示的與DSClock–U上Time顯示出來的數相同雖然與Date后的數不同但那是我們沒有編寫那個程序。第七部分多功能數字鐘使用說明這次設計的電子實時時鐘采用多個LED數碼管顯示我們可以用仿真軟件給以教程。DS在計時時數碼管上顯示時分秒當我們按下key按鈕時DS計時停止這個我們可以從數碼管上看出來當我們按下key按鈕時DS有開始計時。總結從這次的設計中讓我更加的了解DS的工作原理讓我對按照時序圖來設計程序更加有趣在以前看到很多芯片的數據手冊要把它們這些芯片和單片機連接起來就的編寫程序而老師又不會給程序給我們別的人就算是給了自己也不會因為根本看不懂到最后只有靠自己來設計程序但每次看到那時序圖就傻了根本就不知道從哪著手。通過這次對DS芯片的設計讓我對看時序圖設計程序摸到了路線和套路。經過本次設計讓我收益非淺。但也發現了自己的一些不足在今后的學習過程中將更加努力以適應社會和時代發展要求。兩個按鈕控制時鐘芯片的運行及停止數碼管顯示時、分、秒DS時鐘芯片復位電路外部中斷設置、定義一個緩沖數據ReadValue、DS初始化時鐘信號產生電路單片機將讀出的數據轉化YESDS可以運行writeset(x,dat|xf)YESNO調用時、分、秒顯示程序MAIN延時msstoptime()stoptime()判斷KEY是否為?判斷KEY是否為?從秒寄存器讀取數據保存到緩沖數據ReadValue中key==key==DS停止運行writeset(x,dat|x)P賦段碼P賦位碼定義一個flag數據讀寄存器dat=readset(x)寫入不保護命令writeset(xe,x)判斷flag是否問為?DS停止計數writeset(x,dat|x)DS可以進行計數writeset(x,datxf)第頁共頁

      VIP尊享8折文檔

      用戶評價(0)

      關閉

      新課改視野下建構高中語文教學實驗成果報告(32KB)

      抱歉,積分不足下載失敗,請稍后再試!

      提示

      試讀已結束,如需要繼續閱讀或者下載,敬請購買!

      文檔小程序碼

      使用微信“掃一掃”掃碼尋找文檔

      1

      打開微信

      2

      掃描小程序碼

      3

      發布尋找信息

      4

      等待尋找結果

      我知道了
      評分:

      /20

      基于ds1302的單片機時鐘設計(修改版)

      20.0

      會員價¥16.0

      VIP

      在線
      客服

      免費
      郵箱

      愛問共享資料服務號

      掃描關注領取更多福利

      北京快三一定牛中奖号

        <code id="aciqg"></code>

        <nav id="aciqg"></nav>
          <mark id="aciqg"></mark><mark id="aciqg"><ruby id="aciqg"></ruby></mark>

            <code id="aciqg"></code>

            <nav id="aciqg"></nav>
              <mark id="aciqg"></mark><mark id="aciqg"><ruby id="aciqg"></ruby></mark>
              新时时组三最大遗漏 江西多乐彩又开奖结果查询 pk10冠亚和抓码方法 陕西11选5开奖规则 云南11选五开奖号今天 3d试机号走势图175000 浙江快乐彩走势图 财神捕鱼 贵州十一选五走势 十一选五在线缩水网页