版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
東北林業(yè)大學(xué)單片機(jī)原理實(shí)驗(yàn)課程設(shè)計(jì)總結(jié)報(bào)告設(shè)計(jì)項(xiàng)目: 電子交通燈的設(shè)計(jì) 項(xiàng)目完成人: 指導(dǎo)教師: 學(xué)院: 信息與計(jì)算機(jī)工程學(xué)院 專(zhuān)業(yè):電子信息工程2008級(jí)3班2011年5月23日
綜合電子課程設(shè)計(jì)任務(wù)書(shū)學(xué)生姓名郜天斌學(xué)號(hào)20082978專(zhuān)業(yè)(班級(jí))電信三班學(xué)生姓名劉佳濱學(xué)號(hào)20082996專(zhuān)業(yè)(班級(jí))電信三班設(shè)計(jì)項(xiàng)目電子交通燈的設(shè)計(jì)設(shè)計(jì)內(nèi)容(1) 通過(guò)8*8點(diǎn)陣簡(jiǎn)單實(shí)現(xiàn)直行、轉(zhuǎn)彎的交通指揮設(shè)計(jì)(2) 顯示年、月、日、星期、時(shí)、分、秒(3)能夠通過(guò)鍵盤(pán)輸入日期和時(shí)間的初值(4) 通過(guò)功能鍵能夠?qū)崿F(xiàn)數(shù)據(jù)儲(chǔ)存、查詢(xún)、上傳(串行通訊)功能(5) 通過(guò)功能鍵能夠?qū)崿F(xiàn)外中斷和定時(shí)中斷功能主要技術(shù)指標(biāo)和要求設(shè)計(jì)所用儀器設(shè)備工作計(jì)劃參考資料指導(dǎo)教師簽字系主任簽字摘要隨著目前微電子技術(shù)的發(fā)展,技術(shù)工藝的不斷提高,單片機(jī)技術(shù)也有了長(zhǎng)足的進(jìn)步。單片機(jī)即單片微型計(jì)算機(jī),它是微型計(jì)算機(jī)的一個(gè)分支,它是在一塊芯片上集成了CPU、RAM和ROM存儲(chǔ)器I/O接口等而構(gòu)成的微型計(jì)算機(jī)。因?yàn)樗饕獞?yīng)用于工業(yè)測(cè)控領(lǐng)域故又叫做微控器或嵌入式控制器。單片機(jī)的核心是CPU用超大規(guī)模集成技術(shù)把CPU集成在一塊芯片上,稱(chēng)為微處理器。單片機(jī)在最近幾年中得到了極大的發(fā)展,目前世界范圍內(nèi)單片機(jī)發(fā)展的主要領(lǐng)域有4個(gè):一是歐美,最新開(kāi)發(fā)產(chǎn)品及主要廠商有:Nationalsemicundutor的cop3系列單片機(jī),美國(guó)的Scenix的八位單片機(jī),荷蘭PHILIPS的51系列單片機(jī),,美國(guó)AMD公司186系列16位嵌入式微機(jī)控制器,MOTOROLA的各個(gè)系列單片機(jī);二是日本,TOSHIBA公司開(kāi)發(fā)了從4位到64位多系列單片機(jī),日立公司也有從4位到32位多系列單片機(jī),NEC公司的75X、78X系列微機(jī);三是臺(tái)灣地區(qū),主要有WINBOND的W741/W516,W78/W77等系列產(chǎn)品微控制器;四是韓國(guó),主要有HYUNDAImicroelectrionics的GMS800、GMS30系列微控制器。另外還有LG公司也生產(chǎn)單片機(jī),可見(jiàn)單片機(jī)發(fā)展到今天可以說(shuō)種類(lèi)繁多、性能各異。但目前我國(guó)的許多單片機(jī)應(yīng)用單位仍停留在采用片內(nèi)無(wú)ROM等低檔單片機(jī)狀態(tài)。十字路口車(chē)輛穿梭,行人熙攘,車(chē)行車(chē)道,人行人道,有條不紊。那么靠什么來(lái)實(shí)現(xiàn)這井然秩序呢?靠的就是交通信號(hào)燈的自動(dòng)指揮系統(tǒng)。交通信號(hào)燈控制方式很多。本系統(tǒng)采用MSC-51系列單片機(jī)ATSC51和可編程并行I/O接口芯片CH451為中心器件來(lái)設(shè)計(jì)交通燈控制器,實(shí)現(xiàn)了能根據(jù)實(shí)際車(chē)流量通過(guò)8051芯片的P1口設(shè)置紅、綠燈燃亮?xí)r間的功能;紅綠燈循環(huán)點(diǎn)亮,倒計(jì)時(shí)剩5秒時(shí)黃燈閃爍警示(交通燈信號(hào)通過(guò)PA口輸出,顯示時(shí)間直接通過(guò)CH451的PC口輸出至雙位數(shù)碼管);車(chē)輛闖紅燈報(bào)警;綠燈時(shí)間可檢測(cè)車(chē)流量并可通過(guò)雙位數(shù)碼管顯示。本系統(tǒng)實(shí)用性強(qiáng)、操作簡(jiǎn)單、擴(kuò)展功能強(qiáng)。關(guān)鍵詞:?jiǎn)纹瑱C(jī)、交通燈、LJD-SY-5200單片機(jī)實(shí)驗(yàn)系統(tǒng)基于單片機(jī)的交通燈設(shè)計(jì)目錄TOC\o"1-5"\h\z\o"CurrentDocument"1緒論 1\o"CurrentDocument"1.1引言 1\o"CurrentDocument"系統(tǒng)方案設(shè)計(jì) 2\o"CurrentDocument"2芯片簡(jiǎn)介 2\o"CurrentDocument"MSC-51芯片簡(jiǎn)介 2\o"CurrentDocument"DS1302芯片簡(jiǎn)介 5\o"CurrentDocument"74HC573簡(jiǎn)介 7\o"CurrentDocument"CH451芯片簡(jiǎn)介 7\o"CurrentDocument"74HC138芯片簡(jiǎn)介 10\o"CurrentDocument"3系統(tǒng)硬件設(shè)計(jì) 11\o"CurrentDocument"3.1系統(tǒng)硬件設(shè)計(jì) 11\o"CurrentDocument"LCD液晶 11\o"CurrentDocument"8段數(shù)碼管 12\o"CurrentDocument"4系統(tǒng)的軟件設(shè)計(jì) 12\o"CurrentDocument"4.1程序設(shè)計(jì)與調(diào)試步驟 12\o"CurrentDocument"4.2計(jì)數(shù)器初值計(jì)算 12\o"CurrentDocument"4.2.11秒方法 134.3時(shí)間顯示 134.3.1寫(xiě)保護(hù)寄存器操作 13\o"CurrentDocument"4.3.2時(shí)鐘停止位操作 13\o"CurrentDocument"多字節(jié)傳送方式 13\o"CurrentDocument"5結(jié)論 14附錄1、 總體電路圖 15\o"CurrentDocument"2、 流程圖 15\o"CurrentDocument"3、 程序代碼 17參考文獻(xiàn)1緒論1.1引言所謂單片機(jī)是指在一個(gè)集成芯片中,集成微處理器(CPU)、存儲(chǔ)器、基本I/O接口以及定時(shí)/計(jì)數(shù)、通信部件,即在一個(gè)芯片上實(shí)現(xiàn)一臺(tái)微型計(jì)算機(jī)的基本功能。1970年微型計(jì)算機(jī)研制成功之后,隨著就出現(xiàn)了單片機(jī)。美國(guó)Intel公司1971年生產(chǎn)的4位單片機(jī)4004和1972年生產(chǎn)的雛形8位單片機(jī)8008,特別是1976年MCS-48單片機(jī)問(wèn)世以來(lái),在短短的二十幾年間,經(jīng)歷了四次更新?lián)Q代,其發(fā)展速度大約每二、三年要更新一代、集成度增加一倍、功能翻一番。其發(fā)展速度之快、應(yīng)用范圍之廣,已達(dá)到了驚人的地步,它已滲透到生產(chǎn)和生活的各個(gè)領(lǐng)域。盡管目前單片機(jī)的品種很多,但其中最具典型性的當(dāng)數(shù)Intel公司的MCS-51系列單片機(jī)。MCS-51是在MCS-48的基礎(chǔ)上于80年代初發(fā)展起來(lái)的,雖然它仍然是8位的單片機(jī),但其功能有很大的增強(qiáng)。由于PHILIPS>ATMEL、WELBORD、LG等近百家IC制造商都主產(chǎn)51系列兼容產(chǎn)品,具有品種全、兼容性強(qiáng)、軟硬件資料豐富等特點(diǎn)。因此,MCS-51應(yīng)用非常廣泛,成為繼MCS-48之后最重要的單片機(jī)品種。直到現(xiàn)在MCS-51仍不失為單片機(jī)中的主流機(jī)型。國(guó)內(nèi)尤以Intel的MCS-51系列單片機(jī)應(yīng)用最廣。由于8位單片機(jī)的高性能價(jià)格比,估計(jì)近十年內(nèi),8位單片機(jī)仍將是單片機(jī)中的主流機(jī)型。隨著計(jì)算機(jī)技術(shù)的發(fā)展和在控制系統(tǒng)中的廣泛應(yīng)用,以及設(shè)備向小型化、智能化發(fā)展,作為高新技術(shù)之一的單片機(jī)以其體積小、功能強(qiáng)、價(jià)格低廉、使用靈活等優(yōu)勢(shì),顯示出很強(qiáng)的生命力。它和一般的集成電路相比有較好的抗干擾能力,對(duì)環(huán)境的溫度和濕度都有較好的適應(yīng)性,可以在工業(yè)條件下穩(wěn)定工作。且單片機(jī)廣泛地應(yīng)用于各種儀器儀表,使儀器儀表智能化,提高它們的測(cè)量速度和測(cè)量精度,加強(qiáng)控制功能。如MCS-51系列單片機(jī)控制的“船舶航行狀態(tài)自動(dòng)記錄儀”、“煙葉水分測(cè)試儀”、“智能超聲波測(cè)厚儀”等。單片機(jī)也廣泛地應(yīng)用于實(shí)時(shí)控制系統(tǒng)中,例如對(duì)工業(yè)上各種窯爐的溫度、酸度、化學(xué)成分的測(cè)量和控制。將測(cè)量技術(shù)、自動(dòng)控制技術(shù)和單片機(jī)技術(shù)相結(jié)合,充分發(fā)揮其數(shù)據(jù)處理功能和實(shí)時(shí)控制功能,使系統(tǒng)工作處于最佳狀態(tài),提高系統(tǒng)的生產(chǎn)效率和產(chǎn)品質(zhì)量。從航空航天、地質(zhì)石油、冶金采礦、機(jī)械電子、輕工紡織等行業(yè)的分布系統(tǒng)與智能控制以及機(jī)電一體化設(shè)備和產(chǎn)品,到郵電通信、日用設(shè)備和器械,單片機(jī)都發(fā)揮了巨大作用。其應(yīng)用大致可分為以下幾方面:①機(jī)電一體化設(shè)備的控制核心。機(jī)電一體化是機(jī)械設(shè)備發(fā)展的方向。單片機(jī)的出現(xiàn)促進(jìn)了機(jī)電一體化技術(shù)的發(fā)展,它作為機(jī)電產(chǎn)品的控制器,充分發(fā)揮其自身優(yōu)點(diǎn),大大強(qiáng)化了機(jī)器的功能,提高了機(jī)器的自動(dòng)化、智能化程度。最典型的機(jī)電產(chǎn)品機(jī)器人,每個(gè)關(guān)節(jié)或動(dòng)作部位都是一個(gè)單片機(jī)控制系統(tǒng)。②數(shù)據(jù)采集系統(tǒng)的現(xiàn)場(chǎng)采集單元。大型數(shù)據(jù)采集系統(tǒng),要求數(shù)據(jù)采集的同步性和實(shí)時(shí)性要好。使用單片機(jī)作為系統(tǒng)的前端采集單元,由主控計(jì)算機(jī)發(fā)出采集命令,再將采集到的數(shù)據(jù)逐一送到主計(jì)算機(jī)中進(jìn)行處理。如有些氣象部門(mén)、油田采油部門(mén)以及電廠等均可采用這樣的系統(tǒng)。③分布控制系統(tǒng)的前端控制器。在直接控制級(jí)的計(jì)算機(jī)分布控制系統(tǒng)(DCS)中,單片機(jī)作為過(guò)程控制中每一分部操作或控制的控制器,進(jìn)行數(shù)據(jù)采集、反饋計(jì)算、控制輸出,并在上位機(jī)命令的指揮下進(jìn)行相應(yīng)協(xié)調(diào)工作。(④智能化儀表的機(jī)芯。自動(dòng)化儀表的智能化程度越來(lái)越高。采用單片機(jī)的智能化儀表可具有自整定、自校正、自動(dòng)補(bǔ)償和自適應(yīng)功能,還可進(jìn)行數(shù)字PID調(diào)節(jié),軟件消除電流熱噪聲等等,解決傳統(tǒng)儀表所不能解決的難題。單片機(jī)的應(yīng)用使這種性能如虎添翼,如自動(dòng)計(jì)費(fèi)電度表、燃?xì)獗碇幸延羞@方面的應(yīng)用。許多工業(yè)儀表中的智能流量計(jì),氣體分析儀、成分分析儀等也采用了這項(xiàng)技術(shù)。甚至有的保健治療儀中也采用了單片機(jī)控制。⑤消費(fèi)類(lèi)電子產(chǎn)品控制。該應(yīng)用主要反映在家電領(lǐng)域,如洗衣機(jī)、空調(diào)器、保安系統(tǒng)、VCD視盤(pán)機(jī)、電子秤、IC卡、手機(jī)、BP機(jī)等。這些設(shè)備中使用了單片機(jī)機(jī)芯后,大大提高了其控制功能和性能,并實(shí)現(xiàn)了智能化、最優(yōu)化控制。⑥終端及外圍設(shè)備控制。計(jì)算機(jī)網(wǎng)絡(luò)終端設(shè)備,如銀行終端、商業(yè)POS(自動(dòng)收款機(jī))以及計(jì)算機(jī)外圍設(shè)備如打印機(jī)、通信終端和智能化UPS等。在這些設(shè)備中使用單片機(jī),使其具有計(jì)算、存儲(chǔ)、顯示、輸入等功能,具有和計(jì)算機(jī)連接的接口,使計(jì)算機(jī)的能力及應(yīng)用范圍大大提高??傊?,隨著信息時(shí)代的到來(lái),傳統(tǒng)單片機(jī)固有的結(jié)構(gòu)缺陷,使其呈現(xiàn)出諸多弊端。其速度、規(guī)模、性能等指標(biāo)越來(lái)越難以滿(mǎn)足用戶(hù)需求、因此單片機(jī)芯片的開(kāi)發(fā),升級(jí)面臨著新的挑戰(zhàn)。1.2系統(tǒng)方案設(shè)計(jì)利用LJD-SY-5200單片機(jī)主板和CH451、DS1302等芯片分別實(shí)現(xiàn)(1)通過(guò)8*8點(diǎn)陣簡(jiǎn)單實(shí)現(xiàn)直行、轉(zhuǎn)彎的交通指揮設(shè)計(jì)(2)顯示年、月、日、星期、時(shí)、分、秒(3)能夠通過(guò)鍵盤(pán)輸入日期和時(shí)間的初值(4)通過(guò)功能鍵能夠?qū)崿F(xiàn)數(shù)據(jù)儲(chǔ)存、查詢(xún)、上傳(串行通訊)功能(5)通過(guò)功能鍵能夠?qū)崿F(xiàn)外中斷和定時(shí)中斷功能。在整合各部分代碼實(shí)現(xiàn)整體的功能實(shí)現(xiàn)。通過(guò)CH451實(shí)現(xiàn)鍵盤(pán)的掃描,判斷按鍵代碼觸發(fā)相應(yīng)的程序。修改8*8點(diǎn)陣來(lái)顯示各種交通指揮圖標(biāo)。擬用p0(0.0-0.7)口控制74hc573實(shí)現(xiàn)對(duì)于led8*8的控制,用單片機(jī)控制ch451從而控制數(shù)碼管與鍵盤(pán)(p1.2控制load,p3.4控制dclk,p3.5控制din,p3.3控制dout)詳細(xì)連接將在硬件部分?jǐn)⑹?。該方案最終可實(shí)現(xiàn)交通燈以及簡(jiǎn)單的表的功能。在可實(shí)現(xiàn)性方面由于所使用的cpu管腳不沖突,按鍵輸入是中斷方式,加之采用時(shí)鐘中斷為記數(shù)脈沖所以是可以實(shí)現(xiàn)的。2芯片簡(jiǎn)介MSC-51芯片簡(jiǎn)介MCS-51單片機(jī)內(nèi)部結(jié)構(gòu)8051是MCS-51系列單片機(jī)的典型產(chǎn)品,包含中央處理器、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說(shuō)明:?中央處理器:中央處理器(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位用戶(hù)數(shù)據(jù)存儲(chǔ)單元和128個(gè)專(zhuān)用寄存器單元,它們是統(tǒng)一編址的,專(zhuān)用寄存器只能用于存放控制指令數(shù)據(jù),用戶(hù)只能訪問(wèn),而不能用于存放用戶(hù)數(shù)據(jù),所以,用戶(hù)能使用的RAM只有128個(gè),可存放讀寫(xiě)的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶(hù)定義的字型表。并行珈口I串行通信口中斷系毓定時(shí)計(jì)數(shù)器程序存儲(chǔ)器11數(shù)據(jù)存儲(chǔ)器8051時(shí)鐘并行珈口I串行通信口中斷系毓定時(shí)計(jì)數(shù)器程序存儲(chǔ)器11數(shù)據(jù)存儲(chǔ)器8051時(shí)鐘據(jù)線址線制跋數(shù)總地總控總圖18051內(nèi)部結(jié)構(gòu)框圖?程序存儲(chǔ)器(ROM):8051共有4096個(gè)8位掩膜ROM,用于存放用戶(hù)程序,原始數(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),用于對(duì)外部數(shù)據(jù)的傳輸。?全雙工串行口:8051內(nèi)置一個(gè)全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。?中斷系統(tǒng):8051具備較完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中斷,可滿(mǎn)足不同的控制要求,并具有2級(jí)的優(yōu)先級(jí)別選擇。?時(shí)鐘電路:8051內(nèi)置最高頻率達(dá)12MHz的時(shí)鐘電路,用于產(chǎn)生整個(gè)單片機(jī)運(yùn)行的脈沖時(shí)序,但8051單片機(jī)需外置振蕩電容。單片機(jī)的結(jié)構(gòu)有兩種類(lèi)型,一種是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開(kāi)的形式,即哈佛(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)。下圖是MCS-51系列單片機(jī)的內(nèi)部結(jié)構(gòu)示意圖2。PO.c—P0.7 T2.0—P2.PO.c—P0.7 T2.0—P2.7 I通道口驅(qū)動(dòng)黑II通道2驅(qū)動(dòng)器I堆棧指針圖2MCS-51的引腳說(shuō)明:MCS-51系列單片機(jī)中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩根,4組8位共32個(gè)I/O口,中斷口線與P3口線復(fù)用?,F(xiàn)在我們對(duì)這些引腳的功能加以說(shuō)明:MCS-51的引腳說(shuō)明:MCS-51系列單片機(jī)中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩根,4組8位共32個(gè)I/O口,中斷口線與P3口線復(fù)用。現(xiàn)在我們對(duì)這些引腳的功能加以說(shuō)明:如圖3Pl.0EPl.1EPl.2EPl.3EPl.4EPl.5EPl.6EPl.7ERSTEEXD/P3.0ETXD/P3.1EIBT0/P3.2EI1IT1/P3.3ET0/P3.4ET1/P3.5EWP3.6EED/P3.7EKTAL2EKTAL1EtllDEPDIPVccPl.0EPl.1EPl.2EPl.3EPl.4EPl.5EPl.6EPl.7ERSTEEXD/P3.0ETXD/P3.1EIBT0/P3.2EI1IT1/P3.3ET0/P3.4ET1/P3.5EWP3.6EED/P3.7EKTAL2EKTAL1EtllDEPDIPVccP0.0/ADOPO.1/AD1PO.2/AD2PO.3/AD3PO.4/AD4PO.5/AD5PO.6/AD6PO.7/AD7EA/VPP_ALE/PEOGPESNP2.7/A15P2.6/A14P2.5/A13P2.4/Al2P2.3/A11P2.2/A10P2.1/A3P2.0/A8圖3Pin9:RESET/V園復(fù)位信號(hào)復(fù)用腳,當(dāng)8051通電,時(shí)鐘電路開(kāi)始工作,在RESET引腳上出現(xiàn)24個(gè)時(shí)鐘周期以上的高電蘋(píng):系統(tǒng)即初始復(fù)位。初始化后,程序計(jì)數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫(xiě)入07H,其它專(zhuān)用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開(kāi)始執(zhí)行程序。然而,初始復(fù)位不改變RAM(包括工作寄存器R0-R7)的狀態(tài),8051的初始態(tài)。8051的復(fù)位方式可以是自動(dòng)復(fù)位,也可以是手動(dòng)復(fù)位,見(jiàn)下圖4。此外,RESET/Vd還是一復(fù)用腳,V掉電其間,此腳可接上備用電源,以保證單片機(jī)內(nèi)部RAM的數(shù)據(jù)不丟失。 '"
上電自動(dòng)復(fù)位 手劫?gòu)?fù)位:電路 內(nèi)部時(shí)鐘方式圖48051□nt上電自動(dòng)復(fù)位 手劫?gòu)?fù)位:電路 內(nèi)部時(shí)鐘方式圖48051□nt1)XTAL2時(shí)鐘源18XTAL1外部時(shí)鐘方式?Pin30:ALE/西國(guó)當(dāng)訪問(wèn)外部程序器時(shí),ALE(地址鎖存)的輸出用于鎖存地址的低位字節(jié)。而訪問(wèn)內(nèi)部程序存儲(chǔ)器時(shí),ALE端將有一個(gè)1/6時(shí)鐘頻率的正脈沖信號(hào),這個(gè)信號(hào)可以用于識(shí)別單片機(jī)是否工作,也可以當(dāng)作一個(gè)時(shí)鐘向外輸出。更有一個(gè)特點(diǎn),當(dāng)訪問(wèn)外部程序存儲(chǔ)器,ALE會(huì)跳過(guò)一個(gè)脈沖。如果單片機(jī)是EPROM,在編程其間,頑;將用于輸入編程脈沖。?Pin29:商當(dāng)訪問(wèn)外部程序存儲(chǔ)器時(shí),此腳輸出負(fù)脈沖選通信號(hào),PC的16位地址數(shù)據(jù)將出現(xiàn)在P0和P2口上,外部程序存儲(chǔ)器則把指令數(shù)據(jù)放到P0口上,由CPU讀入并執(zhí)行。?Pin31:EA/Vpp程序存儲(chǔ)器的內(nèi)外部選通線,8051和8751單片機(jī),內(nèi)置有4kB的程序存儲(chǔ)器,當(dāng)EA為高電平并且程岸地址小于4kB時(shí),讀取內(nèi)部程序存儲(chǔ)器指令數(shù)據(jù),而超過(guò)4kB地址則讀取外部指令數(shù)據(jù)。如EA為低電平,則不管地址大小,一律讀取外部程序存儲(chǔ)器指令。顯然,對(duì)內(nèi)部無(wú)程序存儲(chǔ)器的8031,EA端必須接地。在編程時(shí),EA/Vpp腳還需加上21V的編程電壓。DS1302芯片簡(jiǎn)介DS1302是DALLAS公司推出的涓流充電時(shí)鐘芯片內(nèi)含有一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài)RAM通過(guò)簡(jiǎn)單的串行接口與單片機(jī)進(jìn)行通信實(shí)時(shí)時(shí)鐘/日歷電路提供秒分時(shí)日日期月年的信息每月的天數(shù)和閏年的天數(shù)可自動(dòng)調(diào)整時(shí)鐘操作可通過(guò)AM/PM指示決定采用24或12小時(shí)格式DS1302與單片機(jī)之間能簡(jiǎn)單地采用同步串行的方式進(jìn)行通信僅需用到三個(gè)口線1RES復(fù)位2I/O數(shù)據(jù)線3SCLK串行時(shí)鐘時(shí)鐘/RAM的讀/寫(xiě)數(shù)據(jù)以一個(gè)字節(jié)或多達(dá)31個(gè)字節(jié)的字符組方式通信DS1302工作時(shí)功耗很低保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí)功率小于1mW。DS1302是由DS1202改進(jìn)而來(lái)增加了以下的特性雙電源管腳用于主電源和備份電源供應(yīng)Vcc1為可編程涓流充電電源附加七個(gè)字節(jié)存儲(chǔ)器它廣泛應(yīng)用于電話傳真便攜式儀器以及電池供電的儀器儀表等產(chǎn)品領(lǐng)域下面將主要的性能指標(biāo)作一綜合:?實(shí)時(shí)時(shí)鐘具有能計(jì)算2100年之前的秒分時(shí)日日期星期月年的能力還有閏年調(diào)整能力318位暫存數(shù)據(jù)存儲(chǔ)RAM?串行I/O口方式使得管腳數(shù)量最少?寬范圍工作電壓2.05.5V工作電流2.0V時(shí),小于300nA?讀/寫(xiě)時(shí)鐘或RAM數(shù)據(jù)時(shí)有兩種傳送方式單字節(jié)傳送和多字節(jié)傳送字符組方式8腳DIP封裝或可選的8腳SOIC封裝根據(jù)表面裝配簡(jiǎn)單3線接口?與TTL兼容Vcc=5V
可選工業(yè)級(jí)溫度范圍-40+85與DS1202兼容在DS1202基礎(chǔ)上增加的特性對(duì)Vcc1有可選的涓流充電能力雙電源管用于主電源和備份電源供應(yīng)備份電源管腳可由電池或大容量電容輸入附加的7字節(jié)暫存存儲(chǔ)器1DS1302的基本組成和工作原理DS1302的管腳排列及描述如下圖及表所示管腳描述管腳描述管腳描述管腳描述X1X232.768KHz晶振管腳GND地RST復(fù)位腳I/O數(shù)據(jù)輸入/輸出引腳管腳配置8丁8丁65-1234登籍VGVDC1SCLKI/ORST匚1U8)v0C1X1匚2 7□SCLKX2匚3 6JI/OgndC4 53RST?PINDI=(3WMIL)DS1302SB-PIN50IC(200MIL)DS1302ZB-PINSOIC150MILSCLK串行時(shí)鐘Vcc1,Vcc2電源供電管腳訂單信息訂單信息訂單信息訂單信息部分#描述DS1302 串行時(shí)鐘芯片8腳DIPDS1302S 串行時(shí)鐘芯片8腳SOIC200milDS1302Z 串行時(shí)鐘芯片8腳SOIC150milDS1302內(nèi)部寄存器CH:時(shí)鐘停止位寄存器2的第7位12/24小時(shí)標(biāo)志CH=0振蕩器工作允許bit7=1,12小時(shí)模式CH=1振蕩器停止bit7=0,24小時(shí)模式WP:寫(xiě)保護(hù)位寄存器2的第5位:AM/PM定義WP=0WP=1寄存器數(shù)據(jù)能夠?qū)懭階P=1 下午模式寄存器數(shù)據(jù)不能寫(xiě)入AP=0 上午模式TCS:涓流充電選擇 DS:二極管選擇位TCS=1010 使能涓流充電 DS=01 選擇一個(gè)二極管TCS=其它 禁止涓流充電 DS=10 選擇兩個(gè)二極管DS=00或11,即使TCS=1010,充電功能也被禁止
74HC573芯片簡(jiǎn)介74HC573是一種帶三態(tài)門(mén)的8D鎖存器,其管腳示意圖如下示:u:iIjc--DDDDDDDD-jc--DDDDDDDD-rc12343&丁呂1Q-8Q為8個(gè)輸出端。TOC\o"1-5"\h\zLE為數(shù)據(jù)打入端:當(dāng)C為“1”時(shí),鎖存器輸出一狀態(tài)同輸入狀態(tài);當(dāng)C由“1”變“0”時(shí),數(shù)據(jù) ’打入鎖存器 —OC為輸出允許端:當(dāng)OC=0時(shí),三態(tài)門(mén)打開(kāi); 一當(dāng)砂1時(shí),三態(tài)門(mén)關(guān)閉,輸出高阻。_4HC573CH451芯片簡(jiǎn)介1概述CH451是一個(gè)整合了數(shù)碼管顯示驅(qū)動(dòng)和鍵盤(pán)掃描控制以及UP監(jiān)控的多功能外圍芯片。CH451內(nèi)置既振蕩電路,可以動(dòng)態(tài)驅(qū)動(dòng)8位數(shù)碼管或者64位LED,具有BCD譯碼、閃爍、移位等功能;同時(shí)還可以進(jìn)行64鍵的鍵盤(pán)掃描;CH451通過(guò)可以級(jí)聯(lián)的串行接口與單片機(jī)等交換數(shù)據(jù);并且提供上電復(fù)位和看門(mén)狗等監(jiān)控功能。2、特點(diǎn)顯示驅(qū)動(dòng)?內(nèi)置大電流驅(qū)動(dòng)級(jí),段電流不小于25mA,字電流不小于150mA。?動(dòng)態(tài)顯示掃描控制,直接驅(qū)動(dòng)8位數(shù)碼管或者64位發(fā)光管LED。?可選數(shù)碼管的段與數(shù)據(jù)位相對(duì)應(yīng)的不譯碼方式或者BCD譯碼方式。?數(shù)碼管的字?jǐn)?shù)據(jù)左移、右移、左循環(huán)、右循環(huán)。?各數(shù)碼管數(shù)字獨(dú)立閃爍控制。?通過(guò)占空比設(shè)定提供16級(jí)亮度控制。?支持段電流上限調(diào)整,可以省去所有限流電阻。?掃描極限控制,支持1到8個(gè)數(shù)碼管,只為有效數(shù)碼管分配掃描時(shí)間。鍵盤(pán)控制?內(nèi)置64鍵鍵盤(pán)控制器,基于8X8矩陣鍵盤(pán)掃描。?內(nèi)置按鍵狀態(tài)輸入的下拉電阻,內(nèi)置去抖動(dòng)電路。?鍵盤(pán)中斷,低電平有效輸出。?提供按鍵釋放標(biāo)志位,可供查詢(xún)按鍵按下與釋放。外部接口?高速的4線串行接口,支持多片級(jí)聯(lián),時(shí)鐘速度從0到10MHz。?串行接口中的DIN和DCLK信號(hào)線可以與其它接口電路共用,節(jié)約引腳。?完全內(nèi)置時(shí)鐘振蕩電路,通常不需要外接晶體或者阻容振蕩。?內(nèi)置上電復(fù)位和看門(mén)狗Watch-Dog,提供高電平有效和低電平有效復(fù)位輸出。3功能CH451是一個(gè)多功能外圍芯片,通過(guò)可以級(jí)聯(lián)的4線串行接口與單片機(jī)、DSP、微處理器等交換數(shù)據(jù)。CH451包含三個(gè)功能:數(shù)碼管顯示驅(qū)動(dòng)、鍵盤(pán)掃描控制、^P監(jiān)控,三個(gè)功能之間相互獨(dú)立,單片機(jī)可以通過(guò)操作命令分別啟用、關(guān)閉、設(shè)定CH451的任何一個(gè)功能。CH451的串行接口是由硬件實(shí)現(xiàn)的,單片機(jī)可以頻繁地通過(guò)串行接口進(jìn)行高速操作,而絕不會(huì)降低CH451的工作效率。4操作命令4.1空操作:OOOOxxxxxxxxb空操作命令不對(duì)CH451產(chǎn)生任何影響。該命令可以在多個(gè)CH451級(jí)聯(lián)的應(yīng)用中,透過(guò)前級(jí)CH451向后級(jí)CH451發(fā)送操作命令而不影響前級(jí)的狀態(tài)。例如,要將操作命令001000000001B發(fā)送給兩級(jí)級(jí)聯(lián)電路中的后級(jí)CH451(后級(jí)CH451的DIN連接前級(jí)CH451的DOUT),只要在該命令后添加空操作命令000000000000B再發(fā)送,簡(jiǎn)化描述是1"0"0"0"0"0"0”0”0”「0”0”0"0"0"0"0"0"0"0"0"0"0”0”L那么,該操作命令將經(jīng)過(guò)前級(jí)CH451到達(dá)后級(jí)CH451,而空操作命令留給了前級(jí)CH451。另外,為了在不影響CH451的前提下變化DCLK以清除看門(mén)狗計(jì)時(shí),也可以發(fā)送空操作命令,在非級(jí)聯(lián)的應(yīng)用中,空操作命令可以只發(fā)送有效數(shù)據(jù)B8?B11,簡(jiǎn)化描述是0”0”0”0”1。芯片內(nèi)部復(fù)位:001000000001B內(nèi)部復(fù)位命令將CH451的各個(gè)寄存器和各種參數(shù)復(fù)位到默認(rèn)的狀態(tài)。芯片上電時(shí),CH451總是被復(fù)位,此時(shí)各個(gè)寄存器均復(fù)位為0,各種參數(shù)均恢復(fù)為默認(rèn)值。字?jǐn)?shù)據(jù)左移:001100000000B字?jǐn)?shù)據(jù)左移命令將CH451的字?jǐn)?shù)據(jù)左移一次,即從DIG0向DIG7移動(dòng)一位,然后最右邊的DIG0補(bǔ)進(jìn)數(shù)據(jù)00H。例如,在數(shù)碼管DIG7?DIG0顯示“87654321”時(shí),執(zhí)行字?jǐn)?shù)據(jù)左移命令,顯示變?yōu)椤?654321” (不譯碼方式)或者“76543210”(BCD譯碼方式)。字?jǐn)?shù)據(jù)右移:001100000010B字?jǐn)?shù)據(jù)右移命令將CH451的字?jǐn)?shù)據(jù)右移一次,即從DIG7向DIG0移動(dòng)一位,然后最左邊的DIG7補(bǔ)進(jìn)數(shù)據(jù)00H。例如,在數(shù)碼管DIG7?DIG0顯示“87654321”時(shí),執(zhí)行字?jǐn)?shù)據(jù)右移命令,顯示變?yōu)椤?765432” (不譯碼方式)或者“08765432”(BCD譯碼方式)。字?jǐn)?shù)據(jù)左循環(huán):001100000001B字?jǐn)?shù)據(jù)左循環(huán)命令將CH451的字?jǐn)?shù)據(jù)左循環(huán)一次,即從DIG0向DIG7移動(dòng)一位,然后最右邊的DIG0補(bǔ)進(jìn)原DIG7的數(shù)據(jù)。例如,在數(shù)碼管DIG7?DIG0顯示“87654321”時(shí),執(zhí)行字?jǐn)?shù)據(jù)左循環(huán)命令,顯示變?yōu)椤?6543218”。字?jǐn)?shù)據(jù)右循環(huán):001100000011B字?jǐn)?shù)據(jù)右循環(huán)命令將CH451的字?jǐn)?shù)據(jù)右循環(huán)一次,即從DIG7向DIG0移動(dòng)一位,然后最左邊的DIG7補(bǔ)進(jìn)原DIG0的數(shù)據(jù)。例如,在數(shù)碼管DIG7?DIG0顯示“87654321”時(shí),執(zhí)行字?jǐn)?shù)據(jù)右循環(huán)命令,顯示變?yōu)椤?8765432”。設(shè)定系統(tǒng)參數(shù):010000000[WDOG][KEYB][DISP]B設(shè)定系統(tǒng)參數(shù)命令用于設(shè)定CH451的系統(tǒng)級(jí)參數(shù):看門(mén)狗使能WDOG,鍵盤(pán)掃描使能KEYB,顯示驅(qū)動(dòng)使能DISP。各個(gè)參數(shù)均通過(guò)1位數(shù)據(jù)控制,將相應(yīng)的數(shù)據(jù)位置為1則啟用該功能,否則關(guān)閉該功能(默認(rèn)值)。例如,命令數(shù)據(jù)010000000011B表示關(guān)閉看門(mén)狗的功能、啟用鍵盤(pán)掃描的功能、啟用顯示掃描驅(qū)動(dòng)的功能。設(shè)定顯示參數(shù):0101[MODE][LIMIT][INTENSITY]B設(shè)定顯示參數(shù)命令用于設(shè)定CH451的顯示參數(shù):譯碼方式MODE,掃描極限LIMIT,顯示亮度INTENSITY。譯碼方式MODE通過(guò)1位數(shù)據(jù)控制,置1時(shí)選擇BCD譯碼方式,置0時(shí)選擇不譯碼方式(默認(rèn)值)。掃描極限LIMIT通過(guò)3位數(shù)據(jù)控制,數(shù)據(jù)001B?111B和000B分別設(shè)定掃描極限為1?7和8(默認(rèn)值)。顯示亮度INTENSITY通過(guò)4位數(shù)據(jù)控制,數(shù)據(jù)0001B?1111B和0000B分別設(shè)定顯示驅(qū)動(dòng)占空比為1/16?15/16和16/16(默認(rèn)值)。例如,命令數(shù)據(jù)010101110000B表示選擇不譯碼方式、掃描極限為7、顯示驅(qū)動(dòng)占空比為16/16;命令數(shù)據(jù)010110001010B表示選擇BCD譯碼方式、掃描極限為8、顯示驅(qū)動(dòng)占空比為10/16。設(shè)定閃爍控制:0110[D7S][D6S][D5S][D4S][D3S][D2S][D1S][D0S]B設(shè)定閃爍控制命令用于設(shè)定CH451的閃爍顯示屬性:D7S?D0S分別對(duì)應(yīng)于8個(gè)字驅(qū)動(dòng)DIG7?DIG0。閃爍屬性D7S?D0S分別通過(guò)1位數(shù)據(jù)控制,將相應(yīng)的數(shù)據(jù)位置為1則使能閃爍顯示,否則為正常顯示,不閃爍(默認(rèn)值)。例如,命令數(shù)據(jù)011000100001B表示設(shè)定數(shù)碼管DIG5和DIG0閃爍顯示,其余數(shù)碼管正常顯示,不閃爍。加載字?jǐn)?shù)據(jù):1[DIG_ADDR][DIG_DATA]B加載字?jǐn)?shù)據(jù)命令用于將字?jǐn)?shù)據(jù)DIG_DATA寫(xiě)入DIG_ADDR指定地址的數(shù)據(jù)寄存器中。DIG_ADDR通過(guò)3位數(shù)據(jù)指定數(shù)據(jù)寄存器的地址,數(shù)據(jù)000B?111B分別指定地址0?7,對(duì)應(yīng)于DIG0?DIG7引腳驅(qū)動(dòng)的8個(gè)數(shù)碼管。DIG_DATA是8位的字?jǐn)?shù)據(jù)。例如,命令數(shù)據(jù)100001111001B表示將字?jǐn)?shù)據(jù)79H寫(xiě)入第1個(gè)數(shù)據(jù)寄存器,如果是不譯碼方式,則DIG0引腳驅(qū)動(dòng)的數(shù)碼管將顯示E;命令數(shù)據(jù)110010001000B表示將字?jǐn)?shù)據(jù)88H寫(xiě)入第5個(gè)數(shù)據(jù)寄存器,如果是BCD譯碼方式,則DIG4引腳驅(qū)動(dòng)的數(shù)碼管將顯示8.。讀取按鍵代碼:0111xxxxxxxxB讀取按鍵代碼命令用于獲得CH451最近檢測(cè)到的有效按鍵的按鍵代碼。該命令是唯一的具有數(shù)據(jù)返回的命令,CH451從DOUT引腳輸出按鍵代碼,按鍵代碼總是7位數(shù)據(jù),最高位是狀態(tài)碼,位5?位0是掃描碼。讀取按鍵代碼命令的位數(shù)據(jù)B0?B7可以是任意值,所以單片機(jī)可以將該操作命令縮短為4位數(shù)據(jù)B8?B11。例如,CH451檢測(cè)到有效按鍵并中斷,按鍵代碼是5EH,簡(jiǎn)化描述「「「0"1H"L"H"H"H"H"L"表示先向CH451發(fā)出讀取按鍵代碼命令0111xxxxxxxxB,然后從DOUT獲得按鍵代碼5EH。操作命令位11位10位9位8位7位6位5位4位3位2位1位??詹僮?000XXXXXXXX芯片內(nèi)部復(fù)位001000000001字?jǐn)?shù)據(jù)左移001100000000字?jǐn)?shù)據(jù)右移001100000010字?jǐn)?shù)據(jù)左循環(huán)001100000001字?jǐn)?shù)據(jù)右循環(huán)001100000011設(shè)定系統(tǒng)參數(shù)010000000WDOGKEYBDISP設(shè)定顯K參數(shù)0101MODELIMITINTENSITY設(shè)定閃爍控制0110D7SD6SD5SD4SD3SD2SD1SDOS加載字?jǐn)?shù)據(jù)01000DMLDATA,DIG。對(duì)應(yīng)的字?jǐn)?shù)據(jù)加載字?jǐn)?shù)據(jù)11001DIG-DATA,DIG1對(duì)應(yīng)的字?jǐn)?shù)據(jù)加載字?jǐn)?shù)據(jù)21010DIG_DATA,DIG2對(duì)應(yīng)的字?jǐn)?shù)據(jù)加載字?jǐn)?shù)據(jù)31011DIG_DATA,DIG3對(duì)應(yīng)的字?jǐn)?shù)據(jù)加載字?jǐn)?shù)據(jù)41100DIG.DATA,DIG4對(duì)應(yīng)的字?jǐn)?shù)據(jù)加載字?jǐn)?shù)據(jù)51101DIG_DATA,DIG5對(duì)應(yīng)的字?jǐn)?shù)據(jù)加載字?jǐn)?shù)據(jù)61110DIG_DATA,DIG6對(duì)應(yīng)的字?jǐn)?shù)據(jù)加載字?jǐn)?shù)據(jù)71111DIG_DATA,DIG7對(duì)應(yīng)的字?jǐn)?shù)據(jù)讀取按鍵代碼0111XXXXXXXX5鍵盤(pán)掃描CH451的鍵盤(pán)掃描功能支持8X8矩陣的64鍵鍵盤(pán)。在鍵盤(pán)掃描期間,DIG7?DIG0引腳用于列掃描輸出,SEG7?SEG0引腳都帶有內(nèi)部下拉電阻,用于行掃描輸入;當(dāng)啟用鍵盤(pán)掃描功能后,DOUT引腳的功能由串行接口的數(shù)據(jù)輸出變?yōu)殒I盤(pán)中斷以及數(shù)據(jù)輸出。CH451定期在顯示驅(qū)動(dòng)掃描過(guò)程中插入鍵盤(pán)掃描。在鍵盤(pán)掃描期間,DIG7?DIG0引腳按照DIG0至DIG7的順序依次輸出高電平,其余7個(gè)引腳輸出低電平;SEG7?SEG0引腳的輸出被禁止,當(dāng)沒(méi)有鍵被按下時(shí),SEG7?SEG0都被下拉為低電平;當(dāng)有鍵被按下時(shí),例如連接DIG3與SEG4的鍵被按下,則當(dāng)DIG3輸出高電平時(shí)SEG4檢測(cè)到高電平;為了防止因?yàn)榘存I抖動(dòng)或者外界干擾而產(chǎn)生誤碼,CH451實(shí)行兩次掃描,只有當(dāng)兩次鍵盤(pán)掃描的結(jié)果相同時(shí),按鍵才會(huì)被確認(rèn)有效。如果CH451檢測(cè)到有效的按鍵,則記錄下該按鍵代碼,并通過(guò)DOUT引腳產(chǎn)生低電平有效的鍵盤(pán)中斷,此時(shí)單片機(jī)可以通過(guò)串行接口讀取按鍵代碼;在沒(méi)有檢測(cè)到新的有效按鍵之前,CH451不再產(chǎn)生任何鍵盤(pán)中斷。CH451不支持組合鍵,也就是說(shuō),同一時(shí)刻,不能有兩個(gè)或者更多的鍵被按下;如果多個(gè)鍵同時(shí)按下,那么按鍵代碼較小的按鍵優(yōu)先。CH451所提供的按鍵代碼為7位,位2?位0是列掃描碼,位5?位3是行掃描碼,位6是狀態(tài)碼(鍵按下為1,鍵釋放為0)。例如,連接DIG3與SEG4的鍵被按下,則按鍵代碼是1100011B或者63H,鍵被釋放后,按鍵代碼通常是0100011B或者23H,其中,對(duì)應(yīng)DIG3的列掃描碼為011B,對(duì)應(yīng)SEG4的行掃描碼為100B。單片機(jī)可以在任何時(shí)候讀取按鍵代碼,但一般在CH451檢測(cè)到有效按鍵而產(chǎn)生鍵盤(pán)中斷時(shí)讀取按鍵代碼,此時(shí)按鍵代碼的位6總是1,另外,如果需要了解按鍵何時(shí)釋放,單片機(jī)可以通過(guò)查詢(xún)方式定期讀取按鍵代碼,直到按鍵代碼的位6為0。下表是連接在DIG7?DIG0與SEG7?SEG0之間的鍵被按下時(shí),CH451所提供的按鍵代碼。這些按鍵代碼具有一定的規(guī)律,如果需要鍵被釋放時(shí)的按鍵代碼,則將表中的按鍵代碼的位6置0,也就是將表中的按鍵代碼減去40H。按鍵代碼DIG7DIG6DIG5DIG4DIG3DIG2DIG1DIG0SEG047H46H45H44H43H42H41H40HSEG14FH4EH4DH4CH4BH4AH49H48HSEG257H56H55H54H53H52H51H50HSEG35FH5EH5DH5CH5BH5AH59H58HSEG467H66H65HS4H63H62H61H6QHSEG56FH6EH6DH0CH6BH6AH69H68HSEG677H76H75H74H73H72H71H70HSEG77FH7EH7DH7CH7BH7AH79H78IH2.574HC138芯片簡(jiǎn)介74HC138概述74HC138是一款高速CMOS器件,74HC138引腳兼容低功耗肖特基TTL(LSTTL)系列。74HC138譯碼器可接受3位二進(jìn)制加權(quán)地址輸入(A0,A1和A3),并當(dāng)使能時(shí),提供8個(gè)互斥的低有效輸出(Y0至Y7)°74HC138特有3個(gè)使能輸入端:兩個(gè)低有效(E1和E2)和一個(gè)高有效(E3)。除非E1和E2置低且E3置高,否則74HC138將保持所有輸出為高。利用這種復(fù)合使能特性,僅需4片74HC138芯片和1個(gè)反相器,即可輕松實(shí)現(xiàn)并行擴(kuò)展,組合成為一個(gè)1-32(5線到32線)譯碼器。任選一個(gè)低有效使能輸入端作為數(shù)據(jù)輸入,而把其余的使能輸入端作為選通端,則74HC138亦可充當(dāng)一個(gè)8輸出多路分配器,未使用的使能輸入端必須保持綁定在各自合適的高有效或低有效狀態(tài)。74HC138與74HC238邏輯功能一致,只不過(guò)74HC138為反相輸出。
74HC138特性?多路分配功能?復(fù)合使能輸入,輕松實(shí)現(xiàn)擴(kuò)展兼容JEDEC標(biāo)準(zhǔn)no.7A?存儲(chǔ)器芯片譯碼選擇的理想選擇?低有效互斥輸出ESD保護(hù)oHBMEIA/JESD22-A114-C超過(guò)2000VoMMEIA/JESD22-A115-A超過(guò)200V?溫度范圍o-40?+85°Co-40?+125C74HC13SPlruconTIguFfll^nm[VEI叵改叵E3叵?7[T74HC13SPlruconTIguFfll^nm[VEI叵改叵E3叵?7[TGMD叵始一也71磴弟靠玷而IP1土SC16, gnd3.1.系統(tǒng)硬件設(shè)計(jì)選用LJD-SY-5200單片機(jī)實(shí)驗(yàn)系統(tǒng),主要使用cpu的p0口控制74ch573以及l(fā)ed,74ls138接p1.5,1.6,1.7.ch451的load接p1.2,dinp3.5dclkp3.4doutp3.3.ds1302sclkp1.1I/Op1.0rstp1.4.存儲(chǔ)器24c02sclp1.1,sdap1.0.3.2Lcd液晶下面介紹其工作原理,其中有四個(gè)寄存器AC,GGRAM,DDRAM,GGROM.GGROM:提供8192個(gè)觸發(fā)器選擇屏幕的開(kāi)和關(guān)。Dff=1的時(shí)候就將DDRAM的內(nèi)容顯示在lcd上。DDRAM:實(shí)際上是提供了64*2個(gè)位組的空間,而且可以控制字型。(也就是要輸出的內(nèi)容)GGROM:可提供四組圖象自定義空間,可以將沒(méi)有的字自定義到GGROM,在顯示到lcd上。
10、寫(xiě)資料到馳CODE;RWRSDB7DB6DB3DMLB3DBSDB1UBO1.LD71)6D5[>4D3足LIDO功能:寫(xiě)入資料到內(nèi)部的盅觀JK■出RAM的信CODE: RW RS(DL1RA1{/CGR.AM/II?.^I/CDR.W)DB7DB6UB5 D網(wǎng)LB3DBSDB1UBOTHD71)605D3[)2D]DO3.38段數(shù)碼管下面介紹其工作原理,由于是跟ch451相連,dig0-7實(shí)現(xiàn)的是數(shù)碼管選擇,而seg0-7實(shí)現(xiàn)的各段的點(diǎn)亮。所以控制的核心就是cpu與ch451的控制4系統(tǒng)的軟件設(shè)計(jì)4.1程序設(shè)計(jì)與調(diào)試步驟(1) 選題構(gòu)思,研究實(shí)現(xiàn)功能的方法。(2) 畫(huà)出硬件圖。(3) 編寫(xiě)程序,并保存。(4) 按硬件接線圖接線。(5) 聯(lián)機(jī)并編譯。(6) 檢查并修改語(yǔ)法錯(cuò)誤,并保存。(7) 編譯文件,并運(yùn)行,觀察調(diào)試結(jié)果。(8) 如不能正常運(yùn)行,采用單步運(yùn)行法進(jìn)行調(diào)試,按部就班,直至能夠達(dá)到設(shè)計(jì)要求。(9) 記錄最終的程序,并保存設(shè)計(jì)圖與電路圖。4.2計(jì)數(shù)器初值計(jì)算延時(shí)方法可以有兩種一中是利用MCS-51內(nèi)部定時(shí)器才生溢出中斷來(lái)確定1秒的時(shí)間,另一種是采用軟延時(shí)的方法。定時(shí)器工作時(shí)必須給計(jì)數(shù)器送計(jì)數(shù)器初值,這個(gè)值是送到TH和TL中的。他是以加法記數(shù)的,并能從全1到全0時(shí)自動(dòng)產(chǎn)生溢出中斷請(qǐng)求。因此,我們可以把計(jì)數(shù)器記滿(mǎn)為零所需的計(jì)數(shù)值設(shè)定為C和計(jì)數(shù)初值設(shè)定為T(mén)C可得到如下計(jì)算通式:TC=M-C式中,M數(shù)初值設(shè)定為T(mén)C可得到如下計(jì)算通式:TC=M-C式中,M為計(jì)數(shù)器摸值,該值和計(jì)數(shù)器工作方式有在方式0時(shí)M為213;在方式1時(shí)M的值為216;方式2和3為28「F口山屆占巖BBBBIII~~II―II~~I
QQQQ2EGSX,■O關(guān)。4.2.11秒的方法我們采用在主程序中設(shè)定一個(gè)初值為20的軟件計(jì)數(shù)器和使T0定時(shí)50毫秒.這樣每當(dāng)T0到50毫秒時(shí)CPU就響應(yīng)它的溢出中斷請(qǐng)求,進(jìn)入他的中斷服務(wù)子程序。在中斷服務(wù)子程序中,CPU先使軟件計(jì)數(shù)器減1,然后判斷它是否為零。為零表示1秒已到可以返回到輸出時(shí)間顯示程序。4.3時(shí)間顯示4.3.1寫(xiě)保護(hù)寄存器操作當(dāng)寫(xiě)保護(hù)寄存器的最高位為0時(shí)允許數(shù)據(jù)寫(xiě)入寄存器寫(xiě)保護(hù)寄存器可以通過(guò)命令字節(jié)8E8F來(lái)規(guī)定禁止寫(xiě)入/讀出寫(xiě)保護(hù)位不能在多字節(jié)傳送模式下寫(xiě)入Write_Enable:MOVCommand,#8Eh;命令字節(jié)為8EMOVByteCnt,#1;單字節(jié)傳送模式MOVR0,#XmtDat數(shù)據(jù)地址覆給R0MOVXmtDat,#00h數(shù)據(jù)內(nèi)容為0寫(xiě)入允許ACALLSend_Byte調(diào)用寫(xiě)入數(shù)據(jù)子程序RET返回調(diào)用本子程序處4.3.2時(shí)鐘停止位操作當(dāng)把秒寄存器的第7位時(shí)鐘停止位設(shè)置為0時(shí)起動(dòng)時(shí)鐘開(kāi)始Osc_Enable:MOVCommand,#80h;命令字節(jié)為80MOVByteCnt,#1;單字節(jié)傳送模式MOVR0,#XmtDat數(shù)據(jù)地址覆給R0MOVXmtDat,#00h數(shù)據(jù)內(nèi)容為0振蕩器工作允許ACALLSend_Byte調(diào)用寫(xiě)入數(shù)據(jù)子程序RET返回調(diào)用本子程序處4.3.3.多字節(jié)傳送方式當(dāng)命令字節(jié)為BE或BF時(shí)DS1302工作在多字節(jié)傳送模式8個(gè)時(shí)鐘/日歷寄存器從寄存器0地址開(kāi)始連續(xù)讀寫(xiě)從0位開(kāi)始的數(shù)據(jù)當(dāng)命令字節(jié)為FE或FF時(shí)DS1302工作在多字節(jié)RAM傳送模式31個(gè)RAM寄存器從0地址開(kāi)始連續(xù)讀寫(xiě)從0位開(kāi)始的數(shù)據(jù)例如寫(xiě)入00年6月21日星期三13時(shí)59分59秒程序設(shè)置如下Write_Multiplebyte:MOVCommand,#0BEh;命令字節(jié)為BEhMOVByteCnt,#8;多字節(jié)寫(xiě)入模式此模塊為8個(gè)MOVR0,#XmtDat數(shù)據(jù)地址覆給R0MOVXmtDat,#59h秒單元內(nèi)容為59hMOVXmtDat+1,#59h分單元內(nèi)容為59hMOVXmtDat+2,#13h時(shí)單元內(nèi)容為13hMOVXmtDat+3,#21h日期單元內(nèi)容為21hMOVXmtDat+4,#06h月單元內(nèi)容為06hMOVXmtDat+5,#03h星期單元內(nèi)容為03hMOVXmtDat+6,#0年單元內(nèi)容為00hMOVXmtDat+7,#0寫(xiě)保護(hù)單元內(nèi)容為00hACALLSend_Byte調(diào)用寫(xiě)入數(shù)據(jù)子程序RET返回調(diào)用本子程序處讀出寄存器0-7的內(nèi)容程序設(shè)置如下Read_Multiplebyte:MOVCommand,#0BFh;命令字節(jié)為BFhMOVByteCnt,#8;多字節(jié)讀出模式此模塊為8個(gè)MOVR1,#RcvDat數(shù)據(jù)地址覆給R1ACALLReceive_Byte調(diào)用讀出數(shù)據(jù)子程序RET返回調(diào)用本子程序處5結(jié)論本系統(tǒng)就是充分利用了8051芯片的I/O引腳。系統(tǒng)統(tǒng)采用MSC-51系列單片機(jī)來(lái)設(shè)計(jì)交通燈控制器,實(shí)現(xiàn)了數(shù)碼管上顯示hello,大約2秒之后數(shù)碼管清屏,然后8*8led開(kāi)始顯示交通指示燈,此時(shí)數(shù)碼管上同步顯示到記時(shí)3,2,1。然后轉(zhuǎn)向下一個(gè)指示燈(轉(zhuǎn)向)。完成之后,用鍵盤(pán)鍵入初值,依次在數(shù)碼管上顯示。由于使用的是單片機(jī)作為核心的控制元件,使得電路的可靠性比較高,功能也比較強(qiáng)大,而且可以隨時(shí)的更新系統(tǒng),進(jìn)行不同狀態(tài)的組合。但是在我們?cè)O(shè)計(jì)和調(diào)試的過(guò)程中,也發(fā)現(xiàn)了一些問(wèn)題,譬如紅燈和綠燈的切換還不夠迅速,紅綠燈規(guī)則不效率還不是很高,在數(shù)碼管1秒定時(shí)顯示時(shí)結(jié)果初值獲取不正確,導(dǎo)致顯示的值與意向中得值不同。這需要在實(shí)踐中進(jìn)一步完善。通過(guò)這次單片機(jī)實(shí)驗(yàn)設(shè)計(jì),使我得到了一次用專(zhuān)業(yè)知識(shí)、專(zhuān)業(yè)技能分析和解決問(wèn)題全面系統(tǒng)的鍛煉。使我在單片機(jī)的基本原理、單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)過(guò)程,以及在常用編程設(shè)計(jì)思路技巧(特別是匯編語(yǔ)言)的掌握方面都能向前邁了一大步,為日后成為合格的應(yīng)用型人才打下良好的基礎(chǔ)。附錄:系統(tǒng)總原理圖和程序1、系統(tǒng)總體原理圖TAI斗 ILL11BBBE占3占31“E占SI7,項(xiàng)冬3BBB333 ] 匚二—I-s.”111匚.■--.■1 QJT一■卜~J4―<———,■-.匚—~~■.—i—5~"T— QL~P""——1—^2^iit' L>Hi-42、流程圖按鍵流圖總流程圖1開(kāi)始)************/*******************************************************************************/************/*******************************************************************************/描述:3、程序代碼*通過(guò)8位數(shù)碼管顯示當(dāng)前的時(shí)間包括時(shí)分秒通過(guò)時(shí)間設(shè)置鍵可對(duì)當(dāng)前的時(shí)間進(jìn)*行設(shè)置。共有3個(gè)設(shè)置按鍵按鍵1和按鍵2及按鍵3;按鍵1為選定鍵。按鍵1首次被*按下時(shí)鐘停止走時(shí)并且秒時(shí)間開(kāi)始閃爍,此時(shí)可通過(guò)按鍵2對(duì)秒時(shí)間進(jìn)行設(shè)置,*按鍵2按下一次秒時(shí)間數(shù)值加一。當(dāng)按鍵1第二次被按下時(shí)分時(shí)間被選中并不停*地閃爍,此時(shí)通過(guò)按鍵2可對(duì)分時(shí)間進(jìn)行設(shè)置,按鍵2按下一次分時(shí)間加一。按鍵*第三次被按下時(shí)小時(shí)時(shí)間被選中并且不停的閃爍,此時(shí)通過(guò)按鍵2可對(duì)小時(shí)時(shí)間進(jìn)*行設(shè)置,按鍵2每按下一次小時(shí)時(shí)間加一按鍵1第四次被按下后時(shí)間設(shè)置結(jié)束,時(shí)*鐘從設(shè)定的時(shí)間開(kāi)始走時(shí)。按鍵3為日期和時(shí)間的切換鍵,按鍵3按下一次顯示日*期,再按下一次顯示時(shí)間。使用按鍵3可在日期和時(shí)間之間來(lái)回進(jìn)行切換。 ************************************************************************************【版權(quán)】Copyright(C)微芯科技http://www.bluemcu.comAllRightsReserved**【聲明】此程序僅用于學(xué)習(xí)與參考,引用請(qǐng)注明版權(quán)和作者信息! ********************************************************************************/#include<reg52.h>//#include<stdio.h>#include<absacc.h>#include<intrins.h>/*須主程序定義的參數(shù)*//*如果使用鍵盤(pán)中斷請(qǐng)定義#defineUSE_KEY*//*須主程序定義的參數(shù)*/#defineCH451_RESET 0x0201#defineCH451_LEFTMOV 0x0300#defineCH451_LEFTCYC 0x0301#defineCH451_RIGHTMOV 0x0302#defineCH451_RIGHTCYC 0x0303#defineCH451_SYSOFF 0x0400#defineCH451_SYSON1 0x0401#defineCH451_SYSON2 0x0403#defineCH451_SYSON3 0x0407#defineCH451_DSP 0x0500#defineCH451_BCD 0x0580#defineCH451_TWINKLE 0x0600#defineCH451_DIG0 0x0800#defineCH451_DIG1 0x0900#defineCH451_DIG2 0x0a00/*復(fù)位*//*設(shè)置移動(dòng)方式-作移*//*設(shè)置移動(dòng)方式-左循*//*設(shè)置移動(dòng)方式-右移*//*設(shè)置移動(dòng)方式-右循*//*關(guān)顯示、鍵盤(pán)、看門(mén)狗*//*開(kāi)顯示*//*開(kāi)顯示、鍵盤(pán)*//*開(kāi)顯示、鍵盤(pán)、看門(mén)狗功能*//*設(shè)置默認(rèn)顯示方式*//*設(shè)置BCD譯碼方式*//*設(shè)置閃爍控制*//*數(shù)碼管位0顯示*//*數(shù)碼管位1顯示*//*數(shù)碼管位2顯示*/#defineCH451_DIG30x0b00/*數(shù)碼管位3顯示*/#defineCH451_DIG40x0c00/*數(shù)碼管位4顯示*/#defineCH451_DIG50x0d00/*數(shù)碼管位5顯示*/#defineCH451_DIG60x0e00/*數(shù)碼管位6顯示*/#defineCH451_DIG70x0f00/*數(shù)碼管位7顯示*/#defineuchar■unsignedchar#defineuintunsignedintsbitaa=P2”0;sbitbb=P2”3;sbitSDA=P1”0;sbitSCL=P1”1;sbitP1_4=P1”4;sbitP1_3=P1”3;sbitP1_5=P1”5;/*函數(shù)聲明*/voidiic_wait(void);voidiic_start(void);voidiic_stop(void);voidiic_ack(void);voidiic_no_ack(void);bitiic_wait_ack(void);voidiic_send_byte(uchardemand);uchariic_receive_byte(void);#defineLED8X8R XBYTE[0xFD00]#defineLED8X8G XBYTE[0xFB00]/*iic數(shù)據(jù)傳送位*//*iic時(shí)鐘控制位*//*iic延時(shí)*//*開(kāi)啟iic總線*//*關(guān)閉iic總線 *//*發(fā)送ACK信號(hào)*//*發(fā)送NOACK信號(hào)*//*等待ACK信號(hào)*//*MCU向iic設(shè)備發(fā)送一個(gè)字節(jié)*//*MCU從iic設(shè)備接收一個(gè)字節(jié)*//*紅色LED電亮地址定義*//*綠色LED點(diǎn)亮地址定義*/#defineucharunsignedchar#defineuintunsignedint/*實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳*//*實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳/*實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳*//*實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳*//*實(shí)時(shí)時(shí)鐘復(fù)位線引腳*/sbit T_IO = P1”0;sbit T_RST = P1”4;sbit ch451_din = P3”5;sbit ch451_clk = P3”4;sbit ch451_load = P1”2;sbit ch451_dout = P3”3;sbitACC0=ACC"0;sbitACC7=ACC"7;sbitflag_time=PSW5;ucharucharucharucharucharucharucharucharucharucharucharucharucharcount;M;N;ch451_key;key_flag;g;p;ds_hour;ds_min;ds_sec;ds_date;ds_month;ds_year;unsignedunsigned/*void/*uchar/*void/*uchar/*void/*voiducharucharucharucharucharucharucharucharcharz,x;chary;RTInputByte(uchar);RTOutputByte(void);W1302(uchar,uchar);R1302(uchar);Set1302(uchar*);Get1302(ucharcurtime[]);/*/*輸入IByte*/輸出?1Byte*/設(shè)置時(shí)間*/讀取1302當(dāng)前時(shí)間*/WClock[7]={0x00,0x01,0x02,0x22,0x07,0x06,0x06};SClock[7];code[8]={0x1f,0x3f,0x5f,0x7f,0x9f,0xbf,0xdf,0xff};Code4[8]={0xEF,0xCF,0x80,0x00,0x00,0x80,0xCF,0xEF};Code5[8]={0xFF,0x03,0x01,0x01,0xF1,0xE0,0xF1,0xFB};Code6[8]={0xFB,0xF1,0xE0,0xF1,0x01,0x01,0x03,0xFF};Code7[8]={0xDF,0x8F,0x07,0x8F,0x80,0x80,0xC0,0xFF};DATA;/*/*idatatest_write[104];idatatest_read[104];ucharucharunsignedchark;voiddelayd(void)(uinti;uintj;for(i=0;i<300;i++)for(j=0;j<100;j++);}voiddelayq(void)(uchari;ucharj;for(i=0;i<100;i++)for(j=0;j<100;j++);}/*iic延時(shí)*/voidiic_wait(void)(;;;;;;;;;;;;;;}/*開(kāi)啟iic總線*/voidiic_start(void)(SDA=1;SCL=1;iic_wait();SDA=0;iic_wait();SCL=0;}/*關(guān)閉iic總線*/voidiic_stop(void)(SDA=0;SCL=0;iic_wait();SCL=1;iic_wait();SDA=1;}/*發(fā)送ACK信號(hào)*/voidiic_ack(void)SDA=0;iic_wait();SCL=1;iic_wait();SCL=0;}/*發(fā)送NOACK信號(hào)*/voidiic_no_ack(void)(SDA=1;iic_wait();SCL=1;iic_wait();SCL=0;}/********************************************************************函數(shù)名:iic_wait_ack功 能:等待ACK信號(hào)說(shuō) 明:入口參數(shù):返回值:1-ACK 0-ERROR設(shè) 計(jì):藍(lán)海微芯***********************************************************************/bitiic_wait_ack(void)(ucharerrtime=255;//uinterrtime=1000;SDA=1;iic_wait();SCL=1;iic_wait();while(SDA)(errtime--;if(!errtime)return0;}SCL=0;return1;}/********************************************************************函數(shù)名:iic_send_byte功 能:MCU向iic設(shè)備發(fā)送一個(gè)字節(jié)說(shuō) 明:入口參數(shù):sbyte 待發(fā)送的字節(jié)數(shù)據(jù)返回值:設(shè) 計(jì):藍(lán)海微芯***********************************************************************/voidiic_send_byte(ucharsbyte)(uchari=8;while(i--)(SCL=0;;SDA=(bit)(sbyte&0x80);sbyte<<=1;iic_wait();SCL=1;iic_wait();}SCL=0;}/********************************************************************函數(shù)名:iic_receive_byte功 能:MCU從iic設(shè)備接收一個(gè)字節(jié)說(shuō) 明:入口參數(shù):返回值:ddata接收數(shù)據(jù)設(shè)計(jì):藍(lán)海微芯***********************************************************************/uchariic_receive_byte(void)(uchari=8;ucharddata=0;SDA=1;while(i--)(ddata<<=1;SCL=0;iic_wait();SCL=1;iic_wait();ddata|=SDA;}SCL=0;returnddata;}/********************************************************************函數(shù)名:write_iic_data功 能:向iic設(shè)備寫(xiě)AN個(gè)字節(jié)說(shuō) 明:入口參數(shù):write_data 存放寫(xiě)入字節(jié)的數(shù)組address 指定從address處開(kāi)始寫(xiě)入num 寫(xiě)入的字節(jié)數(shù)返回值:無(wú)設(shè) 計(jì):藍(lán)海微芯***********************************************************************/voidwrite_iic_data(ucharwrite_data[],ucharaddress,ucharnum)(ucharn;iic_start();iic_send_byte(0xa0);iic_wait_ack();iic_send_byte(address);iic_wait_ack();for(n=0;n<num;n++)(iic_send_byte(write_data[n]);iic_wait_ack();}iic_stop();}/********************************************************************函數(shù)名:read_iic_data功 能:從iic設(shè)備讀取N個(gè)字節(jié)說(shuō) 明:入口參數(shù):read_data 存放讀取字節(jié)的數(shù)組address 指定從address處開(kāi)始讀取num 讀取的字節(jié)數(shù)返回值:無(wú)設(shè)計(jì):藍(lán)海微芯***********************************************************************/voidread_iic_data(ucharread_data[],ucharaddress,ucharnum)(ucharn;uchar*pread_data;pread_data=read_data;iic_start();iic_send_byte(0xa0);iic_wait_ack();iic_send_byte(address);iic_wait_ack();iic_start();iic_send_byte(0xa1);iic_wait_ack();for(n=0;n<num;n++)(*pread_data=iic_receive_byte();pread_data++;if(n!=(num-1)) //最后一個(gè)數(shù)據(jù)不應(yīng)答(iic_ack();}}iic_no_ack();iic_stop();}voiddelay(void)(uinti;uintj;for(i=0;i<200;i++);for(j=0;j<500;j++);}voiddelay_10us(void)(uchari;for(i=0;i<20;i++);}/********************************************************************函數(shù)名:RTInputByte()功 能:實(shí)時(shí)時(shí)鐘寫(xiě)入一字節(jié)說(shuō) 明:往DS1302寫(xiě)入1Byte數(shù)據(jù)(內(nèi)部函數(shù))入口參數(shù):d寫(xiě)入的數(shù)據(jù)返回值:無(wú)設(shè)計(jì):藍(lán)海微芯***********************************************************************/voidRTInputByte(uchard)(uchari;ACC=d;for(i=8;i>0;i--)(T_IO=ACC0; /*相當(dāng)于匯編中的RRC*/T_CLK=1;T_CLK=0;ACC=ACC>>1;}}/********************************************************************函數(shù)名:RTOutputByte()功 能:實(shí)時(shí)時(shí)鐘讀取一字節(jié)說(shuō) 明:從DS1302讀取1Byte數(shù)據(jù)(內(nèi)部函數(shù))入口參數(shù):無(wú)返回值:ACC設(shè)計(jì):藍(lán)海微芯***********************************************************************/ucharRTOutputByte(void)(uchari;for(i=8;i>0;i--)(ACC=ACC>>1; /*相當(dāng)于匯編中的RRC*/ACC7=T_IO;T_CLK=1;T_CLK=0;}return(ACC);}/********************************************************************函數(shù)名:W1302()功 能:往DS1302寫(xiě)入數(shù)據(jù)說(shuō) 明:先寫(xiě)地址,后寫(xiě)命令/數(shù)據(jù)(內(nèi)部函數(shù))調(diào) 用:RTInputByte(),RTOutputByte()入口參數(shù):ucAddr:DS1302地址,ucData:要寫(xiě)的數(shù)據(jù)返回值:無(wú)設(shè)計(jì):藍(lán)海微芯***********************************************************************/voidW1302(ucharucAddr,ucharucDa)(T_RST=0;T_CLK=0;T_RST=1;RTInputByte(ucAddr); /*地址,命令*/RTInputByte(ucDa); /*寫(xiě)1Byte數(shù)據(jù)*/T_CLK=1;T_RST=0;}/********************************************************************函數(shù)名:R1302()功 能:讀取DS1302某地址的數(shù)據(jù)說(shuō) 明:先寫(xiě)地址,后讀命令/數(shù)據(jù)(內(nèi)部函數(shù))
調(diào)用:RTInputByte(),RTOutputByte()入口參數(shù):ucAddr:DS1302地址返回值:ucData:讀取的數(shù)據(jù)設(shè)計(jì):藍(lán)海微芯***********************************************************************/ucharR1302(ucharucAddr)(ucharucData;T_RST=0;T_CLK=0;T_RST=1;RTInputByte(ucAddr); /*地址,命令*/ucData=RTOutputByte(); /*讀1Byte數(shù)據(jù)*/T_CLK=1;T_RST=0;return(ucData);}/********************************************************************函數(shù)名:Set1302()功說(shuō)調(diào)能:設(shè)置初始時(shí)間功說(shuō)調(diào)明:先寫(xiě)地址,后讀命令/數(shù)據(jù)(寄存器多字節(jié)方式)用:W1302()入口參數(shù):pClock:設(shè)置時(shí)鐘數(shù)據(jù)地址格式為:秒分時(shí)日月星期年7Byte(BCD碼)1B1B1B1B1B1B1B返回值:無(wú)設(shè)計(jì):藍(lán)海微芯***********************************************************************/voidSet1302(uchar*pClock)(uchari;ucharucAddr=0x80;W1302(0x8e,0x00); /*控制命令,WP=0,寫(xiě)操作?*/for(i=7;i>0;i--)(W1302(ucAddr,*pClock);/*秒分時(shí)日月星期年*/pClock++;ucAddr+=2;}W1302(0x8e,0x80); /*控制命令,WP=1,寫(xiě)保護(hù)?*/}/********************************************************************函數(shù)名:Get1302()功 能:讀取DS1302當(dāng)前時(shí)間說(shuō) 明:調(diào)用:R1302()入口參數(shù):ucCurtime:保存當(dāng)前時(shí)間地址。當(dāng)前時(shí)間格式為:秒分時(shí)日月星期年7Byte(BCD碼)1B1B1B1B1B1B1B返回值:無(wú)設(shè)計(jì):藍(lán)海微芯***********************************************************************/voidGet1302(ucharucCurtime[])(uchari;ucharucAddr=0x81;for(i=0;i<7;i++)(ucCurtime[i]=R1302(ucAddr);/*格式為:秒分時(shí)日月星期年*/ucAddr+=2;}}/********************************************************************函數(shù)名:ch451_bcd()功能:對(duì)從DS1302讀取的時(shí)間值進(jìn)行轉(zhuǎn)化說(shuō) 明:把一字節(jié)的BCD碼格式的時(shí)間值分成兩字節(jié)調(diào) 用:入口參數(shù):ds_bcd返回值:設(shè)計(jì):藍(lán)海微芯***********************************************************************/voidch451_bcd(uchards_bcd)(M=ds_bcd&0xf0;M>>=4;N=ds_bcd&0x0f;}/********************************************************************函數(shù)名:ch451_init()功 能:對(duì)ch451芯片進(jìn)行初始化說(shuō) 明:調(diào) 用:入口參數(shù):返回值:設(shè)計(jì):藍(lán)海微芯***********************************************************************/voidch451_init(void)(ch451_din=0; /*先低后高,選擇4線輸入*/ch451_din=1;
ch451_load=1;ch451_clk=1;_nop_();}/********************************************************************函功說(shuō)數(shù)名:ch451_write()能:把12位的指令或數(shù)據(jù)寫(xiě)入ch451明:12位數(shù)據(jù)或指令的寫(xiě)入順序是低位用:入口參數(shù):command數(shù)名:ch451_write()能:把12位的指令或數(shù)據(jù)寫(xiě)入ch451明:12位數(shù)據(jù)或指令的寫(xiě)入順序是低位用:入口參數(shù):command返回值:設(shè)計(jì):藍(lán)海微芯***********************************************************************/voidch451_write(unsignedintcommand)(unsignedchari;#ifdefUSE_KEYEX1=0;#endifch451_load=0;for(i=0;i<12;i++)(ch451_din=command&1;ch451_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025中國(guó)大唐集團(tuán)限公司重慶分公司所屬石柱發(fā)電公司招聘46人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年江蘇省南通市事業(yè)單位考試招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年四川內(nèi)江市市中區(qū)部分事業(yè)單位招聘21人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上海城建城市運(yùn)營(yíng)(集團(tuán))限公司招聘51人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年廣東省深圳市事業(yè)單位招聘1420人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川自貢市沿灘區(qū)事業(yè)單位招聘工作人員67人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川省瀘州市江陽(yáng)區(qū)事業(yè)單位考試招聘125人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025“才聚齊魯成就未來(lái)”山東南郊集團(tuán)投資限公司招聘2人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 防護(hù)頭盔勞動(dòng)防護(hù)用品管理細(xì)則
- 2024年電子設(shè)備租賃及售后服務(wù)合同范本2篇
- 植物生長(zhǎng)與環(huán)境課程教案
- 歌廳消防安全管理制度
- 獨(dú)立基礎(chǔ)計(jì)算(帶公式)
- 基站電力維護(hù)管理制度
- 《雪地尋蹤》選擇題及答案
- 2023年NPI產(chǎn)品工程師年度總結(jié)及下年工作展望
- 中醫(yī)科工作總結(jié)及計(jì)劃
- 窗簾采購(gòu)?fù)稑?biāo)方案(技術(shù)標(biāo))
- 2023-2024年人教版三年級(jí)上冊(cè)數(shù)學(xué)期末應(yīng)用題專(zhuān)題訓(xùn)練
- 職業(yè)學(xué)校消防安全課件
- 基于多元回歸的計(jì)量經(jīng)濟(jì)學(xué)論文
評(píng)論
0/150
提交評(píng)論