單片機(jī)課程設(shè)計(jì)電子萬年歷設(shè)計(jì)(含源程序)_第1頁
單片機(jī)課程設(shè)計(jì)電子萬年歷設(shè)計(jì)(含源程序)_第2頁
單片機(jī)課程設(shè)計(jì)電子萬年歷設(shè)計(jì)(含源程序)_第3頁
單片機(jī)課程設(shè)計(jì)電子萬年歷設(shè)計(jì)(含源程序)_第4頁
單片機(jī)課程設(shè)計(jì)電子萬年歷設(shè)計(jì)(含源程序)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 單片機(jī)課程設(shè)計(jì) 目錄第一章 引言2第二章 設(shè)計(jì)方案論證.3 2.1 方案論證與設(shè)計(jì)3 2.1.1 控制部分的方案選擇.3 2.1.2 顯示部分的方案選擇.4 2.1.3 系統(tǒng)基本方案選擇和論證.4 2.2 單片機(jī)原理5 2.3 led顯示數(shù)碼管.5第三章 計(jì)算部分.5 3.1 主要單元電路的器件.5 3.1.1 單片機(jī)主控制模塊.6 3.2其他模塊器件.10 3.2.1 74ls164.10 3.2.2 其他元器件.10第四章 結(jié)構(gòu)設(shè)計(jì)部分13 4.1 顯示部分設(shè)計(jì).12 4.1.1 萬年歷優(yōu)先算法.13 4.1.2 秒表顯示.13 4.2 電路控制部分設(shè)計(jì).13 4.3 整體設(shè)計(jì).14 4

2、.4 系統(tǒng)軟件設(shè)計(jì).16 4.4.1 proteus 軟件仿真.17結(jié)束語19參考文獻(xiàn).20系統(tǒng)程序清單.20第一章 引言 隨著微電子技術(shù)的高速發(fā)展,單片機(jī)在國民經(jīng)濟(jì)的個(gè)人領(lǐng)域得到了廣泛的運(yùn)用。單片機(jī)以體積小、功能全、性價(jià)比高等諸多優(yōu)點(diǎn),在工業(yè)控制、家用電器、通信設(shè)備、信息處理、尖端武器等各種測控領(lǐng)域的應(yīng)用中獨(dú)占鰲頭,單片機(jī)開發(fā)技術(shù)已成為電子信息、電氣、通信、自動(dòng)化、機(jī)電一體化等專業(yè)技術(shù)人員必須掌握的技術(shù)。而電子萬年歷作為電子類小設(shè)計(jì)不僅是市場上的寵兒,也是是單片機(jī)實(shí)驗(yàn)中一個(gè)很常用的題目。因?yàn)樗挠泻芎玫拈_放性和可發(fā)揮性,因此對作者的要求比較高,不僅考察了對單片機(jī)的掌握能力更加強(qiáng)調(diào)了對單片機(jī)擴(kuò)

3、展的應(yīng)用。而且在操作的設(shè)計(jì)上要力求簡潔,功能上盡量齊全,顯示界面也要出色。數(shù)字顯示的日歷鐘已經(jīng)越來越流行,特別是適合在家庭居室、辦公室、大廳、會(huì)議室、車站和廣場等使用,壁掛式led數(shù)碼管顯示的日歷鐘逐漸受到人們的歡迎。led數(shù)字顯示的日歷鐘顯示清晰直觀、走時(shí)準(zhǔn)確、可以進(jìn)行夜視,并且還可以擴(kuò)展出多種功能。 所以,電子萬年歷無論作為比賽題目還是練習(xí)題目都是很有價(jià)值。關(guān)鍵字: 單片機(jī) 顯示器 計(jì)時(shí) 萬年歷 秒表第二章 設(shè)計(jì)方案論證21方案論證與設(shè)計(jì)2.1.1.控制部分的方案選擇 a)用可編程邏輯器件設(shè)計(jì)。可采用altera公司的flex10k系列pld器件。設(shè)計(jì)起來結(jié)構(gòu)清晰,各個(gè)模塊,從硬件上設(shè)計(jì)起

