基于AT89C51單片機(jī)的LCD電子時(shí)鐘設(shè)計(jì)論文_第1頁
基于AT89C51單片機(jī)的LCD電子時(shí)鐘設(shè)計(jì)論文_第2頁
基于AT89C51單片機(jī)的LCD電子時(shí)鐘設(shè)計(jì)論文_第3頁
基于AT89C51單片機(jī)的LCD電子時(shí)鐘設(shè)計(jì)論文_第4頁
基于AT89C51單片機(jī)的LCD電子時(shí)鐘設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 . . . YanCheng Institute of Technology課程設(shè)計(jì)說明書課程名稱單片機(jī)應(yīng)用設(shè)計(jì) 設(shè)計(jì)題目基于單片機(jī)的時(shí)鐘設(shè)計(jì)專業(yè)(工業(yè))自動化學(xué)生班級學(xué)號完成日期第1章 電子時(shí)鐘的工作原理本次設(shè)計(jì)時(shí)鐘電路,使用了AT89C51單片機(jī)芯片控制電路,單片機(jī)控制電路簡單且省去了很多復(fù)雜的線路,使得電路簡明易懂,用C語言程序來控制整個(gè)時(shí)鐘的顯示,使得編程變得更容易,這樣通過五個(gè)模塊:芯片、顯示屏、看門狗、電源、時(shí)鐘即可滿足設(shè)計(jì)要求。此設(shè)計(jì)原理圖框圖如圖1-1所示,此電路包括以下五個(gè)部分:單片機(jī)、時(shí)鐘電路、看門狗、液晶屏、電源模塊、時(shí)鐘振蕩電路。AT89C51主控模塊DS1232時(shí)鐘

2、電路時(shí)鐘振蕩模塊DS1232看門狗LCD1602顯示模塊電源模塊圖1-1 主電路設(shè)計(jì)框圖本設(shè)計(jì)采用C語言程序設(shè)計(jì),使單片機(jī)控制數(shù)碼管顯示年、月、日、時(shí)、分、秒,當(dāng)秒計(jì)數(shù)滿60時(shí)就向分進(jìn)位,分計(jì)數(shù)器計(jì)滿60后向時(shí)計(jì)數(shù)器進(jìn)位,小時(shí)計(jì)數(shù)器按“23翻0”規(guī)律計(jì)數(shù)。時(shí)、分、秒的計(jì)數(shù)結(jié)果經(jīng)過數(shù)據(jù)處理可直接送顯示器顯示。當(dāng)計(jì)時(shí)發(fā)生誤差的時(shí)候可以用校時(shí)電路進(jìn)行校正。設(shè)計(jì)采用的是時(shí)、分、秒顯示,單片機(jī)對數(shù)據(jù)進(jìn)行處理同時(shí)在LCD上顯示。第2章 系統(tǒng)硬件電路設(shè)計(jì)與元件2.1 AT89C51芯片AT89C51 是美國ATMEL 公司生產(chǎn)的8 位Flash ROM 單片機(jī)。其最突出的優(yōu)點(diǎn)是片ROM 為Flash ROM

3、,可擦寫1000 次以上,應(yīng)用并不復(fù)雜的通用ROM 寫入器就能方便的擦寫,讀取也很方便,價(jià)格低廉,具有片程序ROM 二級系統(tǒng)。因此可靈活應(yīng)用于各種控制領(lǐng)域。AT89C51 包含以下一些功能部件:(1)一個(gè)8 位CPU ;(2)一個(gè)片振蕩器和時(shí)鐘電路;(3)4KB Flash ROM ;(4)128B 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)先級。AT89C51 單片機(jī)一般采用雙列直插DIP 封裝,共40 個(gè)引

