




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、xxxxxx學(xué)院單片機課程設(shè)計報告題目:基于單片機的萬年歷設(shè)計 學(xué)生姓名學(xué) 號專 業(yè)電子信息專業(yè)班 級2009級1班指導(dǎo)教師學(xué) 部計算機科學(xué)與電氣工程課程設(shè)計時間2012年6月19日基于單片機的電子萬年歷設(shè)計摘 要隨著科技的快速發(fā)展,時間的流逝,至從觀太陽、擺鐘到現(xiàn)在電子鐘,人類不斷研究,不斷創(chuàng)新紀(jì)錄。ds12887 是美國達(dá)拉斯半導(dǎo)體公司(dallas) 最新推出的串行接口實時鐘芯片,采用cmos 技術(shù)制成,具有內(nèi)部晶振 和時鐘芯片備份鋰電池,同時它與目前ibm at 計算機常用的時鐘芯片mc146818b 和ds1287 管腳兼容,可直接替換。它所提供的世紀(jì)字節(jié)在位置32h ,世紀(jì)寄存器3
2、2h 到2000 年1 月1 日從19 增到20 。采用ds12887 芯片設(shè)計的時鐘電路不需任何外圍電路和器件,并具有良好的微機接口。ds12887芯片具有微功耗, 外圍接口簡單,精度高,工作穩(wěn)定可靠等優(yōu)點, 可廣泛用于各種需要較高精度的實時時鐘系統(tǒng)。對于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同時顯示年、月、日、周日、時、分、秒等信息,還具有時間校準(zhǔn)等功能。該電路采用at89s52單片機作為核心,功耗小,能在3v的低壓工作,電壓可選用35v電壓供電。 綜上所述此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。關(guān)鍵詞:160
3、2液晶,stc89c52 單片機,ds12887時鐘 詞條用小四號宋體字,詞條間用分號(;)隔開,3-5個關(guān)鍵詞小提示:當(dāng)需要從網(wǎng)站或者文檔復(fù)制到本文檔時,先將文字復(fù)制到文本文檔,然后再從文本文檔復(fù)制到本文檔的相應(yīng)位置,這樣就能夠保證格式是正確的!此行不會被打印千萬不要刪除行尾的分節(jié)符,此行不會被打印。(在word菜單-工具-選項-視圖標(biāo)簽中,格式標(biāo)記部分請全部打?qū)μ?,這樣就可以看到隱藏的分節(jié)符和空格等信息了)目錄摘要i第1章 緒 論11.1 本設(shè)計的意義11.1.1 設(shè)計發(fā)展與應(yīng)用11.2 本設(shè)計的功能11.3 本設(shè)計的要求2第2章 主要系統(tǒng)結(jié)構(gòu)描述32.1 系統(tǒng)結(jié)構(gòu)框圖及工作流程介紹32.
4、1.1 stc89c52模塊介紹32.2 液晶顯示模塊作用介紹52.2.1 1602字符型lcd簡介62.3 時鐘模塊作用介紹102.3.1 ds12887的介紹102.4 本章小結(jié)13第3章 系統(tǒng)硬件電路設(shè)計與實現(xiàn)143.1單片機最小系統(tǒng)設(shè)計143.1.1單片機介紹143.1.2單片機時鐘電路介紹153.1.3單片機復(fù)位電路介紹163.1.4單片機按鍵電路介紹163.2程序下載介紹163.2.1 主要芯片引腳功能介紹163.3本章小結(jié)17第4章 系統(tǒng)軟件調(diào)試環(huán)境介紹184.1 keil51軟件簡介184.1.1 軟件功能184.1.2 軟件應(yīng)用流程194.2 程序下載軟件介紹214.2.1
5、軟件功能214.2.2 軟件應(yīng)用流程214.3 本章小結(jié)24第5章 系統(tǒng)程序設(shè)計255.1 系統(tǒng)程序設(shè)計流程圖255.2 時鐘程序模塊詳細(xì)流程圖265.2.1 程序流程圖對應(yīng)程序代碼265.3 液晶程序模塊詳細(xì)流程圖285.3.1 程序流程圖對應(yīng)程序代碼295.4 按鍵控制程序模塊詳細(xì)流程圖315.4.1 程序流程圖對應(yīng)程序代碼315.5 本章小結(jié)33結(jié)論34參考文獻(xiàn)35附錄36千萬不要刪除行尾的分節(jié)符,此行不會被打印。在目錄上點右鍵“更新域”,然后“更新整個目錄”基于單片機的電子萬年歷設(shè)計第1章 緒 論1.1 本設(shè)計的意義 本設(shè)計是基于51系列的單片機進行的電子萬年歷設(shè)計,可以顯示年月日時分
6、秒及周信息,具有可調(diào)整日期和時間功能。在設(shè)計的同時對單片機的理論基礎(chǔ)和外圍擴展知識進行了比較全面準(zhǔn)備。在硬件與軟件設(shè)計時,沒有良好的基礎(chǔ)知識和實踐經(jīng)驗會受到很大限制,每項功能實現(xiàn)時需要那種硬件,程序該如何編寫,算法如何實現(xiàn)等,沒有一定的基礎(chǔ)就不可能很好的實現(xiàn)。所以意在培養(yǎng)同學(xué)的創(chuàng)新精神與實踐能力。1.1.1 設(shè)計發(fā)展與應(yīng)用時間在我們的生活中有著不可取代的作用,它可以為我們清晰地記錄下制作從開始到結(jié)束所需要的時間。時間對人們來說總是寶貴的,工作的忙碌性和繁雜性容易使人忘記當(dāng)前時間,忘記了要做的事情。當(dāng)事情不重要的時候,這種遺忘無傷大雅,但是,一旦事情重要,一時的耽誤可能釀成大禍。例如,許多火災(zāi)都
7、是由于人們遺忘而發(fā)生的,而時間的重要性在醫(yī)院、冶金、化工、食品、機械、石油等工業(yè)中,更是舉足重輕,而現(xiàn)在鐘表的數(shù)字化給人們的生活帶來了極大地方便。成為人們必不可少的必需品,廣泛用于個人家庭以及車站、碼頭、劇場、辦公室等公共場所,給人們的生活、學(xué)習(xí)、工作、娛樂帶來極大的方便。對于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同時顯示年、月、日、周日、時、分、秒和溫度等信息,還具有時間校準(zhǔn)等功能。萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。1.2 本設(shè)計的功能本電路是由stc89c52單片機為控制核心,具有在線編程功能,低功耗,能在
8、3v超低壓工作;時鐘電路由ds12887提供,它可以對年、月、日、周日、時、分、秒進行計時。采用三線接口與cpu進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或ram數(shù)據(jù)。ds1287內(nèi)部有一個用于臨時性存放數(shù)據(jù)的ram寄存器??僧a(chǎn)生年、月、日、時、分、秒,具有使用壽命長,精度高和低功耗等特點。1.3 本設(shè)計的要求隨著電子技術(shù)的高速發(fā)展,對電子方面人才的要求越來越高,不僅要求其具備相關(guān)的專業(yè)理論知識,還要求其具有較強的設(shè)計、制作等實踐動手能力,學(xué)校此次舉行的電子設(shè)計無疑是對從事電子相關(guān)專業(yè)的人的一次很好的鍛煉和考驗,是培養(yǎng)信息人才的一次良好的機會,為其提供了一個理論知識與實踐相結(jié)合的
9、平臺。 本次設(shè)計可分為兩部分:硬件部分、軟件部分。硬件部分包括:at89s52單片機、ds12c887時鐘芯片、1602lcd液晶顯示器。主要由at89s52單片機、實時時鐘芯片電路、液晶顯示輸出電路、鍵盤輸入電路組成等幾大部分組成。具體說來,系統(tǒng)智能控制部分由單片機及其相關(guān)的外圍電路組成,外圍電路包括復(fù)位電路、晶振電路、鍵盤設(shè)計、電源電路。利用單片機將復(fù)位電路、動態(tài)顯示電路、電源電路等正確的連接在一起,并通過單片機的編程來實現(xiàn)本次設(shè)計任務(wù)中的要求。軟件部分包括了主程序模塊,ds12c887模塊,lcd1602模塊,鍵盤控制模塊本設(shè)計的基本要求是:具有年、月、日、星期、時、分、秒等功能,同時具
10、備年、月、日、星期、時、分、秒校準(zhǔn)功能。具體的用單片機實現(xiàn)具有計時、校時等功能的數(shù)字時鐘,是以單片機at89s52為核心元件,結(jié)合ds12c887時鐘芯片,采用1602液晶顯示屏作為動態(tài)顯示年、月、日、星期、時、分、秒等的現(xiàn)代計時。第2章 主要系統(tǒng)結(jié)構(gòu)描述 2.1 系統(tǒng)結(jié)構(gòu)框圖及工作流程介紹本次設(shè)計的題目是基于ds12c887的高精度時鐘的設(shè)計,可以正常的顯示年、月、日、時、分、秒。本系統(tǒng)利用單片機實現(xiàn)具有計時、校時等功能的數(shù)字時鐘,是以單片機at89s52為核心元件,同時采用1602液晶顯示屏動態(tài)顯示“時”,“分”,“秒”的現(xiàn)代計時裝置。與傳統(tǒng)機械表相比,它具有走時精確,顯示直觀等特點。另外
11、具有校時功能,利用單片機實現(xiàn)的數(shù)字時鐘具有編程靈活,便于功能的擴充等優(yōu)點。顯示電路復(fù)位電路stc89c52時鐘電路按鍵電路 圖2-12.1.1 stc89c52模塊介紹stc89c52是美國 atmel公司生產(chǎn)的低電壓、高性能的 cmos 8位單片機,片內(nèi)含 4k bytes的可反復(fù)擦寫的只讀程序存儲器(perom)和 128 bytes的隨機存取數(shù)據(jù)存儲器(ram),器件采用 atmel公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容mcs-51指令系統(tǒng),片內(nèi)置通用 8位中央處理器(cpu)和 flash存儲單元,功能強大 2.1.1.1 stc89c52 的結(jié)構(gòu) 引腳功能: vcc:電源電壓 gn
12、d:接地 p0口:p0口是一組 8位漏極開路型雙向 i0口,也即地址數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能吸收電流的方式驅(qū)動 8個 ttl邏輯門電路,對端口寫“1”可作為高阻抗轉(zhuǎn)入端用。 pl口:p1是個內(nèi)部帶上拉電阻的8位雙向io口,p1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個ttl邏輯門電路。對端口寫 “1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電萌。 p2口:p2是一個帶有內(nèi)部上拉電阻的 8位雙向 io口,p2的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個 ttl邏輯門電路。對端口寫 “1”,通過內(nèi)部的上拉電
13、阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。 p3口:可以作為輸入/輸出口,外接輸入/輸出設(shè)備。作為第二功能使 p3 口的第二功能 rst:復(fù)位輸入。當(dāng)振蕩器工作時,rst引腳出現(xiàn)兩個機器周期以上高電平將使單片機復(fù)位。 ale/prog:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ale(地址鎖存允許)輸出脈沖用于鎖存地址的低 8位字節(jié)。即使不訪問外部存儲器,ale仍以時鐘振器頻率的 16輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。 psen:程序存儲允許(psen)輸出是外部程序存儲器的讀選通信號,當(dāng) at89c51
14、由外部程序存儲器取指令(或數(shù)據(jù))時每個機器周期兩次 psen有效,即輸出兩個脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,這兩次有效的 psen信號不出現(xiàn)。 eavpp:ea0,單片機只訪問外部程序存儲器。 ea1,單片機訪問內(nèi)部程序存儲器。xtali:振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。xtal2:振蕩器反相放大器的輸出端。 t89s52單片機為40引腳雙列直插芯片,有四個i/o口p0,p1,p2,p3, mcs-51單片機共有4個8位的i/o口(p0、p1、p2、p3),每一條i/o線都能獨立地作輸出或輸入。2.1.1.2 stc89c52 的特點與 mcs-51產(chǎn)品指令系統(tǒng)完全兼容 4k
15、字節(jié)可重擦寫flash閃速存儲器 1000次擦寫周期 全靜態(tài)操作:0hz-24mhz 三級加密程序存儲器 128*8字節(jié)內(nèi)部ram 32個可編程io口線 2個16位定時計數(shù)器 6個中斷源 可編程串行 uart通道 低功耗空閑和掉電模式 2.2 液晶顯示模塊作用介紹1602液晶也叫1602字符型液晶 它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊 它有若干個5x7或者5x11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。顯示電路采用lcd1602液晶顯示,如圖(10)所示,圖中只畫出了其相應(yīng)的接口,3腳用于調(diào)節(jié)lcd1602的背光,4、5、6為lcd1602的控制口,用于控制其寫入
16、或是讀出指令,7至14腳為lcd1602的數(shù)據(jù)口,將數(shù)傳送到lcd1602中。 圖22 lcd1602顯示電路2.2.1 1602字符型lcd簡介本設(shè)計采用1602字符型lcd,可顯示兩行,每行16個字符,不能顯示漢字,內(nèi)置含128個字符的ascii字符集字庫,只有并行接口,無串行接口。這種1602字符型lcd通常有14條引腳線或16條引腳線的lcd,多出來的2條線是背光電源線。字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式lcd,目前常用161,162,202和402行等的模塊。1602字符型lcd的主要技術(shù)參數(shù)為:(1)顯示容量:162個字符;(2)芯片工作電壓:4.55.5
17、v;(3)工作電流2ma(5.0v)不包括背光電流;(4)模塊最佳工作電壓:5v;(5)字符尺寸:2.954.35(wh)mm;(6)帶有英文和日文字庫,使用方便;1602字符型lcd的基本操作時序: 讀狀態(tài) 輸入:rs=l,r/w=h,e=h 輸出:d0d7=狀態(tài)字 讀數(shù)據(jù) 輸入:rs=h,r/w=h,e=h 輸出:無寫指令 輸入:rs=l,r/w=l,d0d7=指令碼,e=高脈沖 輸出:d0d7=數(shù)據(jù)寫指令 輸入:rs=h,r/w=l,d0d7=數(shù)據(jù),e=高脈沖 輸出:無1602字符型lcd 的ram地址映射圖:液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低
18、電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符??刂破鲀?nèi)部帶有80b的ram緩沖區(qū),對應(yīng)關(guān)系如圖所示。 lcd 16字2行00 0102030405060708090a0b0c0d0e0f27404142434445464748494a4b4c4d4e4f67圖2-1 1602內(nèi)部ram地址映射圖當(dāng)向圖中的000f、404f地址中任一處寫入顯示數(shù)據(jù)時,液晶都可立即顯示出來,當(dāng)寫入到1027或5067地址處時,必須通過移屏指令將它們移入可顯示區(qū)域方可顯示正常。1602字符型lcd的狀態(tài)字說明如表3.4所示。表2-2 狀態(tài)字說明sta7 d7sta6
19、 d6sta5 d5sta4 d4sta3 d3sta2 d2sta1 d1sta0 d0sta0sta6當(dāng)前地址指針的數(shù)值sta7讀/寫操作使能1禁止;1允許原則上沒次對控制器進行讀/寫操作之前,都必須進行讀/寫檢測,確保sta7為0。實際上由于單片機的操作速度慢于液晶控制器的反應(yīng)速度,因此可以不進行讀/寫檢測,或只進行簡短延時即可。1602字符型lcd的數(shù)據(jù)指針設(shè)置:控制器內(nèi)部設(shè)有一個數(shù)據(jù)地址指針,用戶可以通過它們訪問內(nèi)部的全部80b的ram。數(shù)據(jù)指針設(shè)置如表3.5所示。表2-3 數(shù)據(jù)指針設(shè)置指令碼功能80h+地址碼(0h27h,40h67h)設(shè)置數(shù)據(jù)地址指針1602字符型lcd的其他設(shè)置
20、如表3.6所示。表2-4 其他設(shè)置指令碼功能01h顯示清屏:1.數(shù)據(jù)指針清0 2.所有顯示清002h顯示回車: 數(shù)據(jù)指針清01602字符型lcd的初始化設(shè)置:(1)顯示模式設(shè)置顯示模式設(shè)置如表3.7所示。表2-5 初始化設(shè)置的顯示模式設(shè)置指令碼功能00111000設(shè)置162顯示,57點陣,8位數(shù)據(jù)接口(2)顯示開/關(guān)以及光標(biāo)設(shè)置顯示開/關(guān)以及光標(biāo)設(shè)置如表3.8所示。表2-6 初始化設(shè)置的顯示開/關(guān)以及光標(biāo)設(shè)置指令碼功能00001dcbd=1開顯示;d=0關(guān)顯示c=1顯示光標(biāo);c=0不顯示光標(biāo)b=1光標(biāo)閃爍;b=0光標(biāo)不顯示0000001nsn=1當(dāng)讀或?qū)懸粋€字符后地址指針加1,且光標(biāo)加1n=0
21、當(dāng)讀或?qū)懸粋€字符后地址指針減1,且光標(biāo)減1s=1當(dāng)寫一個字符時,整屏顯示右移n=1或左移n=0,已得到光標(biāo)不移動而屏幕移動的效果s=0當(dāng)寫一個字符時,整屏顯示不移動00010000光標(biāo)左移00010100光標(biāo)右移00011000整屏左移,同時光標(biāo)跟隨移動00011100整屏右移,同時光標(biāo)跟隨移動1602字符型lcd的寫操作時序:(1)通過rs確定是寫數(shù)據(jù)還是寫命令。寫命令包括使液晶的光標(biāo)顯示/不顯示、光標(biāo)閃爍/不閃爍、需/不需要移屏、在液晶的什么位置顯示等等。寫數(shù)據(jù)時指要顯示什么內(nèi)容。(2)讀/寫控制端設(shè)置為寫模式,即低電平。(3)將數(shù)據(jù)或命令送達(dá)數(shù)據(jù)線上。(4)給e一個高脈沖將數(shù)據(jù)送入液晶控
22、制器,完成寫操作。讀操作時序、寫操作時序分別如圖所示。圖2-3 讀操作時序 圖2-4 寫操作時序2.3 時鐘模塊作用介紹2.3.1 ds12887的介紹ds12887是美國達(dá)接斯半導(dǎo)體公司(dallas)最新推出的串行接口實時時鐘芯片,采用cmos技術(shù)制成,具有內(nèi)部晶振和時鐘芯片備份鋰電池,同時它與目前ibm at計算機常用的時鐘芯片mc146818b和ds1287管腳兼容,可直接替換。它所提供的世紀(jì)字節(jié)在位置32h,世紀(jì)寄存器32h到2000年1月1日將從19遞增到20。采用ds12887芯片設(shè)計的時鐘電路無需任何外圍電路和器件,并具有良好的微機接口。ds12887芯片具有微功耗,外圍接口簡
23、單,精度高,工作穩(wěn)定可靠等優(yōu)點,可廣泛用于各種需要較高精度的實時時鐘系統(tǒng)中。2.3.1.1 ds12887的主要功能介紹(1)內(nèi)含一個鋰電池,斷電后運行十年以上不丟失數(shù)據(jù)。(2)計秒,分,時,天,星期,日,月,年,并有閏年補償功能。(3)二進制數(shù)碼或bcd碼表示時間,日歷和定鬧。(4)12小時或24小時制,12小時時鐘模式帶有pm和am指示,有夏令時功能。(5)motorola和intel總線時序選擇。(6)有128個字節(jié)ram單元與軟件接口,其中14個字節(jié)作為時鐘和控制寄存器,114字節(jié)為通用ram,所有ram單元數(shù)據(jù)都具有掉電保護功能。(7)可編程方波信號輸出。(8)中斷信號輸出(irq)
24、和總線兼容,定鬧中斷,周期性中斷、時鐘更新周期結(jié)束中斷可分別由軟件屏蔽,也可分別進行測試。2.3.1.2 ds12887的原理及引腳說明 圖25 ds12887內(nèi)部由振蕩電路,分頻電路,周期中斷/方波選擇電路,14字節(jié)時鐘和控制單元,114字節(jié)用戶非易失ram,十進制/二進制累加器,總線接口電路,電源開關(guān)寫保護單元和內(nèi)部鋰電池等部分組成。ds12887引腳分配如圖1:vcc:直流電源+5v電壓。當(dāng)5v電壓在正常范圍內(nèi)時,數(shù)據(jù)可讀寫;當(dāng)vcc低于4.25v,讀寫被禁止,計時功能仍繼續(xù);當(dāng)vcc下降到3v以下時,ram和計時器供電被切換到內(nèi)部鋰電池。mot(模式選擇):mot引腳接到vcc時,選擇
25、motorola時序,當(dāng)接到gnd時,選擇intel時序。sqw(方波信號輸出):sqw引腳能從實時鐘內(nèi)部15級分頻器的13個抽頭中選擇一個作為輸出信號,其輸出頻率可通過對寄存器a編程改變。ad0-ad7(雙向地址/數(shù)據(jù)復(fù)用線):總線接口,可與motorola微機系列和intel微機系列接口。as(地址選通輸入):用于實現(xiàn)信號分離,在ad/ale的下降沿把地址鎖入ds12887。ds(數(shù)據(jù)選通或讀輸入):ds/rd引腳有兩種操作模式,取決于mot引腳的電平,當(dāng)使用motorola時序時,ds是一正脈沖,出現(xiàn)在總線周期的后段,稱為數(shù)據(jù)選通;在讀周期,ds指示ds12887驅(qū)動雙向總線的時刻;在寫
26、周期,ds的后沿使ds12887鎖存寫數(shù)據(jù)。選擇intel時序時,ds稱作(rd),rd與典型存貯器的允許信號(oe)的定義相同。r/w(讀/寫輸入):r/w引腳也有兩種操作模式。選motorola時序時,r/w是低電平信號時,指示當(dāng)前周期是讀或?qū)懼芷?ds為高電平時,r/w高電平指示讀周期,r/w信號一低電平信號,稱為wr。在此模式下,r/w引腳與通用ram的寫允許信號(we)的含義相同。cs(片選輸入):在訪問ds12887的總線周期內(nèi),片選信號必須保持為低。irq(中斷申請輸入):低電平有效,可作微處理的中斷輸入。沒有中斷的條件滿足時,irq處于高阻態(tài)。irq線是漏極開路輸入,要求外接上
27、接電阻。reset(復(fù)位輸出):當(dāng)該腳保持低電平時間大于200ms,保證ds12887有效復(fù)位。2.4 本章小結(jié)本章主要是對系統(tǒng)結(jié)構(gòu)進行描述,以及各個功能模塊的作用和特點,為編程進行復(fù)習(xí)準(zhǔn)備工作。使我們更加了解這些模塊的運用。注意:除第一章緒論外,其他每一章都應(yīng)該有一個本章小結(jié)第3章 系統(tǒng)硬件電路設(shè)計與實現(xiàn)3.1單片機最小系統(tǒng)設(shè)計圖31單片機最小系統(tǒng) 3.1.1單片機介紹單片機(microcontroller, 又稱微控制器)是在一塊硅片上繼承了各種部件的微型計算機。這些部件包括中央處理器cpu、數(shù)據(jù)存儲器、定時器/計數(shù)器和多種i/o接口電路。stc89c52單片機為40引腳雙列直插芯片,有四
28、個i/o口p0,p1,p2,p3, mcs-51單片機共有4個8位的i/o口(p0、p1、p2、p3),每一條i/o線都能獨立地作輸出或輸入。 圖3-23.1.2單片機時鐘電路介紹時鐘是時序的基礎(chǔ),8052片內(nèi)由一個反向放大器構(gòu)成振蕩器,可以由它產(chǎn)生時鐘。但是雖然89c52有內(nèi)部振蕩電路,但要形成時鐘,必須外接元件,所以實際構(gòu)成的是振蕩時鐘電路。外接晶體以及電容c1和c2構(gòu)成并聯(lián)諧振電路接在放大器的反饋回路中。對接電容的值雖然沒有嚴(yán)格的要求,但電容的大小會影響振蕩器頻率的高低、振蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。晶體頻率可在12mhz-12mhz之間任選,電容c1和c2的典型值在20p
29、f-100pf之間選擇,考慮到本系統(tǒng)對于外接晶體的頻率穩(wěn)定性要求不高,所以采取比較廉價的陶瓷諧振器。由于本系統(tǒng)應(yīng)用的機器周期為lms,所以,晶振選擇為12mhz,根據(jù)調(diào)試電容選擇30pf圖3-3 3.1.3單片機復(fù)位電路介紹 在單片機系統(tǒng)中,為了保證在上電時進行可靠的初始化,同時為了保證對電源的監(jiān)控,需要采用復(fù)位電路。常用的復(fù)位電路有rc復(fù)位電路和復(fù)位芯片,在此我們采用rc復(fù)位電路。如圖: 圖343.1.4單片機按鍵電路介紹按鍵電路由四個輕觸開關(guān)組成,如圖(9)所示。按鍵用來調(diào)整時間,其一端直接接到單片機的端口,另一端接地,當(dāng)按下按鍵時,相應(yīng)的端口變?yōu)榈碗娖剑ㄟ^一個與門只要這四個按鍵有一個按
30、下就會在p3.2檢測到一低電平就觸發(fā)外部中斷0進入按鍵調(diào)節(jié)程序中,通過與各個鍵相連的端口p3.4_p3.7可以判斷是哪個鍵按下,從而作相應(yīng)的操作。3.2程序下載介紹單片機在控制本地的外圍器件時信息的交互是通過8位并行數(shù)據(jù)線進行的,在電路的硬件設(shè)計上,主要采用串口和max232方便的實現(xiàn)單片機pc機之間的串行通信。3.2.1 主要芯片引腳功能介紹max232芯片是美信公司專門為電腦的rs-232標(biāo)準(zhǔn)串口設(shè)計的單電源電平轉(zhuǎn)換芯片,使用+5v單電源供電。 圖34引腳介紹: 第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個電源,提供給rs-232串口電平
31、的需要。 第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個數(shù)據(jù)通道。 其中13腳(r1in)、12腳(r1out)、11腳(t1in)、14腳(t1out)為第一數(shù)據(jù)通道。 8腳(r2in)、9腳(r2out)、10腳(t2in)、7腳(t2out)為第二數(shù)據(jù)通道。 ttl/cmos數(shù)據(jù)從t1in、t2in輸入轉(zhuǎn)換成rs-232數(shù)據(jù)從t1out、t2out送到電腦db9插頭;db9插頭的rs-232數(shù)據(jù)從r1in、r2in輸入轉(zhuǎn)換成ttl/cmos數(shù)據(jù)后從r1out、r2out輸出。 第三部分是供電。15腳gnd、16腳vcc(+5v)。 主要特點: 1、符合所有的
32、rs-232c技術(shù)標(biāo)準(zhǔn) 2、只需要單一 +5v電源供電 3、片載電荷泵具有升壓、電壓極性反轉(zhuǎn)能力,能夠產(chǎn)生+10v和-10v電壓v+、v- 4、功耗低,典型供電電流5ma 5、內(nèi)部集成2個rs-232c驅(qū)動器 6、內(nèi)部集成兩個rs-232c接收器下圖為mx232雙串口的連接圖,可以分別接單片機的串行通信口或者實驗板的其它串行通信接口: 圖353.3本章小結(jié)本章主要對硬件系統(tǒng)結(jié)構(gòu)進行描述以及如何實現(xiàn)的一些詳細(xì)流程。ds12c887的高精確時鐘的硬件設(shè)計,硬件模塊包括at89s52控制模塊,ds12c887時鐘模塊,1602顯示模塊,鍵盤及外圍電路,外圍電路即晶振和復(fù)位電路功能運用。第4章 系統(tǒng)軟
33、件調(diào)試環(huán)境介紹4.1 keil51軟件簡介單片機開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要變?yōu)閏pu可以執(zhí)行的機器碼有兩種方法,一種是手工匯編,另一種是機器匯編,目前已極少使用手工匯編的方法了。機器匯編是通過匯編軟件將源程序變?yōu)闄C器碼,用于mcs-51單片機的匯編軟件有早期的a51,隨著單片機開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級語言開發(fā),單片機的開發(fā)軟件也在不斷發(fā)展,keil軟件是目前最流行開發(fā)mcs-51系列單片機的軟件,這從近年來各仿真機廠商紛紛宣布全面支持keil即可看出。keil提供了包括c編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在
34、內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(mvision)將這些部份組合在一起。運行keil軟件需要pentium或以上的cpu,16mb或更多ram、20m以上空閑的硬盤空間、win98、nt、win2000、winxp等操作系統(tǒng)。掌握這一軟件的使用對于使用51系列單片機的愛好者來說是十分必要的,如果你使用c語言編程,那么keil幾乎就是你的不二之選(目前在國內(nèi)你只能買到該軟件、而你買的仿真機也很可能只支持該軟件),即使不使用c語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強大的軟件仿真調(diào)試工具也會令你事半功倍。4.1.1 軟件功能keil c51是美國keil software公司出品的51
35、系列兼容單片機c語言軟件開發(fā)系統(tǒng),與匯編相比,c語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。用過匯編語言后再使用c來開發(fā),體會更加深刻。c51工具包的整體結(jié)構(gòu),其中mvision與ishell分別是c51 for windows和for dos的集成開發(fā)環(huán)境(ide),可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人員可用ide本身或其它編輯器編輯c或匯編源文件。然后分別由c51及a51編譯器編譯生成目標(biāo)文件(.obj)。目標(biāo)文件可由lib51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)l51連接定位生成絕對目標(biāo)文件(.abs)。abs文件由oh51轉(zhuǎn)換成標(biāo)準(zhǔn)的hex
36、文件,以供調(diào)試器dscope51或tscope51使用進行源代碼級調(diào)試,也可由仿真器使用直接對目標(biāo)板進行調(diào)試,也可以直接寫入程序存貯器如eprom中。keil51的編譯環(huán)境如圖5-1所示。圖中:標(biāo)題欄:顯示當(dāng)前編譯的文件菜單條:有十項菜單可供選擇,相應(yīng)的所有操作命令均可在此菜單中查找;工具欄:常用命令的快捷圖標(biāo)按鈕;管理窗口:顯示工程文件的項目、各個寄存器值的變化、參考資料等;信息窗口:顯示當(dāng)前文件編譯、運行等相關(guān)信息;工作窗口:各種文件的顯示窗口。圖5-1 keil51的編譯環(huán)境keil c51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全windows界面。另外重要的一點,只要看一下
37、編譯后生成的匯編代碼,就能體會到keil c51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。下面詳細(xì)介紹keil c51開發(fā)系統(tǒng)各部分功能和使用。4.1.2 軟件應(yīng)用流程keil 51 編譯指南:第1步: 打開keil51軟件,首先彈出一個開機啟動畫面。第2步: 然后進入keil51的開發(fā)界面。下面簡要介紹一下keil51開發(fā)環(huán)境中各個區(qū)域的功能。keil51開發(fā)環(huán)境可以分為四個區(qū)域,分別為:菜單條、項目文件管理窗口、代碼編譯窗口和代碼編譯信息窗口四個部分。菜單條分為十項,所有的命令都可以在這里找到。下面的命令是一些常用的菜單命令
38、,如文件的打開、關(guān)閉及保存。其中編譯命令最為常用。中間靠左是項目文件管理窗口,這里可以看到當(dāng)前項目中所包含的所有帶編譯的文件。項目文件管理窗口的右側(cè)是代碼編譯窗口,這事我們最主要的工作區(qū)域。最底層顯示了代碼編譯的信息。當(dāng)代碼有語法錯誤時,可以在這里輕松的找到問題的所在。第3步:下面以建立一個簡單的項目為例,來說明keil51開發(fā)項目的一般方法。單擊project菜單項,選擇new project項。第4步:此時彈出create new project對話框,選擇合適的路徑口,在文件名一欄中填入新工程的名字。單擊保存。第5步: 根據(jù)所用的器件,選擇cpu的型號,單擊確定。第6步:keil51詢問
39、是否生成默認(rèn)的配置文件,這個可選可不選,這里選定。單擊yes,觀察項目文件管理窗口的變化。第7步:在file菜單下單擊new選項,新建文件。此時在代碼窗口出現(xiàn)一“text1”空白文檔。第8步: 在“text1”中編輯完代碼后,單擊file菜單中的保存項,彈出保存對話框。保存名寫為text.c。單擊保存。注意在對文件命名時必須加擴展名。第9步: 在項目導(dǎo)航欄中source group 上單擊右鍵,選add file to group source group 1。第10步: 此時彈出add file 對話框。選中剛才保存的text.c文件。單擊add。此時在項目文件管理窗口中就會出現(xiàn)剛才所添加的
40、文件text.c。 第11步: 單擊快捷菜單欄中的編譯按鈕,可以編譯程序。第12步: 單擊project菜單項,選擇option for target target 1選項。在彈出的對話框中可以對project進行總體配置。第13步: 選擇output 選項卡,單擊create hex file ,代碼輸出格式應(yīng)為hex-80 。第14步: 單擊確定后,并重新編譯??梢钥吹骄幾g成功之后,build 選項卡里又多了一項。這是生成的hex 文件。第15步: 單擊debug 菜單項中的start/stop debug session 命令或工具欄中的進入調(diào)試界面。第16步: 單擊調(diào)試界面debug
41、菜單項中的go命令或工具欄中的運行程序,單擊stop running 命令或來結(jié)束程序。觀察運行結(jié)果,若結(jié)果正確,便可通過下載軟件將它燒寫到目標(biāo)板上去。 這樣,一個簡單的keil51下的項目就完成了。注:keil51 對匯編語言文件的編譯調(diào)試步驟和對c語言的編譯調(diào)試基本上是一樣的,只是在第八步中用匯編語言進行代碼的編寫,并在保存文件時將擴展名加成 . asm。本系統(tǒng)中,最初采用把9個狀態(tài)分別設(shè)置成一個子函數(shù)的方法。在每個子函數(shù)中對在此狀態(tài)中需要點亮的led單獨賦值,延時程序采用定時器延時,在主函數(shù)中設(shè)置調(diào)用子函數(shù)。但是在調(diào)試過程中遇到很多問題,比如,led并未按照理想的方式點亮或熄滅,也沒有狀
42、態(tài)變化。在經(jīng)過分析后,采用了另一種更為簡單的方法,即給p1口和p2口整體賦值,如p1=0xff、p2=0xff即表示所有l(wèi)ed不點亮。每個狀態(tài)只需賦一個或兩個值,需要延時只需調(diào)用延時程序。此外,對延時程序也進行了修改,把原有方案改為用cpu延時,這樣,程序變得較為簡單易行。4.2 程序下載軟件介紹stc89c52單片機采用stc_isp_v4.80向內(nèi)部燒寫程序。4.2.1 軟件功能stc_isp_v4.80是由stc公司研發(fā),可以向stc89c51、stc89c52等系列單片機內(nèi)燒寫程序??梢栽O(shè)置波特率,串口等參數(shù)。同時stc_isp_v4.80還可以作為串口調(diào)試工具,用于串口收發(fā)數(shù)據(jù)的調(diào)試
43、軟件。4.2.2 軟件應(yīng)用流程第一:打開stc_isp_v4.80軟件,分別設(shè)置最高,最低波特率,并選擇相應(yīng)的串口等參數(shù)。如圖:第二:打開所要下載的.hex文件,如圖所示:第三:點擊download,程序就開始燒寫了。如圖:你看到下面的提示表示你成功下載了,恭喜你!4.3 本章小結(jié)本章主要對系統(tǒng)軟件調(diào)試環(huán)境進行介紹,并詳細(xì)的解釋了軟件應(yīng)用流程。以便于我們對它進行使用。包括軟件介紹和調(diào)試中存在的問題和解決辦法以及顯示結(jié)果。第5章 系統(tǒng)程序設(shè)計5.1 系統(tǒng)程序設(shè)計流程圖開始初始化 讀日期、時間 寫日期、時間 顯示子程序 時間修改子程序 日期修改子程序顯示結(jié)果返回 開關(guān)控制子程序 圖5-1主程序流程
44、圖5.2 時鐘程序模塊詳細(xì)流程圖開始 ds12c887初始化 調(diào)用函數(shù)獲取時鐘信息 送數(shù)據(jù)顯示 圖4.2 ds12c887的流程圖5.2.1 程序流程圖對應(yīng)程序代碼void init_ds12887(unsigned char *time) unsigned char time_rigst; p12887b=0x80;/set=1 芯片停止工作 允許初始化 year=*time; time+; month=*time; time+; day=*time; time+; hour=*time; time+; min=*time; p12887_databuf=0x55; p12887a=0x20
45、;/0 010 0000 工作頻率32.768khz time_rigst=p12887c;/清除中斷請求標(biāo)志 time_rigst=p12887d;/片內(nèi)寄存器和ram數(shù)據(jù)有效 p12887b=0x06;/0000 0110 關(guān)閉報警中斷,2進制數(shù),24小時制,芯片工作 unsigned char read12887(unsigned char uctype) /讀取系統(tǒng)時間 uctype 代表要讀的內(nèi)容 unsigned char idata ucvalue; while(p12887a&0x80)=0x80);/t+;if(t20000)break; ; /12887 a 寄存器最高位
46、為 1 12887 處于更新狀態(tài)禁止讀寄存器 switch(uctype) /察看要讀的內(nèi)容 case 1: ucvalue=year; /取年寄存器 break; case 2: if(month12) month=1; /月校正 ucvalue=month; /取月寄存器 break; case 3: if(day31) day=1; /日校正 ucvalue=day; /取日寄存器 break; case 4: if(hour23) hour=0; /小時校正 ucvalue=hour; /取小時寄存器 break; case 5: if(min59) min=0; /分校正 ucval
47、ue=min; /取分寄存器 break; case 6: if(second59) second=0; /秒校正 ucvalue=second; /取秒寄存器 break; default: ucvalue=0; return ucvalue; /返回讀的數(shù)據(jù)void wait();5.3 液晶程序模塊詳細(xì)流程圖 開始 1602初始化 讀取數(shù)據(jù) 第一行顯示 讀取數(shù)據(jù) 第二行顯示 結(jié)束 圖5-3 1602lcd的流程圖5.3.1 程序流程圖對應(yīng)程序代碼/*1602寫命令程序*/void send_command(uint command) wait(); l_w_c=command;/*160
48、2*/void delay() uint i,j; for(i=0;i50;i+) for(j=0;j50;j+) ;/*讀忙程序*/ void wait() ucharx; do x=l_r_c; while(x&0x80); delay();/*1602寫數(shù)據(jù)程序*/void send_data(uint sdata) wait(); l_w_d=sdata;void dis_time(uchar addr,uchar type) uchar dis_h,dis_l; uchar time_buf,star_addr; if(addr16) star_addr=0x80; else sta
49、r_addr=0xc0-10; time_buf=read12887(type); dis_h=time_buf/10+0x30; dis_l=time_buf%10+0x30; send_command(star_addr+addr); send_data(dis_h); send_command(star_addr+1+addr); send_data(dis_l); 5.4 按鍵控制程序模塊詳細(xì)流程圖圖6 時間調(diào)整程序流程圖5.4.1 程序流程圖對應(yīng)程序代碼 void key() unsigned char pd1,zc,wei=1; p12887b=0x80;/set=1 芯片停止工作
50、 允許初始化 send_command(0x0f); send_command(0x81); pd1=1;/ send_data(time_int0/10);zc=time_int0/10;while(pd1)right=left=up=left=ok=1;if(up=0) zc+; send_data(zc+48); send_command(0x80+wei);while(!up);if(down=0) zc-; send_data(zc+48); send_command(0x80+wei);while(!down);if(right=0)/zc=0;switch(wei)case 1: temp_time0=zc*10;zc=time_int0%10;wei+; break;case 2: temp_time0+=zc;zc=time_int1/10;wei+=2;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞務(wù)合同范本廣告
- 個人委托門面出租合同范本
- 公租房攤位出租合同范本
- 業(yè)主自建翻車裝修合同范本
- 第14課 文藝復(fù)興運動(教學(xué)設(shè)計)-2024-2025學(xué)年九年級歷史上冊素養(yǎng)提升教學(xué)設(shè)計(統(tǒng)編版)
- 低價轉(zhuǎn)讓合同范本
- 云溪區(qū)土地流轉(zhuǎn)合同范本
- 買新盤合同范本
- 公司員工兼職合同范本
- 代工工廠保密合同范本
- 人文地理學(xué)期末考試試題
- 中華人民共和國國歌教案【四篇】
- 北師大版數(shù)學(xué)二年級上冊口算題練習(xí)(300道)可直接打印
- 西方音樂史完整演示文稿
- 關(guān)于優(yōu)秀干部特點和優(yōu)點【六篇】
- 臨時用藥申請表
- 有關(guān)變電站消防安全管理問題及對策
- 軍隊文職招聘(司機崗)近年考試真題題庫(含真題、典型題匯總)
- 圍棋初級死活常型
- 西師版二年級下大小比較
- 眼球結(jié)構(gòu)課件
評論
0/150
提交評論