2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩25頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  存檔資料 成績(jī):  </p><p>  華東交通大學(xué)理工學(xué)院</p><p>  課 程 設(shè) 計(jì) 報(bào) 告 書(shū)</p><p>  所屬課程名稱(chēng) 單片機(jī)原理與應(yīng)用 </p><p>  題 目 萬(wàn)年電子歷

2、 </p><p>  分 院  電信分院  </p><p>  專(zhuān)業(yè)班級(jí) 2007級(jí)計(jì)算機(jī)科學(xué)與技術(shù)(2)班 </p><p>  學(xué)  號(hào)      </p><p>  學(xué)生姓名         </p>&l

3、t;p>  指導(dǎo)教師      </p><p>  2010 年 7 月 16 日 </p><p>  華東交通大學(xué)理工學(xué)院</p><p>  課 程 設(shè) 計(jì)( 論 文 )任 務(wù) 書(shū)</p><p>  專(zhuān) 業(yè) 07計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí)(2)班 姓名 </p>&l

4、t;p>  一、課程設(shè)計(jì)(論文)題目 </p><p>  二、課程設(shè)計(jì)(論文)工作:自 2010 年 7 月 5 日起至 2010 年 7 月 16 日止。</p><p>  三、課程設(shè)計(jì)(論文)的目的要求和任務(wù)內(nèi)容:</p><p><b>  一.實(shí)驗(yàn)?zāi)康?lt;/b></p&g

5、t;<p>  通過(guò)本次課程設(shè)計(jì)達(dá)到如下目的:</p><p>  1、熟悉AT89C51單片機(jī)與時(shí)鐘芯片DS1302的應(yīng)用。</p><p>  2、熟悉時(shí)鐘時(shí)、分、秒計(jì)時(shí)方法,掌握編程技巧。</p><p>  3、掌握鍵盤(pán)的基本工作原理,鍵的識(shí)別,鍵抖動(dòng)和重鍵問(wèn)題的解決,鍵盤(pán)工作方式和鍵盤(pán)程序的編程。</p><p>  

6、4、掌握七段碼LED顯示器的結(jié)構(gòu),七段碼LED顯示器的工作方式和顯示程序的編程。</p><p>  5、掌握串行通信程序的編寫(xiě)。</p><p><b>  二.設(shè)計(jì)要求</b></p><p>  利用AT89C51單片機(jī),時(shí)鐘芯片DS1302、七段碼LED顯示器、按鍵、MAX7219及常用外圍器件,設(shè)計(jì)一個(gè)具有動(dòng)態(tài)顯示功能的電子萬(wàn)年歷,具

7、體要求如下:</p><p>  1、設(shè)計(jì)實(shí)現(xiàn)電子萬(wàn)年歷的電路系統(tǒng)構(gòu)成框圖。</p><p>  2、能動(dòng)態(tài)顯示年、月、日、星期、小時(shí)、分鐘、秒。</p><p>  3、可用鍵盤(pán)進(jìn)行校對(duì)時(shí)間,以及日期時(shí)間的修改。</p><p>  學(xué)生簽名:_____________</p><p>  2010 年7 月16日&

8、lt;/p><p>  課程設(shè)計(jì)(論文)評(píng)閱意見(jiàn)</p><p>  評(píng)閱人  職稱(chēng) </p><p>  2010 年7 月16 日 </p><p><b>  目 錄</b></p><p>  課程設(shè)計(jì)任務(wù)書(shū)..........................

9、.2</p><p>  設(shè)計(jì)方案....... .........................6</p><p>  硬件設(shè)計(jì).................................7</p><p>  軟件設(shè)計(jì)................................15</p><p>  程序清單........

10、........................17</p><p>  課程設(shè)計(jì)心得............................24</p><p>  參考文獻(xiàn)................................25</p><p><b>  第二章 設(shè)計(jì)方案</b></p><p>  按

11、照系統(tǒng)設(shè)計(jì)功能的要求,初步確定系統(tǒng)由主控模塊、時(shí)控模塊、顯示驅(qū)動(dòng)及顯示模塊和鍵盤(pán)接口模塊共4個(gè)模塊組成,電路系統(tǒng)構(gòu)成框圖如圖所示。</p><p>  圖2.1電子萬(wàn)年歷電路系統(tǒng)構(gòu)成框圖</p><p>  主控芯片使用51系列AT89C51單片機(jī),時(shí)鐘芯片使用美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘DS1302。采用DS1302作為計(jì)時(shí)芯片,可以做到計(jì)時(shí)準(zhǔn)確。更重