4、腳,圖2-1 為其引腳排列圖。40 個(gè)引腳大致可分為4 類:電源、時(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 地址鎖存允許/片EPROM 編程脈沖。(1)ALE 功能:用來鎖存P0 口送出的低八位地址。AT89C51 在并行擴(kuò)展外存儲器時(shí),P0 口用于分時(shí)傳送低8 位地址和數(shù)據(jù)信號,且均為二進(jìn)制數(shù)。當(dāng)AL

5、E 信號有效時(shí),P0 口傳送的是低8 位地址信號;ALE 信號無效時(shí),P0 口傳送的是低8 位地址信號。在ALE 信號的下降沿,鎖定P0 口傳送的容,即低8 位地址信號。需要指出的是,當(dāng)CPU 不執(zhí)行訪問外RAM 指令,ALE 以時(shí)鐘振蕩頻率1/6 的固定頻率輸出,因此ALE 信號也可作為外部芯片CLK 時(shí)鐘或其他需要。但是,當(dāng)CPU 執(zhí)行MOVX 指令時(shí),ALE 將跳過一個(gè)ALE 脈沖。(2) PROG 功能:片EPROM 的芯片,在EPROM 編程期間,此引腳輸入編程脈沖。2、 PSEN 外ROM 讀選通信號。89C51 讀外ROM 時(shí),每個(gè)機(jī)器周期PSEN 兩次有效輸出。PSEN 可作為

6、外ROM芯片輸出允許OE 的選通信號。在讀ROM 或讀外RAM 時(shí), PSEN 無效。3、RST/VPD復(fù)位/備用電源。(1)正常工作時(shí),RST 端為復(fù)位信號輸入端,只要在該引腳上連續(xù)保持兩個(gè)機(jī)器周期以上高電平,AT89C51 芯片即實(shí)現(xiàn)復(fù)位操作,復(fù)位后一切從頭開始,CPU 從0000H 開始執(zhí)行指令。(2)VPD 功能:在VCC 掉電情況下,該引腳可接上備用電源,由VPD 向片RAM供電,以保持片RAM 中的數(shù)據(jù)不丟失。4、EA /VPP外ROM 選擇/片EPROM 編程電源。(1) EA 功能:正常工作時(shí), EA 為外ROM 選擇端。AT89C51 單片機(jī)ROM 尋址圍為64KB,其中4K

7、B 在片,60KB 在片外。當(dāng)EA 保持高電平時(shí),先訪問ROM,但當(dāng)PC 值超過4KB 時(shí),將自動轉(zhuǎn)向執(zhí)行外ROM 中的程序。當(dāng)EA 保持低電平時(shí),則只訪問外ROM,不管芯片有否ROM。(2)VPP 功能:片有EPROM 的芯片,在EPROM 編程期間,此引腳用于施加編程電源。2.1.4 I/O引腳AT89C51 有P0、P1、P2、P3 4 個(gè)8 位并行I/O 端口,共32 個(gè)引腳。P0 口是一組8 位漏級開路型雙向I/O 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能以吸收電流的方式驅(qū)動8 個(gè)TTL 邏輯門電路,對端口寫1 時(shí),又可作高阻抗輸入端用。在訪問外部程序和數(shù)據(jù)存儲器時(shí),它是

8、分時(shí)多路轉(zhuǎn)換的地址(低8 位)/數(shù)據(jù)總線,在訪問期間激活了部的上拉電阻。在Flash 編程時(shí),P0 端口接收指令字節(jié);而在驗(yàn)證程序時(shí),則輸出指令字節(jié)。驗(yàn)證時(shí),要求外接上拉電阻。P1 口是帶部上拉電阻的雙向I/O口,向P1口寫入1時(shí)P1口被部上拉為高電平,可用作輸入口。當(dāng)作為輸入腳時(shí)被外部信號拉低的P1口會因?yàn)椴可侠敵鲆粋€(gè)電流。Flash編程和程序校驗(yàn)期間,P1接收低8位地址。P2 口是帶部上拉電阻的雙向I/O口,向P2口寫入1時(shí)P2口被部上拉為高電平可用作輸入口,當(dāng)作為輸入腳時(shí)被外部拉低的P2口會因?yàn)椴可侠敵鲭娏?。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX DP

9、TR指令)時(shí),P2口送出高8位地址數(shù)據(jù),當(dāng)使用8位尋址方式(MOVXRI)訪問外部數(shù)據(jù)存儲器時(shí),P2口發(fā)送P2特殊功能寄存器的容,在整個(gè)訪問期間不改變。Flash編程和程序校驗(yàn)時(shí),P2也接收高位地址和一些控制信號。P3 口是帶部上拉電阻的雙向I/O口,向P3口寫入1時(shí)P3口被部上拉為高電平可用作輸入口,當(dāng)作為輸入腳時(shí)被外部拉低的P3口會因?yàn)椴可侠敵鲭娏?。P3口除了作為一般的I/O口線外,更重要的是它的第二功能,如表2-1所示:表2-1 P3端口的特殊功能 端口引腳兼 用 功 能P3.0RXD 串行輸入口 P3.1TXD 串行輸出口 P3.2/INT0 外部中斷0 P3.3/INT1 外部中

