單片機電子萬歷課程設(shè)計方案(2)_第1頁
單片機電子萬歷課程設(shè)計方案(2)_第2頁
單片機電子萬歷課程設(shè)計方案(2)_第3頁
單片機電子萬歷課程設(shè)計方案(2)_第4頁
單片機電子萬歷課程設(shè)計方案(2)_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、4克夬莘城市科技修院 課程設(shè)計報告 課程名稱:單片機課程設(shè)計 設(shè)計題目: 單片機電子萬年歷課程設(shè)計 院系:電氣學(xué)院 設(shè)計組員:茍新興胡誼周青松 學(xué)號:20090023 20090026 20090018 班級:一班 指導(dǎo)教師:蔡學(xué)敬 設(shè)計時間:2018-6-22 目錄 摘要 一、 單片機原理及應(yīng)用簡介 2 二、系統(tǒng)硬件設(shè)計 2 2.1引腳功能及管腳電壓 2 2.1.1 P0 口3 2.1.2 P1 口 3 2.1.3 P2 口 4 2.1.4 P3 口4 2.1.5RST4 2.1.6 ALE/PROG 4 2.1.7 PSEN5 2.1.8EA/VPP5 2.1.9XTAL15 2.2.0X

2、TAL25 三、系統(tǒng)總體方案 5 3.1.1微處理器5 3.1.2 顯示電路 6 四、 硬件電路的總體框圖設(shè)計 8 五、硬件電路原理圖設(shè)計 8 六、 主程序流程圖設(shè)計 10 七、仿真過程11 八、仿真結(jié)果11 附一源程序代碼13 附二參考文獻 36 單片機應(yīng)用技術(shù)飛速發(fā)展,縱觀我們現(xiàn)在生活的各個領(lǐng)域,從導(dǎo)彈的導(dǎo)航 裝置,到飛機上各種儀表的控制,從計算機的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,到工業(yè)自 動化過程的實時控制和數(shù)據(jù)處理,以及我們生活中廣泛使用的各種智能IC卡、 電子寵物等,這些都離不開單片機。單片機是集CPU ,RAM ,ROM ,定時,計數(shù) 和多種接口于一體的微控制器。它體積小,成本低,功能強,廣泛

3、應(yīng)用于智能 產(chǎn)業(yè)和工業(yè)自動化上。而51系列單片機是各單片機中最為典型和最有代表性的 一種。這次畢業(yè)設(shè)計通過對它的學(xué)習(xí),應(yīng)用,從而達到學(xué)習(xí)、設(shè)計、開發(fā)軟、 硬的能力。 本文通過對一個基于單片機的能實現(xiàn)萬年歷功能電子時鐘的設(shè)計,從而達 到學(xué)習(xí)、了解單片機相關(guān)指令在各方面的應(yīng)用。系統(tǒng)由主控制器AT89C52、顯 示電路、按鍵電路、和復(fù)位電路等部分構(gòu)成,能實現(xiàn)時鐘日歷顯示的功能,能 進行時、分、秒的顯示。 關(guān)鍵詞:單片機,萬年歷 一、單片機原理及應(yīng)用簡介 隨著國內(nèi)超大規(guī)模集成電路的出現(xiàn),微處理器及其外圍芯片有了迅速的發(fā) 展。集成技術(shù)的最新發(fā)展之一是將 CPU和外圍芯片,如程序存儲器、數(shù)據(jù)存儲 器、并行

4、、串行I/O 口、定時/計數(shù)器、中斷控制器及其他控制部件集成在一個 芯片之中,制成單片計算機 Si ngle-Chip Microcomputer )。而近年來推出的一 些高檔單片機還包括有許多特殊功能單元,如A/D、D/A轉(zhuǎn)換器、調(diào)制解調(diào) 器、通信控制器、鎖相環(huán)、DMA、浮點運算單元等。因此,只要外加一些擴展 電路及必要的通道接口就可以構(gòu)成各種計算機應(yīng)用系統(tǒng),如工業(yè)控制系統(tǒng)、數(shù) 據(jù)采集系統(tǒng)、自動測試系統(tǒng)、萬年歷電子表等。 二、系統(tǒng)硬件設(shè)計 2.1引腳功能及管腳電壓 AT89C52為8位通用微處理器,采用工業(yè)標 T2/P1 0 r 1 k-J40 J Vcc T2EX?l. 1 c 2 33

