基于51單片機萬年歷本科論文_第1頁
基于51單片機萬年歷本科論文_第2頁
基于51單片機萬年歷本科論文_第3頁
基于51單片機萬年歷本科論文_第4頁
基于51單片機萬年歷本科論文_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

摘要電子萬年歷是一種非常廣泛日常計時工具,對現(xiàn)代社會越來越流行。它可以對年、月、日、周日、時、分、秒進行計時,還具有閏年補償?shù)榷喾N功能。本系統(tǒng)選用DALLAS公司生產(chǎn)的日歷時鐘芯片DS1302來作為實時時鐘芯片,為本系統(tǒng)提供詳細的年、月、日、星期和小時、分鐘等時間信息。數(shù)字萬年歷采用直觀數(shù)字顯示,可以同時顯示年、月、日、周日、時、分、秒和溫度等信息,還具有鬧鐘和時間校準等功能。該電路采用AT89C52單片機作為核心,功耗小,能在3V的低壓工作,電壓可選用3~5V電壓供電。本系統(tǒng)硬件部分由AT89S52單片機、DS1302時鐘芯片、1062液晶顯示器、DS18B20溫度測量、鍵盤、蜂鳴器系統(tǒng)等部分構成。軟件部分在keil環(huán)境下用C51語言編寫,包括時間設置、時間顯示、定時設置、定時鬧鐘、溫度顯示。沒有良好的基礎知識和實踐經(jīng)驗會受到很大限制,每項功能實現(xiàn)時需要那種硬件,程序該如何編寫,算法如何實現(xiàn)等,沒有一定的基礎就不可能很好的實現(xiàn)。在編寫程序過程中發(fā)現(xiàn)以現(xiàn)有的相關知識要獨自完成編寫任務困難重重,在老師和同學的幫助下才完成了程序部分的編寫。文章后附有電路原理圖、程序清單,以供讀者參考。因水平有限,難免有疏落不足之處,敬請老師和同學能給與批評指正。關鍵詞:時鐘芯片DS1302;溫度采集DS18B20;單片機AT89S52;液晶顯示1602目錄22498第一章概述 37360§1.1實時時鐘研究的背景及意義 329479§1.2論文主要研究內(nèi)容 3196761.2.1系統(tǒng)設計實現(xiàn)的目標 313291.2.2系統(tǒng)的總體設計 314151第二章硬件電路設計 519833§2.1單片機最小系統(tǒng) 53187§2.2時鐘芯片電路 5302092.2.1時鐘芯片引腳介紹 611052.2.2時鐘芯片DS1302,其內(nèi)存空間介紹 7320362.2.34個控制寄存器介紹 822864§2.4溫度采集電路設計 969262.4.1DS18B20的主要特性 952492.4.2DS1820的基本操作指令 10265832.4.3溫度測量的步驟 10316732.4.4DS18B20的操作時序 1128565§2.51602LCD液晶顯示屏 12148242.5.11602字符型LCD簡介 1230452.5.21602引腳功能說明 12232952.5.31602LCD的指令說明及時序 13221912.5.41602LCD的RAM地址映射及標準字庫表 15164042.5.51602LCD的一般初始化(復位)過程 16266852.4.61602LCD的電路連接 165545§2.6蜂鳴器鬧鈴電路 1725309§2.7按鍵調(diào)整電路 1725929§2.8電源模塊 188348第三章軟件部分設計 1925806§3.1主程序流程 1915332§3.2時間設置子程序流程 1930990§3.3鬧鐘設置子程序流程 2012801§3.4程序設計問題 21201633.4.1按鍵抖動問題 2158513.4.2蜂鳴器設置 21173873.4.3液晶顯示的設置 21192983.4.4中斷設置 21278953.4.5時鐘芯片設置 2229826第四章開發(fā)工具Proteus與Keil 2472822.1Proteus軟件 2478372.1.1Proteus簡介 24187142.1.24大功能模塊 2566132.1.3ISIS智能原理圖輸入系統(tǒng) 26157932.2Keil軟件 2755092.2.1Keil軟件簡介 27304332.2.2Keil軟件調(diào)試功能 28127252.3本章小結 2822574結束語 2917622致謝詞 3028631參考文獻 3110331附件1 32第一章概述§1.1實時時鐘研究的背景及意義在現(xiàn)實我們生活中每個人都可能有自己的時鐘,光陰在永不停息的流逝,有了時鐘人們就能隨著時間有計劃的過著每一天。然而現(xiàn)在絕大部分的時鐘有的需要不斷地跟換電池,有些時鐘需要外接電源,如果一旦電池沒電或者外接電源無法供電,時鐘就會停止計時了。而美國DALLAS公司的新型時鐘日歷芯片DS1302就能解決這一問題。該器件能提供實時時鐘(RTC)/日歷、定時鬧鐘。少于31天的月份,月末日期可自動調(diào)整,其中包括閏年補償。該器件還可以工作于24小時貨代/PM指示的12小時格式。一個精密的溫度補償電路用來監(jiān)視Vcc的狀態(tài)。本時鐘還具有環(huán)保、走時無噪音、低功耗等非實時時鐘不具有的功能。該實時時鐘不但可以作為家用,而且更可以在公共場合使用,如車站、碼頭、商場等場所?!?.2論文主要研究內(nèi)容1.2.1系統(tǒng)設計實現(xiàn)的目標本文是以實時時鐘芯片DS1302和AT89S52單片機為主要研究對象,著重進行51單片機控制系統(tǒng)的設計研究和如何讀取DS1302內(nèi)部時鐘信息的研究。以及運用18B20進行實時溫度檢測。主要內(nèi)容包括:實時溫度顯示;年月日星期時分秒顯示;年月日星期時分秒調(diào)整;鬧鐘定時小時分鐘和秒;1.2.2系統(tǒng)的總體設計采用AT89S52作為主控單片機,時鐘模塊選用DS1302作為時鐘芯片,溫度模塊選用DS18B20作為溫度傳感器,顯示模塊選用LCD1602,設置部分選用按鍵電路。AT89S52與MCS-51單片機產(chǎn)品兼容、8K字節(jié)在系統(tǒng)可編程Flash存儲器、1000次擦寫周期、全靜態(tài)操作:0Hz~33Hz、三級加密程序存儲器、32個可編程I/O口線、三個16位定時器/計數(shù)器八個中斷源、全雙工UART串行通道、低功耗空閑和掉電模式、掉電后中斷可喚醒、看門狗定時器、雙數(shù)據(jù)指針、掉電標識符。DS1302實時時鐘芯片功能豐富,可以用來直接代替IBMPC上的時鐘日歷芯片DS12887,同時,它的管腳也和MC146818B、DS12887相兼容。由于DS1302能夠自動產(chǎn)生世紀、年、月、日、時、分、秒等時間信息,其內(nèi)部又增加了世紀寄存器,從而利用硬件電路解決子“千年”問題;DS1302中自帶有鋰電池,外部掉電時,其內(nèi)部時間信息還能夠保持10年之久;對于一天內(nèi)的時間記錄,有12小時制和24小時制兩種模式。用戶還可對DS1302進行編程以實現(xiàn)多種方波輸出,并可對其內(nèi)部的三路中斷通過軟件進行屏蔽。DS18B20可組網(wǎng)數(shù)字溫度傳感器芯片封裝而成,具有耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設備數(shù)字測溫和控制領域??删幊痰姆直媛蕿?~12位溫度轉(zhuǎn)換為12位數(shù)字格式最大值為750毫秒用戶可定義的非易失性溫度報警設置。DS18B20內(nèi)部結構主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。采用一線通信接口。該系統(tǒng)的系統(tǒng)框圖如圖1.1示:AT89S52AT89S52單片機DS18b20溫度測量電路用戶按鍵LCD1602顯示蜂鳴器電路DS1302時鐘電路圖1-1系統(tǒng)框圖第二章硬件電路設計§2.1單片機最小系統(tǒng)本系統(tǒng)以AT89C52單片機為核心,本系統(tǒng)選用11.0592MHZ的晶振,,使得單片機有合理的運行速度。起振電容30pF對振蕩器的頻率高低、振蕩器的穩(wěn)定性和起振的快速性影響較合適,復位電路為按鍵高電平復位。AT89C52單片機最小系統(tǒng)電路設計如圖2.1所示。圖2-1單片機最小系統(tǒng)§2.2時鐘芯片電路2.2.1時鐘芯片引腳介紹時鐘芯片DS1302,其電路連接圖如下所示圖2-2DS1302電路連接圖MOT(1腳):總線時序模式選擇腳。接高電平,選擇MOTOROLA總線時;序;接低電平或懸空,擇選擇INTEL總線時序。NC(2,3,16,20,21,22腳):懸空腳。AD0~AD7(4~11腳):地址/地址數(shù)據(jù)復用總線引腳。CS(13腳):片選腳,低電平有效。AS(14腳):地址鎖存輸入腳。下降沿時,地址被鎖存,緊接著的上升沿來時地址被清除。R/W(15腳):讀/寫輸入腳。在選擇MOTOROLA總線時序模式時,此引腳用于指示當前的讀寫周期,高電平指示當前為讀周期,低電平指示當前為寫周期;選擇INTEL中線時序模式時,此引腳為低電平有效的輸入腳,相當于通用RAM的寫使能信號(/WE)DS(17腳):選擇MOTOROLA總線時序模式時,此引腳為數(shù)據(jù)鎖存腳;選擇INTEL總線時序模式時,此引腳為讀輸入腳,低電平有效,相當于典型的內(nèi)存的輸出使能信號(/OE)RESET(18腳):復位腳,低電平有效,復位不會影響到時鐘、日歷和RAM。IRQ(19腳):中斷申請輸出腳,低電平有效,可作為微處理器的中斷輸入。SQW(23腳):方波信號輸出腳??赏ㄟ^設置寄存器位SQWE關斷此信號輸出,此信號的輸出頻率也可通過對芯片內(nèi)部的寄存器編程予以改變。VCC(24腳):+5v電源端。2.2.2時鐘芯片DS1302,其內(nèi)存空間介紹圖2-3時鐘、日歷和鬧鐘數(shù)據(jù)模式——BCD模式(DM=0)圖2-4時鐘、日歷和鬧鐘數(shù)據(jù)模式——二進制模式(DM=1)2.2.34個控制寄存器介紹DS1302有4個控制寄存器,在任何時間都可以進行訪問,即使處于更新周期。寄存器A字節(jié)的內(nèi)容如下。MSBLSBUIPDV2DV1DV0RS3RS2RS1RS0UIP:更新標志位。為只讀位且不受復位操作的影響,為1時,表示即將發(fā)生的數(shù)據(jù)更新;為0時,表示至少244US不會更新數(shù)據(jù)。當UIP為0時,可以獲得所有時鐘、日歷、鬧鐘信息。將寄存器B中的SET位置1可以限制任何數(shù)據(jù)更新操作,并且清除UIP位。DV2、DV1、DV0:此3位為010時將打開晶振,并開始計時。RES3、RES2、RES1、RES0:用于設置周期性中斷產(chǎn)生的時間周期和輸出方波的頻率。寄存器B字節(jié)的內(nèi)容如下。MSBLSBSETPIEAIEUIESQWEDM24/12DSESET:設置位,可讀寫,不受復位操作影響。為0時,不處于設置狀態(tài),芯片進行正常時間數(shù)據(jù)更新;為1時,抑制數(shù)據(jù)更新,可以通過程序設定時間和日歷信息。PIE:周期性中斷使能位,可讀寫,復位時清除此位。為1時,允許寄存器C中的周期中斷標志位PF,驅(qū)動/IRQ引腳為低產(chǎn)生中斷信號輸出,中斷信號產(chǎn)生的周期由RS3~RE0決定。AIE:鬧鐘中斷使能位,可讀寫。為1時,允許寄存器C中的鬧鐘中斷標志位AF、鬧鐘發(fā)生時就會通過/IRQ引腳產(chǎn)生中斷輸出。UIE:數(shù)據(jù)更新結束中斷使能位,可讀寫。復位或者SET位為1時清除此位。為1時允許寄存器C中的更新結束標志UF,更新結束時就會通過/IRQ引腳產(chǎn)生中斷輸出。SQWE:方波使能位,可讀寫,復位時清除此位。為0時,SQW引腳保持低電平;為1時,SQW引腳輸出方波信號,其頻率由RS3~RS0決定。DM:數(shù)據(jù)模式位,可讀寫,不受復位操作影響。為0時,設置時間、日歷信息為二進制數(shù)據(jù);為1時,設置為BCD碼數(shù)據(jù)。24/12:時間模式設置為,可讀寫,不受復位操作影響。為0時,設置為12小時模式;為1時,設置為24小時模式。DSE:為1時,會引起兩次特殊的時間更新;4月的第一個星期日凌晨1:59:59會直接更新到3:00:00,10月的最后一個星期日凌晨1:59:59會直接更新到1:00:00;為0時,時間信息正常更新,此位可讀寫,不受復位操作影響。寄存器C字節(jié)內(nèi)容如下。MSBLSBIRQFPFAFUF0000IQRF:中斷申請標志位。為1時,/IRQ引腳為低,產(chǎn)生中斷申請。當PF、PIE為1時或者AF、ATE為1或者UF、UIE為1時,此位為1,否則置0.PF:中期中斷標志位。為1時,它是只讀位,和PIE位狀態(tài)無關,由復位操作或者寄存器C操作清除。AF:鬧鐘中斷標志位。為1時,表示當前時間和鬧鐘設定時間一至,由復位操作或讀寄存器C操作清除。UF:數(shù)據(jù)更新結束中斷標志位。每個更新周期后此位都會置1,當UIE位位置1時,UF若為1就會引起IRQF置1,將驅(qū)動/IRQ引腳為低電平,申請中斷。此位由復位操作或讀寄存器C操作清除。寄存器D字節(jié)的內(nèi)容如下。MSBLSB00000000VRT;RAM和時間有效位。用于指示和VBAT引腳連接的電池狀態(tài)。此位不可寫,也不受操作為影響,正常情況下讀取時總?cè)?,如果出現(xiàn)讀取為0的情況,則表示電池耗盡,時間數(shù)據(jù)和RAM中的數(shù)據(jù)就會出現(xiàn)問題。芯片DS12CR887的113字節(jié)普通RAM空間為非易失性RAM空間,他不專門用于某些特別功能,而是可以在未處理器程序中作為非易失性內(nèi)存空間使用?!?.4溫度采集電路設計2.4.1DS18B20的主要特性適應電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電。

②獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。

③DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫④DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。

⑤溫范圍-55℃~+125℃,在-10~+85℃時精度為0.5℃。

⑥可編程的分辨率為9~12位,對應的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實現(xiàn)高精度測溫。

⑦在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快。

⑧測量結果直接輸出數(shù)字溫度信號,以"⑨負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。2.4.2DS1820的基本操作指令DS1820的操作指令分為ROM操作命令和存儲器操作命令。(1)、ROM操作命令及其含義ReadROM指令代碼(33h):如果只有一片DS1820,可用此命令讀出其序列號,若在線DS1820多于一個,將發(fā)生沖突。MatchROM指令代碼(55h):多個DS1820在線時,可用此命令匹配一個給定序列號的DS1820,此后的命令就針對該DS1820。SkipROM指令代碼(CCh):此命令執(zhí)行后的存儲器操作將針對在線的所有DS1820。SearchROM指令代碼(F0h):用以讀出在線的DS1820的序列號。AlarmSearch指令代碼(ECh):當溫度值高于TH或低于TL中的數(shù)值時,此命令可以讀出報警的DS1820。

(2)、存儲器操作指令代碼及其含義

WriteScratchpad指令代碼(4Eh):寫兩個字節(jié)的數(shù)據(jù)到溫度寄存器。ReadScratchpad指令代碼(BEh):讀取溫度寄存器的溫度值。CopyScratchpad指令代碼(48h):將溫度寄存器的數(shù)值拷貝到EERAM中,保證溫度值不丟失。ConvertT指令代碼(44h):啟動在線DS1280做溫度A/D轉(zhuǎn)換。RecallE2指令代碼(B8h):將EERAM中的數(shù)值拷貝到溫度寄存器中。ReadPowerSupply指令代碼(B4h):在本命令送到DS1280之后的每一個讀數(shù)據(jù)間隙,指出電源模式:“0”為寄生電源;“1”為外部電源。2.4.3溫度測量的步驟 (1).ReadROM(33

h),每次對DS1820進行操作之前都要對它進行初始化,主要目的在于確定傳感器已經(jīng)連接到單總線上。(2).SearchROM(F0h),這條指令使處理器用排除的方法去辨別總線上的DS1820。(3).MatchROM(55h),只有準確的符合64位ROM序列的DS1820才能響應其后的指令,當然,單點測溫時可以使用Skip

