【正文】
能。硬件部分主要由AT89C52單片機(jī),LED顯示電路,以及調(diào)時(shí)按鍵電路等組成。它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能,而且DS1302的使用壽命長(zhǎng),誤差小。對(duì)于數(shù)字電子萬(wàn)年歷采用直觀的數(shù)字顯示,可以同時(shí)顯示年、月、日、周日、時(shí)、分、秒和溫度等信息,還具有時(shí)間校準(zhǔn)等功能。為了能更輕松的控制這三片顯示器,本人使用了3片74HC164來(lái)驅(qū)動(dòng)。所有程序編寫(xiě)完成后,在keil uvision4軟件中進(jìn)行調(diào)試好后,在Proteus軟件中進(jìn)行仿真。 Dynamic scanning。并且已經(jīng)深入到工業(yè)生產(chǎn)的各個(gè)環(huán)節(jié)以及人民生活的各個(gè)方面,如車(chē)間流水線控制、自動(dòng)化系統(tǒng)等、智能型家用電器(冰箱、空調(diào)、彩電)等?,F(xiàn)今,高精度的計(jì)時(shí)工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),用LED顯示器代替顯示器代替指針顯示進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí),分,秒顯示時(shí)間的功能,還可以進(jìn)行時(shí)和分的校對(duì),片選的靈活性好。利用單片機(jī)進(jìn)行控制,實(shí)時(shí)時(shí)鐘芯片DS1302進(jìn)行記時(shí),外加掉電存儲(chǔ)電路和顯示電路,可實(shí)現(xiàn)時(shí)間的調(diào)整和顯示。因此自從時(shí)鐘發(fā)明的那刻起,就成為人類的好朋友。數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),用LED顯示器代替指針進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí),分,秒顯示時(shí)間的功能,還可以進(jìn)行時(shí)和分的校對(duì),片選的靈活性好。 研究目的 通過(guò)利用MCS51單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器功能、中斷系統(tǒng)功能、以及外圍的按鍵和LED顯示器等部件,設(shè)計(jì)一個(gè)基于單片機(jī)的萬(wàn)年歷。DS1302內(nèi)部有一個(gè)31*8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。并具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。 主要單元電路的設(shè)計(jì) 單片機(jī)主控制模塊的設(shè)計(jì) AT89C52單片機(jī)為40引腳雙列直插芯片,有四個(gè)I/O口P0,P1,P2,P3, MCS51單片機(jī)共有4個(gè)8位的I/O口(P0、PPP3),每一條I/O線都能獨(dú)立地作輸出或輸入。當(dāng)Vcc2大于Vcc1+,Vcc2給DS1302供電。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。中有在SCLK 為低電平時(shí),才能將RST置為高電平,I/O為串行數(shù)據(jù)輸入端(雙向)。對(duì)于位6,若對(duì)程序進(jìn)行讀/寫(xiě)時(shí)RAM=1,對(duì)時(shí)間進(jìn)行讀/寫(xiě)時(shí),CK=0。表6為DS1302的日歷、時(shí)間寄存器內(nèi)容:“CH”是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開(kāi)始運(yùn)行。(3) 數(shù)據(jù)輸入輸出(I/O) 在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫(xiě)入DS1302,數(shù)據(jù)輸入從低位即位0開(kāi)始。時(shí)鐘突發(fā)寄存器可一次性順序讀寫(xiě)除充電寄存器外的所有寄存器內(nèi)容。這種記錄對(duì)長(zhǎng)時(shí)間的連續(xù)測(cè)控系統(tǒng)結(jié)果的分析以及對(duì)異常數(shù)據(jù)出現(xiàn)的原因的查找有重要意義。傳統(tǒng)的數(shù)據(jù)記錄方式是隔時(shí)采樣或定時(shí)采樣,沒(méi)有具體的時(shí)間記錄,因此只能記錄數(shù)據(jù)而無(wú)法準(zhǔn)確記錄其出現(xiàn)的時(shí)間;若采用單片機(jī)計(jì)時(shí),一方面需要采用計(jì)數(shù)器,占用硬件資源,另一方面需要設(shè)置中斷、查詢等,同樣耗費(fèi)單片機(jī)的資源,而且某些測(cè)控系統(tǒng)可能不允許。用于高速數(shù)據(jù)暫存的318位RAM;用于時(shí)鐘或RAM數(shù)據(jù)讀/寫(xiě)的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;它經(jīng)過(guò)一個(gè)簡(jiǎn)單的串行接口與微處理器通信。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302數(shù)據(jù)操作原理DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被輸入。 DS1302管腳圖如果在傳送過(guò)程中置RST為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。表22 DS1302引腳功能表引腳號(hào)引腳名稱功能1VCC2主電源2,3X1,X2振蕩源,外接32768HZ晶振4GND地線5RST復(fù)位/片選線6I/O串行數(shù)據(jù)輸入/輸出端(雙向)7SCLK串行時(shí)鐘輸入端8VCC1后備電源 顯示模塊的設(shè)計(jì)LED顯示器由若干個(gè)發(fā)光二極管組成,當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)筆畫(huà)或一個(gè)點(diǎn)就發(fā)光。將各段發(fā)光二極管連在一起的叫共陽(yáng)極顯示器,用低電平驅(qū)動(dòng);將陰極連在一起的叫共陰極顯示器,用高電平驅(qū)動(dòng)。在本系統(tǒng)中數(shù)碼管使用共陰極接法而且是用動(dòng)態(tài)顯示。 Proteus 仿真軟件 Proteus 仿真軟件的特點(diǎn)Proteus是世界上著名的EDA仿真軟件,是由英國(guó)Labcenter electronics公司開(kāi)發(fā)的,它可以對(duì)基于微控制器的設(shè)計(jì)連同所有的周?chē)娮悠骷黄鸱抡?,用戶甚至可以?shí)時(shí)采用諸如LED/LCD、鍵盤(pán)、RS232終端等動(dòng)態(tài)外設(shè)模型來(lái)對(duì)設(shè)計(jì)進(jìn)行交互仿真。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。Proteus ISIS 設(shè)計(jì)單片機(jī)電路的基本步驟:(1)新建設(shè)計(jì)文件夾或打開(kāi)一個(gè)現(xiàn)有的設(shè)計(jì)文件。(5)編輯和連接電路。(9)啟動(dòng)仿真功能,對(duì)電路進(jìn)行仿真操作,驗(yàn)證其功能。Keil C51生成的目標(biāo)代碼效率非常高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。該對(duì)話框有8個(gè)選項(xiàng)卡,大部分設(shè)置取默認(rèn)值即可。這是Intel公司提出的數(shù)據(jù)格式,所有數(shù)據(jù)使用16進(jìn)制數(shù)字表示。二是配合硬件仿真器或電路仿真軟件進(jìn)行程序和電路的聯(lián)合調(diào)試,這時(shí)要選“使用:Proteus VSM Simulator”選項(xiàng),,安裝后在此處的列表中將會(huì)出現(xiàn)“Proteus VSM Simulator”選項(xiàng),供于ISIS進(jìn)行程序和電路的聯(lián)調(diào)使用。編輯器支持語(yǔ)法著色功能,即對(duì)添加到工程中的源程序,不同語(yǔ)法成分用不同顏色著色表示,例如,關(guān)鍵字用藍(lán)色表示,以便查看和發(fā)現(xiàn)錯(cuò)誤。文件取名時(shí)必須加上擴(kuò)展名。要顯示匯編語(yǔ)言源文件,需要單擊“文件類型”下拉列表框右側(cè)的下三角按鈕,彈出下拉列表,選擇“Asm Source file(*.a*。(4)構(gòu)造目標(biāo)程序設(shè)置好工程并添加了源程序文件后,即單擊構(gòu)造目標(biāo)框上的相關(guān)構(gòu)造工具或按快捷鍵F7進(jìn)行目標(biāo)構(gòu)造,即對(duì)工程進(jìn)行匯編或編譯、連接,最終生成目標(biāo)文件*.HEX等相關(guān)文件。構(gòu)造的目標(biāo)文件*.HEX被用于下載到單片機(jī)芯片中。(2)安裝完畢后,把Proteus 7 Professional\MODELS\目錄下的 Keil\C51\BIN 文件夾下。運(yùn)行keil程序,在8051 LCD Driver文件夾下建立一個(gè)新的名為8051 LCD Driver工程。在Port后面添上8000。運(yùn)行Proteus的ISIS,進(jìn)入主界面后鼠標(biāo)左鍵點(diǎn)擊菜單DEBUG,選中use remote debugger monitor。打開(kāi)keil,按Ctrl+F5進(jìn)入調(diào)試界面或者點(diǎn)擊工具欄的調(diào)試按鈕。4 系統(tǒng)的軟件設(shè)計(jì) 程序流程框圖開(kāi)始初始化讀、寫(xiě)日期、時(shí)間和溫度分離日期\時(shí)間\溫度顯示值顯示子程序農(nóng)歷自動(dòng)更新子程序日期、時(shí)間修改子程序閏月子程返回定時(shí)鬧鈴子程序 主程序流程圖主程序才用模塊化設(shè)計(jì)。寄存器的初始化主要是初始化執(zhí)行程序時(shí)用到的部分RAM空間,防止程序執(zhí)行時(shí)帶來(lái)混亂。,顯示部分用P0口做為輸出數(shù)據(jù)接到LED數(shù)碼管a到h,并接74ls244做為各段的驅(qū)動(dòng)(為了簡(jiǎn)化電路圖在此用了8個(gè)上拉電阻代替74ls244)。設(shè)計(jì)采用動(dòng)態(tài)顯示,輪流掃描各個(gè)LED使之顯示相應(yīng)的數(shù)型碼,當(dāng)掃描頻率大于人眼所能識(shí)別的頻率時(shí)就看不到閃爍現(xiàn)象。其中K1鍵功能最多,通過(guò)判斷K1鍵按下的次數(shù)來(lái)判斷是調(diào)時(shí)間還是定時(shí),并對(duì)對(duì)應(yīng)的位置閃爍。由于鍵盤(pán)流程圖非常復(fù)雜,在此只表示秒,其余略。 鍵盤(pán)子程序流程圖 日歷時(shí)鐘子程序設(shè)計(jì)DS1302與CPU的連接需要三條線,即SCLK(7)、I/O(6)、RST(5)。讀寫(xiě)都是16位數(shù)據(jù)高8位是地址低8位是數(shù)據(jù),在讀寫(xiě)時(shí)要嚴(yán)格遵從其讀寫(xiě)時(shí)序,否則讀寫(xiě)將會(huì)失效。只有在SCLK為低電平時(shí),才能將RST置為高電平,這一點(diǎn)我們要一定注意。RST置1開(kāi) 始發(fā)送1位命令碼命令碼8位送完?寫(xiě)一位數(shù)據(jù)數(shù)據(jù)寫(xiě)完?RST置0(a)時(shí)鐘寫(xiě)結(jié) 束開(kāi) 始RST置1發(fā)送1位命令碼命令碼8位送完?讀一位數(shù)據(jù)數(shù)據(jù)讀完?RST置0結(jié) 束(b) 時(shí)鐘讀 日歷時(shí)鐘的寫(xiě)和讀NYYYYNNN 顯示子程序設(shè)計(jì)本設(shè)計(jì)的顯示部分具有消隱和閃爍功能,當(dāng)時(shí)分秒等高位為0時(shí)顯示消隱, 此時(shí)在讀時(shí)間時(shí)更加明了,但低位不能顯示消隱。 部分程序代碼includeincludedefine uchar unsigned char define uint unsigned intsbit rw=P3^6。sbit s2=P3^1。sbit sclk=P2^6。uchar count,s1num。void delay(uint z){uint x,y。y0。 P0=。 lcden=0。 delay(5)。 }void init(){uchar num。 write_(0x0c)。 for(num=0。} write_(0x80+0x40)。 delay(5)。 EA=1。 shi=date/10。 write_date(0x30+ge)。 write_(0x80+add)。 ce=0。shu8。 sclk=0。 shu1) { ACC = ACC 1。 } return(ACC)。 miao=((uamp。 write_(0x80+0x40+10)。0x0F)。 shi=((u2amp。 write_(0x80+0x40+4)。0x0F)。 shi=((u2amp。 write_(0x80+7)。0x0F)。 shi=((u2amp。 write_(0x80+14)。硬件設(shè)施基本合乎要求,軟件設(shè)計(jì)可以配合硬件實(shí)現(xiàn)其功能。做為新時(shí)代的我們,更應(yīng)該提高自身能力,適應(yīng)新時(shí)代的發(fā)展。盡管他的大部分功能集成在一塊小芯片上,但是它具有一個(gè)完整計(jì)算機(jī)所需要的大部分部件:CPU、內(nèi)存、內(nèi)部和外部總線系統(tǒng),目前大部分還會(huì)具有外存。單片機(jī)由芯片內(nèi)僅有CPU的專用處理器發(fā)展而來(lái)。其中最成功的是INTEL的8031,因?yàn)楹?jiǎn)單可靠而性能不錯(cuò)獲得了很大的好評(píng)。90年代后隨著消費(fèi)電子產(chǎn)品大發(fā)展,單片機(jī)技術(shù)得到了巨大的提高。當(dāng)代單片機(jī)系統(tǒng)已經(jīng)不再只在裸機(jī)環(huán)境下開(kāi)發(fā)和使用,大量專用的嵌入式操作系統(tǒng)被廣泛應(yīng)用在全系列的單片機(jī)上?,F(xiàn)代人類生活中所用的幾乎每件電子和機(jī)械產(chǎn)品中都會(huì)集成有單片機(jī)。 單片機(jī)硬件介紹:8051系列微控制器是建立在一個(gè)高度優(yōu)化的嵌入式控制系統(tǒng)的結(jié)構(gòu)上。8051的變化,達(dá)到40MHz時(shí)鐘頻率下降到150伏電壓條件是可得到的。所需的時(shí)間任何8051指令可以除以12例,時(shí)鐘頻率通過(guò)反演結(jié)果和增殖它的數(shù)字處理器周期所指示的問(wèn)題。附錄2 外文參考文獻(xiàn)(原文)Principle of MCUSinglechip is an integrated on a single chip a plete puter system. Even though most of his features in a small chip, but it has a need to plete the majority of puter ponents: CPU, memory, internal and external bus system, most will have the Core. At the same time, such as integrated munication interfaces, timers, realtime clock and other peripheral equipment. And now the most powerful singlechip microputer system can even voice, image, networking, input and output plex system integration on a single chip. Also known as singlechip MCU (Microcontroller), because it was first used in