10、斷1 P3.4T0 定時(shí)器0的外部輸入 P3.5T1 定時(shí)器1的外部輸入 P3.6/WR 外部數(shù)據(jù)存儲器寫選通 P3.7/RD 外部數(shù)據(jù)存儲器讀選通 2.2 DS1302芯片DS1302是美國DALLAS公司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘日歷芯片,附加31字節(jié)靜態(tài)RAM,采用SPI三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號和RAM數(shù)據(jù)。實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年,一個(gè)月小于31天時(shí)可以自動調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá)2.55.5V。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對后備電源進(jìn)行涓細(xì)電流充電的能力。有主

11、電源和備份電源雙引腳,而且備份電源可由大容量電容(1F)來替代。需要強(qiáng)調(diào)的是,DS1302需要使用32.768KHz的晶振。DS1302 包含以下一些功能部件:(1)實(shí)時(shí)時(shí)鐘,可對秒、分、時(shí)、日、周、月以與帶閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù);(2)用于高速數(shù)據(jù)暫存的31×8位RAM;(3)最少引腳的串行I/O;(4)2.55.5V 電壓工作圍;(5)2.5V時(shí)耗電小于300nA;(6)用于時(shí)鐘或RAM數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;(7)簡單的3線接口;(8)可選的慢速充電(至VCC1)的能力。2.2.1 DS1302數(shù)據(jù)操作原理DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把R

12、ST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被輸入。無論是讀周期還是寫周期,開始8位指定40個(gè)寄存器中哪個(gè)被訪問到。在開始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ù)。DS1302的部結(jié)構(gòu)圖如圖2-2所示。圖2-2 DS1302部結(jié)構(gòu)圖2.2.2 DS1302 的引腳圖與功能DS1302 的引腳圖如圖2-3所示。圖2-3 DS1302引腳圖DS1302 各引腳功能:Vcc1:主電源;Vcc2:備份電源。當(dāng)Vcc2>V

13、cc1+0.2V時(shí),由Vcc2向DS1302供電,當(dāng)Vcc2< Vcc1時(shí),由Vcc1向DS1302供電。 SCLK:串行時(shí)鐘,輸入,控制數(shù)據(jù)的輸入與輸出; I/O:三線接口時(shí)的雙向數(shù)據(jù)線; CE:輸入信號,在讀、寫數(shù)據(jù)期間,必須為高。該引腳有兩個(gè)功能:第一,CE開始控制字訪問移位寄存器的控制邏輯;其次CE提供結(jié)束單字節(jié)或多字節(jié)數(shù)據(jù)傳輸?shù)姆椒?。引腳功能如表2-2所示:表2-2 DS1302引腳功能說明引腳號名稱功能1VCC1備份電源輸入2X132.768KHz晶振輸入3X232.768KHz晶振輸出4GND地5RST控制移位寄存器/復(fù)位6I/O數(shù)據(jù)輸入/輸出7SCLK串行時(shí)鐘8VCC2主

14、電源輸入2.2.3 DS1302的寄存器 1、DS1302有關(guān)日歷、時(shí)間的寄存器共有12個(gè),其中有7個(gè)寄存器(讀時(shí)81h8Dh,寫時(shí)80h8Ch),存放的數(shù)據(jù)格式為BCD碼形式,如表2-3所示:表2-3 DS1302的日歷、時(shí)鐘寄存器與其控制字寄存器名命令字取值圍各位容寫操作讀操作76543210秒寄存器 80H81H00-59CH10SECSEC分寄存器82H83H00-59010MINMIN時(shí)寄存器84H85H01-12或00-2312/24010HRHR日寄存器86H87H01-28,29,30,310010DATEDATE月寄存器88H89H01-1200010MMONTH周寄存器8A

15、H8BH01-0700000DAY年寄存器8CH8DH00-9910YEARYEAR控制8EH8FH-WP0000000秒寄存器(81h、80h)的位7定義為時(shí)鐘暫停標(biāo)志(CH)。當(dāng)該位置為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位置為0時(shí),時(shí)鐘開始運(yùn)行。 小時(shí)寄存器(85h、84h)的位7用于定義DS1302是運(yùn)行于12小時(shí)模式還是24小時(shí)模式。當(dāng)為高時(shí),選擇12小時(shí)模式。在12小時(shí)模式時(shí),位5是 ,當(dāng)為1時(shí),表示PM。在24小時(shí)模式時(shí),位5是第二個(gè)10小時(shí)位??刂萍拇嫫鳎?Fh、8Eh)的位7是寫保護(hù)位(WP),其它7位均置為0。在任何的對時(shí)鐘和RAM的寫操作之前,WP位必須