12、要的是,DS1302可以在很小電流的后備電源(2.5~5.5V電源,再2.5V時(shí)耗電小于300nA),而且DS1302</p><p>  可以編程選擇多種充電電流來(lái)隊(duì)后備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電。顯示驅(qū)動(dòng)采用MAX7219,MAX7219 是微處理器和共陰極八段八位LED 數(shù)碼管顯示、圖條/柱圖顯示或64 點(diǎn)陣顯示接口的小型串行輸入/輸出芯片。片內(nèi)包括BCD 譯碼器、多路掃描控制器、字和位驅(qū)

13、動(dòng)器和8×8 靜態(tài)RAM。外部只需要一個(gè)電阻設(shè)置所有LED 顯示器字段電流。MAX7219 和微處理器只需三根導(dǎo)線連接,每位顯示數(shù)字有一個(gè)地址由微處理器寫(xiě)入。允許使用者選擇每位是BCD 譯碼或不譯碼。使用者還可選擇停機(jī)模式、數(shù)字亮度控制、從1~8 選擇掃描位數(shù)和對(duì)所有LED 顯示器的測(cè)試模式。顯示模塊采用普通的共陰極四位一體八段LED數(shù)碼管。</p><p><b>  第三章 硬件設(shè)計(jì)<

14、;/b></p><p><b>  3.1系統(tǒng)硬件概述</b></p><p>  3.1.1主控制器AT89C51</p><p>  ATMEL公司生產(chǎn)的AT89C51單片機(jī)采用高性能的靜態(tài)80C51設(shè)計(jì),并</p><p>  采用先進(jìn)工藝制造,還帶有非易失性Flash程序存儲(chǔ)器。它是一種高性能、低功耗的8

15、位CMOS微處理芯片,市場(chǎng)應(yīng)用最多。其主要特點(diǎn)如下:</p><p>  8KB Flash ROM,可以擦除1000次以上,數(shù)據(jù)保存10年。</p><p>  256字節(jié)內(nèi)部RAM;</p><p><b>  電源控制模式;</b></p><p><b>  時(shí)鐘可停止和恢復(fù);</b><

16、;/p><p><b>  空閑模式;</b></p><p><b>  掉電模式;</b></p><p><b>  6個(gè)中斷源;</b></p><p><b>  4個(gè)中斷優(yōu)先級(jí);</b></p><p><b> 

17、 4個(gè)8位I/O口;</b></p><p>  全雙工增強(qiáng)型TUAR;</p><p>  3個(gè)16位定時(shí)/計(jì)數(shù)器:T0、T1(標(biāo)準(zhǔn)80C51)和增加的T2(捕獲和比較)</p><p>  全靜態(tài)工作方式:0~24MHZ</p><p>  3.1.2時(shí)鐘電路DS1302</p><p>  DS130

18、2的性能特性:</p><p>  實(shí)時(shí)時(shí)鐘,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行比較;</p><p>  用于高速數(shù)據(jù)暫存的31*8位RAM;</p><p>  最少引腳的串行I/O;</p><p>  2.5~5.5V電壓工作范圍;</p><p>  2.5V時(shí)耗小于300nA;</p&g

19、t;<p>  用于時(shí)鐘或RAM數(shù)據(jù)讀/寫(xiě)的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;</p><p><b>  簡(jiǎn)單的三線接口;</b></p><p>  可選的慢速充電(至Vcc1)的能力。</p><p>  DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCL

20、K的上升沿被訪問(wèn)到。在開(kāi)始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫(xiě)操作時(shí)寫(xiě)入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8,在多字節(jié)方式下為8+字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。如果在傳送過(guò)程中置RST腳為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。</p><p&

21、gt;  DS1302的控制字如表所示。控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1則表示存取RAM數(shù)據(jù)。位5~1(A4~A0)指示操作單元的地址。最低有效位(位0)如果為0,則表示藥進(jìn)行寫(xiě)操作;為1表示進(jìn)行讀操作??刂谱止?jié)總是從最低位開(kāi)始輸入/輸出。</p><p>  為了提高對(duì)32個(gè)地址尋址能力(地址/命令位1~5=邏輯1

22、),可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或RAM,而位0規(guī)定讀或?qū)?。在時(shí)鐘/日歷寄存器中的地址9~31或RAM寄存器中的地址31不能存儲(chǔ)數(shù)據(jù)。在多字節(jié)方式下,讀或?qū)憦牡刂?的位0開(kāi)始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫(xiě)RAM時(shí),為了傳送數(shù)據(jù)不必寫(xiě)所有的31字節(jié),不管是否謝了全部31字節(jié),所寫(xiě)的每一字節(jié)都將傳送至RAM。</p><p>  表3.1

23、 DS1302控制字</p><p>  DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。其日歷、時(shí)間寄存器及其控制字如上表所示,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作。</p><p>  時(shí)鐘暫停:秒寄存器的位7定義位時(shí)鐘暫停位。當(dāng)它為1時(shí),DS1302停止振蕩,進(jìn)入低功耗的備份方式,通常在對(duì)DS1302進(jìn)行寫(xiě)操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序),停止振蕩