5、PO, 0 /ABO Fl. 2 c 3 38 11/AD1 PL. 3 c + 3T 3 P0. 2/AD2 Pl. 4 c 5 36 3 PO. 3/AD3 Pl. 5 c 35 3 P0.4/AD4 Pl E E 34 3 P0. 5/AD5 Pl 7 33 PO.E/UE rtsT E 32 P0. RXD/P3. 0 c 10 31 二 Ea;vpf TXD/P3 1 c 11 30 ALE/PED HT3F1 申 ZM5-t1 :TEXT LCD1 AMFiH.E1+ GND . 圖12電子萬年歷的運行效果 九、課程設(shè)計體會 通過這一周的課程設(shè)計,我學(xué)到了不少的知識。把以前沒有學(xué)好

6、的模擬電 路的知識進行了補充和加強。這使我受益很大。加深了我對于單片機和數(shù)字電 路的認識,相信在以后的學(xué)習(xí)和工作中碰到這些基礎(chǔ)的元器件我會更加得心應(yīng) 手。通過查閱大量的資料,我獲得了以前在課堂上學(xué)不到的東西,我想這對于 以后的畢業(yè)設(shè)計,或者工作也好,都是很有幫助的。我很認真地對待這個過程 中的每一個細節(jié),希望自己能做得更好。希望今后還有這樣的機會,能夠讓我 學(xué)到更多的知識。在此次的數(shù)字鐘設(shè)計過程中,更進一步地熟悉了芯片的結(jié)構(gòu)及 掌握了各芯片的工作原理和其具體的使用方法。 在連接六進制,十進制,六十進制的進位及十二進制的接法中,要求熟悉邏輯 電路及其芯片各引腳的功能,那么在電路出錯時便能準確地找

7、出錯誤所在并及時 糾正了。 在設(shè)計電路中,往往是先仿真后連接實物圖,但有時候仿真和電路連接并不 是完全一致的,因此在實際的電路連接中往往容易遺漏。在設(shè)計電路的連接圖中 出錯的主要原因都是接線和芯片的接觸不良以及接線的錯誤所引起的。 對該設(shè)計的建議: 此次的電子萬年歷設(shè)計重在于仿真和接線 ,雖然能把電路圖接出來,并能正 常顯示,但對于電路本身的原理并不是十分熟悉.總的來說,通過這次的設(shè)計實驗 更進一步地增強了實驗的動手能力。 學(xué)無止境,我們現(xiàn)在所做的一切都還只是一個開始。 附1源程序代碼 /*/ /*不帶字庫的 12864LCD+DS1302+DS18B20,顯示溫度、星期帶按鍵、按鍵提示音的萬

8、年 歷*/ /*目標器件:89C5251內(nèi)部空間不夠) /* 晶振:12MHZ /*編譯環(huán)境:Keil * */ */ */ /* #in clude #defi ne uint un sig ned int #defi ne uchar un sig ned char 包含頭文彳牛 * uchar a,miao,shi,fen,ri,yue,nian,week,flag,key1 n,temp。 /flag用于讀取頭文件中的溫度值,和顯示溫度值 /* #defi ne LCDLCDDisp_ On 0 x3f #defi ne LCDLCDDisp_Off 0 x3e #defi ne LC

9、DCol_Add 0 x40 #defi ne Page_Add 0 xb8 #defi ne Start_Li ne 0 xc0 命令字定義 * /* sbit LCDMcs=P0A4 。 sbit LCDScs=P0A3。 sbit LCDEnable=P0A5 。 sbit LCDDi=P0A7。 sbit LCDRW=P0A6。 */ 左半屏使能,當 LCDMcs=1,左半屏顯示 右半屏使能,當 LCDScs=1,右半屏顯示 使能 數(shù)據(jù)/命令選擇RS) 讀/寫信號 sbit LCRst=P0A2。 sbit LCLight=P0A1。 /復(fù)位腳 /背光腳 sbit DQ =卩3人7。/