4、來相對簡單,控制與顯示的模塊間的連接也會(huì)比較方便。但是考慮到本設(shè)計(jì)的特點(diǎn),eda在功能擴(kuò)展上比較受局限,而且eda占用的資源也相對多一些。從成本上來講,用可編程邏輯器件來設(shè)計(jì)也沒有什么優(yōu)勢。 b)用凌陽16位單片機(jī)設(shè)計(jì)。凌陽16位單片機(jī)有豐富的中斷源和時(shí)基,方便本實(shí)驗(yàn)的設(shè)計(jì)。它的準(zhǔn)確度相當(dāng)高,并且c語言和匯編兼容的編程環(huán)境也很方便來實(shí)現(xiàn)一些遞歸調(diào)用。i/o口功能也比較強(qiáng)大,方便使用。用凌陽16位單片機(jī)做控制器最有特色的就是它的可編程音頻處理,可完成語音的錄制播放和識別。這些都方便對設(shè)計(jì)進(jìn)行擴(kuò)展,使設(shè)計(jì)更加完善。成本也相對低一些。2.1.2顯示部分的方案選擇a)液晶顯示方式。液晶顯示效果出眾,可

5、以運(yùn)用菜單項(xiàng)來方便操作,但是在顯示時(shí),特別是使用秒表功能時(shí)掃描速度跟不上,屏幕會(huì)有明顯的閃爍。而且由于61板的存儲(chǔ)空間有限,液晶顯示就不能與語音播抱程序同時(shí)實(shí)現(xiàn)。這些大大影響了電子萬年歷的性能。b)相比液晶顯示,采用8段數(shù)碼管既經(jīng)濟(jì)實(shí)惠,在效果上也可以加入語音報(bào)時(shí)功能,操作比較液晶顯示來說雖然略顯繁瑣,但總體也還可以做到比較人性化。所以,最后選擇led數(shù)碼管顯示方案。2.1.3系統(tǒng)基本方案選擇和論證1.單片機(jī)芯片的選擇方案和論證:方案一: 采用at89s52,片內(nèi)rom全都采用flash rom;能以3v的超底壓工作;同時(shí)也與mcs-51系列單片機(jī)完全該芯片內(nèi)部存儲(chǔ)器為8kb rom 存儲(chǔ)空間

6、,同樣具有89c51的功能,且具有在線編程可擦除技術(shù),與51單片機(jī)相比,存儲(chǔ)空間更大一些,處理能力更強(qiáng)一些,但價(jià)格昂貴。方案二:采用89c51芯片作為硬件核心,采用flash rom,內(nèi)部具有4kb rom 存儲(chǔ)空間,能于3v的超低壓工作,而且與mcs-51系列單片機(jī)完全兼容,雖然其存儲(chǔ)空間和處理能力都比不上52單片機(jī),但是51單片機(jī)的處理能力完全能夠滿足我們的要求,而且價(jià)格方面非常便宜。所以選擇采用at89c51作為主控制系統(tǒng).2. 顯示模塊選擇方案和論證:方案一: 采用led液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形led數(shù)碼管價(jià)格適中,對于顯示數(shù)字最合適,而且采用動(dòng)態(tài)掃描