24、。當(dāng)它為0時(shí),時(shí)鐘將開(kāi)始啟動(dòng)。</p><p>  AM-PM/12-24小時(shí)方式:小時(shí)寄存器的位7定義為12或24小時(shí)方式選擇位。它為高電平時(shí),選擇12小時(shí)方式。在此方式下,位5為第二個(gè)10小時(shí)位(20~23h)。</p><p>  DS1302的晶振選用32768Hz,電容推薦值為6pF。因?yàn)檎袷庮l率較低,也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。</p><p>

25、  3.1.3顯示驅(qū)動(dòng)MAX7219</p><p>  ● MAX7219 和單片計(jì)算機(jī)連接有三條引線(DIN、CLK、LOAD),采用16 位數(shù)據(jù)串行移位接收方式</p><p>  ● 八位LED 顯示、圖條/柱圖顯示或64 點(diǎn)陣顯示</p><p>  ● 包括BCD 譯碼器、多路掃描控制器、字和位驅(qū)動(dòng)器和8×8 靜態(tài)RAM</p>

26、<p>  ● 可選擇停機(jī)模式、數(shù)字亮度控制、從1~8 選擇掃描位數(shù)和對(duì)所有LED 顯示器的測(cè)試模式</p><p>  ● 最多能驅(qū)動(dòng)8 位LED 顯示器</p><p>  ● 內(nèi)部RAM 地址01~08H 分別對(duì)應(yīng)于DIG0~DIG7。</p><p>  ● 掃描界限寄存器(地址0BH):該寄存器中D0~D3 位數(shù)據(jù)設(shè)定值為0~7H,設(shè)定值表示顯示

27、器動(dòng)態(tài)掃描個(gè)數(shù)位1~8。</p><p>  ● 停機(jī)寄存器(地址0CH):當(dāng)D0=0 時(shí),MAX721 處于停機(jī)狀態(tài);當(dāng)D0=1 時(shí),處于正常工作狀態(tài)。</p><p>  ● 顯示測(cè)試寄存器(地址0FH):當(dāng)D0=0時(shí),MAX7219 按設(shè)定模式正常工作;當(dāng)D0=1 時(shí),處于測(cè)試狀態(tài)。在該狀態(tài)下,不管MAX7219 處于什么模式,全部LED 將按最大亮度顯示。</p>&

28、lt;p>  ● 亮度寄存器(地址0AH):亮度可以用硬件和軟件兩種方法調(diào)節(jié)亮度寄存器中的D0~D3位可以控制LED 顯示器的亮度。</p><p>  MAX7219 通過(guò)D11~D84 位地址位譯碼,可尋址14 個(gè)內(nèi)部寄存器,分別是8 個(gè)LED 顯示位寄存器,5 個(gè)控制寄存器和1 個(gè)空操作寄存器。</p><p>  LED 顯示寄存器由內(nèi)部8 × 8 靜態(tài)RAM 構(gòu)成

29、,操作者可直接對(duì)位寄存器進(jìn)行個(gè)別尋址, 以刷新和保持?jǐn)?shù)據(jù), 只要V +超過(guò)2 V(一般為+ 5V)。 </p><p>  控制寄存器包括: 譯碼模式, 顯示亮度調(diào)節(jié), 掃描限制(選擇掃描位數(shù)),關(guān)斷和顯示測(cè)試寄存器。</p><p>  MAX7219 的驅(qū)動(dòng)程序首先必須對(duì)5 個(gè)控制寄存器初始設(shè)置即初始化, 各控制寄存器設(shè)置含義如下:譯碼模式選擇寄存器(地址= F9H);MAX7219

30、有兩種譯碼方式:B 譯碼方式和不譯碼方式。當(dāng)選擇不譯碼時(shí), 8 個(gè)數(shù)據(jù)為分別一一對(duì)應(yīng)7 個(gè)段和小數(shù)點(diǎn)位;B 譯碼方式是BCD 譯碼,直接送數(shù)據(jù)就可以顯示。實(shí)際應(yīng)用中可以按位設(shè)置選擇B 譯碼或是不譯碼方式。</p><p>  掃描限制寄存器: 地址= FBH;用于設(shè)置顯示的LED 個(gè)數(shù)( 1 ~8 ) , 比如當(dāng)設(shè)置為0xX4 時(shí),LED 0~5 顯示。</p><p>  亮度調(diào)節(jié)寄存器