16、為0。當(dāng)WP位為1時(shí),寫保護(hù)位防止對任一寄存器的寫操作。2、DS1302的工作模式寄存器所謂突發(fā)模式是指一次傳送多個(gè)字節(jié)的時(shí)鐘信號和RAM數(shù)據(jù)。突發(fā)模式寄存器如表2-4所示:表2-4突發(fā)模式寄存器工作模式寄存器讀寄存器寫寄存器時(shí)鐘突發(fā)模式CLOCK BURSTBFHBEHRAM突發(fā)模式RAM BURSTFFHFEH 3、DS1302還有涓流充電寄存器等。2.2.4 DS1302的控制字DS1302的控制字如下表所示:表2-5控制字(即地址與命令字節(jié))765432101RAMA4A3A2A1A0RD控制字的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到DS1302中。位6:如果為

17、0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1(A4A0):指示操作單元的地址;位0(最低有效位):如為0,表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作??刂谱挚偸菑淖畹臀婚_始輸出。在控制字指令輸入后的下一個(gè) SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入 DS1302,數(shù)據(jù)輸入從最低位(0位)開始。同樣,在緊跟8位的控制字指令后的下一個(gè) SCLK脈沖的下降沿,讀出 DS1302的數(shù)據(jù),讀出的數(shù)據(jù)也是從最低位到最高位。2.2.5 DS1302時(shí)序CE 輸入驅(qū)動高啟動所有的數(shù)據(jù)傳輸。CE 輸入有兩個(gè)功能。首先,CE打開控制邏輯,允許訪問的移位寄存器的地址/命令序列。其次,CE 提供了一個(gè)終止單字節(jié)或

18、多字節(jié)數(shù)據(jù)傳輸方法。一個(gè)時(shí)鐘周期是由一個(gè)下降沿之后的上升沿序列。對于數(shù)據(jù)傳輸而言,數(shù)據(jù)必須在有效的時(shí)鐘的上升沿輸入,在時(shí)鐘的下降沿輸出。如果CE 為低,所有的I/ O 引腳變?yōu)楦咦杩範(fàn)顟B(tài),數(shù)據(jù)傳輸終止。對于數(shù)據(jù)輸入:開始的8 個(gè)SCLK 周期,輸入寫命令字節(jié),數(shù)據(jù)字節(jié)在后8 個(gè)SCLK 周期的上升沿輸入。數(shù)據(jù)輸入位0 開始。對于數(shù)據(jù)輸出:開始的8 個(gè)SCLK 周期,輸入一個(gè)讀命令字節(jié),數(shù)據(jù)字節(jié)在后8 個(gè)SCLK 周期的下降沿輸出。注意,第一個(gè)數(shù)據(jù)字節(jié)的第一個(gè)下降沿發(fā)生后,命令字的最后一位被寫入,命令字節(jié)的最后一位被寫入。當(dāng)CE 仍為高時(shí)。如果還有額外的SCLK 周期,DS1302 將重新發(fā)送數(shù)

19、據(jù)字節(jié),這使DS1302 具有連續(xù)突發(fā)讀取的能力。DS1302數(shù)據(jù)讀寫時(shí)序如圖2-4所示:圖2-4 數(shù)據(jù)讀寫時(shí)序2.3 DS1232芯片DS1232是由美國DALLAS公司生產(chǎn)的微處理器監(jiān)控電路,采用8腳DIP封裝,具有看門狗功能的電源監(jiān)測芯片,在電源上電、斷電、電壓瞬態(tài)下降和死機(jī)時(shí)都會輸出一個(gè)復(fù)位脈沖。DS1232的的主要特點(diǎn):(1)在微處理器失控狀態(tài)下可以停止和重新啟動微處理器;(2)具有8腳DIP封裝和16腳SOIC貼片封裝兩種形式,可以滿足不同設(shè)計(jì)要求;(3)微處理器掉電或電源電壓瞬變時(shí)可自動復(fù)位;(4)具有5%或10%的兩種電源監(jiān)測精度。2.3.1 DS1232引腳功能與部結(jié)構(gòu)DS1