7、法與單片機(jī)連,顯示多樣,清晰可見,但是價(jià)格昂貴,需要的接口線多,所以在此設(shè)計(jì)中不采用led液晶顯示屏.方案二:采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對較高,所以也不用此種作為顯示.方案三:采用led數(shù)碼管動(dòng)態(tài)掃描,接時(shí),占用的單片機(jī)口線少。所以采用了led數(shù)碼管作為顯示。3. 電路設(shè)計(jì)最終方案決定綜上各方案所述,對此次作品的方案選定: 采用at89c51作為主控制系統(tǒng);led數(shù)碼管動(dòng)態(tài)掃描作為顯示。2.2 單片機(jī)原理單片機(jī)就是簡化的微型計(jì)算機(jī)。cpu中本身自帶存儲(chǔ)器rom和ram。cpu片內(nèi)也有總線。ic(集

8、成電路)技術(shù)是將電路通過特殊工藝做在一塊硅基片上封裝成芯片,比如cpu,片外存儲(chǔ)器等等。 將單片機(jī)cpu(比如51系列),晶振,存儲(chǔ)器,地址鎖存器,邏輯門,七段譯碼器(顯示器),按鈕(類似鍵盤),擴(kuò)展芯片,接口等通過pcb工藝(比如smt貼片,或者插裝)做在環(huán)氧樹脂板上。這樣才是一個(gè)完整的單片(做在一塊pcb板上)的微型計(jì)算機(jī)。 2.3 led顯示數(shù)碼管常見的led顯示具有清晰明亮的特點(diǎn)。是顯示接口也是絕大多數(shù)單片機(jī)應(yīng)用系統(tǒng)必備的部件之一。發(fā)光二極管組成的顯示器是單片機(jī)應(yīng)用產(chǎn)品中最常用的廉價(jià)輸出設(shè)備。它由若干個(gè)發(fā)光二極管按一定的規(guī)律排列而成。當(dāng)某一個(gè)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)點(diǎn)或一筆畫被點(diǎn)亮

9、,控制不同組合的二極管導(dǎo)通,就能顯出各種字符。1. 顯示器的結(jié)構(gòu)常用的7段顯示器的結(jié)構(gòu)如圖所示,發(fā)光二極管的陽極連在一起的稱為共陽極顯示器,陰極連在一起的成為共陰顯示器。1位顯示器由8個(gè)發(fā)光二極管組成,其中7個(gè)發(fā)光二極管ag控制7個(gè)筆畫的亮或暗,另一個(gè)控制一個(gè)小數(shù)點(diǎn)的亮和暗,這種筆畫的七段顯示器能顯示的字符較少,字符的形狀有些失真,但失控簡單,使用方便。第三章計(jì)算部分3.1 主要單元電路的器件3.1.1單片機(jī)主控制模塊1內(nèi)部結(jié)構(gòu)8051是mcs-51系列單片機(jī)的典型產(chǎn)品,我們以這一代表性的機(jī)型進(jìn)行系統(tǒng)的講解。 8051單片機(jī)包含中央處理器、程序存儲(chǔ)器(rom)、數(shù)據(jù)存儲(chǔ)器(ram)、定時(shí)/計(jì)數(shù)

10、器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說明: 中央處理器:中央處理器(cpu)是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,cpu負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)算和控制輸入輸出功能等操作。數(shù)據(jù)存儲(chǔ)器(ram):8051內(nèi)部有128個(gè)8位用戶數(shù)據(jù)存儲(chǔ)單元和128個(gè)專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的的ram只有128個(gè),可存放讀寫的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶定義的字型表。程序存儲(chǔ)器(rom):80

11、51共有4096個(gè)8位掩膜rom,用于存放用戶程序,原始數(shù)據(jù)或表格。定時(shí)/計(jì)數(shù)器(rom):8051有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。并行輸入輸出(i/o)口:8051共有4組8位i/o口(p0、 p1、p2或p3),用于對外部數(shù)據(jù)的傳輸。全雙工串行口:8051內(nèi)置一個(gè)全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。中斷系統(tǒng):8051具備較完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中斷,可滿足不同的控制要求,并具有2級的優(yōu)先級別選擇。時(shí)鐘電路:8051內(nèi)置最高頻率達(dá)12mhz

12、的時(shí)鐘電路,用于產(chǎn)生整個(gè)單片機(jī)運(yùn)行的脈沖時(shí)序,但8051單片機(jī)需外置振蕩電容。單片機(jī)的結(jié)構(gòu)有兩種類型,一種是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開的形式,即哈佛(harvard)結(jié)構(gòu),另一種是采用通用計(jì)算機(jī)廣泛使用的程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器合二為一的結(jié)構(gòu),即普林斯頓(princeton)結(jié)構(gòu)。intel的mcs-51系列單片機(jī)采用的是哈佛結(jié)構(gòu)的形式,而后續(xù)產(chǎn)品16位的mcs-96系列單片機(jī)則采用普林斯頓結(jié)構(gòu)。2.引腳定義及功能: mcs-51系列單片機(jī)中的8031、8051及8751均采用40pin封裝的雙列直接dip結(jié)構(gòu),右圖是它們的引腳配置,40個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩根,4