10、定義DQ引腳為P3.3 /DS1302 時鐘芯片與 C51 之間的引腳連接定義 sbit IO=P1A1 。 sbit SCLK=P1A0 。 sbit RST=P1A2。 sbit ACC0=ACCA0 。 sbit ACC7=ACCA7 。 /* ACC 累加器 =A ACC.0=E0H ACC.0 就是 ACC 的第 0位。 Acc 可以位尋址。 累加器 ACC 是一個 8 位的存儲單元,是用來放數(shù)據(jù)的。但是,這個存儲單元有其特殊的地 位, 是單片機中一個非常關(guān)鍵的單元,很多運算都要通過ACC 來進行。以后在學(xué)習(xí)指令時, 常用 A 來表示累加器。但有一些地方例外,比如在PUSH 指令中,

11、就必須用 ACC 這樣的 名字。 一般的說法, A 代表了累加器中的內(nèi)容、而 ACC 代表的是累加器的地址。 */ /校時按鍵與 C51 的引腳連接定義 sbit key1=P3A0 。/設(shè)置鍵 sbit key2=P3A1 。/加鍵 sbit key3=P3A2 。/減鍵 sbit buzzer=P3A6 。 /蜂鳴器 char code xnian= * 字模表 * * 固定字符 * /*- 文字 : 年 -*/ /*-宋體12。 此字體下對應(yīng)的點陣為:寬x高=16x16 -*/ 0 x40,0 x20,0 x10,0 x0C,0 xE3,0 x22,0 x22,0 x22,0 xFE,0