20、232各引腳功能:RESTE:復(fù)位鍵連接引腳,直接連接復(fù)位鍵;TD :看門狗定時(shí)器延時(shí)設(shè)置。如果連接到地,輸入給看門狗的脈沖間隔不得大于150毫秒;如果不連接,脈沖間隔不得大于600毫秒;如果連接到電源,脈沖間隔不得大于1.2秒;TOL :選擇5%或10%的電源監(jiān)測精度。如果這個(gè)引腳連接到地,當(dāng)電源下降到4.75V時(shí)芯片將輸出一個(gè)復(fù)位脈沖;如果這個(gè)引腳連接到5V,只有當(dāng)電源下降到4.5V時(shí)芯片才輸出一個(gè)復(fù)位脈沖;GND :地線;RST:復(fù)位高脈沖輸出引腳;RST:復(fù)位低脈沖輸出引腳;ST:看門狗脈沖輸入,低脈沖有效;VCC:5V電源。DS1232的引腳如圖2-5所示:圖2-5 DS1232的引

21、腳圖芯片DS1232在系統(tǒng)工作時(shí),必須不間斷的給引腳7輸入一個(gè)脈沖系列,這個(gè)脈沖的時(shí)間間隔由引腳2設(shè)定,如果脈沖間隔大于引腳2的設(shè)定值,芯片將輸出一個(gè)復(fù)位脈沖使單片機(jī)復(fù)位。一般將這個(gè)功能稱為看門狗,將輸入給看門狗的一系列脈沖稱為“喂狗”。這個(gè)功能可以防止單片機(jī)系統(tǒng)死機(jī)。DS1232部結(jié)構(gòu)如圖2-6所示:電壓偏差監(jiān)測環(huán)節(jié)數(shù)字彩排環(huán) 節(jié) 門電路 (與門)數(shù)字延時(shí)環(huán) 節(jié) 按鍵防抖時(shí)間溢出比 復(fù)位輸出電壓傳感器RST圖2-6 DS1232部結(jié)構(gòu)2.3.2 DS1232的功能 1、電源電壓監(jiān)視 DS1232能夠?qū)崟r(shí)監(jiān)測向微處理器供電的電源電壓,當(dāng)電源電壓VCC低于預(yù)置值時(shí),DS1232的第5腳和第6腳輸

22、出互補(bǔ)復(fù)位信號RST和/RST。預(yù)置值通過第3腳(TOL)來設(shè)定;當(dāng)TOL接地時(shí),RST和/RST信號在電源電壓跌落至4.75V以下時(shí)產(chǎn)生;當(dāng)TOL與VCC相連時(shí),只有當(dāng)VCC跌落至4.5V以下時(shí)才產(chǎn)生RST和/RST信號。當(dāng)電源恢復(fù)正常后,RST和/RST信號至少保持250ms,以保證微處理器的正常復(fù)位。 2、按鍵復(fù)位 在單片機(jī)產(chǎn)品中,最簡單的按鍵復(fù)位電路是由電阻和電容構(gòu)成的,如果系統(tǒng)擴(kuò)展存在需要和微處理器同時(shí)復(fù)位的其他接口芯片,這種簡單的阻容復(fù)位電路往往不能滿足整體復(fù)位的要求。DS1232提供了可直接連接復(fù)位按鍵的輸入端/PBSEN(第1腳),在該引腳上輸入低電平信號,將在/RST和RST

23、端輸出至少250ms的復(fù)位信號。3、看門狗定時(shí)器在DS1232部集成有看門狗定時(shí)器,當(dāng)DS1232的ST端在設(shè)置的周期時(shí)間沒有有效信號到來時(shí),DS1232的RST和RST端將產(chǎn)生復(fù)位信號以強(qiáng)迫微處理器復(fù)位。這一功能對于防止由于干擾等原因造成的微處理器死機(jī)是非常有效的。看門狗定時(shí)器的定時(shí)時(shí)間由DS1232的TD引腳確定,見表2-6所示:表2-6 看門狗定時(shí)器定時(shí)時(shí)間設(shè)置TD引腳連接至定時(shí)時(shí)間最小值典型值最大值地(GND)62.5ms150ms250ms浮空250ms600ms1000ms電源(Vcc)500ms1200ms2000ms看門狗定時(shí)器的周期輸入信號ST可以從微處理器的地址信號、數(shù)據(jù)信

24、號或控制信號中獲得,不論哪種信號都必須能夠周期性的訪問DS1232,對于MCS51系列單片機(jī),推薦使用ALE信號。2.4 LCD1602液晶顯示LCD1602是一種用5x7點(diǎn)陣圖形來顯示字符的液晶顯示器模塊,它顯示的容量為2行16個(gè)字共32個(gè)字符。它由若干個(gè)5×7或者5×11點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。模塊采用數(shù)字式接口,能夠方便地與單片機(jī)等控制類芯片進(jìn)行通信。由于其具有體積小、重量輕、顯示質(zhì)量高、功耗低等諸多優(yōu)點(diǎn)而被廣泛用于智能化儀器儀表的顯示器件。2.4.1 LCD1602引腳與功能 LCD1602的引腳如圖2-7所示:(1)GND:地電源。(2)