ROM(CCh)指令來跳過這一步。(4).ConvertT(44h),發(fā)完指令后應查詢總線上的電平,當電平位高時溫度轉(zhuǎn)換完成。(5).ReadScratchpad(BEh),將讀指令發(fā)出后,就可從總線上讀得表示溫度的2字節(jié)二進制數(shù)。2.4.4DS18B20的操作時序由于采用單總線數(shù)據(jù)傳輸方式,DS18B20的數(shù)據(jù)I/O均由同一條線完成,因此,對讀寫的操作時序要求嚴格。它的各種時序如圖2-5所示圖2-5DS18B20的操作時序為了保證DS18B20的嚴格I/O時序。需要做較精確的延時。在DS18B20操作中,用到的延時有15μS,90μS,270μS,540μS等。因這些延時均為15μS的整倍,因此在程序中可以編寫一個以15μS為基準的延時函數(shù)。圖2-6溫度采集電路§2.51602LCD液晶顯示屏2.5.11602字符型LCD簡介字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,本設計采用16列*2行的字符型LCD1602帶背光的液晶顯示屏。1602LCD主要技術參數(shù):顯示容量:16×2個字符芯片工作電壓:4.5—5.5V工作電流:2.0mA(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.95×4.35(W×H)mm2.5.21602引腳功能說明各引腳接口說明如表所示:表2-1編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負極表2-1:引腳接口說明:第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負極。2.5.31602LCD的指令說明及時序1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表2-2所示:表2-2序號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標返回000000001*3置輸入模式00000001I/DS4顯示開/關控制0000001DCB5光標或字符移位000001S/CR/L**6置功能00001DLNF**7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標志或地址01BF計數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容表2-2字符控制命令說明:1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標復位到地址00H位置。指令2:光標復位,光標返回到地址00H。指令3:光標和顯示模式設置I/D:光標移動方向,高電平右移,低電平左移S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關控制。D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示C:控制光標的開與關,高電平表示有光標,低電平表示無光標B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標或顯示移位S/C:高電平時移動顯示的文字,低電平時移動光標。指令6:功能設置命令DL:高電平時為4位總線,低電平時為8位總線N:低電平時為單行顯示,高電平時雙行顯示F:低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。指令7:字符發(fā)生器RAM地址設置。指令8:DDRAM地址設置。指令9:讀忙信號和光標地址BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。芯片時序表如下:讀狀態(tài)輸入RS=L,R/W=H,E=H輸出D0—D7=狀態(tài)字寫指令輸入RS=L,R/W=L,D0—D7=指令碼,E=高脈沖輸出無讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0—D7=數(shù)據(jù)寫數(shù)據(jù)輸入RS=H,R/W=L,D0—D7=數(shù)據(jù),E=高脈沖輸出無表2-3基本操作時序表讀寫操作時序如圖2-7和2-8所示:圖2-7讀操作時序圖2-8寫操作時序2.5.41602LCD的RAM地址映射及標準字庫表液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖2-9是1602的內(nèi)部顯示地址。圖2-9液晶內(nèi)部顯示地址例如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數(shù)據(jù)應該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在對液晶模塊的初始化中要先設置其顯示模式,在液晶模塊顯示字符時光標是自動右移的,無需人工干預。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,如圖10-58所示,這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。圖2-10字符代碼與圖形對應圖2.5.51602LCD的一般初始化(復位)過程延時15mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號寫指令38H:顯示模式設置寫指令08H:顯示關閉寫指令01H:顯示清屏寫指令06H:顯示光標移動設置寫指令0CH:顯示開及光標設置2.4.61602LCD的電路連接液晶5端為讀/寫選擇端,因為我們不從液晶中讀取數(shù)據(jù),只向其寫入命令和顯示數(shù)據(jù),因此此端始終選擇為寫狀態(tài),即低電平接地。液晶6端為使能信號,是操作時必須的信號。其電路如圖2-11所示:圖2-111602的電路連接§2.6蜂鳴器鬧鈴電路當單片機給蜂鳴器一個低電平時,三極管導通驅(qū)動蜂鳴器發(fā)出聲音作為定時鬧鈴,其電路圖如圖2-12所示:圖2-12蜂鳴器連接電路§2.7按鍵調(diào)整電路系統(tǒng)四個獨立鍵盤均采用查詢方式,S2用于設置年、月、日、時、分、秒、星期的數(shù)值加,以及鬧鐘開,S3用于設置年、月、日、時、分、秒、星期的數(shù)值減以及鬧鐘關,s1用于具體設置時鐘位的切換,s4鍵用于設置鬧鐘。其電路圖如2-13所示:圖2-13按鍵電路連接§2.8電源模塊電子鐘的電源為5伏直流電源,本設計中我使用的是9V電池,經(jīng)LM7805轉(zhuǎn)化為5V。電源模塊的原理圖如圖2-15所示:圖2-14電源模塊第三章軟件部分設計本系統(tǒng)主要包括五個模塊編程:蜂鳴器鬧鈴響編程時鐘芯片DS1302的編程液晶顯示屏1602的編程按鍵編程DS18B20溫度采集編程§3.1主程序流程主程序開始初始化,并打開中斷,然后執(zhí)行掃描鬧鐘、鍵盤及讀取18B20值。當有S1鍵按下時,執(zhí)行時鐘設置,當有S4鍵按下時,則進入鬧鐘設置,無論是時鐘還是鬧鐘,設置完后退出,溫度、時鐘恢復實時顯示。主程序流程圖如圖3-1所示:初始化開中斷初始化開中斷讀18b20S1或S2是否按下掃描鬧鐘顯示溫度設置鬧鐘顯示溫度設置時間圖3-1主程序流程圖§3.2時間設置子程序流程通過單片機判斷S1按下的次數(shù)來設置,由s1num標志位來記錄次數(shù),用if語句判斷執(zhí)行命令。系統(tǒng)程序不斷掃面鍵盤,當s1鍵按下后產(chǎn)生一個低電平,即s1num加一。在調(diào)節(jié)時間之前首先進行各個變量初始化,及設置起始時間,同時為讀取數(shù)據(jù)作準備。當s1=1時進入秒的設置,地址指針指向miao顯示位置處,通過兩個if語句分別循環(huán)控制顯示秒數(shù)的加和減。當s1=2時,地址指針指向fen顯示位置處,變量最大值為59。當s1=3時,地址指針指向shi顯示位置處,變量最大值設為23。當s1=4時,地址指針指向week顯示位置處,最大值設為7,1至7分別用MON、TUE、WED、THU、FRI、SAT、SUN字符串顯示。隨著s2、s3值的的變化顯示不同的字符串。當s1=5時,地址指針指向day顯示位置,變量最大值為31。當s1=6時,地址指針指向month顯示位置,變量最大值為12。當s1=7時,地址指針指向year顯示位置,最大值為99。S1=1秒S1=1秒S1=2分S1=7月S1=8退出S2調(diào)加秒S3調(diào)減秒S3調(diào)減年S2調(diào)加年圖3-2時間設置流程圖§3.3鬧鐘設置子程序流程時間設置程序流程圖如圖3-3所示。在開始時間設置之前程序會關閉全局中斷,直至設置結束,中斷又會重新開啟,進入計時狀態(tài)。鬧鐘的設置時通過S1鍵的按下次數(shù)來判斷的。當單片機檢測到S4鍵按下一次時則進入鬧鐘設置界面,光標并自動跳到秒設置位置,可以對秒進行設置,當S1鍵依次按下1、2、3次時,則分別進入鬧鐘的秒、分、時關的設置。:SS4=1設置鬧鐘S4=2退出設置S1=1調(diào)節(jié)秒S1=2調(diào)節(jié)分S1=3調(diào)節(jié)時S1=4退出圖3-3鬧鐘設置流程圖§3.4程序設計問題3.4.1按鍵抖動問題按鍵在按下時因為機械原因會產(chǎn)生抖動,抖動的后果就是當按下一次按鍵時因為抖動的原因讓系統(tǒng)讀取到多次的按鍵按下的次數(shù),由此導致設置時出現(xiàn)錯誤。解決的方法如下:當按鍵按下時讀取按鍵鍵值,若5ms后鍵值和按下是相等,則確認為有效按鍵,以此消除按鍵抖動帶來的問題。3.4.2蜂鳴器設置蜂鳴器報警時,設置響100毫秒,停100毫秒,循環(huán)響應,產(chǎn)生滴滴的聲音。3.4.3液晶顯示的設置初始化設置顯示模式設置寫入指令碼write_com(0x38),設置功能16*2顯示,5*7點陣,8位數(shù)據(jù)接口顯示/開關及光標設置寫入指令碼write_com(0x0c),設置開顯示,不顯示光標,光標不閃爍。寫入指令碼write_com(0x06),設置當讀或?qū)懸粋€字符后地址指針加一,且光標加一。當寫一個字符,整屏顯示不移動。顯示清屏,寫入指令碼write_com(0x01)。寫入指令碼函數(shù)write_com()寫指令過程:輸入:rs=0,D0-D7=指令碼,E=高脈沖寫入數(shù)據(jù)函數(shù)write_date()寫指令過程:輸入:rs=1,D0-D7=數(shù)據(jù),E=高脈沖寫入指令和數(shù)據(jù)時rw端已經(jīng)接地。數(shù)據(jù)指針設置指令碼80H+地址碼(0-27H)顯示第一行的字符指令碼80H+地址碼(40H-67H)顯示的第二行字符3.4.4中斷設置EA=1;//打開總中斷EX1=1;//打開外部中斷IT1=1;//設置負跳變沿觸發(fā)中斷當鬧鐘到點時響應外部中1時間到時IRQ端從高阻態(tài)轉(zhuǎn)為低電平,此時讀一次c寄存器清除IRQ端的輸出,等待下一次定時。voidexter()interrupt2//外部中斷1服務程序{ucharc;//進入中斷表示鬧鐘時間到flag_ri=1;//設置標志位,用以大程序中報警c=read_ds(0x0c);//讀取DS1302寄存器表示響應了中端}3.4.5時鐘芯片設置DS1302寫一個字節(jié)函數(shù):voidwrite_byte(uchardat)//寫一個字節(jié){ ACC=dat; RST=1;//啟動數(shù)據(jù)傳送 for(a=8;a>0;a--) { IO=ACC0; SCLK=0; SCLK=1; ACC=ACC>>1; }}DS1302讀一個字節(jié)函數(shù):ucharread_byte()//讀一個字節(jié){ RST=1;//啟動數(shù)據(jù)傳送 for(a=8;a>0;a--) { ACC7=IO; SCLK=1; SCLK=0; ACC=ACC>>1; } return(ACC);}DS1302寫函數(shù):voidwrite_1302(ucharadd,uchardat)//向1302芯片寫函數(shù),指定寫入地址,數(shù)據(jù){RST=0;SCLK=0;RST=1;write_byte(add);write_byte(dat);SCLK=1;RST=0;}DS1302讀函數(shù):ucharread_1302(ucharadd)//從1302讀數(shù)據(jù)函數(shù),指定讀取數(shù)據(jù)來源地址{uchartemp;RST=0;SCLK=0;RST=1;write_byte(add);temp=read_byte();SCLK=1;RST=0;return(temp);}第四章開發(fā)工具Proteus與Keil2.1Proteus軟件2.1.1Proteus簡介Proteus軟件是英國Labcenterelectronics公司出版的EDA工具軟件(該軟件中國總代理為廣州風標電子技術有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發(fā)應用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設計,真正實現(xiàn)了從概念到產(chǎn)品的完整設計。是目前世界上唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。該軟件的特點是:1.實現(xiàn)了單片機仿真和SPICE電路仿真相結合,具有模擬電路仿真、數(shù)字電路仿真、各種單片機(51系列、AVR、PIG等常用的MCU)及其外圍電路(如lED、RAM、ROM、鍵盤、LED、A/D、D/A……)組成的系統(tǒng)仿真。2.提供了多種虛擬儀器。如示波器、邏輯分析儀、信號發(fā)生器等,調(diào)試非常方便。3.提供軟件調(diào)試功能,同時支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil等軟件。4.具有強大的原理圖繪制功能。Proteus與其它單片機仿真軟件不同的是,它不僅能仿真單片機CPU的工作情況,也能仿真單片機外圍電路或沒有單片機參與的其它電路的工作情況。因此在仿真和程序調(diào)試時,關心的不再是某些語句執(zhí)行時單片機寄存器和存儲器內(nèi)容的改變,而是從工程的角度直接看程序運行和電路工作的過程和結果。對于這樣的仿真實驗.從某種意義上講,是彌補了.實驗和工程應用閹脫節(jié)的矛盾和現(xiàn)象。同時,當硬件調(diào)試成功后,利用ProteusARES軟件,很容易獲得其PCB圖,為今后的制造提供了方便。2.1.24大功能模塊1.智能原理圖設計(ISIS)豐富的器件庫:超過27000種元器件,可方便地創(chuàng)建新元件。智能的器件搜索:通過模糊搜索可以快速定位所需要的器件。智能化的連線功能:自動連線功能使連接導線簡單快捷,大大縮短繪圖時間。支持總線結構:使用總線器件和總線布線使電路設計簡明清晰??奢敵龈哔|(zhì)量圖紙:通過個性化設置,可以生成印刷質(zhì)量的BMP圖紙,可以方便地供WORD、POWERPOINT等多種文檔使用。2.完善的電路仿真功能(Prospice)ProSPICE混合仿真:基于工業(yè)標準SPICE3F5,實現(xiàn)數(shù)字/模擬電路的混合仿真。超過27000個仿真器件:可以通過內(nèi)部原型或使用廠家的SPICE文件自行設計仿真器件,Labcenter也在不斷地發(fā)布新的仿真器件,還可導入第三方發(fā)布的仿真器件。多樣的激勵源:包括直流、正弦、脈沖、分段線性脈沖、音頻(使用wav文件)、指數(shù)信號、單頻FM、數(shù)字時鐘和碼流,還支持文件形式的信號輸入。豐富的虛擬儀器:13種虛擬儀器,面板操作逼真,如示波器、邏輯分析儀、信號發(fā)生器、直流電壓/電流表、交流電壓/電流表、數(shù)字圖案發(fā)生器、頻率計/計數(shù)器、邏輯探頭、虛擬終端、SPI調(diào)試器、I2C調(diào)試器等。生動的仿真顯示:用色點顯示引腳的數(shù)字電平,導線以不同顏色表示其對地電壓大小,結合動態(tài)器件(如電機、顯示器件、按鈕)的使用可以使仿真更加直觀、生動高級圖形仿真功能(ASF):基于圖標的分析可以精確分析電路的多項指標,包括工作點、瞬態(tài)特性、頻率特性、傳輸特性、噪聲、失真、傅立葉頻譜分析等。3.獨特的單片機協(xié)同仿真功能(VSM)支持主流的CPU類型:如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU類型隨著版本升級還在繼續(xù)增加,如即將支持CORTEX、DSP處理器。支持通用外設模型:如字符lED模塊、圖形lED模塊、LED點陣、LED七段顯示模塊、鍵盤/按鍵、直流/步進/伺服電機、RS232虛擬終端、電子溫度計等等,其COMPIM(COM口物理接口模型)還可以使仿真電路通過PC機串口和外部電路實現(xiàn)雙向異步串行通信。實時仿真:支持UART/USART/EUSARTs仿真、中斷仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真。編譯及調(diào)試:支持單片機匯編語言的編輯/編譯/源碼級仿真,內(nèi)帶8051、AVR、PIC的匯編編譯器,也可以與第三方集成編譯環(huán)境(如IAR、Keil和Hitech)結合,進行高級語言的源碼級仿真和調(diào)試。4.實用的PCB設計平臺原理圖到PCB的快速通道:原理圖設計完成后,一鍵便可進入ARES的PCB設計環(huán)境,實現(xiàn)從概念到產(chǎn)品的完整設計。先進的自動布局/布線功能:支持器件的自動/人工布局;支持無網(wǎng)格自動布線或人工布線;支持引腳交換/門交換功能使PCB設計更為合理。完整的PCB設計功能:最多可設計16個銅箔層,2個絲印層,4個機械層(含板邊),靈活的布線策略供用戶設置,自動設計規(guī)則檢查,3D可視化預覽。多種輸出格式的支持:可以輸出多種格式文件,包括Gerber文件的導入或?qū)С觯憷c其它PCB設計工具的互轉(zhuǎn)(如protel)和PCB板的設計和加工。2.1.3ISIS智能原理圖輸入系統(tǒng)ISIS是PROTEUS系統(tǒng)的中心,它遠不僅是一個圖表庫。它是具有控制原理圖畫圖的外觀的超強的設計環(huán)境。無論用戶的要求是快速實現(xiàn)復雜設計的仿真以及PCB設計,還是設計精美的原理圖以供出版,ISIS都可以很好的完成。ISIS提供給用戶圖形外觀包括線寬、填充類型、字符等的全部控制,使用戶能夠生成如雜志上看到一樣精美的原理圖,遠勝過CAD軟件繪制出的稀薄的線條。畫完圖可以以圖形文件輸出,或者拷貝到剪切板以便其他文件使用。這就使得ISIS成為制作技術文件,學術論文,項目報告的理想工具,也是PCB設計的一個出色的前端。畫圖的外形由風格模板定義。此外,此方案允許用戶定制元件庫提供的庫部件的外觀。2.1.4Proteus簡單應用圖2-1proteus界面圖1.繪制原理圖:繪制原理圖要在原理圖編輯窗口中的藍色方框內(nèi)完成。原理圖編輯窗口的操作是不同于常用的WINDOWS應用程序的,正確的操作是:用左鍵放置元件;右鍵選擇元件;雙擊右鍵刪除元件;右鍵拖選多個元件;先右鍵后左鍵編輯元件屬性;先右鍵后左鍵拖動元件;連線用左鍵,刪除用右鍵;改連接線:先右擊連線,再左鍵拖動;中鍵放縮原理圖。2.定制自己的元件:有三個個實現(xiàn)途徑,一是用PROTEUSVSMSDK開發(fā)仿真模型,并制作元件;另一個是在已有的元件基礎上進行改造,比如把元件改為bus接口的;還有一個是利用已制作好(別人的)的元件,我們可以到網(wǎng)上下載一些新元件并把它們添加到自己的元件庫里面。3.Sub-Circuits應用:用一個子電路可以把部分電路封裝起來,這樣可以節(jié)省原理圖窗口的空間。2.2Keil軟件2.2.1Keil軟件簡介KeilC51是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。KeilC51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到KeilC51生成的目標代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。KeilC51軟件是一個基于32位Windows環(huán)境的應用程序,支持C語言和匯編語言編程,其6.0以上的版本將編譯和仿真軟件統(tǒng)一為μVision(通常稱為μV2)。Keil提供包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,由以下幾部分組成:μVisionIDE集成開發(fā)環(huán)境C51編譯器、A51匯編器、LIB51庫管理器、BL51連接/定位器、OH51目標文件生成器以及Monitor-51、RTX51實時操作系統(tǒng)。2.2.2Keil軟件調(diào)試功能應用Keil進行軟件仿真開發(fā)的主要步驟為:編寫源程序并保存—建立工程并添加源文件—設置工程—編譯/匯編、連接,產(chǎn)生目標文件—程序調(diào)試。Keil使用“工程”(Project)的概念,對工程(而不能對單一的源程序)進行編譯/匯編、連接等操作。工程的建立、設置、編譯/匯編及連接產(chǎn)生目標文件的方法非常易于掌握。首先選擇菜單File-New…,在源程序編輯器中輸入?yún)R編語言或C語言源程序(或選擇File-Open…,直接打開已用其它編輯器編輯好的源程序文檔)并保存,注意保存時必須在文件名后加上擴展名.asm(.a51)或.c;然后選擇菜單Project-NewProject…,建立新工程并保存(保存時無需加擴展名,也可加上擴展名.uv2);工程保存后會立即彈出一個設備選擇對話框,選擇CPU后點確定返回主界面。這時工程管理窗口的文件頁(Files)會出現(xiàn)“Target1”,將其前面+號展開,接著選擇SourceGroup1,右擊鼠標彈出快捷菜單,選擇“AddFiletoGroup‘SourceGroup1’”,出現(xiàn)一個對話框,要求尋找并加入源文件(在加入一個源文件后,該對話框不會消失,而是等待繼續(xù)加入其它文件)。加入文件后點close返回主界面,展開“SourceGroup1”前面+號,就會看到所加入的文件,雙擊文件名,即可打開該源程序文件。緊接著對工程進行設置,選擇工程管理窗口的Target1,再選擇Project-OptionforTarget‘Target1’(或點右鍵彈出快捷菜單再選擇該選項),打開工程屬性設置對話框,共有8個選項卡,主要設置工作包括在Target選項卡中設置晶振頻率、在Debug選項卡中設置實驗仿真板等,如要寫片,還必須在Output選項卡中選中“CreatHexFi”;其它選項卡內(nèi)容一般可取默認值。工程設置后按F7鍵(或點擊編譯工具欄上相應圖標)進行編譯/匯編、連接以及產(chǎn)生目標文件。

成功編譯/匯編、連接后,選擇

溫馨提示

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

評論

0/150

提交評論