12、 x22,0 x22,0 x22,0 x22,0 x02,0 x00,0 x00, 0 x04,0 x04,0 x04,0 x04,0 x07,0 x04,0 x04,0 x04,0 xFF,0 x04,0 x04,0 x04,0 x04,0 x04,0 x04,0 x00, 。 char code xyue= /*- 文字 : 月 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x00,0 x00,0 x00,0 x00,0 x00,0 xFF,0 x11,0 x11,0 x11,0 x11,0 x11,0 xFF,0 x00,0 x00,0 x00

13、,0 x00, 0 x00,0 x40,0 x20,0 x10,0 x0C,0 x03,0 x01,0 x01,0 x01,0 x21,0 x41,0 x3F,0 x00,0 x00,0 x00,0 x00, 。 char code xri= /*- 文字 : 日 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x00,0 x00,0 x00,0 xFE,0 x42,0 x42,0 x42,0 x42,0 x42,0 x42,0 x42,0 xFE,0 x00,0 x00,0 x00,0 x00, 0 x00,0 x00,0 x00,0 x3F,0 x

14、10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x3F,0 x00,0 x00,0 x00,0 x00, 。 char code xxiao= /*- 文字 : 小 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x00,0 x00,0 x00,0 xC0,0 x70,0 x20,0 x00,0 xFF,0 x00,0 x10,0 x20,0 xC0,0 x80,0 x00,0 x00,0 x00, 0 x04,0 x02,0 x01,0 x00,0 x00,0 x40,0 x80,0 x7F,0 x00,0 x00,

15、0 x00,0 x00,0 x01,0 x07,0 x02,0 x00, 。 char code xshi= /*- 文字 : 時 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x00,0 xFC,0 x44,0 x44,0 x44,0 xFC,0 x10,0 x90,0 x10,0 x10,0 x10,0 xFF,0 x10,0 x10,0 x10,0 x00, 0 x00,0 x07,0 x04,0 x04,0 x04,0 x07,0 x00,0 x00,0 x03,0 x40,0 x80,0 x7F,0 x00,0 x00,0 x00,0 x0

16、0, 。 char code xfen2= /*- 文字 : 分 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x80,0 x40,0 x20,0 x98,0 x87,0 x82,0 x80,0 x80,0 x83,0 x84,0 x98,0 x30,0 x60,0 xC0,0 x40,0 x00, 0 x00,0 x80,0 x40,0 x20,0 x10,0 x0F,0 x00,0 x00,0 x20,0 x40,0 x3F,0 x00,0 x00,0 x00,0 x00,0 x00, 。 char code xfen= /*- 文字 : 份 -

17、*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x80,0 x40,0 xE0,0 x98,0 x47,0 xA2,0 x98,0 x87,0 x82,0 x80,0 x87,0 x89,0 xB0,0 x60,0 x20,0 x00, 0 x00,0 x00,0 x7F,0 x00,0 x40,0 x40,0 x20,0 x18,0 x07,0 x00,0 x20,0 x60,0 x3F,0 x00,0 x00,0 x00, 。 char code xzhong= /*- 文字 : 鐘 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =

18、16x16 -*/ 0 x40,0 x30,0 x2C,0 xEB,0 x28,0 x28,0 x00,0 xF8,0 x08,0 x08,0 xFF,0 x08,0 x08,0 xF8,0 x00,0 x00, 0 x01,0 x01,0 x01,0 xFF,0 x41,0 x21,0 x00,0 x01,0 x01,0 x01,0 xFF,0 x01,0 x01,0 x01,0 x00,0 x00, 。 char code xtiao= /*- 文字 : 調(diào) -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x20,0 x21,0 xEE,0 x04

19、,0 x00,0 x00,0 xFF,0 x29,0 xA9,0 xBF,0 xA9,0 xA9,0 x01,0 xFF,0 x00,0 x00, 0 x00,0 x00,0 x1F,0 x88,0 x44,0 x30,0 x0F,0 x00,0 x0F,0 x04,0 x04,0 x4F,0 x80,0 x7F,0 x00,0 x00, 。 char code xzheng= /*- 文字 : 整 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x00,0 x04,0 x74,0 xD4,0 xFF,0 xD4,0 x74,0 x04,0 x10,0

20、 x0C,0 xB7,0 x44,0 xB4,0 x0C,0 x04,0 x00, 0 x00,0 x42,0 x43,0 x7A,0 x43,0 x42,0 x43,0 x7E,0 x4B,0 x4B,0 x4A,0 x4A,0 x42,0 x43,0 x01,0 x00, 。 char code xxing= /*- 文字 : 星 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x00,0 x00,0 x00,0 xBE,0 x2A,0 x2A,0 x2A,0 xEA,0 x2A,0 x2A,0 x2A,0 x2A,0 x3E,0 x00,0 x0

21、0,0 x00, 0 x00,0 x48,0 x46,0 x41,0 x49,0 x49,0 x49,0 x7F,0 x49,0 x49,0 x49,0 x49,0 x49,0 x41,0 x40,0 x00, 。 char code xqi= /*- 文字 : 期 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x00,0 x04,0 xFF,0 x54,0 x54,0 x54,0 xFF,0 x04,0 x00,0 xFE,0 x22,0 x22,0 x22,0 xFE,0 x00,0 x00, 0 x42,0 x22,0 x1B,0 x02,0

22、x02,0 x0A,0 x33,0 x62,0 x18,0 x07,0 x02,0 x22,0 x42,0 x3F,0 x00,0 x00, 。 char code xqi2= /*- 文字 : 氣 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x00,0 x20,0 x10,0 x8C,0 xA7,0 xA4,0 xA4,0 xA4,0 xA4,0 xA4,0 xA4,0 xA4,0 x24,0 x04,0 x04,0 x00, 0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,

23、0 x00,0 x0F,0 x30,0 x40,0 xF0,0 x00, 。 char code xwen= /*- 文字 : 溫 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x10,0 x21,0 x86,0 x70,0 x00,0 x7E,0 x4A,0 x4A,0 x4A,0 x4A,0 x4A,0 x7E,0 x00,0 x00,0 x00,0 x00, 0 x02,0 xFE,0 x01,0 x40,0 x7F,0 x41,0 x41,0 x7F,0 x41,0 x41,0 x7F,0 x41,0 x41,0 x7F,0 x40,0 x0

24、0, 。 char code xdu= /*-文字:C -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x00,0 x02,0 x05,0 xE2,0 x18,0 x04,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 x04,0 x1E,0 x00,0 x00, 0 x00,0 x00,0 x00,0 x07,0 x18,0 x20,0 x40,0 x40,0 x40,0 x40,0 x40,0 x40,0 x20,0 x18,0 x00,0 x00, 。 char code xkuang= /*- 文字 :-*/ /*-

25、 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x00,0 xFE,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 xFE,0 x00,0 x00, 0 x00,0 x3F,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x3F,0 x00,0 x00, 。 char code xmaohao= /*- 文字 : : -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =8x16

26、-*/ 0 x00,0 x00,0 x00,0 xC0,0 xC0,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x30,0 x30,0 x00,0 x00,0 x00, 。 char code xjiahao= /*-文字:-*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x00,0 x00,0 x00,0 x00,0 x00,0 x10,0 x1C,0 xFF,0 x1C,0 x10,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, 0 x00,0 x00,0 x00,0 x00,0 x00,0

27、x00,0 x00,0 xFF,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, 。 char code xjianhao= /*-文字:護/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 xFF,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, 0 x00,0 x00,0 x00,0 x00,0 x00,0 x08,0 x38,0 xFF,0 x38,0 x08,0 x00,0

28、x00,0 x00,0 x00,0 x00,0 x00, 。 char code xmiao= /*- 文字 : 秒 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x12,0 x12,0 xD2,0 xFE,0 x91,0 x11,0 xC0,0 x38,0 x10,0 x00,0 xFF,0 x00,0 x08,0 x10,0 x60,0 x00, 0 x04,0 x03,0 x00,0 xFF,0 x00,0 x83,0 x80,0 x40,0 x40,0 x20,0 x23,0 x10,0 x08,0 x04,0 x03,0 x00, 。 ch

29、ar code xshu= /*- 文字 : 數(shù) -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x10,0 x92,0 x54,0 x38,0 xFF,0 x38,0 x54,0 x52,0 x80,0 xF0,0 x1F,0 x12,0 x10,0 xF0,0 x10,0 x00, 0 x42,0 x42,0 x2A,0 x2E,0 x13,0 x1A,0 x26,0 x02,0 x40,0 x20,0 x13,0 x0C,0 x33,0 x60,0 x20,0 x00, 。 * 大寫數(shù)碼 * /*/ char code ds32= /*-文字:一

30、-這個是個墊頭,為了讓大寫一的顯示碼在ds1位置*/ /*-宋體12。 此字體下對應(yīng)的點陣為:寬 x高=16x16 -*/ 0 x00,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 xC0,0 x80,0 x00, 0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, , /*- 文字 : 一 -*/ /*-宋體12。 此字體下對應(yīng)的點陣為:寬 x高=16

31、x16 -*/ 0 x00,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 xC0,0 x80,0 x00, 0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, , /*- 文字 : 二 -*/ /*-宋體12。 此字體下對應(yīng)的點陣為:寬 x高=16x16 -*/ 0 x00,0 x00,0 x04,0 x04,0 x04,0 x04,0 x04,0 x0

