版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于(jy)Proteus多功能電子萬年歷的設(shè)計(jì)(shj)與實(shí)現(xiàn)摘 要本文(bnwn)基于Proteus多功能電子萬年歷的設(shè)計(jì)并實(shí)現(xiàn)了其功能。主要是借助電路仿真軟件Proteus,在硬件方面主要采用AT89S51單片機(jī)作為主控核心,由LCD1點(diǎn)陣液晶顯示屏顯示??梢詫?duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能,可以同時(shí)顯示年、月、日、時(shí)、分、秒等信息。在軟件方面,主要包括日歷程序、時(shí)間調(diào)整程序和顯示程序。關(guān)鍵詞:Proteus ;AT89S51;單片機(jī);電子萬年歷Design and Realization of multi function electronic cale
2、ndar based on ProteusAbstractIn this paper, the design of multi function electronic calendar based on Proteus and the realization of its function. By means of circuit simulation software Proteus, in terms of hardware using AT89S51 microcontroller as the main control center, by LCD dot matrix LCD dis
3、play. For years, month, day, week, hour, minutes and seconds for time, but also has a leap year compensation and other functions, can display year, month, day, time, minutes, seconds and other information. In the software aspect, mainly includes calendar program time to adjust procedures and display
4、 program.Key words:Proteus;AT89S51;Single chip microcomputer;Electronic calendar目錄(ml) TOC o 1-3 h z u HYPERLINK l _Toc418926432 1 綜 述 PAGEREF _Toc418926432 h 1 HYPERLINK l _Toc418926433 1.1 單片機(jī)及多功能電子(dinz)萬年歷的發(fā)展簡(jiǎn)述 PAGEREF _Toc418926433 h 1 HYPERLINK l _Toc418926434 1.2 單片機(jī)及電子萬年歷國內(nèi)外發(fā)展(fzhn)狀況 PAGERE
5、F _Toc418926434 h 2 HYPERLINK l _Toc418926435 2 開發(fā)(kif)平臺(tái) PAGEREF _Toc418926435 h 3 HYPERLINK l _Toc418926436 2.1 KeiluVision3介紹 PAGEREF _Toc418926436 h 3 HYPERLINK l _Toc418926437 2.2 單片機(jī)仿真軟件Proteus PAGEREF _Toc418926437 h 4 HYPERLINK l _Toc418926438 3 硬件設(shè)計(jì) PAGEREF _Toc418926438 h 5 HYPERLINK l _To
6、c418926439 3.1 AT89S51引腳及功能 PAGEREF _Toc418926439 h 5 HYPERLINK l _Toc418926440 3.2 AT89S51的內(nèi)部結(jié)構(gòu) PAGEREF _Toc418926440 h 6 HYPERLINK l _Toc418926441 3.2.1 電路設(shè)計(jì)框圖 PAGEREF _Toc418926441 h 7 HYPERLINK l _Toc418926442 3.2.2 主要單元電路設(shè)計(jì) PAGEREF _Toc418926442 h 8 HYPERLINK l _Toc418926443 3.2.3 單片機(jī)中斷 PAGEREF
7、 _Toc418926443 h 9 HYPERLINK l _Toc418926444 3.3 LCD液晶顯示器 PAGEREF _Toc418926444 h 9 HYPERLINK l _Toc418926445 3.4 按鍵系統(tǒng) PAGEREF _Toc418926445 h 11 HYPERLINK l _Toc418926446 4 程序設(shè)計(jì) PAGEREF _Toc418926446 h 12 HYPERLINK l _Toc418926447 4.1 定時(shí)器模塊 PAGEREF _Toc418926447 h 12 HYPERLINK l _Toc418926448 4.2 外
8、部中斷響應(yīng)模塊 PAGEREF _Toc418926448 h 13 HYPERLINK l _Toc418926449 4.3 主函數(shù)模塊 PAGEREF _Toc418926449 h 14 HYPERLINK l _Toc418926450 4.4 判斷閏年每月天數(shù) PAGEREF _Toc418926450 h 15 HYPERLINK l _Toc418926451 4.5 時(shí)間調(diào)整 PAGEREF _Toc418926451 h 16 HYPERLINK l _Toc418926452 5 系統(tǒng)仿真(fn zhn)與調(diào)試 PAGEREF _Toc418926452 h 18 HYP
9、ERLINK l _Toc418926453 5.1 系統(tǒng)(xtng)仿真 PAGEREF _Toc418926453 h 18 HYPERLINK l _Toc418926454 5.1.1 系統(tǒng)(xtng)原理電路圖繪制 PAGEREF _Toc418926454 h 18 HYPERLINK l _Toc418926455 5.1.2 Keil 工程的建立 PAGEREF _Toc418926455 h 19 HYPERLINK l _Toc418926456 5.2 系統(tǒng)調(diào)試 PAGEREF _Toc418926456 h 20 HYPERLINK l _Toc418926457 5.
10、2.1 LCD液晶顯示調(diào)試 PAGEREF _Toc418926457 h 20 HYPERLINK l _Toc418926458 5.2.2 定時(shí)器調(diào)試 PAGEREF _Toc418926458 h 21 HYPERLINK l _Toc418926459 5.2.3 中斷函數(shù)調(diào)試 PAGEREF _Toc418926459 h 21 HYPERLINK l _Toc418926460 6 測(cè)試結(jié)果與分析 PAGEREF _Toc418926460 h 22 HYPERLINK l _Toc418926461 6.1 代碼的功能 PAGEREF _Toc418926461 h 22 HY
11、PERLINK l _Toc418926462 6.2 測(cè)試結(jié)果分析 PAGEREF _Toc418926462 h 25 HYPERLINK l _Toc418926463 7 實(shí)驗(yàn)總結(jié) PAGEREF _Toc418926463 h 28 HYPERLINK l _Toc418926464 致 謝 PAGEREF _Toc418926464 h 29 HYPERLINK l _Toc418926465 參考文獻(xiàn) PAGEREF _Toc418926465 h 30 HYPERLINK l _Toc418926466 附 錄 PAGEREF _Toc418926466 h 31緒論(xln)
12、隨著科技(kj)的快速發(fā)展,自從觀太陽、擺鐘到現(xiàn)在電子鐘,在人們(rn men)的不斷研究,不斷創(chuàng)新之下一步步進(jìn)步。本次課題主要介紹了基于Proteus的多功能電子萬年歷的設(shè)計(jì)與實(shí)現(xiàn),多功能電子萬年歷是這一發(fā)展趨勢(shì)中的代表,它順應(yīng)了時(shí)代的進(jìn)步,符合人們對(duì)時(shí)間方面的要求。它的出現(xiàn)給人們的日常生活帶來的諸多方便,在時(shí)間極顯寶貴的現(xiàn)代已經(jīng)廣泛應(yīng)用于各個(gè)領(lǐng)域,其作用更是不言而喻。而且多功能電子萬年歷采用直觀的數(shù)字顯示,可以同時(shí)顯示年、月、日、時(shí)、分、秒等信息,還具有時(shí)間校準(zhǔn)等功能。本次課題主要研究液晶顯示器LCD與單片機(jī)之間的硬件互聯(lián)及通信,對(duì)數(shù)種硬件連接方案進(jìn)行了詳盡的比較,在軟件方面對(duì)日歷算法也進(jìn)
13、行了論述。其功耗小,可選用46V電壓為其供電,更符合消費(fèi)者的生活需求。1.1 單片機(jī)及多功能電子萬年歷的發(fā)展簡(jiǎn)述單片微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī),是典型的嵌入式微控制器,其英文縮寫為MCU,它最早是用在工業(yè)控制領(lǐng)域。從1972年至今單片機(jī)經(jīng)歷了四個(gè)階段的發(fā)展,從Inter公司推出的MCS-8為代表的單片機(jī)到第二階段的部分功能優(yōu)化,再到8位至16的轉(zhuǎn)變,衍生到今天的單片機(jī)用于生活和各個(gè)工業(yè)用途。自從觀太陽、擺鐘到現(xiàn)在電子鐘,人類不斷研究,不斷創(chuàng)新紀(jì)錄,科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)技術(shù)的日漸成熟,為人類的高品質(zhì)生活提供了強(qiáng)有力的后盾??茖W(xué)技術(shù)介入人類的生活,這是社會(huì)發(fā)展的必然趨勢(shì),而萬年歷是這一發(fā)展趨勢(shì)
14、中的代表,萬年歷順應(yīng)了人們對(duì)時(shí)間方面的要求,它的出現(xiàn)給人們的生活帶來的諸多方便,在時(shí)間極顯寶貴的現(xiàn)代生活中,已經(jīng)廣泛應(yīng)用于各個(gè)領(lǐng)域,其作用更是不言而喻。相比起傳統(tǒng)的時(shí)間工具,本系統(tǒng)有著精確顯示時(shí)間計(jì)算,清晰、全面的顯示信息界面,沒有厭余數(shù)據(jù),且具有溫度、農(nóng)歷顯示等功能,這些是傳統(tǒng)時(shí)間工具無法達(dá)到的。而相比市場(chǎng)出售的其他高科技時(shí)間工具,本系統(tǒng)有著制作簡(jiǎn)單,成本低廉等市場(chǎng)優(yōu)勢(shì)。1.2單片機(jī)及電子萬年歷國內(nèi)外發(fā)展(fzhn)狀況隨著微電子技術(shù)的高速發(fā)展,單片機(jī)在國民經(jīng)濟(jì)的個(gè)人領(lǐng)域得到(d do)了廣泛的運(yùn)用。單片機(jī)開發(fā)技術(shù)已成為電子信息、電氣、通信、自動(dòng)化、機(jī)電一體化等專業(yè)技術(shù)人員必須掌握的技術(shù)。在
15、國內(nèi):?jiǎn)纹瑱C(jī)的學(xué)習(xí)呈上升趨勢(shì),但很多人學(xué)習(xí)是無頭緒,不知道從何入手,行業(yè)發(fā)展迅速,國內(nèi)生產(chǎn)技術(shù)不斷提升。國內(nèi)企業(yè)為了獲得更大的投資收益,在生產(chǎn)規(guī)模和產(chǎn)品質(zhì)量上不斷提升,開發(fā)單片機(jī)呈必然趨勢(shì)。我國生產(chǎn)的多功能電子萬年歷有很多,總體上來說是研究多功能電子萬年歷為主,商家生產(chǎn)的電子萬年歷更從質(zhì)量、價(jià)格、實(shí)用上考慮不斷改變電子萬年歷的設(shè)計(jì),使其更有市場(chǎng)。在科技發(fā)達(dá)的今天(jntin),智能化必將是以后的發(fā)展趨勢(shì),所以開發(fā)活和學(xué)習(xí)單片機(jī)是社會(huì)發(fā)展的必然需求。在國外:最具有代表性的計(jì)時(shí)產(chǎn)品就是電子萬年歷,它是近代世界鐘表業(yè)界的第三次革命。前兩次革命是擺和擺輪游絲的發(fā)明,以及石英晶體振蕩器的應(yīng)用,第三次革命
16、就是單片機(jī)數(shù)碼計(jì)時(shí)技術(shù)的應(yīng)用,使得從原來傳統(tǒng)指針計(jì)時(shí)的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動(dòng)日期,星期,溫度以及農(nóng)歷等顯示功能,它更符合消費(fèi)者的生活需求。因此,電子萬年歷的出現(xiàn)帶來了鐘表計(jì)時(shí)業(yè)界跨越性的進(jìn)步。當(dāng)前,電子萬年歷技術(shù)已經(jīng)進(jìn)入了優(yōu)化人-家庭-環(huán)境的整體關(guān)系的階段,它向著超微型、超高效以及集成電路的微型化方向發(fā)展,并為電子萬年歷上的集中控制提供了基礎(chǔ)。目前,市場(chǎng)上出售的萬年歷品種很多,其中大部分是基于單片機(jī)技術(shù)設(shè)計(jì)的電子系統(tǒng)。當(dāng)今,數(shù)字萬年歷主要還是用于計(jì)時(shí)、自動(dòng)報(bào)時(shí)、定時(shí)、日期查詢以及自動(dòng)控制等方面。由于單片機(jī)技術(shù)以及數(shù)字集成電路技術(shù)的發(fā)展和采用了先進(jìn)
17、的石英技術(shù),使得如今的數(shù)字萬年歷系統(tǒng)具有體積小、耗電省、計(jì)時(shí)準(zhǔn)確、性能穩(wěn)定、維護(hù)方便、走時(shí)準(zhǔn)確、攜帶方便等優(yōu)點(diǎn),此外,現(xiàn)在市場(chǎng)上已有現(xiàn)成的數(shù)字萬年歷集成電路芯片出售,而且價(jià)格便宜、使用也很方便。2 開發(fā)(kif)平臺(tái)本節(jié)主要介紹開發(fā)平臺(tái),兼容單片機(jī)C語言軟件(run jin)開發(fā)系統(tǒng)Keil uVision3軟件和單片機(jī)仿真軟件Proteus。2.1 KeiluVision3介紹(jisho) 圖2.1Keil uVision3軟件Keil uVision3是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明
18、顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。KeiluVision3工具包為forDos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tSco
19、pe51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。相比(xin b)起其他單片機(jī)的開發(fā)軟件,KeiluVision3生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)(txin)高級(jí)語言的優(yōu)勢(shì)。編譯后能生成.hex文件,能直接為ISIS7Professional仿真軟件(run jin)所使用。2.2單片機(jī)仿真軟件Proteus 圖2.2 Proteus單片機(jī)仿真軟件在Proteus是英國Labcenter公司開發(fā)的電路及點(diǎn)偏激系統(tǒng)設(shè)計(jì)與仿真軟件。它可以實(shí)現(xiàn)數(shù)字電路,模擬電路及為控制器系統(tǒng)與外設(shè)
20、的混合電路系統(tǒng)的電路仿真、軟件仿真、 系統(tǒng)協(xié)同仿真和PCB設(shè)計(jì)等功能。它能對(duì)各種處理器進(jìn)行實(shí)時(shí)仿真、調(diào)試與測(cè)試的EDA工具,真正實(shí)現(xiàn)了再?zèng)]有目標(biāo)原型是就可以對(duì)系統(tǒng)進(jìn)行調(diào)試測(cè)試與驗(yàn)證。Proteus提供了30多個(gè)元件庫和7000余個(gè)元器件。元件涉及電阻、電容、二極管、三極管、變壓器、放大器、各種激勵(lì)源等等。SIS 7 Professional能完成原理圖設(shè)計(jì)的仿真平臺(tái),用于電路原理圖的設(shè)計(jì)以及交互式仿真。通過Keil uVision3編譯生成的.hex文件能直接用于Proteus所設(shè)計(jì)的電路圖上。3 硬件(yn jin)設(shè)計(jì)微機(jī)(wi j)處理系統(tǒng)中硬件的選擇(xunz)直接影響系統(tǒng)的功能及穩(wěn)定
21、性。選擇功能適合,少發(fā)生偶合的硬件設(shè)備,是整個(gè)系統(tǒng)設(shè)計(jì)的關(guān)鍵部分,所以本次設(shè)計(jì)選擇AT89S51進(jìn)行實(shí)驗(yàn)。3.1 AT89S51引腳及功能AT89S51是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,AT89S51在眾多嵌入式控制應(yīng)用系統(tǒng)中得到廣泛應(yīng)用。AT89S51采用的是40只引腳的雙列直插式封裝,如圖3.1所示。圖3.1 AT89S51引腳圖電源(din
22、yun)及晶振引腳 Vcc(第40腳):+5V電源(dinyun)引腳;Vss(第20腳):接地(jid)引腳;XTAL1、XTAL2(第19、18腳):外接晶振的兩個(gè)引腳??刂埔_RST/Vpd(第9腳):復(fù)位/備用電源引腳;ALE/PROG(第30腳):地址鎖存使能輸出/編程脈沖輸入;PSEN(第29腳):輸出訪問片外程序存儲(chǔ)器讀選通信號(hào);EA/Vpp(第31腳):外部ROM允許訪問/編程電源輸入。并行I/O口引腳并行I/O口共有32只引腳,其中:P0.0P0.7(第3932腳)統(tǒng)稱為P0口;P1.0P1.7(第1-8腳)統(tǒng)稱為P1口;P2.0P2.7(第2128腳)統(tǒng)稱為P2口;P3.0
23、P3.7(第1017腳)統(tǒng)稱為P3口,作為一般I/O口使用。3.2 AT89S51的內(nèi)部結(jié)構(gòu)其內(nèi)部結(jié)構(gòu)包含了作為微型計(jì)算機(jī)所必需的基本功能部件,如CPU、RAM、ROM、定時(shí)/計(jì)數(shù)器和可編程并行I/O口、可編程串行口等。這些功能部件通常都掛靠在單片機(jī)內(nèi)部總線上,通過內(nèi)部總線傳送數(shù)據(jù)信息和控制信息。其內(nèi)部基本結(jié)構(gòu)如圖3.2所示。圖3.2 硬件系統(tǒng)組成結(jié)構(gòu)框圖1.中央處理(chl)器(CPU):整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)算和控制輸入輸出功能等操作。2.數(shù)據(jù)存儲(chǔ)器(RAM):片內(nèi)有128個(gè)8位用戶
24、8個(gè)據(jù)存儲(chǔ)單元(cn ch dn yun)和128個(gè)專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個(gè),可存放讀寫的數(shù)據(jù)、運(yùn)算的中間結(jié)果或用戶定義的字型表,3.程序存儲(chǔ)器(ROM):共有(n yu)4096個(gè)8位掩膜ROM,用于存放用戶程序、原始數(shù)據(jù)或表格。4.中斷系統(tǒng):具備較完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中斷,可滿足不同的控制要求,并與2級(jí)的優(yōu)先級(jí)別選擇。5.定時(shí)器/計(jì)數(shù)器:片內(nèi)有2個(gè)16位的可編程定時(shí)器/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷,用于控制程序轉(zhuǎn)向。6.串行口:內(nèi)
25、置1個(gè)全雙工的串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信接發(fā)器,也可以當(dāng)同步移位器使用。7.并行輸入/輸出(I/O)口:共有4組8位并行I/O口(P0、P1、P2、P3),每個(gè)口都由1個(gè)鎖存器和1個(gè)驅(qū)動(dòng)器組成。并行I/O口主要是用于實(shí)現(xiàn)與外部設(shè)備中數(shù)據(jù)的并行輸入/輸出,有些I/O口還具有其他功能。8.特殊功能寄存器:共有21個(gè),用于對(duì)片內(nèi)的各功能的部件進(jìn)行管理、控制、監(jiān)視。實(shí)際上是一些控制寄存器和狀態(tài)寄存器,是一個(gè)具有特殊功能的RAM區(qū)。3.2.1 電路設(shè)計(jì)框圖本系統(tǒng)的電路系統(tǒng)框圖如圖2.1.3所示。AT89S51單片機(jī)對(duì)DS18B20寫入控制字并讀取相應(yīng)的數(shù)據(jù),繼
26、而控制LCM1602作出對(duì)應(yīng)的顯示。鍵盤控制模塊AT89S51主控模塊LCD1液晶顯示模塊 圖3.3 電路設(shè)計(jì)框圖(kungt)3.2.2主要(zhyo)單元電路設(shè)計(jì)(1) AT89S51單片機(jī)主控制模塊(m kui)的設(shè)計(jì)AT89S51是一個(gè)低功耗,高性能CMOS 8位單片機(jī),其具有如下特點(diǎn):40個(gè)引腳,4kBytes Flash片內(nèi)程序存儲(chǔ)器,128Bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。同時(shí)該芯片還具有PDIP、TQFP和PLCC
27、等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。AT89S51單片機(jī)為40引腳雙列直插芯片,有四個(gè)I/O口P0,P1,P2,P3,MCS-51單片機(jī)共有4個(gè)8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨(dú)立地作輸出或輸入。(2) P0口P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。(3) P1口P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收
28、輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 (4) P2口P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P
29、2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 (5) P3口P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出(shch)4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部(nib)上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。3.2.3 單片機(jī)中斷(zhngdun)典型的8051單片機(jī)有5個(gè)中斷源,可分為兩個(gè)優(yōu)先級(jí),實(shí)現(xiàn)中斷服務(wù)嵌套。用戶可以用關(guān)中斷指令來屏蔽中斷請(qǐng)求,也可以用開中斷指令是CPU接受中斷申請(qǐng)。每一個(gè)中斷源在軟件中都可以獨(dú)立開關(guān),級(jí)別可由用戶自行設(shè)置。下表2.1.1為
30、中斷控制標(biāo)志列表。表3.1 中斷控制標(biāo)志列表中斷源工作標(biāo)志向量地址外部中斷0IE00311計(jì)時(shí)器0TF00BH外部中斷1IE113H計(jì)時(shí)器1TF11BH串行端口傳送T123H串行端口接收R123H3.3 LCD液晶顯示器本系統(tǒng)選擇的LCD是AMPIRE12864的漢字圖形型液晶顯示模塊,可顯示漢字及圖形。單片機(jī)P1口作為數(shù)據(jù)輸出口,RS,RW,E分別通過10K的上拉電阻連接到單片機(jī)的P0.0,P0.1,P0.2。VDD接5V電源,VSS接地。VEE為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度)。RS
31、為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。R/W為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。E(或EN)端為使能(enable)端,下降沿使能。DB0-DB7為雙向數(shù)據(jù)總線,同時(shí)最高位DB7也是忙信號(hào)檢測(cè)位。BLA、BLK分別為顯示器背光燈的正、負(fù)極。液晶顯示器接口圖和管腳表如下所示。圖3.4 LCD液晶(yjng)顯示器表3.2 LCD接口(ji ku)說明表管腳號(hào)管教電平引腳說明1CS1H/L片選擇信號(hào),低電平時(shí)選擇前64列2CS2H/L片選擇信號(hào),低電平時(shí)選擇后64列3GND0V邏輯電源地4VCC5.0V邏輯電源正5V0LCD驅(qū)動(dòng)電壓6RSH
32、/L數(shù)據(jù)指令選擇7R/WH/L讀寫選擇:高電平:讀數(shù)據(jù);低電平:寫數(shù)據(jù)8EH/L讀寫使能,高電平有效,下降沿鎖定數(shù)據(jù)9DB0H/L數(shù)據(jù)輸入輸出引腳10DB1H/L數(shù)據(jù)輸入輸出引腳11DB2H/L數(shù)據(jù)輸入輸出引腳12DB3H/L數(shù)據(jù)輸入輸出引腳13DB4H/L數(shù)據(jù)輸入輸出引腳14DB5H/L數(shù)據(jù)輸入輸出引腳15DB6H/L數(shù)據(jù)輸入輸出引腳16DB7H/L數(shù)據(jù)輸入輸出引腳17RSTL復(fù)位信號(hào),低電平有效18VOUT-10V背光源負(fù)極3.4 按鍵(n jin)系統(tǒng)基于多功能萬年歷設(shè)置日歷(rl)、時(shí)間、鬧鐘等功能,我們決定使用button元件作為控制按鈕。Button元件在市場(chǎng)上到處可見,其功能單一
33、,少偶合,反應(yīng)速度快等特點(diǎn)。本系統(tǒng)(xtng)使用3個(gè)button元件分別作為設(shè)置位選、上調(diào)、下調(diào)等功能。3個(gè)按鍵與一個(gè)3位與門電路相連,作為整個(gè)按鍵控制功能系統(tǒng),以觸發(fā)AT89S51中斷為方式使用設(shè)置功能。其電路圖如圖3.4.1所示: 圖3.4.1 按鍵系統(tǒng)(1)Button1 :位選功能,設(shè)置位選位,可通過其對(duì)年、月、日、時(shí)、分、秒進(jìn)行控制;(2)Button2 :上調(diào)功能,對(duì)當(dāng)前所處狀態(tài)位進(jìn)行上調(diào);(3)Button3 :下調(diào)功能,對(duì)當(dāng)前所處狀態(tài)位進(jìn)行下調(diào)。4 程序設(shè)計(jì)單片機(jī)的微機(jī)(wi j)控制系統(tǒng)設(shè)計(jì),除了元件選擇、系統(tǒng)硬件電路設(shè)計(jì)外,最主要的工作(gngzu)就是如何根據(jù)每個(gè)模塊的
34、實(shí)際需求設(shè)計(jì)(shj)出應(yīng)用程序。應(yīng)用程序的可靠性、高效性、穩(wěn)定性直接影響系統(tǒng)的實(shí)現(xiàn)與應(yīng)用。因此,程序設(shè)計(jì)在微機(jī)控制系統(tǒng)設(shè)計(jì)中占據(jù)著重要地位。在單片機(jī)的系統(tǒng)設(shè)計(jì)的過程中,主要分為數(shù)據(jù)處理、系統(tǒng)過程控制兩大部分。在多功能智能萬年歷系統(tǒng)中,數(shù)據(jù)獲取與數(shù)據(jù)分類占較大的比例。其中時(shí)間的計(jì)算與獲取是整個(gè)系統(tǒng)的核心所在,另外數(shù)據(jù)顯示、聲音處理、過程控制也是整個(gè)系統(tǒng)的重點(diǎn)。為了更好地完成各個(gè)部分的內(nèi)容,更方便地進(jìn)行調(diào)程序修改和調(diào)試排錯(cuò),我們把系統(tǒng)分為定時(shí)器模塊、外部中斷響應(yīng)模塊、主函數(shù)模塊這幾大部分進(jìn)行設(shè)計(jì),并分別進(jìn)行設(shè)計(jì)、編程和調(diào)試,最后通過主程序?qū)⒏鞒绦蚰K連接起來。這樣有利于程序修改和調(diào)試,增強(qiáng)了程序
35、的可移植性。4.1 定時(shí)器模塊在本多功能萬年歷系統(tǒng)中,使用定時(shí)器來精確計(jì)算每一秒的時(shí)間長。首先是對(duì)定時(shí)器的選擇和初始化:選擇定時(shí)器0,方式1。TMOD = 0 x01;裝載T0的初值,通過計(jì)算且與溫度傳感器公用,決定以20次溢出作為1秒的時(shí)間,故裝填TH0 = 0 x3c;TR0 = 0 xb0;然后啟動(dòng)定時(shí)器,打開總中斷開關(guān)EA = 1;ET0=1;初始化完成后便進(jìn)入中斷函數(shù)的設(shè)計(jì)。每一秒所產(chǎn)生(chnshng)的中斷要完成年、月、日、時(shí)、分、秒的計(jì)算,并為其他功能設(shè)定標(biāo)志位等,如聲音,溫度(wnd)顯示,流程圖如圖4.1。圖4.1計(jì)時(shí)器中斷(zhngdun)響應(yīng)程序流程圖4.2外部中斷響應(yīng)
36、模塊本系統(tǒng)使用0號(hào)中斷,在中斷中響應(yīng)設(shè)置時(shí)間、日歷和鬧鐘的功能。首先在主函數(shù)中打開0號(hào)中斷開關(guān),響應(yīng)模式,總中斷開關(guān)IT0 = 1;EX0 = 1;EA = 1;另外(ln wi)使用button1作為設(shè)置位選位,button2作為上調(diào)(shn dio),button3作為下調(diào),其功能流程圖如圖4.2所示。否是否是圖4.2 外部中斷(zhngdun)響應(yīng)流程圖4.3 主函數(shù)模塊主函數(shù)模塊主要承擔(dān)顯示日歷、時(shí)間、星期、農(nóng)歷等信息。因?yàn)槲覀兯O(shè)的設(shè)置位選位為七次一循環(huán),所以在平常狀態(tài)下,系統(tǒng)顯示相關(guān)信息,當(dāng)進(jìn)入設(shè)置狀態(tài)下,主函數(shù)流程如下。圖4.3 主函數(shù)(hnsh)流程圖4.4判斷(pndun)閏
37、年(rnnin)每月天數(shù)閏年的二月有29天,否則則為28天,下圖是判斷閏年的每個(gè)月的天數(shù)。圖4.4 判斷閏年每月天數(shù)非閏年每個(gè)月天數(shù)流程圖與之類似,這里就不再作具體說明。4.5時(shí)間(shjin)調(diào)整1.根據(jù)(gnj)當(dāng)前的所處狀態(tài),來調(diào)整時(shí)間:滿60秒,分加1;滿60分,時(shí)加1;滿24時(shí),日加1;滿30日,月加1;滿12月,年加1。圖4.5 時(shí)間(shjin)調(diào)整圖2.時(shí)間(shjin)調(diào)整程序流程,先按控制鍵進(jìn)入調(diào)整狀態(tài)(zhungti)程序,再根據(jù)進(jìn)入的狀態(tài)進(jìn)行調(diào)整年月日時(shí)分秒,具體流程如下圖所示:圖4.6 時(shí)間(shjin)調(diào)整程序秒流程圖 圖4.7 時(shí)間調(diào)整程序分流程圖5 系統(tǒng)仿真與調(diào)
38、試仿真(fn zhn)部分采用仿真(fn zhn)軟件Proteus和兼容(jin rn)單片機(jī)C語言軟件開發(fā)系統(tǒng)Keil uVision3軟件來進(jìn)行仿真和調(diào)試。5.1系統(tǒng)仿真5.1.1 系統(tǒng)原理電路圖繪制(1)新建文件:打開PROTEUS,點(diǎn)擊FILE,在彈出的下拉菜單中選擇NEW DESIGN,即進(jìn)入原理圖繪制界面。(2)元器件選?。喊丛O(shè)計(jì)要求,在對(duì)象選擇窗口中點(diǎn)P,彈出PICK DEVICES對(duì)話框,在KEYWORDS中填寫要選擇的元器件,然后在右邊對(duì)話框中選中要選的元器件,則元器件列在對(duì)象選擇的窗口中。(3)放置元器件、電源和地、連線,得到系統(tǒng)電路圖,最后進(jìn)行電氣檢測(cè)。圖5.1 總體電
39、路硬件原理圖5.1.2 Keil 工程(gngchng)的建立1.源文件的建立(jinl)使用(shyng)菜單“File-New”或者點(diǎn)擊工具欄的新建文件按鈕,即可在打開的文本編緝窗口中輸入源程序,保存該文件,注意必須加上擴(kuò)展名。2.建立工程文件點(diǎn)擊“Project-New Project ”菜單,出現(xiàn)一個(gè)對(duì)話框,在編緝框中輸入文件名,點(diǎn)擊“保存”按鈕。在Project-Option for target出現(xiàn)第二個(gè)對(duì)話框選擇目標(biāo) CPU(本次設(shè)計(jì)選擇 Atmel 公司的 AT89C52 芯片)。此時(shí),在工程窗口的文件頁中出現(xiàn)了“Target 1”,點(diǎn)擊“Source Group1”右鍵,選中
40、其中的“Add file to GroupSource Group1”,出現(xiàn)一個(gè)對(duì)話框,要求尋找源文件(注意,該對(duì)話框下面的“文件類型” 默認(rèn)為 C source file(*.c),也就是以 C 為擴(kuò)展名 的文件),雙擊該文件,將文件加入項(xiàng)目。雙擊文件名,即打開該源程序。工程建立好以后,對(duì)工程進(jìn)行進(jìn)一步的設(shè)置,以滿足要求。 首先點(diǎn)擊左邊Project窗口的Target 1,然后使用菜單“Project-Option for target target1” 設(shè)置對(duì)話框中的Target頁面,Xtal后面的數(shù)值是晶振頻率值,本次設(shè)計(jì)設(shè)置為12MHz;Memory Model用于設(shè)置RAM使用情況選
41、擇Small;Compact是可以使用一頁外部擴(kuò)展RAM,而Larget則是可以使用全部外部的擴(kuò)展RAM。Code Model 用于設(shè)置ROM空間的使用選擇none。設(shè)置對(duì)話框中的OutPut頁面中Creat Hex file用于生成可執(zhí)行代碼文件(可以用編程器寫入單片機(jī)芯片的HEX格式文件,文件的擴(kuò)展名為.HEX)。3.編譯、連接選擇菜單 Project-Build target,對(duì)當(dāng)前工程進(jìn)行連接, 獲得*.hex的文件,該文件即可被編程器讀入并寫到芯片中,同時(shí)還產(chǎn)生了一些其它相關(guān)的文件,可被用于Keil的仿真與調(diào)試。仿真部分采用Protus professional和Keil軟件結(jié)合完成
42、(wn chng)設(shè)計(jì),功能強(qiáng)大且操作較為簡(jiǎn)單,可以很容易的實(shí)現(xiàn)各種系統(tǒng)的仿真。最后得出(d ch)系統(tǒng)仿真結(jié)果如下。圖5.2 多功能萬年歷系統(tǒng)(xtng)仿真效果圖5.2 系統(tǒng)調(diào)試系統(tǒng)調(diào)試主要是在電路原理圖仿真過程中出現(xiàn)的系統(tǒng)功能、仿真結(jié)果的性能誤差分析,下面我們從系統(tǒng)模塊進(jìn)行調(diào)試和分析。5.2.1 LCD液晶(yjng)顯示(xinsh)調(diào)試(dio sh)這是整個(gè)系統(tǒng)可觀賞性的比分,LCD顯示時(shí)間空隙必須控制在一定的范圍內(nèi),如果時(shí)間短了,LCD會(huì)出現(xiàn)顯示不完整的情況;如果空隙時(shí)間長了,液晶顯示就會(huì)閃爍的情況,所以其中對(duì)于度的把握非常重要。同時(shí)也要考慮在編譯過程中,除了顯示間隙還要算上系統(tǒng)
43、數(shù)據(jù)處理與控制的時(shí)間間隙,否則同樣會(huì)出現(xiàn)閃爍的情況。經(jīng)過幾天的測(cè)試與調(diào)試,最終LCD顯示完整,沒有出現(xiàn)顯示問題。5.2.2 定時(shí)器調(diào)試定時(shí)器調(diào)試主要看“秒”這位的跳動(dòng)是否精確,這個(gè)需要長時(shí)間的驗(yàn)證。同時(shí),在定時(shí)器內(nèi)處理的數(shù)據(jù)也要精確,因?yàn)槎〞r(shí)器內(nèi)處理數(shù)據(jù)也花費(fèi)時(shí)間,而這段時(shí)間沒有算到定時(shí)器內(nèi)。經(jīng)過長時(shí)間的運(yùn)行,調(diào)試,最后把誤差范圍調(diào)整到1天0.001秒。5.2.3 中斷函數(shù)調(diào)試中斷函數(shù)是系統(tǒng)與用戶交互的最要途徑,用戶可以通過連接中斷的按鈕操作系統(tǒng),設(shè)置日期、時(shí)間、鬧鐘等信息。因?yàn)橹袛囗憫?yīng)速度與認(rèn)為按鍵的速度有事會(huì)存在偏差,進(jìn)過多次試驗(yàn)后,使用了一個(gè)等待響應(yīng)的函數(shù)。該函數(shù)有效地降低了按鍵無響應(yīng)的
44、概率,但依然無法做到點(diǎn)觸即可的效果,這還需要改進(jìn)。同時(shí),如果有人機(jī)互動(dòng),就必然會(huì)造成人為錯(cuò)誤,例如我先將月份調(diào)至為1月,然后日期調(diào)為31日,再回頭調(diào)月份為2月,這時(shí)就會(huì)出現(xiàn)2月31日這樣的錯(cuò)誤信息情況。所以,在主函數(shù)中增設(shè)了日期排錯(cuò)函數(shù)。6測(cè)試結(jié)果與分析本次(bn c)實(shí)驗(yàn)我們利用Proteus仿真(fn zhn)和Keil軟件(run jin)設(shè)計(jì)了多功能電子萬年歷,通過測(cè)試我們發(fā)現(xiàn),想要幾個(gè)模塊相互配合使用,應(yīng)該將其緊密聯(lián)系起來,而不是一個(gè)個(gè)單獨(dú)的個(gè)體。只有這樣才能夠發(fā)揮更大的潛力,為設(shè)計(jì)萬年歷提供更有力的保障。6.1代碼的功能1.主函數(shù)功能:獲取時(shí)間,顯示萬年歷和時(shí)間設(shè)置,代碼如下。vo
45、id main()SFR_Init();CAL_Init();GUI_Init();TR1=1;while(1) GetTime(&sys);/獲得時(shí)間 LCD_ShowWNL();/顯示萬年歷 Time_Set(); /時(shí)間設(shè)置 2. 萬年歷顯示函數(shù),設(shè)置刷新模式,代碼如下。void LCD_ShowWNL()LCD_ShowTime(sys.cSec,6,111,Sec_Flag,UpLine,UnderLine); /秒,每秒鐘刷新if(!sys.cSec | State_Set) /分,普通模式每分鐘刷新LCD_ShowTime(sys.cMin,6,87,Min_Flag,UpLin
46、e,UnderLine); /處于設(shè)置模式狀態(tài)每次刷新if(!sys.cSec & !sys.cMin | State_Set) /時(shí),普通模式每小時(shí)刷新LCD_ShowTime(sys.cHour,6,63,Hour_Flag,UpLine,UnderLine); /處于設(shè)置模式狀態(tài)每次刷新if(!sys.cSec & !sys.cMin & !sys.cHour | State_Set )/公歷農(nóng)歷的年、月、日、星期Show_YMD();/普通模式每天刷新if(State_Set=7) State_Set=0; /處于(chy)設(shè)置(shzh)模式狀態(tài)(zhungti)每次刷新 3. 年、
47、月、日、星期、農(nóng)歷、天干地支顯示函數(shù),代碼如下。void Show_YMD()uchar uiTempDat; uiTempDat=RDS1302(0 x88|0 x01);sys.cMon=(uiTempDat&0 x1f)4)*10+(uiTempDat&0 x0f);LCD_ShowTime(sys.cMon,2,5,Mon_Flag,NoUpLine,NoUnderLine);hz_disp(4,5,1,uMod1,1,NoUpLine,NoUnderLine);/月Show16X32(2,27,ucNum3216sys.cDay/10,Day_Flag);/日Show16X32(2,
48、43,ucNum3216sys.cDay%10,Day_Flag); hz_disp(6,8,2,ucLunar13,1,UpLine,UnderLine); if(sys.cWeek=7)hz_disp(6,40,1,uMod2,1,UpLine,UnderLine);/星期 else hz_disp(6,40,1,ucLunarsys.cWeek,1,UpLine,UnderLine);/星期 LCD_ShowTime(20,0,9,1,UpLine,UnderLine); LCD_ShowTime(sys.cYear,0,25,Year_Flag,UpLine,UnderLine); h
49、z_disp(0,41,1,uMod0,1,UpLine,UnderLine);/年SpDat=GetSpringDay(sys.cYear,sys.cMon,sys.cDay);/獲得農(nóng)歷 if(SpDat.cMon=1)/顯示農(nóng)歷月 hz_disp(4,64,1,ucLunar15,1,UpLine,NoUnderLine);/正else if(SpDat.cMon=11) hz_disp(4,64,1,ucLunar16,1,UpLine,NoUnderLine);/冬else if(SpDat.cMon=12) hz_disp(4,64,1,ucLunar17,1,UpLine,NoU
50、nderLine);/臘else hz_disp(4,63,1,ucLunarSpDat.cMon,1,UpLine,NoUnderLine);/二十 if(SpDat.cDay/10=1 & SpDat.cDay%100)/顯示十,例如十四而不是一四 hz_disp(4,95,1,ucLunar10,1,UpLine,NoUnderLine); else if(SpDat.cDay/10=2 & SpDat.cDay%100) /顯示廿,例如廿三而不是二四 hz_disp(4,95,1,ucLunar19,1,UpLine,NoUnderLine); else hz_disp(4,95,1,
51、ucLunarSpDat.cDay/10,1,UpLine,NoUnderLine); /正常數(shù)字if(!(SpDat.cDay%10) /十 hz_disp(4,111,1,ucLunar10,1,UpLine,NoUnderLine);else/正常(zhngchng)數(shù)字 hz_disp(4,111,1,ucLunarSpDat.cDay%10,1,UpLine,NoUnderLine); hz_disp(0,104,1,SX(uint)(2000+SpDat.cYear)%12,1,UpLine,UnderLine); /生肖(shngxio) hz_disp(2,95,1,TianG
52、an(uint)(2000+SpDat.cYear)%10,1,NoUpLine,NoUnderLine);/天干(tingn)hz_disp(2,111,1,DiZhi(uint)(2000+SpDat.cYear)%12,1,NoUpLine,NoUnderLine);/地支4.定時(shí)器1中斷服務(wù)函數(shù),讀取鍵值和清鍵值,保證每次按鍵只執(zhí)行依次按鍵動(dòng)作,代碼如下。void timer1() interrupt 3 TH1= (-10000)/256;TL1= (-10000)%256;keyinput();/讀取按鍵if (keyvalue&0 x10)State_Flag=TRUE;keyv
53、alue &= 0 xef;/清鍵值,保證一按下只執(zhí)行一次按鍵動(dòng)作if (keyvalue&0 x20 )/加Inc_Flag=TRUE;keyvalue &= 0 xdf;/清鍵值,保證一按下只執(zhí)行一次按鍵動(dòng)作。if (keyvalue&0 x40)/減Dec_Flag=TRUE;keyvalue &= 0 xbf;/清鍵值,保證一直按下只執(zhí)行一次按鍵動(dòng)作。5.計(jì)算當(dāng)年是否是閏年。當(dāng)前年為閏年滿足這兩個(gè)條件:滿足年份能被4整除;年份若是100的整數(shù)倍的話,需被400整除才能是閏年,否則為平年。也就是“四年一閏,百年不閏,四百年再閏”,代碼如下。bit YearFlag(uchar cYear
54、) if( (!(cYear%4) & (cYear%100) | !(cYear%400) ) return 1;else return 0;6. 計(jì)算目標(biāo)日期是星期幾。uchar GetWeekDay(uchar cYear,uchar cMon,uchar cDay)char i;uint Sum=0,tmpyear;cYear=(cYear4)&0 x0f)*10)+(cYear&0 x0f);/temp1+temp2;tmpyear=2000+cYear;cMon=(cMon4)&0 x0f)*10)+(cMon&0 x0f);/temp1+temp2;cDay=(cDay4)&0
55、x0f)*10)+(cDay&0 x0f);/temp1+temp2;for(i=1;i=cMon-1;i+)Sum+=Mon1YearFlag(cYear)i;Sum+=cDay-1;return (tmpyear-1)+(tmpyear-1)/4-(tmpyear-1)/100+(tmpyear-1)/400+Sum)%7)+1;7. LCD圖形(txng)初始化函數(shù)。描繪框架(kun ji)布局,并獲取初始化時(shí)間(shjin),代碼如下。void GUI_Init() LCD12864_init(); ClearLCD(); Rect(0,0,127,63,1); /描繪框架 Line(
56、62,0,62,62,1); Line(0,48,127,48,1); Line(0,15,127,15,1); Line(24,15,24,48,1); Line(63,32,128,32,1); SetTime(sys);/設(shè)置時(shí)間 GetTime(&sys);/獲得時(shí)間 Show_YMD(); LCD_ShowTime(sys.cSec,6,111,Sec_Flag,UpLine,UnderLine); en_disp(6,103,1,Asc,:,1,UpLine,UnderLine); LCD_ShowTime(sys.cMin,6,87,Min_Flag,UpLine,UnderLi
57、ne); en_disp(6,79,1,Asc,:,1,UpLine,UnderLine); LCD_ShowTime(sys.cHour,6,63,Hour_Flag,UpLine,UnderLine); hz_disp(2,64,1,ucLunar11,1,NoUpLine,NoUnderLine);/農(nóng) hz_disp(2,80,1,ucLunar12,1,NoUpLine,NoUnderLine);/歷 hz_disp(4,79,1,uMod1,1,UpLine,NoUnderLine);/月6.2測(cè)試結(jié)果分析在Proteus軟件和Keil uVision3軟件相結(jié)合調(diào)試的,完全用仿真
58、軟件在PC機(jī)上對(duì)目標(biāo)電路原理圖和程序進(jìn)行檢測(cè)和調(diào)試。調(diào)試過程中單片機(jī)相應(yīng)輸入端由通用鍵盤和鼠標(biāo)設(shè)定,運(yùn)行狀態(tài)、各寄存器狀態(tài)、端口狀態(tài)等都可以在指定的窗口區(qū)域顯示出來,以確定程序運(yùn)行有無錯(cuò)誤。整體程序調(diào)試:即把各子程序整體連起來進(jìn)入到綜合電路調(diào)試,看是否(sh fu)能實(shí)現(xiàn)預(yù)計(jì)的功能顯示。在這階段若發(fā)生故障,可以考慮各子程序在運(yùn)行時(shí)是否破壞現(xiàn)場(chǎng),數(shù)據(jù)緩沖單元是否發(fā)生沖突,標(biāo)志位的建立和清除在設(shè)計(jì)上是否失誤,堆棧是否溢出,輸入輸出狀態(tài)是否正常等。其中測(cè)試結(jié)果(ji gu)主要看“秒”這位的跳動(dòng)是否精確,這個(gè)是需要長時(shí)間的驗(yàn)證。同時(shí),在定時(shí)器內(nèi)處理的數(shù)據(jù)要精確,因?yàn)?yn wi)定時(shí)器內(nèi)處理數(shù)據(jù)也花費(fèi)時(shí)間,而這段時(shí)間沒有算到定時(shí)器內(nèi)。經(jīng)過長時(shí)間的調(diào)試、運(yùn)行,最后把誤差范圍盡可能的縮減。在調(diào)試過程中,出現(xiàn)過以下三種問題:(1)顯示的數(shù)據(jù)秒并沒有變化,是因?yàn)闆]有啟動(dòng)定時(shí)器,而我又不斷地去讀取DS1302時(shí)鐘芯片寄存器中的數(shù)據(jù)導(dǎo)致。啟動(dòng)定時(shí)器后,就不會(huì)出現(xiàn)這種問題。(2)調(diào)整時(shí)間后應(yīng)該先去掉寫保護(hù),如果存在寫保護(hù),那么在初始化寫入初始時(shí)間時(shí),是寫不進(jìn)去初始化的時(shí)間的。因而會(huì)看見顯示的時(shí)間并不隨著設(shè)置的初始化的值變化而變化,甚至我們看見的時(shí)間并不按著一秒一秒的增加。(3)液晶顯示不穩(wěn)定,甚至出現(xiàn)亂碼現(xiàn)象。這是因?yàn)橐壕э@示的時(shí)候,由于采用的并行總線,顯然傳輸速度快,但
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024飼料原料出口銷售合同
- 職業(yè)學(xué)院學(xué)生資助工作實(shí)施辦法
- 2024年建筑工程施工及安全責(zé)任保險(xiǎn)合同范本3篇
- 2024年裝修項(xiàng)目監(jiān)理合同3篇
- 2025年度豪華大理石臺(tái)面定制與安裝服務(wù)合同范本3篇
- 2024年租房責(zé)任保險(xiǎn)合同2篇
- 2024年股權(quán)轉(zhuǎn)讓合同(雙邊)
- 2024年簡(jiǎn)明鋼結(jié)構(gòu)購買合同
- 構(gòu)造地質(zhì)學(xué)看圖題及答案
- 2025年度網(wǎng)絡(luò)安全責(zé)任書協(xié)議書保障數(shù)據(jù)安全3篇
- FZ/T 81024-2022機(jī)織披風(fēng)
- GB/T 24123-2009電容器用金屬化薄膜
- 艾滋病梅毒乙肝實(shí)驗(yàn)室檢測(cè)
- 國鐵橋梁人行道支架制作及安裝施工要點(diǎn)課件
- 領(lǐng)導(dǎo)科學(xué)全套精講課件
- 粵教版地理七年級(jí)下冊(cè)全冊(cè)課件
- 小學(xué)科學(xué)蘇教版六年級(jí)上冊(cè)全冊(cè)精華知識(shí)點(diǎn)(2022新版)
- 萎縮性胃炎共識(shí)解讀
- 《中外資產(chǎn)評(píng)估準(zhǔn)則》課件第8章 澳大利亞與新西蘭資產(chǎn)評(píng)估準(zhǔn)則
- 2022版義務(wù)教育語文課程標(biāo)準(zhǔn)(2022版含新增和修訂部分)
- 精品金屬線管布線施工工程施工方法
評(píng)論
0/150
提交評(píng)論