31、: 地址= FAH;共有16 級(jí)選擇,用于LED 顯示亮度的強(qiáng)弱設(shè)置。</p><p>  關(guān)斷模式寄存器:地址= FCH;有兩種模式選擇:一種是關(guān)斷狀態(tài)模式(D0 = 0);一種是正常操作狀態(tài)(D0 = 1),通常選擇正常操作狀態(tài)。</p><p>  顯示測(cè)試寄存器:地址= FFH;有兩種選擇用于設(shè)置LED 是測(cè)試狀態(tài)還是正常操作狀態(tài):當(dāng)在測(cè)試狀態(tài)時(shí)(D0 = 1)各位全應(yīng)亮,一般選擇

32、正常操作狀態(tài)(D0 = 0)。</p><p>  3.2主要單元電路的設(shè)計(jì)</p><p><b>  3.2.1顯示電路</b></p><p>  顯示部分采用普通的共陰數(shù)碼管顯示,采用動(dòng)態(tài)掃描,以減少硬件電</p><p>  表3.2 MAX7219引腳功能</p><p>  路。年

33、月日時(shí)分秒星期共需要17位數(shù)碼顯示,考慮到一次掃描17位數(shù)碼</p><p>  管顯示時(shí)會(huì)出現(xiàn)閃爍情況,故采用動(dòng)態(tài)掃描,可將數(shù)碼管數(shù)量減少至9位,</p><p>  也就是兩個(gè)四位一體八段LED顯示數(shù)碼管和一個(gè)一位LED數(shù)碼管設(shè)計(jì)時(shí)數(shù)碼管同時(shí)掃描,顯示時(shí)采用串行口輸出段碼,用MAX7219驅(qū)動(dòng)數(shù)碼管。</p><p>  圖3.2 MAX7219主要引腳<

34、;/p><p><b>  3.2.2鍵盤(pán)接口</b></p><p>  鍵盤(pán)在單片機(jī)系統(tǒng)中是一個(gè)很重要的部件。為了輸入數(shù)據(jù)、查詢(xún)和控制系統(tǒng)的工作狀態(tài),都要用到鍵盤(pán),鍵盤(pán)是人工干預(yù)計(jì)算機(jī)的主要手段。</p><p>  鍵盤(pán)可分為編碼和非編碼鍵盤(pán)兩種。編碼鍵盤(pán)采用硬件線線路來(lái)實(shí)現(xiàn)鍵盤(pán)編碼,每按下一個(gè)鍵,鍵盤(pán)能自動(dòng)生成按鍵代碼,鍵數(shù)較多,而且還具有

35、去抖動(dòng)功能。這種鍵盤(pán)使用方便,但硬件較復(fù)雜,PC機(jī)所用的鍵盤(pán)就屬于這種。非編碼鍵盤(pán)僅提供按鍵開(kāi)關(guān)工作狀態(tài),其他工作由軟件完成,這種鍵盤(pán)鍵數(shù)較少,硬件簡(jiǎn)單,一般在單片機(jī)應(yīng)用系統(tǒng)中廣泛使用。此處主要介紹該類(lèi)非編碼鍵盤(pán)及其與MCS—51型單片機(jī)的接口。</p><p><b>  3.2.3時(shí)鐘電路</b></p><p>  3.2.3.1 DS1302工作方式簡(jiǎn)介及數(shù)據(jù)

36、操作原理</p><p>  DS1302可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí), 且具有閏年補(bǔ)償功能, 工作電壓寬達(dá)2.5~5.5V。采用三線接口與CPU進(jìn)行同步通信, 并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)33x8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是的DS1202升級(jí)產(chǎn)品, 與DS1202兼容, 但增加了主電源/后背電源雙電源引腳, 同時(shí)提供了對(duì)后背電

37、源進(jìn)行涓細(xì)電流充電的能力。</p><p>  DS1302時(shí)鐘芯片包括實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)的靜態(tài)RAM。它經(jīng)過(guò)一個(gè)簡(jiǎn)單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘/日歷提供秒、分、時(shí)、日、周、月和年等信息。對(duì)于小于31天的月和月末的日期自動(dòng)進(jìn)行調(diào)整,還包括閏年校正的功能。時(shí)鐘的運(yùn)行可以采用24<小>時(shí)或帶AM/PM的12小時(shí)格式。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多字節(jié)的時(shí)鐘信號(hào)或

38、RAM數(shù)據(jù)。</p><p>  DS1302有主電源/后備電源雙電源引腳:Vcc1在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電磁備份;Vcc1在雙電池系統(tǒng)中提供主電源。在這種運(yùn)行方式中,Vcc1里連接到后備電源,以便在沒(méi)有主電源的情況下能保存時(shí)間信息以及數(shù)據(jù)。DS1302由Vcc1或Vcc2中較打大者供電。當(dāng)Vcc2>(Vcc1+0.2V)時(shí),Vcc2給DS1302供電;當(dāng)Vcc2<Vcc1時(shí),DS1