25、Vcc:接+5V電源。(3)VL:液晶顯示器對比度調(diào)整端。接+5V電源時(shí)對比度最弱,接地電源時(shí)對比度最高,對比度過高時(shí)會產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的精密電位器調(diào)整對比度,一般對比電壓為0.7V左右。(4)RS:寄存器選擇。高電平時(shí)選擇數(shù)據(jù)寄存器,否則選擇指令寄存器。(5):讀寫信號線。高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平為高電平時(shí)可以讀出忙信號,當(dāng)RS為高電平為低電平時(shí)可以寫入數(shù)據(jù)。(6)E:使能端。當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。(7)D1D8:8位雙向數(shù)據(jù)線。 (8)BLA:背光源正極;(9)BL

26、K:背光源負(fù)極。圖2-7 LCD1602引腳圖LCD1602引腳功能表如下表2-7所示:表2-7 LCD1602引腳功能表編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極LCD1602液晶模塊部的字符發(fā)生存儲器已經(jīng)存儲了160個(gè)不同的點(diǎn)陣字符圖形,這些字符圖有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是0100

27、0001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“A”。 LCD1602液晶模塊部的控制器共有11條控制指令,如表2-8所示:表2-8 LCD1602控制命令表指令RSR/WD8D7D6D5D4D3D2D1清顯示0000000001光標(biāo)返回000000001*置輸入模式00000001I/DS顯示開/關(guān)控制0000001DCB光標(biāo)或字符移位000001S/CR/L*置功能00001DLNF*置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址(ADD)讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址(AC)寫數(shù)到CGRAMD或D

28、RAM10要寫的數(shù)從CGRAMD或DRAM讀數(shù)11讀出的數(shù)據(jù) 它的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的(說明:1為高電平,0為低電平)。 指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。 指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。 指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動方向,高電平右移,低電平左移。S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。 指令4:顯示開關(guān)控制。D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示。C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo)。 B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。 指令5:光標(biāo)

29、或顯示移位 S/C:高電平時(shí)移動顯示的文字,低電平時(shí)移動光標(biāo)。 指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線。N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示。F:低電平時(shí)顯示5X7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符(有些模塊是 DL:高電平時(shí)為8位總線,低電平時(shí)為4位總線)。 指令7:字符發(fā)生器RAM地址設(shè)置。 指令8:DDRAM地址設(shè)置。 指令9:讀出忙信號和光標(biāo)地址。BF為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙,模塊就能接收相應(yīng)的命令或者數(shù)據(jù)。 指令10:寫數(shù)據(jù)。 指令11:讀數(shù)據(jù)。液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令

30、之前一定要確認(rèn)模塊的忙標(biāo)志位是不是為低電平,是低電平則表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符。表2-9為 LCD1602的部顯示地址。表2-9 LCD1602的部顯示地址123·····141516第一行80H81H82H·····8DH8EH8FH第二行0C0H0C1H0C2H·····0CDH0CEH0CFH第3章 系統(tǒng)軟件電路設(shè)計(jì)3.1 系統(tǒng)流程圖與源代碼設(shè)計(jì)3.1.1 主程序流程圖設(shè)計(jì)液晶

31、屏通信引腳定義DS1302通信引腳定義數(shù)據(jù)設(shè)定引腳定義開始引腳定義地址定義程序開始初始化液晶屏讀取DS1302程序數(shù)據(jù)分離送顯示緩存日歷顯示子程序數(shù)據(jù)存儲地址顯示數(shù)據(jù)緩沖地址初始化液晶屏幕顯示初始畫面清液晶屏幕顯示空白讀DS1302程序分離數(shù)據(jù)子程序?qū)懼噶畹揭壕磷x數(shù)據(jù)到液晶屏圖3-1 主程序流程圖3.1.2 子程序流程圖設(shè)計(jì)1、 DS1302 定時(shí)器中斷子程序流程圖YYYYYYYNNNNNNNNY開始給定時(shí)器再次賦值判斷是否計(jì)滿18次秒加1,判斷是否等于60分加1,秒置0,判斷分是否等于60時(shí)加1,分置0,判斷時(shí)是否等于24日加1,時(shí)置0,判斷該年是否為閏年判斷日是否到月底月加1,日置1,判