13、組8位共32個(gè)i/o口,中斷口線與p3口線復(fù)用。現(xiàn)在我們對這些引腳的功能加以說明: 1).電源及時(shí)鐘引腳vcc:接+5v 電源vss:接地xtal1和xtal2:時(shí)鐘引腳,外接晶體引線端。當(dāng)使用芯片內(nèi)部時(shí)鐘時(shí),此兩引腳端用于外接石英晶體和微調(diào)電容;當(dāng)使用外部時(shí)鐘時(shí),用于接外部時(shí)鐘脈沖信號。2).控制引腳rst/vpq:rst是復(fù)位信號輸入端,vpd是備用電源輸入端。當(dāng)rst輸入端保持2個(gè)機(jī)器周期以上高電平時(shí),單片機(jī)完成復(fù)位初始化操作。當(dāng)主電源vcc發(fā)生故障而突然下降到一定低電壓或斷電時(shí),第2功能vpd將為片內(nèi)ram提供電源以保護(hù)片內(nèi)ram中的信息不丟失。ale/prog:地址鎖存允許信號輸入端

14、。在存取外存儲(chǔ)器時(shí),用于鎖存低8位地址信號。當(dāng)單片機(jī)正常工作后,ale端就周期性地以時(shí)鐘振蕩頻率的1/6固定頻率向外輸出正脈沖信號。此引腳的第2功能prog是對片內(nèi)帶有4k字節(jié)eprom的8751固外程序時(shí),作為編程脈沖輸入端。psen:程序存儲(chǔ)器允許輸出端。當(dāng)片外程序存儲(chǔ)器的讀選通信號,低電平有效。cpu從外部程序存儲(chǔ)器取指令時(shí),psen信號會(huì)自動(dòng)產(chǎn)生負(fù)脈沖,作為外部程序存儲(chǔ)器的選通信號。ea/vpp:程序存儲(chǔ)器地址允許輸入端。當(dāng)ea為高電平時(shí),cpu執(zhí)行片內(nèi)程序存儲(chǔ)器指令,但當(dāng)pc中的值超過0fffh時(shí),將自動(dòng)轉(zhuǎn)向執(zhí)行片外程序存儲(chǔ)器指令;當(dāng)ea為低電平時(shí),cpu只執(zhí)行片外程序存儲(chǔ)器指令。3

15、).i/o口引腳p0.0p0.7:p0口8位雙向i/o口;p1.0p1.7:p1口8位準(zhǔn)雙向i/o口;p2.0p2.7:p2口8位準(zhǔn)雙向i/o口;p3.0p3.7:p3口8位準(zhǔn)雙向i/o口。3片外總線結(jié)構(gòu)分為三部分:數(shù)據(jù)總線 data bus(db),地址總線 address bus (ab),控制總線 control bus(cb) 3.2其他模塊器件(1) 74hc164芯片外觀圖如下:74hc是個(gè)串入并出的8位移位寄存器,它常用于單片機(jī)系統(tǒng)中,其主要工作特點(diǎn)如下:串行輸入帶鎖存; 時(shí)鐘輸入,串行輸入帶緩沖 ;異步清除; 最高時(shí)鐘頻率可高達(dá)36mhz ;功耗:10mw/bit ;74系列工

16、作溫度: 0c to 70c ;vcc最高電壓:7v ;輸入最高電壓:7v; 高電平:0.4ma ;低電平:8ma其內(nèi)部引腳結(jié)構(gòu)圖如下:(2).電阻本實(shí)驗(yàn)采用金屬薄膜電阻,阻值為1k, 金屬膜電位器的電阻體可由合金膜、金屬氧化膜、金屬箔等分別組成。特點(diǎn)是分辯力高、耐高溫、溫度系數(shù)小、動(dòng)噪聲小、平滑性好。(3)電解電容本實(shí)驗(yàn)電解電容分別有20uf和100uf,在電路中起微調(diào)作用,用于復(fù)位與電源電路中。元件示意圖如下:(4).電容本實(shí)驗(yàn)中采用c104,在電源與地之間其去耦的作用,同時(shí)用于振蕩電路中。(5).晶振本實(shí)驗(yàn)采用6mhz的晶體振蕩器,xtal1和xtal2分別為晶振的輸入和輸出。該反向放大