39、302由Vcc1供電。</p><p>  圖3.5 DS1302</p><p>  DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被訪問(wèn)到。在開(kāi)始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫(xiě)操作時(shí)寫(xiě)入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8,在多字節(jié)方式下為8+字節(jié)數(shù),

40、最大可達(dá)248字節(jié)數(shù)。如果在傳送過(guò)程中置RST腳為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。</p><p>  DS1302的控制字如圖所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1則表示存取RAM數(shù)

41、據(jù)。位5~1(A4~A0)指示操作單元的地址。最低有效位(位0)如果為0,則表示藥進(jìn)行寫(xiě)操作;為1表示進(jìn)行讀操作??刂谱止?jié)總是從最低位開(kāi)始輸入/輸出。</p><p>  為了提高對(duì)32個(gè)地址尋址能力(地址/命令位1~5=邏輯1),可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或RAM,而位0規(guī)定讀或?qū)?。在時(shí)鐘/日歷寄存器中的地址9~31或RAM寄存器中的地址31不能存儲(chǔ)數(shù)據(jù)。在多字節(jié)

42、方式下,讀或?qū)憦牡刂?的位0開(kāi)始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫(xiě)RAM時(shí),為了傳送數(shù)據(jù)不必寫(xiě)所有的31字節(jié),不管是否謝了全部31字節(jié),所寫(xiě)的每一字節(jié)都將傳送至RAM。</p><p>  DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。其日歷、時(shí)間寄存器及其控制字如下表所示,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作。</p><

43、p>  表3.3 DS1302控制字</p><p>  時(shí)鐘暫停:秒寄存器的位7定義位時(shí)鐘暫停位。當(dāng)它為1時(shí),DS1302停止振蕩,進(jìn)入低功耗的備份方式,通常在對(duì)DS1302進(jìn)行寫(xiě)操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序),停止振蕩。當(dāng)它為0時(shí),時(shí)鐘將開(kāi)始啟動(dòng)。</p><p>  AM-PM/12-24小時(shí)方式:小時(shí)寄存器的位7定義為12或24小時(shí)方式選擇位。它為高電平時(shí),選擇12小時(shí)方式。

44、在此方式下,位5為第二個(gè)10小時(shí)位(20~23h)。</p><p>  DS1302的晶振選用32768Hz,電容推薦值為6pF。因?yàn)檎袷庮l率較低,也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。</p><p><b>  第四章 軟件設(shè)計(jì)</b></p><p><b>  4.1程序設(shè)計(jì)</b></p><

45、p>  電子萬(wàn)年歷的程序主要包括3個(gè)方面的內(nèi)容:一是DS1302從單片機(jī)中讀取數(shù)據(jù)進(jìn)行計(jì)數(shù),二是利用按鍵進(jìn)行時(shí)間的調(diào)整,三是MAX7219從單片機(jī)中讀取數(shù)據(jù)驅(qū)動(dòng)LED數(shù)碼管顯示時(shí)間。</p><p>  AT89C51單片機(jī)主要I/O口的分配,P2.0-P2.2分別接MAX7219的DIN,LOAD,CLK三個(gè)功能端,P3接查詢(xún)式按鍵,P1.0-P1.2分別接DS1302的CLK,IO,RST端。</

46、p><p><b>  4.2程序流程圖</b></p><p>  4.2.1顯示驅(qū)動(dòng)程序流程圖</p><p>  圖4. 1 MAX7219顯示驅(qū)動(dòng)程序流程圖</p><p>  4.2.2時(shí)間控制流程圖</p><p>  圖4.2 DS1302時(shí)控流程圖</p><p

47、><b>  第五章 程序清單</b></p><p>  #include <reg5.h></p><p>  #include "intrins.h"</p><p>  #define uint unsigned char</p><p>  #define uint uns

48、igned int</p><p>  uchar xingqi,nian,yue,ri,xiaoshi,fen,miao;</p><p>  uchar nianh,nianl,yueh,yuel,rih,ril,xiaoshih,xiaoshil,fenh,fenl,miaoh,miaol;</p><p>  uchar dd=2;sbit clk=p1^0

49、;</p><p>  sbit dat=p1^1;sbit rst=p1^2;</p><p>  sbitA0=ACC^0;sbitA1=ACC^1;</p><p>  sbitA2=ACC^2;sbitA3=ACC^3; </p><p>  sbitA4=ACC^4;sbitA5=ACC^5; </p><p&g

50、t;  sbitA6=ACC^6;sbitA7=ACC^7;</p><p>  sbit p30=p3^0; </p><p>  sbit p31=p3^1; </p><p>  sbit p32=p3^2;</p><p>  sbit p33=p3^3; </p><p>  sbit p34=p3^4; &