32、4,0 x04,0 x04,0 x04,0 x06,0 x04,0 x00,0 x00,0 x00, 0 x00,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x18,0 x10,0 x00, , /*- 文字 : 三 -*/ /*-宋體12。 此字體下對應(yīng)的點陣為:寬 x高=16x16 -*/ 0 x00,0 x04,0 x84,0 x84,0 x84,0 x84,0 x84,0 x84,0 x84,0 x84,0 x84,0 x84,0 x84,0 x04,0 x00,0 x00, 0 x

33、00,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x00, , /*- 文字 : 四 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x00,0 xFE,0 x02,0 x02,0 x02,0 xFE,0 x02,0 x02,0 xFE,0 x02,0 x02,0 x02,0 x02,0 xFE,0 x00,0 x00, 0 x00,0 x7F,0 x28,0 x24,0 x23,0 x20,0 x20,0 x20,0 x21

34、,0 x22,0 x22,0 x22,0 x22,0 x7F,0 x00,0 x00, , /*- 文字 : 五 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x00,0 x02,0 x82,0 x82,0 x82,0 x82,0 xFE,0 x82,0 x82,0 x82,0 xC2,0 x82,0 x02,0 x00,0 x00,0 x00, 0 x20,0 x20,0 x20,0 x20,0 x20,0 x3F,0 x20,0 x20,0 x20,0 x20,0 x3F,0 x20,0 x20,0 x30,0 x20,0 x00, , /*-

35、文字 : 六 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/ 0 x10,0 x10,0 x10,0 x10,0 x10,0 x91,0 x12,0 x1E,0 x94,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x00, 0 x00,0 x40,0 x20,0 x10,0 x0C,0 x03,0 x01,0 x00,0 x00,0 x01,0 x02,0 x0C,0 x78,0 x30,0 x00,0 x00, , /*- 文字 : 日 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 -*/

36、0 x00,0 x00,0 x00,0 xFE,0 x42,0 x42,0 x42,0 x42,0 x42,0 x42,0 x42,0 xFE,0 x00,0 x00,0 x00,0 x00, 0 x00,0 x00,0 x00,0 x3F,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x3F,0 x00,0 x00,0 x00,0 x00, 。 * 阿拉伯數(shù)碼 * * char code xs16= /*- 文字 : 0 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =8x16 -*/ 0 x00,0 xE0,0 x10,0 x08

37、,0 x08,0 x10,0 xE0,0 x00,0 x00,0 x0F,0 x10,0 x20,0 x20,0 x10,0 x0F,0 x00, , /*- 文字 : 1 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =8x16 -*/ 0 x00,0 x10,0 x10,0 xF8,0 x00,0 x00,0 x00,0 x00,0 x00,0 x20,0 x20,0 x3F,0 x20,0 x20,0 x00,0 x00, , /*- 文字 : 2 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =8x16 -*/ 0 x00,0 x70,0 x08,0

38、 x08,0 x08,0 x88,0 x70,0 x00,0 x00,0 x30,0 x28,0 x24,0 x22,0 x21,0 x30,0 x00, , /*- 文字 : 3 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =8x16 -*/ 0 x00,0 x30,0 x08,0 x88,0 x88,0 x48,0 x30,0 x00,0 x00,0 x18,0 x20,0 x20,0 x20,0 x11,0 x0E,0 x00, , /*- 文字 : 4 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =8x16 -*/ 0 x00,0 x00,0 x

