版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、yancheng institute of technology 課程設(shè)計(jì)說(shuō)明書(shū)課程名稱(chēng) 單片機(jī)應(yīng)用設(shè)計(jì)設(shè)計(jì)題目基于單片機(jī)時(shí)鐘設(shè)計(jì)專(zhuān)業(yè)m自動(dòng)化101學(xué)生姓名 凌德健 班級(jí) 學(xué)號(hào)1061417120 完成日期2013、12、11 鹽城工學(xué)院電氣學(xué)院鹽城工學(xué)院電氣學(xué)院課程設(shè)計(jì)任務(wù)書(shū) 姓 名: 凌德健 院 (系):電氣工程學(xué)院 專(zhuān) 業(yè): 自動(dòng)化 班 號(hào):m自動(dòng)化101 任務(wù)起至日期: 2013年12 月1 日至 2013 年 12 月 11 日 課程設(shè)計(jì)題目: 已知技術(shù)參數(shù)和設(shè)已知技術(shù)參數(shù)和設(shè)計(jì)要求: (1)at89c51單片機(jī) (2)ds12887定時(shí)器 (3)ds1232看門(mén)狗 (4)led液晶
2、顯示 (5)市電降壓 (6)altium軟件計(jì)要求: 預(yù)期設(shè)計(jì)效果: 設(shè)計(jì)一個(gè)基于單片機(jī)的電子時(shí)鐘,要求能夠?qū)崿F(xiàn)時(shí)、分、秒。 工作計(jì)劃安排: 同組設(shè)計(jì)者及分工: 成績(jī)?cè)u(píng)定:_ 指導(dǎo)教師簽字: _ _ 年 月 日 第1章 電子時(shí)鐘的工作原理本次設(shè)計(jì)時(shí)鐘電路,使用了at89c51單片機(jī)芯片控制電路,單片機(jī)控制電路簡(jiǎn)單且省去了很多復(fù)雜的線路,使得電路簡(jiǎn)明易懂,用c語(yǔ)言程序來(lái)控制整個(gè)時(shí)鐘的顯示,使得編程變得更容易,這樣通過(guò)五個(gè)模塊:芯片、顯示屏、看門(mén)狗、電源、時(shí)鐘即可滿(mǎn)足設(shè)計(jì)要求。此設(shè)計(jì)原理圖框圖如圖1-1所示,此電路包括以下五個(gè)部分:?jiǎn)纹瑱C(jī)、時(shí)鐘電路、看門(mén)狗、液晶屏、電源模塊、時(shí)鐘振蕩電路。at89
3、c51主控模塊ds12887時(shí)鐘電路時(shí)鐘振蕩模塊ds12887看門(mén)狗led顯示模塊電源模塊圖1-1 主電路設(shè)計(jì)框圖本設(shè)計(jì)采用c語(yǔ)言程序設(shè)計(jì),使單片機(jī)控制數(shù)碼管顯示年、月、日、時(shí)、分、秒,當(dāng)秒計(jì)數(shù)滿(mǎn)60時(shí)就向分進(jìn)位,分計(jì)數(shù)器計(jì)滿(mǎn)60后向時(shí)計(jì)數(shù)器進(jìn)位,小時(shí)計(jì)數(shù)器按“23翻0”規(guī)律計(jì)數(shù)。時(shí)、分、秒的計(jì)數(shù)結(jié)果經(jīng)過(guò)數(shù)據(jù)處理可直接送顯示器顯示。當(dāng)計(jì)時(shí)發(fā)生誤差的時(shí)候可以用校時(shí)電路進(jìn)行校正。設(shè)計(jì)采用的是時(shí)、分、秒顯示,單片機(jī)對(duì)數(shù)據(jù)進(jìn)行處理同時(shí)在led上顯示。第2章 系統(tǒng)硬件電路設(shè)計(jì)及元件2.1 at89c51芯片at89c51 是美國(guó)atmel 公司生產(chǎn)的8 位flash rom 單片機(jī)。其最突出的優(yōu)點(diǎn)是片內(nèi)
4、rom 為flash rom,可擦寫(xiě)1000 次以上,應(yīng)用并不復(fù)雜的通用rom 寫(xiě)入器就能方便的擦寫(xiě),讀取也很方便,價(jià)格低廉,具有片程序rom 二級(jí)保密系統(tǒng)。因此可靈活應(yīng)用于各種控制領(lǐng)域。at89c51 包含以下一些功能部件:(1)一個(gè)8 位cpu ;(2)一個(gè)片內(nèi)振蕩器和時(shí)鐘電路;(3)4kb flash rom ;(4)128b 內(nèi)ram;(5)可尋址64kb 的外rom 和外ram 控制電路;(6)兩個(gè)16 位定時(shí)/計(jì)數(shù)器;(7)21 個(gè)特殊功能寄存器;(8)4 個(gè)8 位并行i/o 口;(9)一個(gè)可編程全雙工串行口;(10)5 個(gè)中斷源,可設(shè)置成2 個(gè)優(yōu)先級(jí)。at89c51 單片機(jī)一般采
5、用雙列直插dip 封裝,共40 個(gè)引腳,圖2-1 為其引腳排列圖。40 個(gè)引腳大致可分為4 類(lèi):電源、時(shí)鐘、控制各i/o 引腳。圖2-1 at89c51引腳圖2.1.1 電源vcc芯片電源,接+5v;gnd接地端。2.1.2 時(shí)鐘xtal1、xtal2晶體振蕩電路反相輸入端和輸出端。2.1.3 控制線控制線共有4 根,其中3 根是復(fù)用線。所謂復(fù)用線是指具有兩種功能,正常使用時(shí)是一種功能,在某種條件下是另一種功能。1、ale/ prog 地址鎖存允許/片內(nèi)eprom 編程脈沖。(1)ale 功能:用來(lái)鎖存p0 口送出的低八位地址。at89c51 在并行擴(kuò)展外存儲(chǔ)器時(shí),p0 口用于分時(shí)傳送低8 位
6、地址和數(shù)據(jù)信號(hào),且均為二進(jìn)制數(shù)。當(dāng)ale 信號(hào)有效時(shí),p0 口傳送的是低8 位地址信號(hào);ale 信號(hào)無(wú)效時(shí),p0 口傳送的是低8 位地址信號(hào)。在ale 信號(hào)的下降沿,鎖定p0 口傳送的內(nèi)容,即低8 位地址信號(hào)。需要指出的是,當(dāng)cpu 不執(zhí)行訪問(wèn)外ram 指令,ale 以時(shí)鐘振蕩頻率1/6 的固定頻率輸出,因此ale 信號(hào)也可作為外部芯片clk 時(shí)鐘或其他需要。但是,當(dāng)cpu 執(zhí)行movx 指令時(shí),ale 將跳過(guò)一個(gè)ale 脈沖。(2) prog 功能:片內(nèi)eprom 的芯片,在eprom 編程期間,此引腳輸入編程脈沖。2、 psen 外rom 讀選通信號(hào)。89c51 讀外rom 時(shí),每個(gè)機(jī)器周
7、期內(nèi)psen 兩次有效輸出。psen 可作為外rom芯片輸出允許oe 的選通信號(hào)。在讀內(nèi)rom 或讀外ram 時(shí), psen 無(wú)效。3、rst/vpd復(fù)位/備用電源。(1)正常工作時(shí),rst 端為復(fù)位信號(hào)輸入端,只要在該引腳上連續(xù)保持兩個(gè)機(jī)器周期以上高電平,at89c51 芯片即實(shí)現(xiàn)復(fù)位操作,復(fù)位后一切從頭開(kāi)始,cpu 從0000h 開(kāi)始執(zhí)行指令。(2)vpd 功能:在vcc 掉電情況下,該引腳可接上備用電源,由vpd 向片內(nèi)ram供電,以保持片內(nèi)ram 中的數(shù)據(jù)不丟失。4、ea /vpp內(nèi)外rom 選擇/片內(nèi)eprom 編程電源。(1) ea 功能:正常工作時(shí), ea 為內(nèi)外rom 選擇端。
8、at89c51 單片機(jī)rom 尋址范圍為64kb,其中4kb 在片內(nèi),60kb 在片外。當(dāng)ea 保持高電平時(shí),先訪問(wèn)內(nèi)rom,但當(dāng)pc 值超過(guò)4kb 時(shí),將自動(dòng)轉(zhuǎn)向執(zhí)行外rom 中的程序。當(dāng)ea 保持低電平時(shí),則只訪問(wèn)外rom,不管芯片內(nèi)有否內(nèi)rom。(2)vpp 功能:片內(nèi)有eprom 的芯片,在eprom 編程期間,此引腳用于施加編程電源。2.1.4 i/o引腳at89c51 有p0、p1、p2、p3 4 個(gè)8 位并行i/o 端口,共32 個(gè)引腳。p0 口是一組8 位漏級(jí)開(kāi)路型雙向i/o 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能以吸收電流的方式驅(qū)動(dòng)8 個(gè)ttl 邏輯門(mén)電路,對(duì)端
9、口寫(xiě)1 時(shí),又可作高阻抗輸入端用。在訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),它是分時(shí)多路轉(zhuǎn)換的地址(低8 位)/數(shù)據(jù)總線,在訪問(wèn)期間激活了內(nèi)部的上拉電阻。在flash 編程時(shí),p0 端口接收指令字節(jié);而在驗(yàn)證程序時(shí),則輸出指令字節(jié)。驗(yàn)證時(shí),要求外接上拉電阻。p1 口是帶內(nèi)部上拉電阻的雙向i/o口,向p1口寫(xiě)入1時(shí)p1口被內(nèi)部上拉為高電平,可用作輸入口。當(dāng)作為輸入腳時(shí)被外部信號(hào)拉低的p1口會(huì)因?yàn)閮?nèi)部上拉而輸出一個(gè)電流。flash編程和程序校驗(yàn)期間,p1接收低8位地址。p2 口是帶內(nèi)部上拉電阻的雙向i/o口,向p2口寫(xiě)入1時(shí)p2口被內(nèi)部上拉為高電平可用作輸入口,當(dāng)作為輸入腳時(shí)被外部拉低的p2口會(huì)因?yàn)閮?nèi)部上拉而
10、輸出電流。在訪問(wèn)外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行movx dptr指令)時(shí),p2口送出高8位地址數(shù)據(jù),當(dāng)使用8位尋址方式(movxri)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),p2口發(fā)送p2特殊功能寄存器的內(nèi)容,在整個(gè)訪問(wèn)期間不改變。flash編程和程序校驗(yàn)時(shí),p2也接收高位地址和一些控制信號(hào)。p3 口是帶內(nèi)部上拉電阻的雙向i/o口,向p3口寫(xiě)入1時(shí)p3口被內(nèi)部上拉為高電平可用作輸入口,當(dāng)作為輸入腳時(shí)被外部拉低的p3口會(huì)因?yàn)閮?nèi)部上拉而輸出電流。p3口除了作為一般的i/o口線外,更重要的是它的第二功能,如表2-1所示:表2-1 p3端口的特殊功能 端口引腳兼 用 功 能 p3.0rxd 串行輸
11、入口 p3.1txd 串行輸出口 p3.2/int0 外部中斷0 p3.3/int1 外部中斷1 p3.4t0 定時(shí)器0的外部輸入 p3.5t1 定時(shí)器1的外部輸入 p3.6/wr 外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通 p3.7/rd 外部數(shù)據(jù)存儲(chǔ)器讀選通 2.2 ds1232芯片ds1232是由美國(guó)dallas公司生產(chǎn)的微處理器監(jiān)控電路,采用8腳dip封裝,具有看門(mén)狗功能的電源監(jiān)測(cè)芯片,在電源上電、斷電、電壓瞬態(tài)下降和死機(jī)時(shí)都會(huì)輸出一個(gè)復(fù)位脈沖。ds1232的的主要特點(diǎn):(1)在微處理器失控狀態(tài)下可以停止和重新啟動(dòng)微處理器;(2)具有8腳dip封裝和16腳soic貼片封裝兩種形式,可以滿(mǎn)足不同設(shè)計(jì)要求;(3
12、)微處理器掉電或電源電壓瞬變時(shí)可自動(dòng)復(fù)位;(4)具有5%或10%的兩種電源監(jiān)測(cè)精度。2.3.1 ds1232引腳功能及內(nèi)部結(jié)構(gòu)ds1232各引腳功能:reste:復(fù)位鍵連接引腳,直接連接復(fù)位鍵;td :看門(mén)狗定時(shí)器延時(shí)設(shè)置。如果連接到地,輸入給看門(mén)狗的脈沖間隔不得大于150毫秒;如果不連接,脈沖間隔不得大于600毫秒;如果連接到電源,脈沖間隔不得大于1.2秒;tol :選擇5%或10%的電源監(jiān)測(cè)精度。如果這個(gè)引腳連接到地,當(dāng)電源下降到4.75v時(shí)芯片將輸出一個(gè)復(fù)位脈沖;如果這個(gè)引腳連接到5v,只有當(dāng)電源下降到4.5v時(shí)芯片才輸出一個(gè)復(fù)位脈沖;gnd :地線;rst:復(fù)位高脈沖輸出引腳;rst:
13、復(fù)位低脈沖輸出引腳;st:看門(mén)狗脈沖輸入,低脈沖有效;vcc:5v電源。ds1232的引腳如圖2-5所示:圖2-5 ds1232的引腳圖芯片ds1232在系統(tǒng)工作時(shí),必須不間斷的給引腳7輸入一個(gè)脈沖系列,這個(gè)脈沖的時(shí)間間隔由引腳2設(shè)定,如果脈沖間隔大于引腳2的設(shè)定值,芯片將輸出一個(gè)復(fù)位脈沖使單片機(jī)復(fù)位。一般將這個(gè)功能稱(chēng)為看門(mén)狗,將輸入給看門(mén)狗的一系列脈沖稱(chēng)為“喂狗”。電壓偏差監(jiān)測(cè)環(huán)節(jié)數(shù)字彩排環(huán) 節(jié) 門(mén)電路 (與門(mén))數(shù)字延時(shí)環(huán) 節(jié) 按鍵防抖時(shí)間溢出比 復(fù)位輸出電壓傳感器 rst圖2-6 ds1232內(nèi)部結(jié)構(gòu) ds1232的功能 1、電源電壓監(jiān)視 ds1232能夠?qū)崟r(shí)監(jiān)測(cè)向微處理器供電的電源電壓,
14、當(dāng)電源電壓vcc低于預(yù)置值時(shí),ds1232的第5腳和第6腳輸出互補(bǔ)復(fù)位信號(hào)rst和/rst。預(yù)置值通過(guò)第3腳(tol)來(lái)設(shè)定;當(dāng)tol接地時(shí),rst和/rst信號(hào)在電源電壓跌落至4.75v以下時(shí)產(chǎn)生;當(dāng)tol與vcc相連時(shí),只有當(dāng)vcc跌落至4.5v以下時(shí)才產(chǎn)生rst和/rst信號(hào)。當(dāng)電源恢復(fù)正常后,rst和/rst信號(hào)至少保持250ms,以保證微處理器的正常復(fù)位。 2、按鍵復(fù)位 在單片機(jī)產(chǎn)品中,最簡(jiǎn)單的按鍵復(fù)位電路是由電阻和電容構(gòu)成的,如果系統(tǒng)擴(kuò)展存在需要和微處理器同時(shí)復(fù)位的其他接口芯片,這種簡(jiǎn)單的阻容復(fù)位電路往往不能滿(mǎn)足整體復(fù)位的要求。ds1232提供了可直接連接復(fù)位按鍵的輸入端/pbse
15、n(第1腳),在該引腳上輸入低電平信號(hào),將在/rst和rst端輸出至少250ms的復(fù)位信號(hào)。3、看門(mén)狗定時(shí)器在ds1232內(nèi)部集成有看門(mén)狗定時(shí)器,當(dāng)ds1232的st端在設(shè)置的周期時(shí)間內(nèi)沒(méi)有有效信號(hào)到來(lái)時(shí),ds1232的rst和rst端將產(chǎn)生復(fù)位信號(hào)以強(qiáng)迫微處理器復(fù)位。這一功能對(duì)于防止由于干擾等原因造成的微處理器死機(jī)是非常有效的??撮T(mén)狗定時(shí)器的定時(shí)時(shí)間由ds1232的td引腳確定,見(jiàn)表2-6所示:表2-6 看門(mén)狗定時(shí)器定時(shí)時(shí)間設(shè)置td引腳連接至定時(shí)時(shí)間最小值典型值最大值地(gnd)62.5ms150ms250ms浮空250ms600ms1000ms電源(vcc)500ms1200ms2000m
16、s看門(mén)狗定時(shí)器的周期輸入信號(hào)st可以從微處理器的地址信號(hào)、數(shù)據(jù)信號(hào)或控制信號(hào)中獲得,不論哪種信號(hào)都必須能夠周期性的訪問(wèn)ds1232,對(duì)于mcs51系列單片機(jī),推薦使用ale信號(hào)。2.3.3實(shí)時(shí)時(shí)鐘模塊時(shí)鐘模塊采用采用帶 ram的時(shí)鐘芯片ds12887。該芯片可以進(jìn)行時(shí)分秒的計(jì)數(shù),具有100年日歷,可編程接口,還具有報(bào)警功能和掉電保存功能,并且可以對(duì)其方便的進(jìn)行程序控制,能很好的符合要求。其電路如圖2-3所示。 圖 2-3 ds12887 時(shí)鐘硬件電路圖 時(shí)鐘芯片ds12887ds12887是美國(guó)dallas半導(dǎo)體公司最新推出的8位串行接口并自帶ram的實(shí)時(shí)日歷時(shí)鐘芯片,內(nèi)部有14個(gè)時(shí)鐘控制寄存
17、器,包括10個(gè)時(shí)標(biāo)寄存器,4個(gè)狀態(tài)寄存器和114 bit作掉電保護(hù)用的低功耗ram。cpu通過(guò)讀ds12887的內(nèi)部時(shí)標(biāo)寄存器得到當(dāng)前的時(shí)間和日歷,也可通過(guò)選擇二進(jìn)制或bcd碼初始化芯片的10個(gè)時(shí)標(biāo)寄存器,其4個(gè)狀態(tài)寄存器用來(lái)控制和指出ds12887的當(dāng)前工作狀態(tài),114 bit非易失性靜態(tài)ram可在掉電時(shí)保存一些重要數(shù)據(jù)。 ds12887功能強(qiáng)大,應(yīng)用廣泛。ds12c887管腳如圖3.2所示。圖3、 ds12c887管腳圖ds12887引腳功能:gnd:接地端vcc:直流電源+5 v電壓。當(dāng)5 v電壓在正常范圍內(nèi)時(shí),數(shù)據(jù)可讀寫(xiě);當(dāng)vcc低于425 v,讀寫(xiě)禁止,計(jì)時(shí)功能仍繼續(xù);當(dāng)vcc下降到
18、3 v以下時(shí),ram和計(jì)時(shí)器被切換到內(nèi)部鋰電池。mot(模式選擇):mot引腳接到vcc時(shí),選擇motorola時(shí)序,當(dāng)接到gfnd時(shí),選擇intel時(shí)序。sqw(方波信號(hào)輸出):sqw引腳能從實(shí)時(shí)時(shí)鐘內(nèi)部15級(jí)分頻器的13個(gè)抽頭中選擇一個(gè)作為輸出信號(hào),其輸出頻率可通過(guò)對(duì)寄存器a編程改變。 ad0ad7(雙向地址數(shù)據(jù)復(fù)用線):總線接口,可與motorola微機(jī)系列和intel微機(jī)系列接口。 as(地址選通輸入):用于實(shí)現(xiàn)信號(hào)分離,在adale的下降沿把地址鎖入ds12887。 ds(數(shù)據(jù)選通或讀輸入):dsrd有2種操作模式,取決于mot引腳的電平,當(dāng)使用motorola時(shí)序時(shí),ds是一正脈沖
19、,出現(xiàn)在總線周期的后段,稱(chēng)為數(shù)據(jù)選通;在讀周期,ds指示ds12887驅(qū)動(dòng)雙向總的時(shí)刻;在寫(xiě)周期,ds的后沿使ds12887鎖存寫(xiě)數(shù)據(jù)。選擇intel時(shí)序時(shí),ds稱(chēng)作(rd),rd與典型存儲(chǔ)器的允許信號(hào)(oe)的定義相同。 r/w(讀寫(xiě)輸入):也有兩種操作模式。選motorola時(shí) 序時(shí),是一電平信號(hào),指示當(dāng)前周期是讀或?qū)懼芷冢琩so為高電平時(shí),高電平指示讀周期,低電平指示寫(xiě)周期;選intel時(shí)序,信號(hào)是一低電平信號(hào),稱(chēng)為wr。在此模式下,rw與通用ram的寫(xiě)允許信號(hào)(we)的含義相同。cs(片選輸入):在訪問(wèn)ds12887的總線周期內(nèi),片選信號(hào)必須保持為低。irq(中斷申請(qǐng)輸入):低電平有效
20、,可作微處理的中斷輸入。沒(méi)有中斷條件滿(mǎn)足時(shí),irq處于高阻態(tài)。irq線是漏極開(kāi)路輸入,要求外接上接電阻。reset(復(fù)位輸出):當(dāng)保持低電平時(shí)間大于200 ms,保證ds12887有效復(fù)位。ds12887的內(nèi)部地址分配:地址00h和03h單元取值范圍是00h3bh(十進(jìn)制為059);04h05h單元按12小時(shí)制取值范圍是上午(am)01h0ch(十進(jìn)制為112),下午(pm)51h5ch(十進(jìn)制為8192),按24小時(shí)制取值范圍是00h17h(十進(jìn)制為023);06h單元的取值范圍是01h07h(十進(jìn)制為17);07h單元取值范圍o1h1fh(十進(jìn)制為131);08h單元取值范圍是01h0ch
21、(十進(jìn)制為112);09h單元取值范圍是00h63h(十進(jìn)制為099)。2.2.1 硬件部分的設(shè)計(jì) 選擇并行方式顯示,i/o口通過(guò)鎖存芯片來(lái)擴(kuò)展,以此來(lái)控制led點(diǎn)陣40個(gè)列線,雙緩沖寄存器由5片鎖存器74ls373來(lái)組成,可以驅(qū)動(dòng)led點(diǎn)陣8組列線,并用3/8譯碼器74ls138對(duì)led點(diǎn)陣的8行進(jìn)行掃描。在送每一行的數(shù)據(jù)到led點(diǎn)陣時(shí),先把數(shù)據(jù)分別送到5個(gè)74ls373,然后再把數(shù)據(jù)一起輸出到led點(diǎn)陣列中,送出去的時(shí)間數(shù)據(jù)由at89c51來(lái)控制。電子鐘由顯示電路、行驅(qū)動(dòng)電路、列驅(qū)動(dòng)電路、中央控制器at89c51、按鍵電路和復(fù)位電路組成。系統(tǒng)框圖如圖2-1所示: 圖2-1 系統(tǒng)框圖 a)
22、顯示模塊的選擇 顯示模塊采用8*8的點(diǎn)陣led數(shù)碼管,它具有低功耗、小體積、高性能、低價(jià)格等特點(diǎn)。這種模塊由64個(gè)發(fā)光led芯片以8*8的形式構(gòu)成一個(gè)正方形模塊,然后用兩列12針引腳將內(nèi)部電路接口引出,供驅(qū)動(dòng)電路使用。這種結(jié)構(gòu)是市面上最通用,也是現(xiàn)在應(yīng)用最為廣泛采用的形式。 b) 時(shí)鐘信號(hào)的選擇 秒信號(hào)由單片機(jī)提供,使用程序由時(shí)、分、秒計(jì)數(shù)。采用這種方案的優(yōu)點(diǎn)在于,它可以有效減少電路的復(fù)雜程度,減少多余芯片的使用,節(jié)約成本。并可以減少時(shí)間誤差,以達(dá)到設(shè)計(jì)要求。 c) 總體設(shè)計(jì)方案 根據(jù)以上方案所述本次畢業(yè)設(shè)計(jì)采取的總體方案如下:用鎖存芯片來(lái)擴(kuò)展i/o口,控制led點(diǎn)陣40個(gè)列線;5片鎖存器74
23、ls373組成雙緩沖寄存器,驅(qū)動(dòng)led點(diǎn)陣8組列線;采用8*8的點(diǎn)陣led數(shù)碼管組成顯示模塊,顯示出運(yùn)行調(diào)試 at89c51 控制器 列驅(qū)動(dòng)電路 行 驅(qū) 動(dòng) 電 路 顯 示 電 路 電源電路 復(fù)位電路 按鍵電路 本科生畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(2013) 第3章 系統(tǒng)軟件電路設(shè)計(jì)3.1 系統(tǒng)流程圖及源代碼設(shè)計(jì)3.1.1 主程序流程圖設(shè)計(jì)液晶屏通信引腳定義ds12887通信引腳定義數(shù)據(jù)設(shè)定引腳定義開(kāi)始引腳定義地址定義程序開(kāi)始初始化液晶屏讀取ds12887程序數(shù)據(jù)分離送顯示緩存日歷顯示子程序數(shù)據(jù)存儲(chǔ)地址顯示數(shù)據(jù)緩沖地址初始化液晶屏幕顯示初始畫(huà)面清液晶屏幕顯示空白讀ds12887程序分離數(shù)據(jù)子程序?qū)懼噶畹揭壕?/p>
24、屏讀數(shù)據(jù)到液晶屏3.1.2程序代碼根據(jù)各個(gè)芯片的操作時(shí)序以及指令,結(jié)合硬件電路和設(shè)計(jì)所要實(shí)現(xiàn)的功能,編寫(xiě)程序代碼如下:#include#define uint unsigned int#define uchar unsigned charsbit beep=p12;sbit s1=p10;sbit s2=p11;sbit s3=p13;sbit s4=p37;sbit rs=p34;sbit lcden=p35;sbit dsas=p14;sbit dsrw=p15;sbit dsds=p16;sbit dscs=p17;bit flag1,flag_ri;/定義兩個(gè)位置變量uchar cou
25、nt,s1num,flag,t0_num;char miao,shi,fen,year,month,day,week,nmiao,nshi,nfen;uchar code table= 20 - - ; /液晶固定顯示內(nèi)容uchar code table1= : : ;void write_ds(uchar,uchar);void set_alarm(uchar,uchar,uchar) ;void read_alarm();uchar read_ds(uchar);void set_time();void delay(uint z)uint x,y;for(x=z;x0;x-) for(y=
26、110;y0;y-) ;void di() beep=0; delay(100); beep=1;void write_com(uchar com)/寫(xiě)液晶命令函數(shù)rs=0;lcden=0;p2=com;delay(3);lcden=1;delay(3);lcden=0;void write_date(uchar date)/寫(xiě)液晶數(shù)據(jù)函數(shù)rs=1;lcden=0;p2=date;delay(3);lcden=1;delay(3);lcden=0;void write_ds(uchar add,uchar date)/寫(xiě)12887函數(shù)/dsas=0;delay(2);dscs=0;dsas=1
27、;dsds=1;dsrw=1;delay(2);p0=add;delay(2); /先寫(xiě)地址dsas=0;dsrw=0;delay(2);p0=date; /在寫(xiě)數(shù)據(jù)delay(2);dsrw=1;dsas=1;dscs=1;uchar read_ds(uchar add)/讀12887函數(shù)uchar ds_date;/dsas=0;delay(1);dsas=1;dsds=1;dsrw=1;dscs=0;delay(2);p0=add;delay(2);dsas=0;dsds=0;delay(2) ;p0=0xff;delay(2);ds_date=p0;delay(2);dsds=1;ds
28、as=1;dscs=1;return ds_date;/*.*/首次操作12887時(shí)給與寄存器的初始化void set_time()write_ds(0x0b, 0x86); /禁止更新,接下來(lái)初始化數(shù)據(jù),即寫(xiě)入時(shí)間,日期等 write_ds(0x00,0x00);write_ds(0x01,0x16);write_ds(0x02,0x00);write_ds(0x03,0x00);write_ds(0x04,0x00);write_ds(0x05,0x00);write_ds(0x06,2);write_ds(0x07,15);write_ds(0x08,1);write_ds(0x09,1
29、3);write_ds(0x0b, 0x26); /正常更新,二進(jìn)制格式,24進(jìn)制小時(shí) void read_alarm()/讀取12887鬧鐘值nmiao=read_ds(0x01);nfen=read_ds(0x03);nshi=read_ds(0x05);void init()/初始化函數(shù)uchar num;ea=1;ex0=1;it0=1;flag=0;flag1=0;t0_num=0;flag_ri=0;/beep=0;s1num=0;week=1;lcden=0;/*.*/以下是首次設(shè)置ds12887時(shí)使用,以后不必在寫(xiě)入write_ds(0x0a,0x20); /打開(kāi)振蕩器/wri
30、te_ds(0x0b, 0x86); /禁止更新,接下來(lái)初始化數(shù)據(jù),即寫(xiě)入時(shí)間,日期等 /write_ds(0x0b, 0x06); /正常更新,二進(jìn)制格式,24進(jìn)制小時(shí) write_ds(0x0b, 0x26); /設(shè)置24小時(shí)模式,bcd格式,開(kāi)啟鬧鈴中斷set_time();/設(shè)置默認(rèn)鬧鐘時(shí)間write_com(0x38);/1602液晶初始化write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num16;num+) write_date(tablenum); delay(1);write_c
31、om(0x80+0x40); for(num=0;num11;num+) write_date(table1num);delay(1); void write_sfm(uchar add,char date) /1602液晶刷新時(shí)分秒函數(shù)char tens,ge;tens=date/10;ge=date%10;write_com(0x80+0x40+add);/ write_com(0x06);write_date(0x30+tens);write_date(0x30+ge);void write_nyr(uchar add,char date) /1602液晶刷新年月日 char shi,g
32、e; shi=date/10; ge=date%10; write_com(0x80+add); write_com(0x06); write_date(0x30+shi); write_date(0x30+ge);void write_week(char we)/寫(xiě)液晶星期顯示函數(shù)write_com(0x80+12);/write_com(0x06);switch(we) case 1: write_date(m);delay(5); write_date(o);delay(5);write_date(n);break; case 2: write_date(t);delay(5); wri
33、te_date(u);delay(5);write_date(e);break; case 3: write_date(w);delay(5); write_date(e);delay(5);write_date(d);break; case 4: write_date(t);delay(5); write_date(h);delay(5);write_date(u);break; case 5: write_date(f);delay(5); write_date(r);delay(5);write_date(i);break; case 6: write_date(s);delay(5);
34、 write_date(a);delay(5);write_date(t);break; case 7: write_date(s);delay(5); write_date(u);delay(5);write_date(n);break;void keyscan()if(flag_ri=1)if(s1=0)|(s2=0)|(s3=0)|(s4=0)delay(5); if(s1=0)|(s2=0)|(s3=0)|(s4=0) while(!(s1&s2&s3&s4);di();flag_ri=0;/清除報(bào)警標(biāo)志/beep=0; if(s1=0)delay(5);if(s1=0) s1num+
35、; if(flag1=1) if(s1num=4)s1num=1;flag=1;while(!s1);di();switch(s1num)/光標(biāo)閃爍點(diǎn)定位case 1: write_com(0x80+0x40+10);write_com(0x0f);break;case 2: write_com(0x80+0x40+7);break;case 3: write_com(0x80+0x40+4);break;case 4: write_com(0x80+12);break;case 5: write_com(0x80+9);break;case 6: write_com(0x80+6);brea
36、k;case 7: write_com(0x80+3);break;case 8: s1num=0;write_com(0x0c);flag=0;write_ds(0x00,miao);write_ds(0x02,fen); write_ds(0x04,shi);write_ds(0x06,week);write_ds(0x07,day);write_ds(0x08,month);write_ds(0x09,year);break;if(s1num!=0) delay(1); if(s2=0) while(!s2);di();switch(s1num)/根據(jù)功能鍵次數(shù)調(diào)節(jié) 相應(yīng)數(shù)值case 1
37、:miao+; if(miao=60) miao=0; write_sfm(0x0a,miao); write_com(0x80+0x40+10); if(flag1=0) write_ds(0,miao); break;case 2:fen+; if(fen=60) fen=0; write_sfm(0x07,fen); write_com(0x80+0x40+7); if(flag1=0) write_ds(2,fen); break;case 3:shi+; if(shi=24) shi=0; write_sfm(0x04,shi); write_com(0x80+0x40+4); if
38、(flag1=0) write_ds(4,shi); break;case 4:week+; if(week=8) week=1; write_week(week); write_com(0x80+12); write_ds(6,week); break;case 5:day+; if(day=32) day=1; write_nyr(0x09,day); write_com(0x80+9); write_ds(7,day); break;case 6:month+; if(month=13) month=1; write_nyr(0x06,month); write_com(0x80+6);
39、 write_ds(8,month); break;case 7:year+; if(year=100) year=0; write_nyr(0x03,year); write_com(0x80+3); write_ds(9,year); break;if(s3=0) delay(1); if(s3=0) while(!s3);di();switch(s1num) /根據(jù)功能鍵次數(shù)調(diào)節(jié)相應(yīng)數(shù)值case 1:miao-; if(miao=-1) miao=59; write_sfm(0x0a,miao); write_com(0x80+0x40+10); if(flag1=0) write_ds
40、(0,miao); break; case 2:fen-; if(fen=-1) fen=59; write_sfm(0x07,fen); write_com(0x80+0x40+7); if(flag1=0) write_ds(2,fen); break;case 3:shi-; if(shi=-1) shi=23; write_sfm(0x04,shi); write_com(0x80+0x40+4); if(flag1=0) write_ds(4,shi); break;case 4:week-; if(week=0) week=7; write_week(week); write_co
41、m(0x80+12); write_ds(6,week); break;case 5:day-; if(day=0) day=31; write_nyr(0x09,day); write_com(0x80+9); write_ds(7,day); break;case 6:month-; if(month=0) month=12; write_nyr(0x06,month); write_com(0x80+6); write_ds(8,month); break;case 7:year-; if(year=-1) year=99; write_nyr(0x03,year); write_com(0x80+3); write_ds(9,year); break; if(s4=0)/檢測(cè)s4delay(5);if(s4=0)flag1=flag1;while(!s4);di();if(flag1=0) /退出鬧鐘時(shí)設(shè)置保存數(shù)值 flag=0; write_com(0x80+0x40); write_date( ); write_date( ); write_com(0x0c); write_ds(0x01,miao); write_ds(0x03,fen); w
溫馨提示
- 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年度智慧城市建設(shè)個(gè)人工勞務(wù)分包合同4篇
- 2025年物業(yè)經(jīng)營(yíng)托管與設(shè)施設(shè)備更新改造合同3篇
- 二零二五年度商業(yè)街區(qū)租賃管理合同3篇
- 2025年西瓜種植與農(nóng)村電商平臺(tái)合作承包協(xié)議3篇
- 2025年度個(gè)人收藏品買(mǎi)賣(mài)合同樣本3篇
- 二零二五年護(hù)理員勞動(dòng)合同范本(含離職手續(xù))3篇
- 2025年物流企業(yè)物流園區(qū)消防安全管理合同3篇
- 2025年新媒體信息推廣業(yè)務(wù)合作協(xié)議3篇
- 天橋安全施工方案
- 二零二五年度美容院美容院形象設(shè)計(jì)與裝修合同4篇
- 醫(yī)學(xué)脂質(zhì)的構(gòu)成功能及分析專(zhuān)題課件
- 高技能人才培養(yǎng)的策略創(chuàng)新與實(shí)踐路徑
- 數(shù)列練習(xí)題(含答案)基礎(chǔ)知識(shí)點(diǎn)
- 人教版(2024新版)七年級(jí)上冊(cè)英語(yǔ)期中+期末學(xué)業(yè)質(zhì)量測(cè)試卷 2套(含答案)
- 2024年湖北省中考數(shù)學(xué)試卷(含答案)
- 油煙機(jī)清洗安全合同協(xié)議書(shū)
- 2024年云南省中考數(shù)學(xué)試題(原卷版)
- 污水土地處理系統(tǒng)中雙酚A和雌激素的去除及微生物研究
- 氣胸病人的護(hù)理幻燈片
- 《地下建筑結(jié)構(gòu)》第二版(朱合華)中文(2)課件
- JB T 7946.1-2017鑄造鋁合金金相
評(píng)論
0/150
提交評(píng)論