版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 . . . YanCheng Institute of Technology課程設計說明書課程名稱單片機應用設計 設計題目基于單片機的時鐘設計專業(yè)(工業(yè))自動化學生班級學號完成日期 2012/12/32012/12/15工學院電氣學院工學院電氣學院課程設計任務書 姓 名: 院 (系): 自動化 專 業(yè): (工業(yè))自動化 班 號: BM自動化091 任務起至日期: 2012 年 12 月 3 日至 2012 年 12 月 15 日課程設計題目: 基于單片機的時鐘設計 已知技術參數(shù)和設計要求: (1)AT89C51單片機 (2)DS1302定時器 (3)DS1232看門狗 (4)LCD1602液
2、晶顯示 (5)8*10K上拉電阻 (6)Altium軟件預期設計效果: 設計一個基于單片機的電子時鐘,要求能夠?qū)崿F(xiàn)時、分、秒。工作計劃安排:2012年12月3日-6日:收集和課程設計有關的資料,熟悉課題任務何要求2012年12月7日-10日:總體方案設計2012年12月11日-14日:硬件電路設計2012年12月15日:軟件設計2012年12月16日:整理書寫設計說明書 2012年12月17日:答辯 同組設計者與分工: 獨立完成! 成績評定: 指導教師簽字: 2012 年 12 月 17 日 第1章 電子時鐘的工作原理本次設計時鐘電路,使用了AT89C51單片機芯片控制電路,單片機控制電路簡單
3、且省去了很多復雜的線路,使得電路簡明易懂,用C語言程序來控制整個時鐘的顯示,使得編程變得更容易,這樣通過五個模塊:芯片、顯示屏、看門狗、電源、時鐘即可滿足設計要求。此設計原理圖框圖如圖1-1所示,此電路包括以下五個部分:單片機、時鐘電路、看門狗、液晶屏、電源模塊、時鐘振蕩電路。AT89C51主控模塊DS1232時鐘電路時鐘振蕩模塊DS1232看門狗LCD1602顯示模塊電源模塊圖1-1 主電路設計框圖本設計采用C語言程序設計,使單片機控制數(shù)碼管顯示年、月、日、時、分、秒,當秒計數(shù)滿60時就向分進位,分計數(shù)器計滿60后向時計數(shù)器進位,小時計數(shù)器按“23翻0”規(guī)律計數(shù)。時、分、秒的計數(shù)結(jié)果經(jīng)過數(shù)據(jù)
4、處理可直接送顯示器顯示。當計時發(fā)生誤差的時候可以用校時電路進行校正。設計采用的是時、分、秒顯示,單片機對數(shù)據(jù)進行處理同時在LCD上顯示。第2章 系統(tǒng)硬件電路設計與元件2.1 AT89C51芯片AT89C51 是美國ATMEL 公司生產(chǎn)的8 位Flash ROM 單片機。其最突出的優(yōu)點是片ROM 為Flash ROM,可擦寫1000 次以上,應用并不復雜的通用ROM 寫入器就能方便的擦寫,讀取也很方便,價格低廉,具有片程序ROM 二級系統(tǒng)。因此可靈活應用于各種控制領域。AT89C51 包含以下一些功能部件:(1)一個8 位CPU ;(2)一個片振蕩器和時鐘電路;(3)4KB Flash ROM
5、;(4)128B RAM;(5)可尋址64KB 的外ROM 和外RAM 控制電路;(6)兩個16 位定時/計數(shù)器;(7)21 個特殊功能寄存器;(8)4 個8 位并行I/O 口;(9)一個可編程全雙工串行口;(10)5 個中斷源,可設置成2 個優(yōu)先級。AT89C51 單片機一般采用雙列直插DIP 封裝,共40 個引腳,圖2-1 為其引腳排列圖。40 個引腳大致可分為4 類:電源、時鐘、控制各I/O 引腳。圖2-1 AT89C51引腳圖2.1.1 電源Vcc芯片電源,接+5V;GND接地端。2.1.2 時鐘XTAL1、XTAL2晶體振蕩電路反相輸入端和輸出端。2.1.3 控制線控制線共有4 根,
6、其中3 根是復用線。所謂復用線是指具有兩種功能,正常使用時是一種功能,在某種條件下是另一種功能。1、ALE/ PROG 地址鎖存允許/片EPROM 編程脈沖。(1)ALE 功能:用來鎖存P0 口送出的低八位地址。AT89C51 在并行擴展外存儲器時,P0 口用于分時傳送低8 位地址和數(shù)據(jù)信號,且均為二進制數(shù)。當ALE 信號有效時,P0 口傳送的是低8 位地址信號;ALE 信號無效時,P0 口傳送的是低8 位地址信號。在ALE 信號的下降沿,鎖定P0 口傳送的容,即低8 位地址信號。需要指出的是,當CPU 不執(zhí)行訪問外RAM 指令,ALE 以時鐘振蕩頻率1/6 的固定頻率輸出,因此ALE 信號也
7、可作為外部芯片CLK 時鐘或其他需要。但是,當CPU 執(zhí)行MOVX 指令時,ALE 將跳過一個ALE 脈沖。(2) PROG 功能:片EPROM 的芯片,在EPROM 編程期間,此引腳輸入編程脈沖。2、 PSEN 外ROM 讀選通信號。89C51 讀外ROM 時,每個機器周期PSEN 兩次有效輸出。PSEN 可作為外ROM芯片輸出允許OE 的選通信號。在讀ROM 或讀外RAM 時, PSEN 無效。3、RST/VPD復位/備用電源。(1)正常工作時,RST 端為復位信號輸入端,只要在該引腳上連續(xù)保持兩個機器周期以上高電平,AT89C51 芯片即實現(xiàn)復位操作,復位后一切從頭開始,CPU 從000
8、0H 開始執(zhí)行指令。(2)VPD 功能:在VCC 掉電情況下,該引腳可接上備用電源,由VPD 向片RAM供電,以保持片RAM 中的數(shù)據(jù)不丟失。4、EA /VPP外ROM 選擇/片EPROM 編程電源。(1) EA 功能:正常工作時, EA 為外ROM 選擇端。AT89C51 單片機ROM 尋址圍為64KB,其中4KB 在片,60KB 在片外。當EA 保持高電平時,先訪問ROM,但當PC 值超過4KB 時,將自動轉(zhuǎn)向執(zhí)行外ROM 中的程序。當EA 保持低電平時,則只訪問外ROM,不管芯片有否ROM。(2)VPP 功能:片有EPROM 的芯片,在EPROM 編程期間,此引腳用于施加編程電源。2.1
9、.4 I/O引腳AT89C51 有P0、P1、P2、P3 4 個8 位并行I/O 端口,共32 個引腳。P0 口是一組8 位漏級開路型雙向I/O 口,也即地址/數(shù)據(jù)總線復用口。作為輸出口用時,每位能以吸收電流的方式驅(qū)動8 個TTL 邏輯門電路,對端口寫1 時,又可作高阻抗輸入端用。在訪問外部程序和數(shù)據(jù)存儲器時,它是分時多路轉(zhuǎn)換的地址(低8 位)/數(shù)據(jù)總線,在訪問期間激活了部的上拉電阻。在Flash 編程時,P0 端口接收指令字節(jié);而在驗證程序時,則輸出指令字節(jié)。驗證時,要求外接上拉電阻。P1 口是帶部上拉電阻的雙向I/O口,向P1口寫入1時P1口被部上拉為高電平,可用作輸入口。當作為輸入腳時被
10、外部信號拉低的P1口會因為部上拉而輸出一個電流。Flash編程和程序校驗期間,P1接收低8位地址。P2 口是帶部上拉電阻的雙向I/O口,向P2口寫入1時P2口被部上拉為高電平可用作輸入口,當作為輸入腳時被外部拉低的P2口會因為部上拉而輸出電流。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX DPTR指令)時,P2口送出高8位地址數(shù)據(jù),當使用8位尋址方式(MOVXRI)訪問外部數(shù)據(jù)存儲器時,P2口發(fā)送P2特殊功能寄存器的容,在整個訪問期間不改變。Flash編程和程序校驗時,P2也接收高位地址和一些控制信號。P3 口是帶部上拉電阻的雙向I/O口,向P3口寫入1時P3口被部上拉為
11、高電平可用作輸入口,當作為輸入腳時被外部拉低的P3口會因為部上拉而輸出電流。P3口除了作為一般的I/O口線外,更重要的是它的第二功能,如表2-1所示:表2-1 P3端口的特殊功能 端口引腳兼 用 功 能P3.0RXD 串行輸入口 P3.1TXD 串行輸出口 P3.2/INT0 外部中斷0 P3.3/INT1 外部中斷1 P3.4T0 定時器0的外部輸入 P3.5T1 定時器1的外部輸入 P3.6/WR 外部數(shù)據(jù)存儲器寫選通 P3.7/RD 外部數(shù)據(jù)存儲器讀選通 2.2 DS1302芯片DS1302是美國DALLAS公司推出的一種高性能、低功耗的實時時鐘日歷芯片,附加31字節(jié)靜態(tài)RAM,采用SP
12、I三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號和RAM數(shù)據(jù)。實時時鐘可提供秒、分、時、日、星期、月和年,一個月小于31天時可以自動調(diào)整,且具有閏年補償功能。工作電壓寬達2.55.5V。采用雙電源供電(主電源和備用電源),可設置備用電源充電方式,提供了對后備電源進行涓細電流充電的能力。有主電源和備份電源雙引腳,而且備份電源可由大容量電容(1F)來替代。需要強調(diào)的是,DS1302需要使用32.768KHz的晶振。DS1302 包含以下一些功能部件:(1)實時時鐘,可對秒、分、時、日、周、月以與帶閏年補償?shù)哪赀M行計數(shù);(2)用于高速數(shù)據(jù)暫存的318位RAM;(3)最少引腳
13、的串行I/O;(4)2.55.5V 電壓工作圍;(5)2.5V時耗電小于300nA;(6)用于時鐘或RAM數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;(7)簡單的3線接口;(8)可選的慢速充電(至VCC1)的能力。2.2.1 DS1302數(shù)據(jù)操作原理DS1302在任何數(shù)據(jù)傳送時必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被輸入。無論是讀周期還是寫周期,開始8位指定40個寄存器中哪個被訪問到。在開始8個時鐘周期,把命令字節(jié)裝入移位寄存器之后,另外的時鐘周期在讀操作時輸出數(shù)據(jù),在寫操作時寫入數(shù)據(jù)。時鐘脈沖的個數(shù)在單字節(jié)方式下為8加8,在多
14、字節(jié)方式下為8加字節(jié)數(shù),最大可達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:備份電源。當Vcc2Vcc1+0.2V時,由Vcc2向DS1302供電,當Vcc2 Vcc1時,由Vcc1向DS1302供電。 SCLK:串行時鐘,輸入,控制數(shù)據(jù)的輸入與輸出; I/O:三線接口時的雙向數(shù)據(jù)線; CE:輸入信號,在讀、寫數(shù)據(jù)期間,必須為高。該引腳有兩個功能:第一,CE開始控制字訪問移位寄存器的控制邏輯;其次C
15、E提供結(jié)束單字節(jié)或多字節(jié)數(shù)據(jù)傳輸?shù)姆椒āR_功能如表2-2所示:表2-2 DS1302引腳功能說明引腳號名稱功能1VCC1備份電源輸入2X132.768KHz晶振輸入3X232.768KHz晶振輸出4GND地5RST控制移位寄存器/復位6I/O數(shù)據(jù)輸入/輸出7SCLK串行時鐘8VCC2主電源輸入 2.2.3 DS1302的寄存器 1、DS1302有關日歷、時間的寄存器共有12個,其中有7個寄存器(讀時81h8Dh,寫時80h8Ch),存放的數(shù)據(jù)格式為BCD碼形式,如表2-3所示:表2-3 DS1302的日歷、時鐘寄存器與其控制字寄存器名命令字取值圍各位容寫操作讀操作76543210秒寄存器 8
16、0H81H00-59CH10SECSEC分寄存器82H83H00-59010MINMIN時寄存器84H85H01-12或00-2312/24010HRHR日寄存器86H87H01-28,29,30,310010DATEDATE月寄存器88H89H01-1200010MMONTH周寄存器8AH8BH01-0700000DAY年寄存器8CH8DH00-9910YEARYEAR控制8EH8FH-WP0000000秒寄存器(81h、80h)的位7定義為時鐘暫停標志(CH)。當該位置為1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài);當該位置為0時,時鐘開始運行。 小時寄存器(85h、84h)的位7用于
17、定義DS1302是運行于12小時模式還是24小時模式。當為高時,選擇12小時模式。在12小時模式時,位5是 ,當為1時,表示PM。在24小時模式時,位5是第二個10小時位??刂萍拇嫫鳎?Fh、8Eh)的位7是寫保護位(WP),其它7位均置為0。在任何的對時鐘和RAM的寫操作之前,WP位必須為0。當WP位為1時,寫保護位防止對任一寄存器的寫操作。2、DS1302的工作模式寄存器所謂突發(fā)模式是指一次傳送多個字節(jié)的時鐘信號和RAM數(shù)據(jù)。突發(fā)模式寄存器如表2-4所示:表2-4突發(fā)模式寄存器工作模式寄存器讀寄存器寫寄存器時鐘突發(fā)模式CLOCK BURSTBFHBEHRAM突發(fā)模式RAM BURSTFFH
18、FEH 3、DS1302還有涓流充電寄存器等。 2.2.4 DS1302的控制字DS1302的控制字如下表所示:表2-5控制字(即地址與命令字節(jié))765432101RAMA4A3A2A1A0RD控制字的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到DS1302中。位6:如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1(A4A0):指示操作單元的地址;位0(最低有效位):如為0,表示要進行寫操作,為1表示進行讀操作??刂谱挚偸菑淖畹臀婚_始輸出。在控制字指令輸入后的下一個 SCLK時鐘的上升沿時,數(shù)據(jù)被寫入 DS1302,數(shù)據(jù)輸入從最低位(0位)開始。同樣,在緊
19、跟8位的控制字指令后的下一個 SCLK脈沖的下降沿,讀出 DS1302的數(shù)據(jù),讀出的數(shù)據(jù)也是從最低位到最高位。2.2.5 DS1302時序CE 輸入驅(qū)動高啟動所有的數(shù)據(jù)傳輸。CE 輸入有兩個功能。首先,CE打開控制邏輯,允許訪問的移位寄存器的地址/命令序列。其次,CE 提供了一個終止單字節(jié)或多字節(jié)數(shù)據(jù)傳輸方法。一個時鐘周期是由一個下降沿之后的上升沿序列。對于數(shù)據(jù)傳輸而言,數(shù)據(jù)必須在有效的時鐘的上升沿輸入,在時鐘的下降沿輸出。如果CE 為低,所有的I/ O 引腳變?yōu)楦咦杩範顟B(tài),數(shù)據(jù)傳輸終止。對于數(shù)據(jù)輸入:開始的8 個SCLK 周期,輸入寫命令字節(jié),數(shù)據(jù)字節(jié)在后8 個SCLK 周期的上升沿輸入。數(shù)
20、據(jù)輸入位0 開始。對于數(shù)據(jù)輸出:開始的8 個SCLK 周期,輸入一個讀命令字節(jié),數(shù)據(jù)字節(jié)在后8 個SCLK 周期的下降沿輸出。注意,第一個數(shù)據(jù)字節(jié)的第一個下降沿發(fā)生后,命令字的最后一位被寫入,命令字節(jié)的最后一位被寫入。當CE 仍為高時。如果還有額外的SCLK 周期,DS1302 將重新發(fā)送數(shù)據(jù)字節(jié),這使DS1302 具有連續(xù)突發(fā)讀取的能力。DS1302數(shù)據(jù)讀寫時序如圖2-4所示:圖2-4 數(shù)據(jù)讀寫時序2.3 DS1232芯片DS1232是由美國DALLAS公司生產(chǎn)的微處理器監(jiān)控電路,采用8腳DIP封裝,具有看門狗功能的電源監(jiān)測芯片,在電源上電、斷電、電壓瞬態(tài)下降和死機時都會輸出一個復位脈沖。D
21、S1232的的主要特點:(1)在微處理器失控狀態(tài)下可以停止和重新啟動微處理器;(2)具有8腳DIP封裝和16腳SOIC貼片封裝兩種形式,可以滿足不同設計要求;(3)微處理器掉電或電源電壓瞬變時可自動復位;(4)具有5%或10%的兩種電源監(jiān)測精度。2.3.1 DS1232引腳功能與部結(jié)構(gòu)DS1232各引腳功能:RESTE:復位鍵連接引腳,直接連接復位鍵;TD :看門狗定時器延時設置。如果連接到地,輸入給看門狗的脈沖間隔不得大于150毫秒;如果不連接,脈沖間隔不得大于600毫秒;如果連接到電源,脈沖間隔不得大于1.2秒;TOL :選擇5%或10%的電源監(jiān)測精度。如果這個引腳連接到地,當電源下降到4
22、.75V時芯片將輸出一個復位脈沖;如果這個引腳連接到5V,只有當電源下降到4.5V時芯片才輸出一個復位脈沖;GND :地線;RST:復位高脈沖輸出引腳;RST:復位低脈沖輸出引腳;ST:看門狗脈沖輸入,低脈沖有效;VCC:5V電源。DS1232的引腳如圖2-5所示:圖2-5 DS1232的引腳圖芯片DS1232在系統(tǒng)工作時,必須不間斷的給引腳7輸入一個脈沖系列,這個脈沖的時間間隔由引腳2設定,如果脈沖間隔大于引腳2的設定值,芯片將輸出一個復位脈沖使單片機復位。一般將這個功能稱為看門狗,將輸入給看門狗的一系列脈沖稱為“喂狗”。這個功能可以防止單片機系統(tǒng)死機。DS1232部結(jié)構(gòu)如圖2-6所示:電壓
23、偏差監(jiān)測環(huán)節(jié)數(shù)字彩排環(huán) 節(jié) 門電路 (與門)數(shù)字延時環(huán) 節(jié) 按鍵防抖時間溢出比 復位輸出電壓傳感器RST圖2-6 DS1232部結(jié)構(gòu)2.3.2 DS1232的功能 1、電源電壓監(jiān)視 DS1232能夠?qū)崟r監(jiān)測向微處理器供電的電源電壓,當電源電壓VCC低于預置值時,DS1232的第5腳和第6腳輸出互補復位信號RST和/RST。預置值通過第3腳(TOL)來設定;當TOL接地時,RST和/RST信號在電源電壓跌落至4.75V以下時產(chǎn)生;當TOL與VCC相連時,只有當VCC跌落至4.5V以下時才產(chǎn)生RST和/RST信號。當電源恢復正常后,RST和/RST信號至少保持250ms,以保證微處理器的正常復位。
24、 2、按鍵復位 在單片機產(chǎn)品中,最簡單的按鍵復位電路是由電阻和電容構(gòu)成的,如果系統(tǒng)擴展存在需要和微處理器同時復位的其他接口芯片,這種簡單的阻容復位電路往往不能滿足整體復位的要求。DS1232提供了可直接連接復位按鍵的輸入端/PBSEN(第1腳),在該引腳上輸入低電平信號,將在/RST和RST端輸出至少250ms的復位信號。3、看門狗定時器在DS1232部集成有看門狗定時器,當DS1232的ST端在設置的周期時間沒有有效信號到來時,DS1232的RST和RST端將產(chǎn)生復位信號以強迫微處理器復位。這一功能對于防止由于干擾等原因造成的微處理器死機是非常有效的。看門狗定時器的定時時間由DS1232的T
25、D引腳確定,見表2-6所示:表2-6 看門狗定時器定時時間設置TD引腳連接至定時時間最小值典型值最大值地(GND)62.5ms150ms250ms浮空250ms600ms1000ms電源(Vcc)500ms1200ms2000ms看門狗定時器的周期輸入信號ST可以從微處理器的地址信號、數(shù)據(jù)信號或控制信號中獲得,不論哪種信號都必須能夠周期性的訪問DS1232,對于MCS51系列單片機,推薦使用ALE信號。2.4 LCD1602液晶顯示LCD1602是一種用5x7點陣圖形來顯示字符的液晶顯示器模塊,它顯示的容量為2行16個字共32個字符。它由若干個57或者511點陣字符位組成,每個點陣字符位都可以
26、顯示一個字符。模塊采用數(shù)字式接口,能夠方便地與單片機等控制類芯片進行通信。由于其具有體積小、重量輕、顯示質(zhì)量高、功耗低等諸多優(yōu)點而被廣泛用于智能化儀器儀表的顯示器件。2.4.1 LCD1602引腳與功能 LCD1602的引腳如圖2-7所示:(1)GND:地電源。(2)Vcc:接+5V電源。(3)VL:液晶顯示器對比度調(diào)整端。接+5V電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的精密電位器調(diào)整對比度,一般對比電壓為0.7V左右。(4)RS:寄存器選擇。高電平時選擇數(shù)據(jù)寄存器,否則選擇指令寄存器。(5):讀寫信號線。高電平時進行讀操作,低電平時進行寫
27、操作。當RS和共同為低電平時可以寫入指令或者顯示地址,當RS為低電平為高電平時可以讀出忙信號,當RS為高電平為低電平時可以寫入數(shù)據(jù)。(6)E:使能端。當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。(7)D1D8:8位雙向數(shù)據(jù)線。 (8)BLA:背光源正極;(9)BLK:背光源負極。圖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ù)
28、15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負極LCD1602液晶模塊部的字符發(fā)生存儲器已經(jīng)存儲了160個不同的點陣字符圖形,這些字符圖有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。LCD1602液晶模塊部的控制器共有11條控制指令,如表2-8所示:表2-8 LCD1602控制命令表指令RSR/WD8D7D6D5D4D3D2D1清顯示0000000001光標返回000000001*置輸入模式00000001I/DS顯
29、示開/關控制0000001DCB光標或字符移位000001S/CR/L*置功能00001DLNF*置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址(ADD)讀忙標志或地址01BF計數(shù)器地址(AC)寫數(shù)到CGRAMD或DRAM10要寫的數(shù)從CGRAMD或DRAM讀數(shù)11讀出的數(shù)據(jù) 它的讀寫操作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的(說明:1為高電平,0為低電平)。 指令1:清顯示,指令碼01H,光標復位到地址00H位置。 指令2:光標復位,光標返回到地址00H。 指令3:光標和顯示模式設置 I/D:光標移動方向,高電平右移,低電平左移。S:屏幕上所有文字
30、是否左移或者右移。高電平表示有效,低電平則無效。 指令4:顯示開關控制。D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示。C:控制光標的開與關,高電平表示有光標,低電平表示無光標。 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。 指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標。 指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線。N:低電平時為單行顯示,高電平時雙行顯示。F:低電平時顯示5X7的點陣字符,高電平時顯示5x10的點陣字符(有些模塊是 DL:高電平時為8位總線,低電平時為4位總線)。 指令7:字符發(fā)生器RAM地址設置。 指令8
31、:DDRAM地址設置。 指令9:讀出忙信號和光標地址。BF為忙標志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙,模塊就能接收相應的命令或者數(shù)據(jù)。 指令10:寫數(shù)據(jù)。 指令11:讀數(shù)據(jù)。液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標志位是不是為低電平,是低電平則表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符。表2-9為 LCD1602的部顯示地址。表2-9 LCD1602的部顯示地址123141516第一行80H81H82H8DH8EH8FH第二行0C0H0C1H0C2H0CDH0CEH0CFH第3章 系
32、統(tǒng)軟件電路設計3.1 系統(tǒng)流程圖與源代碼設計3.1.1 主程序流程圖設計液晶屏通信引腳定義DS1302通信引腳定義數(shù)據(jù)設定引腳定義開始引腳定義地址定義程序開始初始化液晶屏讀取DS1302程序數(shù)據(jù)分離送顯示緩存日歷顯示子程序數(shù)據(jù)存儲地址顯示數(shù)據(jù)緩沖地址初始化液晶屏幕顯示初始畫面清液晶屏幕顯示空白讀DS1302程序分離數(shù)據(jù)子程序?qū)懼噶畹揭壕磷x數(shù)據(jù)到液晶屏圖3-1 主程序流程圖3.1.2 子程序流程圖設計1、 DS1302 定時器中斷子程序流程圖YYYYYYYNNNNNNNNY開始給定時器再次賦值判斷是否計滿18次秒加1,判斷是否等于60分加1,秒置0,判斷分是否等于60時加1,分置0,判斷時是否
33、等于24日加1,時置0,判斷該年是否為閏年判斷日是否到月底月加1,日置1,判斷月是否等于12年加1,月置1,判斷年是否為100執(zhí)行年、月、日、時、分、秒的顯示結(jié)束圖3-2 DS1302中斷流程圖 程序主要實現(xiàn)對DS1302寫保護、充電,對年、月、日、時、分、秒等寄存器的讀寫操作。在讀寫操作子程序中都執(zhí)行了關中斷指令,因為在串行通信時對時序要求比較高,而且在此是用I/O口軟件模擬串行時鐘脈沖,所以在通信過程中最好保證傳輸?shù)倪B續(xù)性,不要允許中斷,如圖3-2所示。2、 LCD1602 流程圖 程序主要實現(xiàn)對信息的顯示,包括年、月、日、時、分、秒等信息,在這里要注意它的讀寫控制指令。其流程圖如圖3-3
34、所示。開始RW和E都置零設置點陣8位數(shù)據(jù)接口,兩行顯示開顯示,不顯示光標地址指針加一,畫面不一定刷新,全部清零給地址,從第一行開始寫顯示第一行數(shù)據(jù)給第二行地址,顯示第二行數(shù)據(jù)結(jié)束圖3-3 LCD1602初始化流程圖3.1.3 子程序源代碼設計詳見附錄一3.1.3 設計原理圖詳見附錄二附錄一/*程序名稱:基于單片機和時鐘芯片DS1302的電子時鐘程序功能: 時鐘芯片采用DS1302顯示采用液晶屏LCD1602*/ #include /包含單片機寄存器的頭文件#include /包含_nop_()函數(shù)定義的頭文件#define uchar unsigned char#define uint uns
35、igned int/*以下是DS1302芯片的操作程序*/uchar code digit10=0123456789; /定義字符數(shù)組顯示數(shù)字sbit DATA=P11; /位定義1302芯片的接口,數(shù)據(jù)輸出端定義在P1.1引腳sbit RST=P12; /位定義1302芯片的接口,復位端口定義在P1.1引腳sbit SCLK=P10; /位定義1302芯片的接口,時鐘輸出端口定義在P1.1引腳/*函數(shù)功能:延時若干微秒入口參數(shù):n*/ void delaynus(uchar n) uchar i; for(i=0;in;i+) ;/*函數(shù)功能:向1302寫一個字節(jié)數(shù)據(jù)入口參數(shù):x*/ voi
36、d Write1302(uchar dat) uchar i; SCLK=0; /拉低SCLK,為脈沖上升沿寫入數(shù)據(jù)做好準備 delaynus(2); /稍微等待,使硬件做好準備 for(i=0;i=1; /將dat的各數(shù)據(jù)位右移1位,準備寫入下一個數(shù)據(jù)位 /*函數(shù)功能:根據(jù)命令字,向1302寫一個字節(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); /稍微等待,使硬件做好準備W
37、rite1302(Cmd); /寫入命令字Write1302(dat); /寫數(shù)據(jù)SCLK=1; /將時鐘電平置于已知狀態(tài)RST=0; /禁止數(shù)據(jù)傳遞 /*函數(shù)功能:從1302讀一個字節(jié)數(shù)據(jù)入口參數(shù):x*/ uchar Read1302(void) uchar i,dat;delaynus(2); /稍微等待,使硬件做好準備for(i=0;i=1; /將dat的各數(shù)據(jù)位右移1位,因為先讀出的是字節(jié)的最低位if(DATA=1) /如果讀出的數(shù)據(jù)是1 dat|=0x80; /將1取出,寫在dat的最高位 SCLK=1; /將SCLK置于高電平,為下降沿讀出 delaynus(2); /稍微等待 S
38、CLK=0; /拉低SCLK,形成脈沖下降沿 delaynus(2); /稍微等待 return dat; /將讀出的數(shù)據(jù)返回 /*函數(shù)功能:根據(jù)命令字,從1302讀取一個字節(jié)數(shù)據(jù)入口參數(shù):Cmd*/ 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; /將時鐘電平置于已知狀態(tài) RST=0; /禁止數(shù)據(jù)傳遞 return dat; /將讀出的數(shù)據(jù)返回/*函數(shù)功
39、能: 1302進行初始化設置*/ void Init_DS1302(void) WriteSet1302(0x8E,0x00); /根據(jù)寫狀態(tài)寄存器命令字,寫入不保護指令 WriteSet1302(0x80,(0/10)4|(0%10); /根據(jù)寫秒寄存器命令字,寫入秒的初始值 /除法運算,取整;%取模運算,取余 /數(shù)據(jù)前四位為十位,后四位為個位,詳見寄存器表 WriteSet1302(0x82,(0/10)4|(0%10); /根據(jù)寫分寄存器命令字,寫入分的初始值WriteSet1302(0x84,(12/10)4|(12%10); /根據(jù)寫小時寄存器命令字,寫入小時的初始值WriteSet
40、1302(0x86,(01/10)4|(01%10); /根據(jù)寫日寄存器命令字,寫入日的初始值WriteSet1302(0x88,(06/10)4|(06%10); /根據(jù)寫月寄存器命令字,寫入月的初始值WriteSet1302(0x8c,(10/10)4|(10%10); /根據(jù)寫小時寄存器命令字,寫入小時的初始值/*以下是對液晶模塊的操作程序*/sbit RS=P20; /寄存器選擇位,將RS位定義為P2.0引腳sbit RW=P21; /讀寫選擇位,將RW位定義為P2.1引腳sbit E=P22; /使能信號位,將E位定義為P2.2引腳sbit BF=P07; /忙碌標志位,將BF位定義
41、為P0.7引腳/*函數(shù)功能:延時1ms(3j+2)*i=(333+2)10=1010(微秒),可以認為是1毫秒*/void delay1ms() unsigned char i,j; for(i=0;i10;i+) for(j=0;j33;j+) ; /*函數(shù)功能:延時若干毫秒入口參數(shù):n*/ void delaynms(unsigned char n) unsigned char i;for(i=0;in;i+) delay1ms(); /*函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)返回值:result。result=1,忙碌;result=0,不忙*/bit BusyTest(void) bit result;RS=0; /根據(jù)規(guī)定,RS為低電平,RW為高電平時,可以讀狀態(tài) RW=1; E=1; /E=1,才允許讀寫 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應時間 result=BF; /將忙碌標志電平賦給result E=0; /將E恢復低電平 return result; /*函數(shù)功能:將模式設置指令或顯示地址寫入液晶模塊入口參數(shù):dictate*/void WriteInstructio
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度四川省公共營養(yǎng)師之四級營養(yǎng)師考前沖刺模擬試卷B卷含答案
- 2024年度四川省公共營養(yǎng)師之二級營養(yǎng)師通關題庫(附答案)
- 2025技術入股合同協(xié)議書
- 2025有關廠房租賃合同的范本
- 2025旅行社合作合同的范本
- 2025成都購房貸款合同
- 2025西安租賃的合同范本
- 2025土地經(jīng)營權出租合同
- 2025房買賣合同書范本
- 2025物業(yè)合同文本訂立注意事項
- 穴位貼敷護理培訓
- 腰椎間盤突出癥護理查房課件
- 建德海螺二期施工組織設計
- 山東省菏澤市2023-2024學年高一上學期期末測試物理試題(解析版)
- 2024年學校后勤日用品采購合同范本2篇
- DB45T 2866-2024 靈芝菌種制備技術規(guī)程
- 2024年度區(qū)塊鏈軟件產(chǎn)品知識產(chǎn)權共享協(xié)議3篇
- 人教版九年級上學期物理期末復習(壓軸60題28大考點)
- 人教版(2024版)七年級上冊英語期末模擬測試卷(含答案)
- 2024年度企業(yè)環(huán)境、社會及治理(ESG)咨詢合同6篇
- 幼兒園中班美術活動《美麗的線條》課件
評論
0/150
提交評論