17、器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,xtal2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號要通過一個(gè)二分頻觸發(fā)器,因此對外部時(shí)鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。(6).七段數(shù)碼管顯示器本實(shí)驗(yàn)選用元件示意圖如下:由于系統(tǒng)要顯示的內(nèi)容較簡單,顯示量不多,所以選用此數(shù)碼管既方便又經(jīng)濟(jì)。led有共陰極和共陽極兩種。如下圖所示。二極管的陰極連接在一起,通常此公共陰極接地,而共陽極則將發(fā)光二極管的陽極連接在一起,接入+5v的電壓。一位顯示器由8個(gè)發(fā)光二極管組成,其中7個(gè)發(fā)光二極管構(gòu)成字型“8”的各個(gè)筆劃(段)ag,另一個(gè)小數(shù)點(diǎn)為dp發(fā)光二極管。當(dāng)在某段

18、發(fā)光二極管施加一定的正向電壓時(shí),該段筆劃即亮;不加電壓則暗。為了保護(hù)各段led不被損壞,需外加限流電阻。圖3 led數(shù)碼管結(jié)構(gòu)原理圖led顯示數(shù)碼管通常由硬件7段譯碼集成電路,完成從數(shù)字到顯示碼的譯碼驅(qū)動(dòng)。本系統(tǒng)采用軟件譯碼,以減小體積,降低成本和功耗,軟件譯碼的另一優(yōu)勢還在于比硬件譯碼有更大的靈活性。所謂軟件譯碼,即由單片機(jī)軟件完成從數(shù)字到顯示碼的轉(zhuǎn)換。從led數(shù)碼管結(jié)構(gòu)原理可知,為了顯示字符,要為led顯示數(shù)碼管提供顯示段碼,組成一個(gè)“8”字形字符的7段,再加上1個(gè)小數(shù)點(diǎn)位,共計(jì)8段,因此提供給led數(shù)碼管的顯示段碼為1個(gè)字節(jié)。各段碼位與顯示段的對應(yīng)關(guān)系如表1。表1 各段碼位的對應(yīng)關(guān)系段碼

19、位d7d6d5d4d3d2d1d0顯示段dpgfedcba需說明的是當(dāng)用數(shù)據(jù)口連接led數(shù)碼管adp引腳時(shí),不同的連接方法,各段碼位與顯示段有不同的對應(yīng)關(guān)系。通常數(shù)據(jù)口的d0位與a段連接,d1位與b段連接,d7位與dp段連接,如表1所示,表2為用于led數(shù)碼管顯示的十六進(jìn)制數(shù)和空白字符與p的顯示段碼。表2 led顯示段碼字型共陽極段碼共陰極段碼字型共陽極段碼共陰極段碼0c0h3fh990h6fh1f9h06ha88h77h2a4h5bhb83h7ch3boh4fhcc6h39h499h66hda1h5eh592h6dhe86h79h682h7dhf84h71h7f8h07h空白ffh00h88

20、0h7fhp8ch73h注:(1)本表所列各字符的顯示段碼均為小數(shù)點(diǎn)不亮的情況。 (2)“空白”字符即沒有任何顯示。(7)、發(fā)光二極管發(fā)光二極管也與普通二極管一樣由pn結(jié)構(gòu)成,也具有單向?qū)щ娦?。本?shí)驗(yàn)選用下圖鐘紅色的發(fā)光二極管,在電子鐘電路中起閃爍計(jì)時(shí)作用,每半秒閃爍一次。6、8位移位寄存器芯片74hc16474hc164與89c51連接在一起實(shí)現(xiàn)了移位的串入并出。本實(shí)驗(yàn)中是利用89c51芯片的rxd(p30)和txd(p31)兩個(gè)引腳,通過串行口的緩沖寄存器sbuf將數(shù)據(jù)送入移位寄存器,然后串行輸入數(shù)碼管譯碼顯示。第四章 結(jié)構(gòu)設(shè)計(jì)部分4.1 顯示部分設(shè)計(jì)基本顯示原理:時(shí)鐘開始顯示為0時(shí)0分0