51、lt;/p><p>  sbit p35=p3^5; </p><p>  sbit p36=p3^6; </p><p>  sbit p37=p3^7;</p><p>  sbit date=p2^0;</p><p>  sbit load=p2^1;sbit clkk=p2^2;</p><p

52、>  uchar bdata bitmsb;</p><p>  sbit m7=bitmsb^7;</p><p>  uchar x,y,c;</p><p>  bit flag=0;</p><p>  bit flagh=1;</p><p>  uchar code tab[]={0xff,

53、 //任意數(shù)</p><p>  0x06,/*1*/ //共陰數(shù)碼管</p><p>  0x5B,/*2*/</p><p>  0x4F,/*3*/</p><p>  0x66,/*4*/</p><p>  0x6D,/*5*/</p><p>  0x7D,/*6*/&l

54、t;/p><p>  0x07,/*7*/</p><p><b>  };</b></p><p>  uchar code tab2[]={0x7e,ox30,ox6d,ox7,ox33,</p><p>  ox5b,ox5f,ox70,ox7f,ox7b}; </p><p>  //max

55、7219,0~9的字庫(kù)</p><p>  uchar code tab1[]={ox00,ox01,ox02,ox03,ox04,ox05,ox06,ox07,</p><p>  ox08,ox09,ox010,ox11,ox12,ox13,ox14,ox15,ox16,ox17,ox18,ox19,ox20,ox21,ox22,ox23,ox24,ox25,ox26,ox27,ox2

56、8,ox29,ox30,ox31,ox32,ox33,ox34,ox35,ox36,ox37,ox38,ox39,ox40,ox41,ox42,ox43,ox44,ox45,ox46,ox47,ox48,ox49,ox50,ox51,ox52,ox53,ox54,ox55,ox56,ox57,ox58,ox59,ox60};</p><p>  void send(void)</p><p&g