32、斷月是否等于12年加1,月置1,判斷年是否為100執(zhí)行年、月、日、時(shí)、分、秒的顯示結(jié)束圖3-2 DS1302中斷流程圖 程序主要實(shí)現(xiàn)對DS1302寫保護(hù)、充電,對年、月、日、時(shí)、分、秒等寄存器的讀寫操作。在讀寫操作子程序中都執(zhí)行了關(guān)中斷指令,因?yàn)樵诖型ㄐ艜r(shí)對時(shí)序要求比較高,而且在此是用I/O口軟件模擬串行時(shí)鐘脈沖,所以在通信過程中最好保證傳輸?shù)倪B續(xù)性,不要允許中斷,如圖3-2所示。2、 LCD1602 流程圖 程序主要實(shí)現(xiàn)對信息的顯示,包括年、月、日、時(shí)、分、秒等信息,在這里要注意它的讀寫控制指令。其流程圖如圖3-3所示。開始RW和E都置零設(shè)置點(diǎn)陣8位數(shù)據(jù)接口,兩行顯示開顯示,不顯示光標(biāo)地址

33、指針加一,畫面不一定刷新,全部清零給地址,從第一行開始寫顯示第一行數(shù)據(jù)給第二行地址,顯示第二行數(shù)據(jù)結(jié)束圖3-3 LCD1602初始化流程圖3.1.3 子程序源代碼設(shè)計(jì)詳見附錄一3.1.3 設(shè)計(jì)原理圖詳見附錄二附錄一/*程序名稱:基于單片機(jī)和時(shí)鐘芯片DS1302的電子時(shí)鐘程序功能: 時(shí)鐘芯片采用DS1302顯示采用液晶屏LCD1602*/ #include<reg51.h> /包含單片機(jī)寄存器的頭文件#include<intrins.h> /包含_nop_()函數(shù)定義的頭文件#define uchar unsigned char#define uint unsigned

34、int/*以下是DS1302芯片的操作程序*/uchar code digit10="0123456789" /定義字符數(shù)組顯示數(shù)字sbit DATA=P11; /位定義1302芯片的接口,數(shù)據(jù)輸出端定義在P1.1引腳sbit RST=P12; /位定義1302芯片的接口,復(fù)位端口定義在P1.1引腳sbit SCLK=P10; /位定義1302芯片的接口,時(shí)鐘輸出端口定義在P1.1引腳/*函數(shù)功能:延時(shí)若干微秒入口參數(shù):n*/ void delaynus(uchar n) uchar i; for(i=0;i<n;i+) ;/*函數(shù)功能:向1302寫一個(gè)字節(jié)數(shù)據(jù)入口參

35、數(shù):x*/ void Write1302(uchar dat) uchar i; SCLK=0; /拉低SCLK,為脈沖上升沿寫入數(shù)據(jù)做好準(zhǔn)備 delaynus(2); /稍微等待,使硬件做好準(zhǔn)備 for(i=0;i<8;i+) /連續(xù)寫8個(gè)二進(jìn)制位數(shù)據(jù) DATA=dat&0x01; /取出dat的第0位數(shù)據(jù)寫入1302delaynus(2); /稍微等待,使硬件做好準(zhǔn)備SCLK=1; /上升沿寫入數(shù)據(jù)delaynus(2); /稍微等待,使硬件做好準(zhǔn)備SCLK=0; /重新拉低SCLK,形成脈沖dat>>=1; /將dat的各數(shù)據(jù)位右移1位,準(zhǔn)備寫入下一個(gè)數(shù)據(jù)位 /

36、*函數(shù)功能:根據(jù)命令字,向1302寫一個(gè)字節(jié)數(shù)據(jù)入口參數(shù):Cmd,儲存命令字;dat,儲存待寫的數(shù)據(jù)*/ void WriteSet1302(uchar Cmd,uchar dat) RST=0; /禁止數(shù)據(jù)傳遞 SCLK=0; /確保寫數(shù)居前SCLK被拉低RST=1; /啟動數(shù)據(jù)傳輸delaynus(2); /稍微等待,使硬件做好準(zhǔn)備Write1302(Cmd); /寫入命令字Write1302(dat); /寫數(shù)據(jù)SCLK=1; /將時(shí)鐘電平置于已知狀態(tài)RST=0; /禁止數(shù)據(jù)傳遞 /*函數(shù)功能:從1302讀一個(gè)字節(jié)數(shù)據(jù)入口參數(shù):x*/ uchar Read1302(void) uchar