21、秒,也就是數(shù)碼管顯示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒 ,分鐘加1,10秒位回0。依次類推,時(shí)鐘最大的顯示值為23小時(shí)59分59秒。這里只要確定了1秒的定時(shí)時(shí)間, 其他位均以此為基準(zhǔn)往上累加。 同時(shí)時(shí)鐘達(dá)到最大值的時(shí)候天數(shù)也增加一位,根據(jù)不同的月份顯示的天數(shù)陽歷有28,29,30,31天,到了12個(gè)月后,年數(shù)自動(dòng)增加1,以此類推。顯示部分電路圖4.1.1萬年歷優(yōu)化算法每十月的總的天數(shù)相對來說是固定的。只有2月份,在閏年是29天,在非閏年是28天。每400年整一閏,或每4年且不為百年的一潤。 表1月份123456789101112閏年312

22、931303130313130313031非閏年3128313031303131303130314.1.2 秒表顯示多功能秒表系統(tǒng)采用at89c51單片機(jī)為中心器件,利用其定時(shí)器/計(jì)數(shù)器定時(shí)和技術(shù)的原理,結(jié)合顯示電路、電源電路、led數(shù)碼管以及鍵盤電路來設(shè)計(jì)定時(shí)電路。將軟硬件有機(jī)的結(jié)合起來,使得系統(tǒng)能夠?qū)崿F(xiàn)四位的led顯示,顯示時(shí)間為00-99秒。4.2 電路控制部分設(shè)計(jì)從左到右依次是a、b、c三個(gè)按鍵,當(dāng)用作電子表時(shí)間顯示功能時(shí),鍵c是模式選擇鍵,分別實(shí)現(xiàn)對時(shí)、分、秒的選擇功能,鍵b是加1鍵,鍵a是減1鍵;當(dāng)用作萬年歷顯示功能時(shí),用c鍵選擇,鍵b是加1鍵,鍵a是減1鍵;當(dāng)用作秒表功能時(shí),鍵b

23、是啟動(dòng)/暫停功能鍵,鍵a是復(fù)位鍵。4.3整體設(shè)計(jì)硬件設(shè)計(jì)模塊實(shí)現(xiàn):實(shí)現(xiàn)過程:單片機(jī)處理后通過串行口輸出到74ls164,而74ls164將串行信號變成并行信號,每個(gè)164對應(yīng)led七段碼,6個(gè)164對應(yīng)6行l(wèi)ed數(shù)碼管。其整個(gè)過程,如原理圖所示。生成pcb版圖,如下圖所示:4.4系統(tǒng)軟件設(shè)計(jì)4.4.1 proteus軟件仿真 單片機(jī)加載程序啟動(dòng)仿真后,按下開始鍵開始仿真,下圖是電子表功能的仿真結(jié)果圖, 按下mod鍵,1次可調(diào)時(shí),2次可調(diào)分,3次可調(diào)秒。 當(dāng)按下模式c鍵達(dá)到四次時(shí),這時(shí)可以按下a鍵進(jìn)入萬年歷顯示的功能,此時(shí)顯示10年12月25日,按下c鍵可以實(shí)現(xiàn)模式選擇分別調(diào)節(jié)年、月、日。 當(dāng)按