39、C0,0 x20,0 x10,0 xF8,0 x00,0 x00,0 x00,0 x07,0 x04,0 x24,0 x24,0 x3F,0 x24,0 x00, , /*- 文字 : 5 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =8x16 -*/ 0 x00,0 xF8,0 x08,0 x88,0 x88,0 x08,0 x08,0 x00,0 x00,0 x19,0 x21,0 x20,0 x20,0 x11,0 x0E,0 x00, , /*- 文字 : 6 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =8x16 -*/ 0 x00,0 xE0

40、,0 x10,0 x88,0 x88,0 x18,0 x00,0 x00,0 x00,0 x0F,0 x11,0 x20,0 x20,0 x11,0 x0E,0 x00, , /*- 文字 : 7 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =8x16 -*/ 0 x00,0 x38,0 x08,0 x08,0 xC8,0 x38,0 x08,0 x00,0 x00,0 x00,0 x00,0 x3F,0 x00,0 x00,0 x00,0 x00, , /*- 文字 : 8 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =8x16 -*/ 0 x00,0

41、 x70,0 x88,0 x08,0 x08,0 x88,0 x70,0 x00,0 x00,0 x1C,0 x22,0 x21,0 x21,0 x22,0 x1C,0 x00, , /*- 文字 : 9 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =8x16 -*/ 0 x00,0 xE0,0 x10,0 x08,0 x08,0 x10,0 xE0,0 x00,0 x00,0 x00,0 x31,0 x22,0 x22,0 x11,0 x0F,0 x00, 。 * 粗體阿拉伯數(shù)碼 * * 用于顯示時分秒 * char code xsc18= /*- 文字 : 0 -*/

42、/*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =9x16 -*/ 0 x00,0 xE0,0 xF0,0 x18,0 x08,0 x18,0 xF0,0 xE0,0 x00,0 x00,0 x0F,0 x1F,0 x30,0 x20,0 x30,0 x1F, 0 x0F,0 x00, , /*- 文字 : 1 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =9x16 -*/ 0 x00,0 x10,0 x10,0 xF8,0 xF8,0 x00,0 x00,0 x00,0 x00,0 x00,0 x20,0 x20,0 x3F,0 x3F,0 x20,0 x20,

43、0 x00,0 x00, , /*- 文字 : 2 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =9x16 -*/ 0 x00,0 x70,0 x78,0 x08,0 x08,0 x88,0 xF8,0 x70,0 x00,0 x00,0 x30,0 x38,0 x2C,0 x26,0 x23,0 x31, 0 x30,0 x00, , /*- 文字 : 3 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =9x16 -*/ 0 x00,0 x30,0 x38,0 x88,0 x88,0 xC8,0 x78,0 x30,0 x00,0 x00,0 x18,0

44、 x38,0 x20,0 x20,0 x31,0 x1F, 0 x0E,0 x00, , /*- 文字 : 4 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =9x16 -*/ 0 x00,0 x00,0 xC0,0 xE0,0 x30,0 xF8,0 xF8,0 x00,0 x00,0 x00,0 x07,0 x07,0 x24,0 x24,0 x3F,0 x3F, 0 x24,0 x00, , /*- 文字 : 5 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =9x16 -*/ 0 x00,0 xF8,0 xF8,0 x88,0 x88,0 x88,0

45、 x08,0 x08,0 x00,0 x00,0 x19,0 x39,0 x21,0 x20,0 x31,0 x1F, 0 x0E,0 x00, , /*- 文字 : 6 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =9x16 -*/ 0 x00,0 xE0,0 xF0,0 x98,0 x88,0 x98,0 x18,0 x00,0 x00,0 x00,0 x0F,0 x1F,0 x31,0 x20,0 x31,0 x1F, 0 x0E,0 x00, , /*- 文字 : 7 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =9x16 -*/ 0 x00,0