57、t;  {uchar count;</p><p><b>  bitmsb=x;</b></p><p>  for(count=0;count<8;count++)</p><p><b>  { if(m7)</b></p><p><b>  {clkk=0;</b&g

58、t;</p><p><b>  date=1;</b></p><p><b>  -nop-();</b></p><p><b>  clkk=1;</b></p><p><b>  }</b></p><p>  else

59、 { clkk=0;</p><p><b>  date=0;</b></p><p><b>  nop-(); </b></p><p><b>  clkk=1;</b></p><p><b>  }</b></p><

60、p>  bitmsb<<=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void wr(void)</p><p><b>  {</b></p><p><b> 

61、 load=0;</b></p><p><b>  send();</b></p><p><b>  x=y;</b></p><p><b>  send();</b></p><p><b>  lend=1;</b></p>

62、;<p><b>  }</b></p><p>  void ready(void)</p><p><b>  {</b></p><p>  x=oxfb; //設(shè)置掃描限制</p><p><b>  y=ox07;</b></

63、p><p><b>  wr();</b></p><p>  x=oxf9; //譯碼模式</p><p><b>  y=ox00;</b></p><p><b>  wr();</b></p><p>  x=oxfa;

64、 //亮度調(diào)節(jié)</p><p><b>  y=oxoc;</b></p><p><b>  wr();</b></p><p>  x=oxfc; //關(guān)斷模式</p><p><b>  y=ox01;</b></p>

65、<p><b>  wr();</b></p><p><b>  }</b></p><p>  void InputByte(uchar dd) //寫(xiě)一個(gè)字節(jié)到1302中</p><p><b>  {uchar i;</b></p><p><b&

66、gt;  ACC=dd;</b></p><p>  for(i=8;i>0;i--)</p><p><b>  { </b></p><p><b>  dat=A0;</b></p><p><b>  clk=1;</b></p><

67、;p><b>  clk=0;</b></p><p>  ACC=ACC>>=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void OutputByte(void) //從DS1302中讀

68、出i個(gè)數(shù)據(jù)</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p><b>  dat=1;</b></p><p>  for(i=8;i>0;i--)</p><p>  {ACC=ACC&

69、gt;>1;</p><p><b>  A7=dat;</b></p><p><b>  clk=1;</b></p><p><b>  clk=0;</b></p><p><b>  }</b></p><p>&l

70、t;b>  dd=ACC;</b></p><p><b>  }</b></p><p>  void Write(uchar addr,uchar num)</p><p><b>  {rst=0;</b></p><p><b>  clk=0;</b>

71、;</p><p><b>  rst=1;</b></p><p>  InputByte(addr); //寫(xiě)地址</p><p>  InputByte(num); //寫(xiě)數(shù)據(jù)</p><p><b>  clk=1;</b></p><p>&

72、lt;b>  rst=0;</b></p><p><b>  { rst=0;</b></p><p><b>  clk=0;</b></p><p><b>  rst=1;</b></p><p>  InputByte();</p>&

73、lt;p><b>  clk=1;</b></p><p><b>  rst=0;</b></p><p><b>  }</b></p><p>  //初始化設(shè)置時(shí)間,2008年5月27號(hào),23時(shí)58分00秒</p><p>  void main(void)<

74、;/p><p>  { uchar i;</p><p>  uint xt=0;</p><p>  uchar fen1,fen2,fen3,fen4;</p><p><b>  p3=oxff;</b></p><p>  Disable WP();

75、 //非寫(xiě)保護(hù)</p><p>  WriteSec(ox00); //秒</p><p>  WriteMin(ox58); //分</p><p>  WriteHr(ox23); //時(shí)

76、</p><p>  WriteDay(ox27); //日</p><p>  WriteMn(ox05); //月</p><p>  WriteYs(ox08); //年</p><

77、p>  WriteWe(ox02); //星期</p><p><b>  //7219設(shè)置</b></p><p><b>  ready();</b></p><p>  for(i=0;i<222;i++);</p><p>

78、  for(i=0;i<222;i++);</p><p><b>  while(1)</b></p><p>  { Read(ox8b); //讀星期數(shù)據(jù)</p><p>  xingqi =dd;</p><p>  Read(ox8d); //

79、讀年數(shù)據(jù)</p><p><b>  fen 1=dd;</b></p><p>  fen 2=fen1&oxof;</p><p>  fen3=fen1&oxfo;</p><p><b>  fen3>>=4;</b></p><p>  

80、nian=fen3*10+fen2;</p><p>  nianh=nian/10;</p><p>  nianl=nian%10;</p><p>  Read(ox89); //讀月數(shù)據(jù)</p><p><b>  fen1=dd;</b></p><p>  

81、fen2=fen1&oxof;</p><p>  fen3=fen1&oxfo;</p><p><b>  fen3>>4;</b></p><p>  yue=fen3*10+fen2;</p><p>  yueh=yue/10;</p><p>  yuel=

82、yue%10;</p><p>  Read(ox87); //讀日數(shù)據(jù)</p><p><b>  fen1=dd;</b></p><p>  fen2=fen1&oxof;</p><p><b>  fen3>>=4;</b></p>

83、;<p>  ri=fen3*10+fen2;</p><p>  rih=ri/10;</p><p>  ril=ri%10;</p><p>  Read(ox85); //讀小時(shí)數(shù)據(jù)</p><p><b>  fen1=dd;</b></p><p

84、>  fen2=fen1&oxof;</p><p>  fen3=fen1&oxfo;</p><p><b>  fen3>>=4;</b></p><p>  xiaoshi=fen3*10+fen2;</p><p>  xiaoshih=xiaoshi/10;</p>

85、;<p>  xiaoshil=xiaoshi%10;</p><p>  Read(ox83); //讀分?jǐn)?shù)據(jù)</p><p><b>  fen1=dd;</b></p><p>  fen2=fen1&oxof;</p><p>  fen3=fen1&

86、;oxfo;</p><p><b>  fen3>>4;</b></p><p>  fen=fen3*10+fen2;</p><p>  fenh=fen/10;</p><p>  fenl=fen%10;</p><p>  Read(ox81);

87、 //讀秒數(shù)據(jù)</p><p><b>  fen1=dd;</b></p><p>  miaoh=miao/10;</p><p>  miaol=miao%10;</p><p><b>  xingqi++;</b></p><p><b>  if(fla

88、g)</b></p><p>  { Read(ox89); //讀月數(shù)據(jù)</p><p><b>  fen1=dd;</b></p><p>  fen2=fen1&oxof;</p><p>  fen3=fen1&oxf0;</p><p>

89、<b>  fen3>>4;</b></p><p>  yue=fen3*10+fen2;</p><p><b>  yue++;</b></p><p>  if(yue>=13)</p><p><b>  yue=1;</b></p>

90、<p>  WriteMn(tab1[yue]);</p><p>  while(p32==0);</p><p><b>  }</b></p><p>  if(p33==0) //日</p><p><b>  if(flag)</b></

91、p><p>  {Read(ox87); //讀日數(shù)據(jù)</p><p><b>  fen1=dd;</b></p><p>  fen2=fen1&oxof;</p><p>  fen3=fen1&oxf0;</p><p><b>

92、  fen3>>=4;</b></p><p>  ri=fen3*10+fen2;</p><p><b>  ri++;</b></p><p>  if(ri>=32)</p><p><b>  ri=1;</b></p><p>  W

93、riteDay(tab1[ri]);//ri</p><p>  while(p33==0) ;</p><p><b>  }</b></p><p>  if(p34==0) //小時(shí)</p><p><b>  if(flag)</b></p><

94、p>  {Read(ox85); //讀小時(shí)數(shù)據(jù)</p><p><b>  fen1=dd;</b></p><p>  fen2=fen1&oxf0;</p><p>  fen3=fen1&oxf0;</p><p><b>  fen3>>=4

95、;</b></p><p>  WriteHr(tab1[xiaoshi]);</p><p>  while(p34==0);</p><p><b>  }</b></p><p>  if(p35==0) //分</p><p>

96、<b>  if(flag)</b></p><p>  {Read(ox83); //讀分?jǐn)?shù)據(jù)</p><p><b>  fen1=dd;</b></p><p><b>  }</b></p><p>  if(p37==0)

97、 //調(diào)整標(biāo)志</p><p>  { flag=~flag;</p><p><b>  if(flag)</b></p><p>  WriteSec(ox80);</p><p><b>  else</b></p><p

98、>  WriteSec(ox800);</p><p>  while(p37==0);</p><p><b>  }</b></p><p>  if(p36==0) //調(diào)整標(biāo)志</p><p>  {flagh=~flagh;</p>&l

99、t;p>  while(p36==0);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  第六

100、章 程序設(shè)計(jì)心得</p><p>  本次實(shí)驗(yàn)主要涉及了單片機(jī)I/O的使用、七段碼LED顯示、按鍵識(shí)別以及雙機(jī)串行通信方面的知識(shí)。</p><p>  首先設(shè)計(jì)實(shí)現(xiàn)電子萬(wàn)年歷并不困難,之前有過(guò)類(lèi)似的實(shí)驗(yàn)。實(shí)現(xiàn)串行通信是這次的難點(diǎn),我們?cè)趯?shí)驗(yàn)中首先實(shí)驗(yàn)了單工通信,解決了這方面的困難后在進(jìn)一步進(jìn)行雙工的實(shí)現(xiàn),最終完成了實(shí)驗(yàn)。</p><p>  21世紀(jì)是計(jì)算機(jī)全面應(yīng)

101、用的時(shí)代,很多人不是在制造計(jì)算機(jī)而是在使用計(jì)算機(jī)。在使用計(jì)算機(jī)的人群中只有從事嵌入式系統(tǒng)應(yīng)用的人才真正地進(jìn)入到計(jì)算機(jī)系統(tǒng)內(nèi)部軟硬件體系中,才能真正領(lǐng)會(huì)計(jì)算機(jī)的智能化本質(zhì)并掌握智能化設(shè)計(jì)的知識(shí)。通過(guò)這次難得的實(shí)踐機(jī)會(huì)給了我很大收獲,不僅鞏固了原有的知識(shí),并增強(qiáng)了動(dòng)手能力,培養(yǎng)了面對(duì)問(wèn)題的分析能力以及遇到困難如何應(yīng)對(duì)。</p><p>  短暫的課程設(shè)計(jì)很快就要過(guò)去了,在本次單片機(jī)課程設(shè)計(jì)過(guò)程中我有了新的成長(zhǎng)和收獲,

102、通過(guò)單片機(jī)課程設(shè)計(jì),我不僅加深了對(duì)單片機(jī)理論的理解,將理論很好地應(yīng)用到實(shí)際當(dāng)中去,而且我還學(xué)會(huì)了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。</p><p><b>  第七章 參考文獻(xiàn)</b></p><p>  [1] 王新穎 單片機(jī)原理及應(yīng)用.北京大學(xué)出版社2008</p><p>  [2] 陳忠平 單片機(jī)基礎(chǔ)與最小系統(tǒng)實(shí)踐

103、.北京航空航天大學(xué)出版社</p><p>  [3] 竇振中 單片機(jī)外圍器件實(shí)用手冊(cè)存儲(chǔ)器分冊(cè).北京航空航天大學(xué)出版</p><p>  [4] 沈慶陽(yáng),郭庭吉 8051單片機(jī)實(shí)踐與應(yīng)用.清華大學(xué)出版社</p><p>  [5] 侯玉寶,李成群 基于Proteus的51系列單片機(jī)設(shè)計(jì)與仿真 電子工業(yè)出版社</p><p>  [6] 陳明熒

104、. 8051單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教程[M].北京:清華大學(xué)出版</p><p>  [7] 郁慧娣.微機(jī)系統(tǒng)及其接口技術(shù)[M].南京:東南大學(xué)出版社,1999年.</p><p>  [8] 何立民.單片機(jī)高級(jí)教程[M].北京:北京航空航天大學(xué)出版社,2003年.</p><p>  [9] 王毓銀.?dāng)?shù)字電路邏輯設(shè)計(jì)[M].北京:高等教育出版社.</p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論