24、下b鍵進(jìn)入秒表顯示模式,而且可以暫停顯示,此時(shí)按下c鍵可以退出秒表顯示模式。由以上仿真可知,此設(shè)計(jì)程序及電路邏輯功能正確,基本完成了實(shí)驗(yàn)所要求的任務(wù),達(dá)到了預(yù)期的目的。結(jié)束語通過這個(gè)月的學(xué)習(xí)和調(diào)試過程,終于完成了單片機(jī)模塊數(shù)字鐘的工作。并且使電子鐘夠順利運(yùn)行,完成了預(yù)期的目標(biāo)。從單片機(jī)模塊數(shù)字鐘的設(shè)計(jì)過程中也找到了一些單片機(jī)開發(fā)的規(guī)律:先了解所有元件的具體內(nèi)容,從而畫出其電路圖,使數(shù)字鐘從簡易變成多功能的方式,雖沒有做多功能數(shù)字鐘,卻知曉了其方法。從而讓我踏入了單片機(jī)應(yīng)用領(lǐng)域的第一步。然而在調(diào)試過程中有也有許多的不足之處:例如編寫調(diào)試程序有點(diǎn)不足。希望能夠在以后的不斷深入學(xué)習(xí)中能夠彌補(bǔ)自己的不

25、足之處。同時(shí)更是朝著單片機(jī)應(yīng)用領(lǐng)域邁進(jìn)。這次課程設(shè)計(jì)整體來說是成功的,但我也發(fā)現(xiàn)了自己許多錯(cuò)漏和不足之處。譬如,最簡單的程序沒寫好就想著寫更復(fù)雜的程序,做事還是缺乏耐性和細(xì)心,當(dāng)有時(shí)遇到問題時(shí),總覺得無從下手,對于課本上的知識不能很好的組織起來。在編寫各功能程序時(shí),特別是后來增添的比較復(fù)雜的程序,更是找不著思路,在以后的學(xué)習(xí)中,確實(shí)應(yīng)加強(qiáng)這一模塊的練習(xí)??偟膩碚f,這次課程設(shè)計(jì)的探索與完成,給我最深的體會(huì)就是書本上的知識和實(shí)際的應(yīng)用真的存在著較大的差別,甚至脫節(jié)。平時(shí)自己感覺什么都掌握的差不多了,也似乎是明白了,但真到具體應(yīng)用時(shí),確如紙上談兵,無從下手。所以,我們不僅要熟練掌握課本知識,更要學(xué)以

26、致用,能讓自己真正成為一個(gè)有實(shí)際操作能力的單片機(jī)應(yīng)用型人才。附錄一:參考文獻(xiàn)【1】單片機(jī)微型計(jì)算機(jī)與理與應(yīng)用 西安電子科技大學(xué)出版社 張毅坤 陳善久 裘雪紅 編著【2】 51系列單片機(jī)設(shè)計(jì)實(shí)例.北京航空航天大學(xué)出版社?!?】單片機(jī)應(yīng)用技術(shù).西安電子科技大學(xué)出版社?!?】單片機(jī)原理及接口技術(shù)實(shí)驗(yàn).北方交通大學(xué)出版社。二:系統(tǒng)程序清單#includeunsigned char dispbuf6; /時(shí)間顯示緩沖區(qū)unsigned char disdate6; /日期顯示緩沖區(qū)unsigned char dissec6; /秒表緩沖區(qū)struct /設(shè)定時(shí)間結(jié)構(gòu)體 unsigned char hou

27、r; unsigned char min; unsigned char sec; time;struct /設(shè)定日期結(jié)構(gòu)體 unsigned char year; unsigned char month; unsigned char days; date;struct /設(shè)定毫秒結(jié)構(gòu)體 unsigned char minite; unsigned char second; unsigned char millisec; millisecond;unsigned char point=0;unsigned char point1=0;unsigned char point2=0;unsigned

28、 char daymount;unsigned char daymount1;unsigned char t0_int_times=0; /中斷次數(shù)計(jì)數(shù)變量unsigned char flash_flag=0; /閃爍標(biāo)志,每半秒閃爍unsigned char flash_flag1=0; /閃爍標(biāo)志,每半秒閃爍unsigned char display_back=0; /顯示緩沖區(qū)更新備份,如果顯示緩沖區(qū)更新則跟閃爍標(biāo)志不一致unsigned char display_back1=0; /顯示緩沖區(qū)更新備份,如果顯示緩沖區(qū)更新則跟閃爍標(biāo)志不一致unsigned char i,j;unsign