46、 x38,0 x38,0 x08,0 xC8,0 xF8,0 x38,0 x08,0 x00,0 x00,0 x00,0 x00,0 x3F,0 x3F,0 x00,0 x00, 0 x00,0 x00, , /*- 文字 : 8 -*/ /*- 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =9x16 -*/ 0 x00,0 x70,0 xF8,0 x88,0 x08,0 x88,0 xF8,0 x70,0 x00,0 x00,0 x1C,0 x3E,0 x23,0 x21,0 x23,0 x3E, 0 x1C,0 x00, , /*- 文字 : 9 -*/ /*- 宋體 12。 此字體下

47、對應(yīng)的點陣為:寬 x 高 =9x16 -*/ 0 x00,0 xE0,0 xF0,0 x18,0 x08,0 x18,0 xF0,0 xE0,0 x00,0 x00,0 x00,0 x31,0 x33,0 x22,0 x33,0 x1F, 0 x0F,0 x00, 。 * 延時函數(shù) * *功能:在12MHz的晶振條件下調(diào)用本函數(shù)需要24 S,然后每次計數(shù)需16卩s * void DS18_delay(int useconds int s。 for (s=0 。 s。 /*復(fù)位函數(shù) * * 功能:完成單總線的復(fù)位操作。 *復(fù)位時間為480卩,因此延時時間為(480-24/16 = 28.5,取2

48、9卩。 *經(jīng)過70卩之后檢測存在脈沖,因此延時時間為(70-24/16 = 2.875,取3卩。 * unsigned char ow_reset(void unsigned char presence。 / 將 DQ 線拉低 /保持480卩s / DQ 返回高電平 / 等待存在脈沖 / 獲得存在信號 / 等待時間隙結(jié)束 / 返回存在信號, 0 = 器件存在 , 1 = 無器件 DQ = 0 。 DS18_delay(29 。 DQ = 1 。 DS18_delay(3 。 presence = DQ。 DS18_delay(25 。 return(presence。 * 位寫入函數(shù) * *

49、功能:向單總線寫入 1 位值: bitval * void write_bit(char bitval DQ = 0 。 if(bitval=1 DQ =1 。 DS18_delay(5 。 / 將 DQ 拉低開始寫時間隙 / 如果寫 1, DQ 返回高電平 / 在時間隙內(nèi)保持電平值, DQ = 1。/ DS18_delay 函數(shù)每次循環(huán)延時 16 卩,因此 DS18_delay(5 = 104 s /* 字節(jié)寫入函數(shù) * * 功能:向單總線寫入一個字節(jié)值: val */ void ds18write_byte(char val unsigned char i 。 unsigned char

50、temp。 for (i=0 。 i / 寫入字節(jié) , 每次寫入一位 temp = vali 。 temp &= 0 x01 。 write_bit(temp 。 DS18_delay(5 。 /* 位讀取函數(shù) * *功能:從單總線上讀取一位信號,所需延時時間為15 y,因此無法調(diào)用前面定義 * 的 DS18_delay( 函數(shù),而采用一個 for( 循環(huán)來實現(xiàn)延時。 * */ unsigned char i 。 DQ = 0 。 DQ = 1 。 for (i=0 。 i 。 return(DQ 。 unsigned char read_bit(void / 將 DQ 拉低開始讀時間隙 /

51、then return high /延時15 ys / 返回 DQ 線上的電平值 * 字節(jié)讀取函數(shù) * * 功能:從單總線讀取一個字節(jié)的值 * unsigned char DSread_byte(void unsigned char i 。 unsigned char value = 0 。 for (i=0。i / 讀取字節(jié),每次讀取一個字節(jié) if(read_bit( value|=0 x01 。 return(value 。 讀取溫度函數(shù) * * * 功能:如果單總線節(jié)點上只有一個器件則可以直接掉用本函數(shù)。如果節(jié)點上有多個器 * 件,為了避免數(shù)據(jù)沖突,應(yīng)使用 Match ROM 函數(shù)來選中

52、特定器件。 * 注: 本函數(shù)是根據(jù) DS1820 的溫度數(shù)據(jù)格式編寫的,若用于 DS18B20 ,必須根據(jù) * DS18B20 的溫度數(shù)據(jù)格式作適當修改。 * */unsig ned int ReadTemperature(void unsigned char get10 。 unsigned char temp_lsb,temp_msb 。 unsigned int t 。 unsigned char k。 ow_reset(。 ds18write_byte(0 xCC 。 ds18write_byte(0 x44 。 DS18_delay(5 。 ow_reset(。 ds18write_

53、byte(0 xCC 。 ds18write_byte(0 xBE 。 for (k=0 。 kgetk=DSread_byte( 。 / 跳過 ROM / 啟動溫度轉(zhuǎn)換 / 跳過 ROM / 讀暫存器 temp_msb = get1 。 / Sign byte + lsbit temp_lsb = get0 。 / Temp data plus lsb t=temp_msb*256+temp_lsb 。 t=t&0 x0ff0 。 if(t0 xf0 t=(-1*t 。 return t4 。 /* 函數(shù)功能 :延時程序 入口參數(shù) :t 出口參數(shù) : */ void LCDdelay(uns

54、igned int t unsigned int i,j 。 for(i=0 。 i 。 for(j=0 。 j 。 * 狀態(tài)檢查, LCD 是否忙 */ void CheckState( unsigned char dat,DATA 。 /狀態(tài)信息 判斷是否忙) LCDDi=O。 /數(shù)據(jù) 指令選擇,D/I 。/延時 dat=DATA 。 LCDEnable=0 。 dat=0 x80 & dat。/僅當?shù)?位為0時才可操作(判別busy信號 while(!(dat=0 x00 。 /* 函數(shù)功能 :寫命令至 LCD 程序 入口參數(shù) :cmdcode 出口參數(shù) : */ void write_

55、com(unsigned char cmdcode CheckState(。/檢測 LCD 是否忙 LCDDi=0 。 LCDRW=0 。 P2=cmdcode。 LCDdelay(2 。 LCDEnable=1 。 LCDdelay(2 。 LCDEnable=0 。 /* 函數(shù)功能 :寫數(shù)據(jù)到 LCD 程序 入口參數(shù) :LCDDispdata 出口參數(shù) : */ void write_data(unsigned char LCDDispdata CheckState(。 / 檢測 LCD 是否忙 LCDDi=1 。 LCDRW=0 。 P2=LCDDispdata 。 LCDdelay(2

56、 。 LCDEnable=1 。 LCDdelay(2 。 LCDEnable=0 。 /* 函數(shù)功能 :清除 LCD 內(nèi)存程序 入口參數(shù) :pag,col,hzk 出口參數(shù) : */ void Clr_Scr( unsigned char j,k 。 LCDMcs=1。LCDScs=1。我的液晶屏用這樣才能清屏 LCDMcs=O 。 LCDScs=0。 II仿真軟件里proteus里面的屏要這樣才能清屏 write_com(Page_Add+0 。 write_com(LCDCol_Add+0 。 for(k=0。k 控制頁數(shù) 0-7,共 8 頁 write_com(Page_Add+k 。

57、 for(j=0 。 j write_com(LCDCol_Add+j 。 write_data(0 x00??刂屏袛?shù)0-63,共64列,寫點內(nèi)容,列地址自動加 1 LCDMcs=0 。 LCDScs=0 。 指定位置顯示數(shù)字 16*16 程序 /* 函數(shù)功能 入口參數(shù) :pag,col,hzk 出口參數(shù) : */ void hz_LCDDisp16(unsigned char pag,unsigned char col, unsigned char code *hzk unsigned char j=0,i=0 。 for(j=0 。 j write_com(Page_Add+pag+j 。

58、 write_com(LCDCol_Add+col 。 for(i=0。i write_data(hzk16*j+i 。 指定位置顯示數(shù)字 8*16 程序 /* 函數(shù)功能 入口參數(shù) :pag,col,hzk 出口參數(shù) : */ void hz_LCDDisp8(unsigned char pag,unsigned char col, unsigned char code *hzk unsigned char j=0,i=0 。 for(j=0 。 j write_com(Page_Add+pag+j 。 write_com(LCDCol_Add+col 。 for(i=0 。 i write_

59、data(hzk8*j+i 。 /* 函數(shù)功能 :指定位置顯示數(shù)字 9*16 程序 入口參數(shù) :pag,col,hzk 出口參數(shù) : */ void hz_LCDDisp9(unsigned char pag,unsigned char col, unsigned char code *hzk unsigned char j=0,i=0 。 for(j=0 。 jwrite_com(Page_Add+pag+j 。 write_com(LCDCol_Add+col 。 for(i=0 。 i write_data(hzk9*j+i 。 /* 函數(shù)功能 :LCD 初始化程序 入口參數(shù) : 出口參

60、數(shù) : */ void init_lcd( LCDdelay(100 。 LCDMcs=1 。 LCDScs=1 。 LCDdelay(100 。 write_com(LCDLCDDisp_Off 。 write_com(Page_Add+0 。 write_com(Start_Line+0 。 write_com(LCDCol_Add+0 。 write_com(LCDLCDDisp_On 。 /*DS1302 有關(guān)子函數(shù) */ * void write_byte(uchar dat/ 寫一個字節(jié) ACC=dat 。 RST=1。 for(a=8 。 a0。 a- IO=ACC0 。 SCL

溫馨提示

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

評論

0/150

提交評論