AT89C51單片機(jī)課程設(shè)計(jì)說明書
《AT89C51單片機(jī)課程設(shè)計(jì)說明書》由會(huì)員分享,可在線閱讀,更多相關(guān)《AT89C51單片機(jī)課程設(shè)計(jì)說明書(25頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 存檔資料 成績(jī): 華東交通大學(xué)理工學(xué)院 課 程 設(shè) 計(jì) 報(bào) 告 書 所屬課程名稱 單片機(jī)原理與應(yīng)用 題 目 萬年 電子歷 分 院 電 信分院 專業(yè)班級(jí) 2007 級(jí)計(jì)算機(jī)科學(xué)與技術(shù)( 2)班 學(xué) 號(hào) 學(xué)生姓名 指導(dǎo)教師 2010 年 7 月 16 日 第 2 頁 共 25 頁 華東交通大學(xué)理工學(xué)院 課 程 設(shè) 計(jì)( 論 文 )任 務(wù) 書 專 業(yè) 07 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí) ( 2)班 姓名 一、 課程設(shè)計(jì)(論文)題目 二、 課程設(shè)計(jì)(論文)工作:自 2010 年 7 月 5 日起至 2010 年 7 月 16 日止。 三、 課程設(shè)計(jì)(論文)的目的要求和任務(wù)內(nèi)容: 一 .實(shí)驗(yàn)?zāi)康?通過本次
2、課 程設(shè)計(jì)達(dá)到如下目的: 1、熟悉 AT89C51 單片機(jī)與時(shí)鐘芯片 DS1302 的應(yīng)用。 2、熟悉時(shí)鐘時(shí)、分、秒計(jì)時(shí)方法,掌握編程技巧。 3、掌握鍵盤的基本工作原理,鍵的識(shí)別,鍵抖動(dòng)和重鍵問題的解決,鍵盤工作方式和鍵盤程序的編程。 4、掌握七段碼 LED 顯示器的結(jié)構(gòu),七段碼 LED 顯示器的工作方式和顯示程序的編程。 5、掌握串行通信程序的編寫。 二 .設(shè)計(jì)要求 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 3 頁 共 25 頁 利用 AT89C51 單片機(jī) , 時(shí)鐘芯片 DS1302、七段碼 LED 顯示器、按鍵、MAX7219 及常用外圍器件,設(shè)計(jì)一個(gè)具有動(dòng)態(tài) 顯示 功能的電子萬年歷,具體要
3、求 如下: 1、設(shè)計(jì)實(shí)現(xiàn)電子萬年歷的 電路系統(tǒng)構(gòu)成框圖 。 2、 能 動(dòng)態(tài) 顯示年、月、 日、星期、小時(shí)、分鐘、秒 。 3、可用鍵盤進(jìn)行校對(duì)時(shí)間,以及日期時(shí)間的修改。 學(xué)生簽名: _ 2010 年 7 月 16 日 課程設(shè)計(jì)(論文)評(píng)閱意見 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 4 頁 共 25 頁 評(píng)閱人 職稱 2010 年 7 月 16 日 序號(hào) 項(xiàng) 目 等 級(jí) 優(yōu)秀 良好 中等 及格 不及格 1 課程設(shè)計(jì)態(tài)度評(píng)價(jià) 2 出勤情況評(píng)價(jià) 3 任務(wù)難度評(píng)價(jià) 4 工作量飽滿評(píng)價(jià) 5 任務(wù)難度評(píng)價(jià) 6 設(shè)計(jì)中創(chuàng)新性評(píng) 價(jià) 7 論文書寫規(guī)范化評(píng)價(jià) 8 綜合應(yīng)用能力評(píng)價(jià) 綜合評(píng)定等級(jí) 華東交通大學(xué)理工學(xué)
4、院課程設(shè)計(jì)報(bào)告 第 5 頁 共 25 頁 目 錄 第一章 課程設(shè)計(jì)任務(wù)書 .2 第二章 設(shè)計(jì)方案 . .6 第三章 硬件設(shè)計(jì) .7 第四章 軟件設(shè)計(jì) .15 第五章 程序清單 .17 第六章 課程設(shè)計(jì)心得 .24 第七章 參考文獻(xiàn) .25 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 6 頁 共 25 頁 第二章 設(shè)計(jì)方案 按照系統(tǒng)設(shè)計(jì)功能的要求,初步確定系統(tǒng)由主控模塊、時(shí)控模塊、顯示驅(qū)動(dòng)及顯示 模塊和鍵盤接口模塊共 4 個(gè)模塊組成,電路系統(tǒng)構(gòu)成框圖如圖所示。 圖 2.1 電子萬年歷電路系統(tǒng)構(gòu)成框圖 主控芯片使用 51 系列 AT89C51 單片機(jī), 時(shí)鐘芯片使用美國(guó) DALLAS公司推出的一種高性能
5、、低功耗、帶 RAM的實(shí)時(shí)時(shí)鐘 DS1302。采用 DS1302作為計(jì)時(shí)芯片,可以做到計(jì)時(shí)準(zhǔn)確。更重要的是, DS1302 可以在很小電流的后備電源( 2.5 5.5V 電源,再 2.5V 時(shí)耗電小于 300nA),而且 DS1302 可以編程選擇多種充電電流來隊(duì)后備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電。 顯示驅(qū)動(dòng)采用 MAX7219, MAX7219 是微處理器和共陰極八段八位 LED 數(shù)碼管顯示、圖條 /柱圖顯示或 64 點(diǎn)陣顯示接口的小型串行輸入 /輸出芯片。片內(nèi)包括 BCD 譯碼器 、多路掃描控制器、字和位驅(qū)動(dòng)器和 8 8 靜態(tài) RAM。外部只需要一個(gè)電阻設(shè)置所有 LED 顯示
6、器字段電流。 MAX7219 和微處理器只需三根導(dǎo)線連接,每位顯示數(shù)字有一個(gè)地址由微處理器寫入。允許使用者選擇每位是 BCD 譯碼或不譯碼。使用者還可選擇停機(jī)模式、數(shù)字亮度控制、從 1 8 選擇掃描位數(shù)和對(duì)所有 LED 顯示器的測(cè)試模式。 顯示模塊采用普通的 共陰極四位一體八段 LED 數(shù)碼管 。 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 7 頁 共 25 頁 第三章 硬件設(shè)計(jì) 3.1 系統(tǒng)硬件概述 3.1.1 主控制器 AT89C51 ATMEL 公司生產(chǎn)的 AT89C51 單片機(jī)采用高性能的 靜態(tài) 80C51 設(shè)計(jì),并 采用先進(jìn)工藝制造,還帶有非易失性 Flash 程序存儲(chǔ)器。它是一種高性能、
7、低功耗的 8 位 CMOS 微處理芯片,市場(chǎng)應(yīng)用最多。其主要特點(diǎn)如下: 8KB Flash ROM,可以擦除 1000 次以上,數(shù)據(jù)保存 10 年。 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 8 頁 共 25 頁 256 字節(jié)內(nèi)部 RAM; 電源控制模式 ; 時(shí)鐘可停止和恢復(fù); 空閑模式 ; 掉電模式 ; 6 個(gè)中斷源 ; 4 個(gè)中斷優(yōu)先級(jí) ; 4 個(gè) 8 位 I/O 口 ; 全雙工增強(qiáng)型 TUAR; 3 個(gè) 16 位定時(shí) /計(jì)數(shù)器: T0、 T1(標(biāo)準(zhǔn) 80C51)和增加的 T2(捕獲和比較) 全靜態(tài)工作方式: 0 24MHZ 3.1.2 時(shí)鐘電路 DS1302 DS1302 的性能特性 : 實(shí)
8、時(shí)時(shí)鐘,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行比較; 用于高速數(shù)據(jù)暫存的 31*8 位 RAM; 最少引腳的串行 I/O; 2.5 5.5V 電壓工作范圍; 2.5V 時(shí)耗小于 300nA; 用于時(shí)鐘或 RAM 數(shù)據(jù)讀 /寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式; 簡(jiǎn)單的三線接口; 可選的慢速充電(至 Vcc1)的能力。 DS1302 在任何數(shù)據(jù)傳送時(shí)必須先初始化,把 RST 腳置為高電平,然后把 8 位地址和命令字裝入移位寄存器,數(shù)據(jù)在 SCLK 的上升沿被訪問到。在開始 8 個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)寫入數(shù)據(jù)。時(shí)鐘脈沖的
9、個(gè)數(shù)在單字節(jié)方式下為 8+8,在多字節(jié)方式下為 8+字節(jié)數(shù),最大可達(dá) 248 字節(jié)數(shù)。如果在傳送過程中置 RST 腳為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且 I/O 引腳變?yōu)槿A東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 9 頁 共 25 頁 高阻態(tài)。上電運(yùn)行時(shí),在 Vcc2.5V 之前, RST 腳必須保持低電平。只有在SCLK 為低電平時(shí),才能將 RST 置為高電平。 DS1302 的控制字如 表 所示。控制字節(jié)的最高有效位(位 7)必須是邏輯 1,如果它為 0,則不能把數(shù)據(jù)寫入到 DS1302 中。位 6 如果為 0, 則表示存取日歷時(shí)鐘數(shù)據(jù);為 1 則表示存取 RAM 數(shù)據(jù)。位 5 1( A4 A0
10、)指示操作單元的地址。最低有效位(位 0)如果為 0,則表示藥進(jìn)行寫操作;為 1 表示進(jìn)行讀操作??刂谱止?jié)總是從最低位開始輸入 /輸出 。 為了提高對(duì) 32 個(gè)地址尋址能力(地址 /命令位 1 5=邏輯 1) ,可以把時(shí)鐘 /日歷或 RAM 寄存器規(guī)定為多字節(jié)( burst)方式。位 6 規(guī)定時(shí)鐘或 RAM,而位 0 規(guī)定讀或?qū)憽T跁r(shí)鐘 /日歷寄存器中的地址 9 31 或 RAM 寄存器中的地址 31 不能存儲(chǔ)數(shù)據(jù)。在多字節(jié)方式下,讀或?qū)憦牡刂?0 的位 0 開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?8 個(gè)寄存 器。但是,當(dāng)以多字節(jié)方式寫 RAM時(shí),為了傳送數(shù)據(jù)不必寫所有的 31 字節(jié),不管是否謝了
11、全部 31 字節(jié),所寫的每一字節(jié)都將傳送至 RAM。 表 3.1 DS1302 控制字 DS1302 共有 12 個(gè)寄存器,其中有 7 個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為 BCD 碼形式。其日歷、時(shí)間寄存器及其控制字如 上 表所示,其中奇數(shù)為讀操作,偶數(shù)為寫操作。 時(shí)鐘暫停:秒寄存器的位 7 定義位時(shí)鐘暫停位。當(dāng)它為 1 時(shí), DS1302停止振蕩,進(jìn)入低功耗的備份方式,通常在對(duì) DS1302 進(jìn)行寫操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序) ,停止振蕩。當(dāng)它為 0 時(shí), 時(shí)鐘將開始啟動(dòng)。 AM-PM/12-24 小時(shí)方式:小時(shí)寄存器的位 7 定義為 12 或 24 小時(shí)方式選擇位。它為高電平時(shí),選擇
12、 12 小時(shí)方式。在此方式下,位 5 為第二個(gè) 10小時(shí)位( 20 23h)。 DS1302 的晶振選用 32768Hz,電容推薦值為 6pF。因?yàn)檎袷庮l率較低,華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 10 頁 共 25 頁 也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。 3.1.3 顯示驅(qū)動(dòng) MAX7219 MAX7219 和單片計(jì)算機(jī)連接有三條引線( DIN、 CLK、 LOAD),采用 16 位數(shù)據(jù)串行移位接收方式 八位 LED 顯示、圖條 /柱圖顯示或 64 點(diǎn)陣顯示 包括 BCD 譯碼器、多路掃描控制器、字和位驅(qū)動(dòng)器和 8 8 靜態(tài)RAM 可選擇停機(jī)模式、數(shù)字亮度控制、從 1 8 選擇掃描位數(shù)和
13、對(duì)所有LED 顯示器的測(cè)試模式 最多能驅(qū)動(dòng) 8 位 LED 顯示器 內(nèi)部 RAM 地址 01 08H 分別對(duì)應(yīng)于 DIG0 DIG7。 掃描界限寄存器(地址 0BH):該寄存器中 D0 D3 位數(shù)據(jù)設(shè)定值為 0 7H,設(shè)定值表示顯示器動(dòng)態(tài)掃描個(gè)數(shù)位 1 8。 停機(jī)寄存器(地址 0CH):當(dāng) D0=0 時(shí), MAX721 處于停機(jī)狀態(tài);當(dāng) D0=1 時(shí),處于正常工作狀態(tài)。 顯示測(cè)試寄存 器(地址 0FH):當(dāng) D0=0 時(shí), MAX7219 按設(shè)定模式正常工作;當(dāng) D0=1 時(shí),處于測(cè)試狀態(tài)。在該狀態(tài)下,不管MAX7219 處于什么模式,全部 LED 將按最大亮度顯示。 亮度寄存器(地址 0AH
14、):亮度可以用硬件和軟件兩種方法調(diào)節(jié)亮度寄存器中的 D0 D3 位可以控制 LED 顯示器的亮度。 MAX7219 通過 D11 D84 位地址位譯碼 ,可尋址 14 個(gè)內(nèi)部寄存器 ,分別是 8 個(gè) LED 顯示位寄存器 ,5 個(gè)控制寄存器和 1 個(gè)空操作寄存器。 LED 顯示寄存器由內(nèi)部 8 8 靜態(tài) RAM 構(gòu)成 ,操作者可直接 對(duì)位寄存器 進(jìn)行個(gè)別尋址 , 以刷新和保持?jǐn)?shù)據(jù) , 只要 V 超過 2 V(一般為 5V)。 控制寄存器包括 : 譯碼模式 , 顯示亮度調(diào)節(jié) , 掃描限制 (選擇掃描位數(shù) ),關(guān)斷和顯示測(cè)試寄存器。 MAX7219 的驅(qū)動(dòng)程序首先必須對(duì) 5 個(gè)控制寄存器初始設(shè)置即
15、初始化 , 各控制寄存器設(shè)置含義如下 :譯碼模式選擇寄存器 (地址 F9H);MAX7219 有兩種譯碼方式 :B 譯碼方式和不譯碼方式。當(dāng)選擇不譯碼時(shí) , 8 個(gè)數(shù)據(jù)為分別一一對(duì)應(yīng) 7 個(gè)段和小數(shù)點(diǎn)位 ;B 譯碼方式是 BCD 譯碼 ,直接送數(shù)據(jù)就華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 11 頁 共 25 頁 可以顯示。實(shí)際應(yīng)用中可以按位設(shè) 置選擇 B 譯碼或是不譯碼方式。 掃描限制寄存器 : 地址 FBH;用于設(shè)置顯示的 LED 個(gè)數(shù) ( 1 8 ) , 比如當(dāng)設(shè)置為 0 xX4 時(shí) ,LED 05 顯示。 亮度調(diào)節(jié)寄存器 : 地址 FAH;共有 16 級(jí)選擇 ,用于 LED 顯示亮度的強(qiáng)弱
16、設(shè)置。 關(guān)斷模式寄存器 :地址 FCH;有兩種模式選擇 :一種是關(guān)斷狀態(tài)模式(D0 0);一種是正常操作狀態(tài) (D0 1),通常選擇正常操作狀態(tài)。 顯示測(cè)試寄存器 :地址 FFH;有兩種選擇用于設(shè)置 LED 是測(cè)試狀態(tài)還是正常操作狀態(tài) :當(dāng)在測(cè)試狀態(tài)時(shí) (D0 1)各 位全應(yīng)亮 ,一般選擇正常操作狀態(tài)( D0 0)。 3.2 主要單元電路的設(shè)計(jì) 3.2.1 顯示電路 顯示部分采用普通的共 陰 數(shù)碼管顯示,采用動(dòng)態(tài)掃描,以減少硬件電 表 3.2 MAX7219 引腳功能 路。 年月日時(shí)分秒星期共需要 17 位數(shù)碼顯示, 考慮到一次掃描 17 位數(shù)碼 管顯示時(shí)會(huì)出現(xiàn)閃爍情況, 故采用動(dòng)態(tài)掃描,可將
17、數(shù)碼管數(shù)量減少至 9 位, 也就是兩個(gè)四位一體八段 LED 顯示數(shù)碼管和一個(gè)一位 LED 數(shù)碼管 設(shè)計(jì)時(shí)數(shù)碼管同時(shí)掃描,顯示時(shí)采用串行口輸出段碼,用 MAX7219 驅(qū)動(dòng)數(shù)碼管 。 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 12 頁 共 25 頁 圖 3.2 MAX7219 主要引腳 3.2.2 鍵盤接口 鍵盤在單片機(jī)系統(tǒng)中是一個(gè)很重要的部件。為了輸入數(shù)據(jù)、查詢和控制系統(tǒng)的工作狀態(tài),都要用到鍵盤,鍵盤是人工干預(yù)計(jì)算機(jī)的主要手段。 鍵盤可分為編碼和非編碼鍵盤兩種。編碼鍵盤采用硬件線線路來實(shí)現(xiàn)鍵盤編碼,每按下一個(gè)鍵,鍵盤能自動(dòng)生成按鍵代碼,鍵數(shù)較多,而且還具有去抖動(dòng)功能。這種鍵盤使用方便,但硬件較復(fù)雜
18、, PC 機(jī)所用的鍵盤就屬于這種。非編碼鍵盤僅提供按鍵開關(guān)工作狀態(tài),其他工作由軟件完成,這種鍵盤鍵數(shù)較少,硬件簡(jiǎn)單,一般在單片機(jī)應(yīng)用系統(tǒng)中廣泛使用。此處主要介紹該類非編碼鍵盤及其與 MCS 51 型單片機(jī)的接口。 3.2.3 時(shí)鐘電路 3.2.3.1 DS1302 工作方式簡(jiǎn)介及 數(shù)據(jù)操作原理 DS1302可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí) , 且具有閏年補(bǔ)償功能 , 工作電壓寬達(dá) 2.55.5V。采用三線接口與 CPU進(jìn)行同步通信 , 并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或 RAM數(shù)據(jù)。 DS1302內(nèi)部有一個(gè) 33x8的用于臨時(shí)性存放數(shù)據(jù)的 RAM寄存器。 DS1302是的
19、DS1202升級(jí)產(chǎn)品 , 與 DS1202兼容 , 但增加了主電源 /后背電源雙電源引腳 , 同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。 DS1302 時(shí)鐘芯片包括實(shí)時(shí)時(shí)鐘 /日歷和 31 字節(jié)的靜態(tài) RAM。它經(jīng)過一個(gè)簡(jiǎn)單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘 /日歷提供秒、分、時(shí)、日、周、月和年等信息。對(duì)于小于 31 天的月和月末的日期自動(dòng)進(jìn)行調(diào)整,還包括閏年校正的功能。時(shí)鐘的運(yùn)行可以采用 24時(shí)或帶 AM/PM 的 12 小時(shí)華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 13 頁 共 25 頁 格式。采用三線接口與 CPU 進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多字節(jié)的時(shí)鐘信號(hào)或 RAM 數(shù)據(jù)。
20、DS1302 有主電源 /后備電源雙電源引腳: Vcc1 在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電磁備份; Vcc1 在雙電池系統(tǒng)中提供主電源。在這種運(yùn)行方式中, Vcc1 里連接到后備電源,以便在沒有主電源的情況下能保存時(shí)間信息以及數(shù)據(jù)。 DS1302 由 Vcc1 或 Vcc2 中較打大者供電。當(dāng) Vcc2( Vcc1+0.2V) 時(shí), Vcc2 給 DS1302 供電;當(dāng) Vcc2 Vcc1時(shí), DS1302 由 Vcc1 供電。 圖 3.5 DS1302 DS1302 在任何數(shù)據(jù)傳送時(shí)必須先初始化,把 RST 腳置為高電平,然后把 8 位地址和命令字裝入移位寄存器,數(shù)據(jù)在
21、 SCLK 的上升沿被訪問到。在開始 8 個(gè)時(shí)鐘周期,把命令字 節(jié)裝入移位寄存器后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)寫入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為 8+8,在多字節(jié)方式下為 8+字節(jié)數(shù),最大可達(dá) 248 字節(jié)數(shù)。如果在傳送過程中置 RST 腳為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且 I/O 引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在 Vcc2.5V 之前, RST 腳必須保持低電平。只有在SCLK 為低電平時(shí),才能將 RST 置為高電平。 DS1302 的控制字如圖所示??刂谱止?jié)的最高有效位(位 7)必須是邏輯 1,如果它為 0,則不能把數(shù)據(jù)寫入到 DS1302 中。位 6 如果為 0,
22、則表示存取日歷時(shí)鐘數(shù)據(jù) ;為 1 則表示存取 RAM 數(shù)據(jù)。位 5 1( A4 A0)指示操作單元的地址。最低有效位(位 0)如果為 0,則表示藥進(jìn)行寫操作;為 1 表示進(jìn)行讀操作??刂谱止?jié)總是從最低位開始輸入 /輸出 。 為了提高對(duì) 32 個(gè)地址尋址能力(地址 /命令位 1 5=邏輯 1) ,可以把時(shí)鐘 /日歷或 RAM 寄存器規(guī)定為多字節(jié)( burst)方式。位 6 規(guī)定時(shí)鐘或 RAM,而位 0 規(guī)定讀或?qū)憽T跁r(shí)鐘 /日歷寄存器中的地址 9 31 或 RAM 寄存器中華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 14 頁 共 25 頁 的地址 31 不能存儲(chǔ)數(shù)據(jù)。在多字節(jié)方式下,讀或?qū)憦牡刂?0
23、的位 0 開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?8 個(gè)寄存器。但是,當(dāng)以多字節(jié)方 式寫 RAM時(shí),為了傳送數(shù)據(jù)不必寫所有的 31 字節(jié),不管是否謝了全部 31 字節(jié),所寫的每一字節(jié)都將傳送至 RAM。 DS1302 共有 12 個(gè)寄存器,其中有 7 個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為 BCD 碼形式。其日歷、時(shí)間寄存器及其控制字如下表所示,其中奇數(shù)為讀操作,偶數(shù)為寫操作。 表 3.3 DS1302 控制字 時(shí)鐘暫停:秒寄存器的位 7 定義位時(shí)鐘暫停位。當(dāng)它為 1 時(shí), DS1302停止振蕩,進(jìn)入低功耗的備份方式,通常在對(duì) DS1302 進(jìn)行寫操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序) ,停 止振蕩。當(dāng)它
24、為 0 時(shí),時(shí)鐘將開始啟動(dòng)。 AM-PM/12-24 小時(shí)方式:小時(shí)寄存器的位 7 定義為 12 或 24 小時(shí)方式選擇位。它為高電平時(shí),選擇 12 小時(shí)方式。在此方式下,位 5 為第二個(gè) 10小時(shí)位( 20 23h)。 DS1302 的晶振選用 32768Hz,電容推薦值為 6pF。因?yàn)檎袷庮l率較低,也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 15 頁 共 25 頁 第四章 軟件設(shè)計(jì) 4.1 程序設(shè)計(jì) 電子萬年歷的程序主要包括 3 個(gè)方面的內(nèi)容:一是 DS1302 從單片機(jī)中讀取數(shù)據(jù)進(jìn)行計(jì)數(shù),二是利用按鍵進(jìn)行時(shí)間的調(diào)整,三是 MAX7219 從單片機(jī)中讀取數(shù)據(jù)
25、驅(qū)動(dòng) LED 數(shù)碼管顯示時(shí)間。 AT89C51 單片機(jī)主要 I/O 口的分配, P2.0-P2.2 分別接 MAX7219 的DIN,LOAD,CLK 三個(gè)功能端, P3 接查詢式按鍵, P1.0-P1.2 分別接 DS1302 的CLK, IO, RST 端。 4.2 程序流程圖 4.2.1 顯示驅(qū)動(dòng)程序流程圖 圖 4. 1 MAX7219 顯示驅(qū)動(dòng)程序流程圖 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 16 頁 共 25 頁 4.2.2 時(shí)間控制流程圖 圖 4.2 DS1302 時(shí)控流程圖 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 17 頁 共 25 頁 第五章 程序清單 #include #inc
26、lude intrins.h #define uint unsigned char #define uint unsigned int uchar xingqi,nian,yue,ri,xiaoshi,fen,miao; uchar nianh,nianl,yueh,yuel,rih,ril,xiaoshih,xiaoshil,fenh,fenl,miaoh,miaol; uchar dd=2;sbit clk=p10; sbit dat=p11;sbit rst=p12; sbitA0=ACC0;sbitA1=ACC1; sbitA2=ACC2;sbitA3=ACC3; sbitA4=ACC
27、4;sbitA5=ACC5; sbitA6=ACC6;sbitA7=ACC7; sbit p30=p30; sbit p31=p31; sbit p32=p32; sbit p33=p33; sbit p34=p34; sbit p35=p35; sbit p36=p36; sbit p37=p37; sbit date=p20; sbit load=p21;sbit clkk=p22; uchar bdata bitmsb; sbit m7=bitmsb7; uchar x,y,c; bit flag=0; bit flagh=1; uchar code tab=0 xff, /任意數(shù) 0
28、x06,/*1*/ /共陰數(shù)碼管 0 x5B,/*2*/ 0 x4F,/*3*/ 0 x66,/*4*/ 0 x6D,/*5*/ 0 x7D,/*6*/ 0 x07,/*7*/ 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 18 頁 共 25 頁 ; uchar code tab2=0 x7e,ox30,ox6d,ox7,ox33, ox5b,ox5f,ox70,ox7f,ox7b; /max7219,09 的字庫(kù) uchar code tab1=ox00,ox01,ox02,ox03,ox04,ox05,ox06,ox07, ox08,ox09,ox010,ox11,ox12,ox13,ox14,o
29、x15,ox16,ox17,ox18,ox19,ox20,ox21,ox22,ox23,ox24,ox25,ox26,ox27,ox28,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; void send(void) uchar count; bitmsb=x; for(count=0;count8;count+) if(m
30、7) clkk=0; date=1; -nop-(); clkk=1; else clkk=0; date=0; nop-(); clkk=1; bitmsb0; i-) dat=A0; clk=1; clk=0; ACC=ACC=1; void OutputByte(void) /從 DS1302 中讀出 i 個(gè)數(shù)據(jù) uchar i; dat=1; for(i=8;i0;i-) ACC=ACC1; A7=dat; clk=1; clk=0; dd=ACC; 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 20 頁 共 25 頁 void Write(uchar addr,uchar num) rst=
31、0; clk=0; rst=1; InputByte(addr); /寫地址 InputByte(num); /寫數(shù)據(jù) clk=1; rst=0; rst=0; clk=0; rst=1; InputByte(); clk=1; rst=0; /初始化設(shè)置時(shí)間, 2008 年 5 月 27 號(hào), 23 時(shí) 58 分 00 秒 void main(void) uchar i; uint xt=0; uchar fen1,fen2,fen3,fen4; p3=oxff; Disable WP(); /非寫保護(hù) WriteSec(ox00); /秒 WriteMin(ox58); /分 WriteH
32、r(ox23); /時(shí) WriteDay(ox27); /日 WriteMn(ox05); /月 WriteYs(ox08); /年 WriteWe(ox02); /星期 /7219 設(shè)置 ready(); for(i=0;i222;i+); for(i=0;i=4; nian=fen3*10+fen2; nianh=nian/10; nianl=nian%10; Read(ox89); /讀月數(shù)據(jù) fen1=dd; fen2=fen1&oxof; fen3=fen1&oxfo; fen34; yue=fen3*10+fen2; yueh=yue/10; yuel=yue%10; Read(o
33、x87); /讀日數(shù)據(jù) fen1=dd; fen2=fen1&oxof; fen3=4; ri=fen3*10+fen2; rih=ri/10; ril=ri%10; Read(ox85); /讀小時(shí)數(shù)據(jù) fen1=dd; fen2=fen1&oxof; fen3=fen1&oxfo; fen3=4; xiaoshi=fen3*10+fen2; xiaoshih=xiaoshi/10; xiaoshil=xiaoshi%10; Read(ox83); /讀分?jǐn)?shù)據(jù) fen1=dd; fen2=fen1&oxof; fen3=fen1&oxfo; 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 22 頁 共
34、 25 頁 fen34; fen=fen3*10+fen2; fenh=fen/10; fenl=fen%10; Read(ox81); /讀秒數(shù)據(jù) fen1=dd; miaoh=miao/10; miaol=miao%10; xingqi+; if(flag) Read(ox89); /讀月數(shù)據(jù) fen1=dd; fen2=fen1&oxof; fen3=fen1&oxf0; fen34; yue=fen3*10+fen2; yue+; if(yue=13) yue=1; WriteMn( tab1yue); while(p32=0); if(p33=0) /日 if(flag) Read(
35、ox87); /讀日數(shù)據(jù) fen1=dd; fen2=fen1&oxof; fen3=fen1&oxf0; fen3=4; ri=fen3*10+fen2; ri+; if(ri=32) ri=1; WriteDay(tab1ri);/ri while(p33=0) ; 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 23 頁 共 25 頁 if(p34=0) /小時(shí) if(flag) Read(ox85); /讀小時(shí)數(shù)據(jù) fen1=dd; fen2=fen1&oxf0; fen3=fen1&oxf0; fen3=4; WriteHr(tab1xiaoshi); while(p34=0); if(p35
36、=0) /分 if(flag) Read(ox83); /讀分?jǐn)?shù)據(jù) fen1=dd; if(p37=0) /調(diào)整標(biāo)志 flag=flag; if(flag) WriteSec(ox80); else WriteSec(ox800); while(p37=0); if(p36=0) /調(diào)整標(biāo)志 flagh=flagh; while(p36=0); 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 24 頁 共 25 頁 第六章 程序設(shè)計(jì)心得 本次實(shí)驗(yàn)主要涉及了單片機(jī) I/O 的使用、七段碼 LED 顯示、按鍵識(shí)別以及雙機(jī)串行通信方面的知識(shí)。 首先設(shè)計(jì)實(shí)現(xiàn)電子萬年歷并不困難,之前有過類似的實(shí)驗(yàn)。實(shí)現(xiàn)串行通信是
37、這次的難點(diǎn),我們?cè)趯?shí)驗(yàn)中首先實(shí)驗(yàn)了單工通信,解決了這方面的困難后在進(jìn)一步進(jìn)行雙工的實(shí)現(xiàn),最終完成了實(shí)驗(yàn)。 21 世紀(jì)是計(jì)算機(jī)全面應(yīng)用的時(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í)。通過這次難得的實(shí)踐機(jī)會(huì)給了我很大收獲,不僅鞏固了原有的知識(shí),并增強(qiáng)了動(dòng)手能力,培養(yǎng)了面對(duì)問題的分析能力以及遇到困難如何應(yīng)對(duì)。 短暫的課程設(shè)計(jì)很快就要過去了,在本次單片機(jī)課程設(shè)計(jì)過程中我有了新的成長(zhǎng)和收獲,通過單片機(jī)課程設(shè)計(jì),我不僅加深了對(duì)單片機(jī)理論的理解,將理論很好地應(yīng)用到實(shí)
38、際當(dāng)中去,而且我還學(xué)會(huì)了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷 地戰(zhàn)勝自己,超越自己。 華東交通大學(xué)理工學(xué)院課程設(shè)計(jì)報(bào)告 第 25 頁 共 25 頁 第七章 參考文獻(xiàn) 1 王新穎 單片機(jī)原理及應(yīng)用 .北京大學(xué)出版社 2008 2 陳忠平 單片機(jī)基礎(chǔ)與最小系統(tǒng)實(shí)踐 .北京航空航天大學(xué)出版社 3 竇振中 單片機(jī)外圍器件實(shí)用手冊(cè)存儲(chǔ)器分冊(cè) .北京航空航天大學(xué)出版 4 沈慶陽,郭庭吉 8051 單片機(jī)實(shí)踐與應(yīng)用 .清華大學(xué)出版社 5 侯玉寶,李成群 基于 Proteus 的 51 系列單片機(jī)設(shè)計(jì)與仿真 電子工業(yè)出版社 6 陳明熒 8051 單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教程 M北京:清華大學(xué)出版 7 郁慧娣微機(jī)系統(tǒng)及其接口技術(shù) M 南京 :東南大學(xué)出版社, 1999 年 8 何立民單片機(jī)高級(jí)教程 M北京 :北京航空航天大學(xué)出版社, 2003年 9 王毓銀數(shù)字電路邏輯設(shè)計(jì) M北京:高等教育出版社 10 李廣弟 . 單片機(jī)原理及應(yīng)用 M 北京航空航天大學(xué)出版社 ,2004 年 . 11 謝嘉奎電子線路 M.高等教育出版社 ,1999 年 .
- 溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案