37、 i,dat;delaynus(2); /稍微等待,使硬件做好準(zhǔn)備for(i=0;i<8;i+) /連續(xù)讀8個(gè)二進(jìn)制位數(shù)據(jù) dat>>=1; /將dat的各數(shù)據(jù)位右移1位,因?yàn)橄茸x出的是字節(jié)的最低位if(DATA=1) /如果讀出的數(shù)據(jù)是1 dat|=0x80; /將1取出,寫在dat的最高位 SCLK=1; /將SCLK置于高電平,為下降沿讀出 delaynus(2); /稍微等待 SCLK=0; /拉低SCLK,形成脈沖下降沿 delaynus(2); /稍微等待 return dat; /將讀出的數(shù)據(jù)返回 /*函數(shù)功能:根據(jù)命令字,從1302讀取一個(gè)字節(jié)數(shù)據(jù)入口參數(shù):C

38、md*/ uchar ReadSet1302(uchar Cmd) uchar dat; RST=0; /拉低RST SCLK=0; /確保寫數(shù)居前SCLK被拉低 RST=1; /啟動數(shù)據(jù)傳輸 Write1302(Cmd); /寫入命令字 dat=Read1302(); /讀出數(shù)據(jù) SCLK=1; /將時(shí)鐘電平置于已知狀態(tài) RST=0; /禁止數(shù)據(jù)傳遞 return dat; /將讀出的數(shù)據(jù)返回/*函數(shù)功能: 1302進(jìn)行初始化設(shè)置*/ void Init_DS1302(void) WriteSet1302(0x8E,0x00); /根據(jù)寫狀態(tài)寄存器命令字,寫入不保護(hù)指令 WriteSet13

39、02(0x80,(0/10)<<4|(0%10); /根據(jù)寫秒寄存器命令字,寫入秒的初始值 /'/'除法運(yùn)算,取整;'%'取模運(yùn)算,取余 /數(shù)據(jù)前四位為十位,后四位為個(gè)位,詳見寄存器表 WriteSet1302(0x82,(0/10)<<4|(0%10); /根據(jù)寫分寄存器命令字,寫入分的初始值WriteSet1302(0x84,(12/10)<<4|(12%10); /根據(jù)寫小時(shí)寄存器命令字,寫入小時(shí)的初始值WriteSet1302(0x86,(01/10)<<4|(01%10); /根據(jù)寫日寄存器命令字,寫入日

40、的初始值WriteSet1302(0x88,(06/10)<<4|(06%10); /根據(jù)寫月寄存器命令字,寫入月的初始值WriteSet1302(0x8c,(10/10)<<4|(10%10); /根據(jù)寫小時(shí)寄存器命令字,寫入小時(shí)的初始值/*以下是對液晶模塊的操作程序*/sbit RS=P20; /寄存器選擇位,將RS位定義為P2.0引腳sbit RW=P21; /讀寫選擇位,將RW位定義為P2.1引腳sbit E=P22; /使能信號位,將E位定義為P2.2引腳sbit BF=P07; /忙碌標(biāo)志位,將BF位定義為P0.7引腳/*函數(shù)功能:延時(shí)1ms(3j+2)*i

41、=(3×33+2)×10=1010(微秒),可以認(rèn)為是1毫秒*/void delay1ms() unsigned char i,j; for(i=0;i<10;i+) for(j=0;j<33;j+) ; /*函數(shù)功能:延時(shí)若干毫秒入口參數(shù):n*/ void delaynms(unsigned char n) unsigned char i;for(i=0;i<n;i+) delay1ms(); /*函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)返回值:result。result=1,忙碌;result=0,不忙*/bit BusyTest(void) bit resu

42、lt;RS=0; /根據(jù)規(guī)定,RS為低電平,RW為高電平時(shí),可以讀狀態(tài) RW=1; E=1; /E=1,才允許讀寫 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 result=BF; /將忙碌標(biāo)志電平賦給result E=0; /將E恢復(fù)低電平 return result; /*函數(shù)功能:將模式設(shè)置指令或顯示地址寫入液晶模塊入口參數(shù):dictate*/void WriteInstruction (uchar dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根據(jù)規(guī)定,RS和R/W同

43、時(shí)為低電平時(shí),可以寫入指令 RW=0; E=0; /E置低電平(根據(jù)表8-6,寫指令時(shí),E為高脈沖, / 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0" _nop_(); _nop_(); /空操作兩個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 P0=dictate; /將數(shù)據(jù)送入P0口,即寫入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=1; /E置高電平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=0; /當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令 /*函數(shù)功能:指定字符顯示的實(shí)際地址入口參數(shù):x*/ void WriteAddress(uchar x) WriteInst

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論