29、ed char setmillisecond; /啟動(dòng)秒表code unsigned char ledcode=0x01,0xd7,0x22,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80; /數(shù)碼管顯示代碼code unsigned char errorledcode=0x01,0xe7,0x12,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80;/繪制錯(cuò)誤圖紙的數(shù)碼管顯示代碼void displaybuf();void changetodispcode();void changetodispcode1();void changedate(); /

30、調(diào)日期void displaydate(); / 顯示日期void makedays(); /確定每個(gè)月的日期void runsec();void delay(unsigned int i); /函數(shù)聲名sbit p1_0=p10;sbit p1_1=p11;sbit p1_2=p12;/*/ init 初始化代碼/ 設(shè)定50ms中斷一次,注:在fosc=6m情況下/*void init(void) date.year=10; date.month=12; date.days=25; time.hour=12; time.min=0; time.sec=0; tmod=0x01; th0=(6

31、5536-5000)/256; tl0=(65536-5000)%256; tr0=1; et0=1; ea=1;/*延時(shí)子程序*/void delay(unsigned int i) char j; for(i; i 0; i-) for(j = 200; j 0; j-);/*/ 主程序/* main() init(); /初始化for(;) if(display_back!=flash_flag) /是否顯示? display_back=flash_flag; /顯示過后要半秒后再顯示 changetodispcode(); /轉(zhuǎn)化時(shí)間為可顯示代碼 if(flash_flag) /更新雙

32、點(diǎn)閃爍 dispbuf2=dispbuf2|0x10; /雙點(diǎn)熄滅 dispbuf4=dispbuf4|0x20; else dispbuf2=dispbuf2&0xef; /點(diǎn)亮雙點(diǎn) dispbuf4=dispbuf4&0xdf; ; if(flash_flag & point=1) /更新小時(shí) dispbuf0=dispbuf0|0xff; /小時(shí)熄滅 dispbuf1=dispbuf1|0xff; else dispbuf0=dispbuf0&0xff; /小時(shí)點(diǎn)亮 dispbuf1=dispbuf1&0xff; ; if(flash_flag & point=2) /更新分鐘 disp

33、buf2=dispbuf2|0xff; /分鐘熄滅 dispbuf3=dispbuf3|0xff; else dispbuf2=dispbuf2&0xff; /分鐘點(diǎn)亮 dispbuf3=dispbuf3&0xff; ; if(flash_flag & point=3) /更新秒鐘 dispbuf4=dispbuf4|0xff; /秒鐘熄滅 dispbuf5=dispbuf5|0xff; else dispbuf4=dispbuf4&0xff; /秒鐘點(diǎn)亮 dispbuf5=dispbuf5&0xff; ; displaybuf();/顯示 if(p1&0x07)!=0x7) /按鍵處理模塊模

34、塊 delay(250); if(p1&0x07)!=0x7) if(p1_2=0) point=(point+1)%5; else if (p1_1=0) switch(point) case 0: millisecond.minite=0; millisecond.second=0; millisecond.millisec=0; setmillisecond+; runsec(); break; case 1: time.hour=( time.hour+1)%24; break; case 2: time.min=( time.min+1)%60; break; case 3: tim

35、e.sec=( time.sec+1)%60; break; ; else if (p1_0=0) switch(point) case 0: changetodispcode1(); disdate2=disdate2&0xef; /點(diǎn)亮雙點(diǎn) disdate4=disdate4&0xdf; displaydate(); delay(2000); break; case 1: time.hour=( time.hour+24-1)%24; break; case 2: time.min=( time.min+60-1)%60; break; case 3: time.sec=( time.sec+60-1)%60; break; case 4: changedate(); break; ; ; ; ;makedays(); /*/ 把時(shí)間顯示緩沖區(qū)的內(nèi)容發(fā)到74hc164/* void displaybuf(void) unsigned char i; for(i=0;i6;i+) sbuf=dispbufi;while(ti=0); /等待發(fā)送完畢ti=0; /把發(fā)送完標(biāo)志清掉以備下次再用 ;/*/ 把日期顯示緩沖區(qū)的內(nèi)容發(fā)到74hc164/* void displaydate(void) unsigned char i; for(i=0;i6;i+) sbuf

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論