基于單片機(jī)的電動(dòng)伸縮門控制系統(tǒng)設(shè)計(jì)_第1頁(yè)
基于單片機(jī)的電動(dòng)伸縮門控制系統(tǒng)設(shè)計(jì)_第2頁(yè)
基于單片機(jī)的電動(dòng)伸縮門控制系統(tǒng)設(shè)計(jì)_第3頁(yè)
基于單片機(jī)的電動(dòng)伸縮門控制系統(tǒng)設(shè)計(jì)_第4頁(yè)
基于單片機(jī)的電動(dòng)伸縮門控制系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)原理與應(yīng)用課程設(shè)計(jì)說(shuō)明書題目:基于單片機(jī)的電動(dòng)伸縮門控制系統(tǒng)設(shè)計(jì)學(xué)生姓名: 王艷 學(xué) 號(hào): 20120311121 院(系): 職業(yè)教育師范學(xué)院 專 業(yè): 電子信息工程 指導(dǎo)教師: 張開生 2014年 12月 12日 目 錄1 選題背景12 方案論證13 過(guò)程(設(shè)計(jì)或?qū)嶒?yàn))論述1 3.1 硬件設(shè)計(jì)1 3.1.1 LCD液晶顯示1 3.1.2 直流電機(jī)模塊3 3.1.3 按鍵控制時(shí)間顯示電路3 3.1.4 鍵盤控制電機(jī)工作電路4 3.1.5 DS1302時(shí)鐘芯片電路4 3.1.6 總設(shè)計(jì)仿真圖53.2 軟件設(shè)計(jì)6 3.2.1 主程序6 3.2.2 DS1302時(shí)鐘芯片程序與LCD1602顯

2、示程序設(shè)計(jì)7 3.2.3 按鍵掃描程序74 結(jié)果分析74.1 LCD液晶顯示模塊74.2 電動(dòng)伸縮門控制75 歸納和總結(jié)7附錄9參考文獻(xiàn)資料I 1 選題背景隨著科技的發(fā)展,人們的生活水平不斷的提高,各種方便人們生活的自動(dòng)控制系統(tǒng)開始進(jìn)入人們的生活。為了使自動(dòng)伸縮門能夠更好的為人們和各種企業(yè)單位服務(wù), 需要得到一種電路簡(jiǎn)單,軟件功能完善,控制系統(tǒng)可靠,性價(jià)比較高的自動(dòng)伸縮門系統(tǒng)。以單片機(jī)為核心的自動(dòng)門系統(tǒng)就是其中之一,本文設(shè)計(jì)了基于單片機(jī)的自動(dòng)伸縮門控制系統(tǒng)。該系統(tǒng)以單片機(jī)為主體,步進(jìn)電機(jī)為控制實(shí)體,實(shí)現(xiàn)伸縮門的自動(dòng)控制。電動(dòng)機(jī)與人的生活息息相關(guān),密不可分。電動(dòng)伸縮門是廣泛使用在人員進(jìn)出流動(dòng)比較

3、頻繁的各個(gè)單位、住宅小區(qū)以及公園景點(diǎn)的入口處。隨著社會(huì)的不斷發(fā)展,人們擁有自己的汽車的情況越來(lái)越普遍,交通堵塞的問(wèn)題比較嚴(yán)重,有了電動(dòng)伸縮門的幫助可以使得我們?nèi)菀讓?duì)大量的車流控制系統(tǒng)開始進(jìn)入人們的生活以單片機(jī)為核心的自動(dòng)門系統(tǒng)就是其中之一本文設(shè)計(jì)了基于單片機(jī)的自動(dòng)伸縮門控制系統(tǒng)該系統(tǒng)以單片機(jī)為主體,實(shí)現(xiàn)伸縮門的自動(dòng)控制。本設(shè)計(jì)要求制作完成一個(gè)電動(dòng)伸縮門控制系統(tǒng)。電動(dòng)伸縮門控制系統(tǒng)即通過(guò)按鍵實(shí)現(xiàn)門的自動(dòng)開啟和關(guān)閉,以及其安全性等方面的要求。故電動(dòng)伸縮門控制系統(tǒng)的關(guān)鍵在于對(duì)門開啟和關(guān)閉條件的檢測(cè)和對(duì)電機(jī)的控制。具體要求如下:(1)用遙控器或者紅外遙控器控制電動(dòng)伸縮門的運(yùn)行;(2)系統(tǒng)運(yùn)行時(shí)顯示時(shí)鐘

4、信息和“您好歡迎光臨陜西科技大學(xué)”等字樣;(3)設(shè)計(jì)時(shí)應(yīng)考慮電動(dòng)門的運(yùn)行速度以及安全性等因素;(4)以單片機(jī)的最小系統(tǒng)為基礎(chǔ)硬件,用匯編或者C語(yǔ)言編寫程序;(5)有人或者汽車靠近時(shí)門應(yīng)該打開;自動(dòng)伸縮門上的LCD顯示屏顯示相對(duì)應(yīng)的漢字。此外,該系統(tǒng)設(shè)計(jì)充分發(fā)揮了單片機(jī)的性能,具有較好的可靠性和實(shí)用性。2 方案論證電動(dòng)伸縮門控制系統(tǒng)主要基于硬件和軟件的要求。硬件方面采用簡(jiǎn)單高效的AT89C52單片機(jī)系統(tǒng)板來(lái)實(shí)現(xiàn)。在電機(jī)的選取上,由于直流電機(jī)相比較步進(jìn)電機(jī)更加簡(jiǎn)單方便,并在一定程度上可以實(shí)現(xiàn)所要求的功能,所以在此選取直流電機(jī)控制伸縮門的工作。我們采用小車的前進(jìn)后退和停止模擬電動(dòng)伸縮門的運(yùn)行,通過(guò)對(duì)

5、速度開關(guān)的調(diào)節(jié),實(shí)現(xiàn)小車加速減速達(dá)到控制速度的目的?;诎踩缘目紤],當(dāng)有人或車輛突然經(jīng)過(guò)伸縮門時(shí),設(shè)置中斷停止按鍵使行進(jìn)中的伸縮門立即停止,起到保護(hù)的效果。時(shí)間顯示方面采用LCD液晶顯示,并設(shè)置時(shí)間調(diào)節(jié)按鍵設(shè)置顯示時(shí)間。3 過(guò)程(設(shè)計(jì)或?qū)嶒?yàn))論述3.1 硬件設(shè)計(jì)硬件方面包括LCD1602的引腳和DS1302時(shí)鐘芯片的引腳連接以及按鍵設(shè)置。用小車 的前進(jìn)后退模擬伸縮門的運(yùn)動(dòng)。 3.1.1 LCD液晶顯示(1) 元件說(shuō)明模塊組建內(nèi)部主要由LCD顯示屏、控制器、列驅(qū)動(dòng)器和偏壓產(chǎn)生電路構(gòu)成??刂破鹘邮軄?lái)自MPU的指令和數(shù)據(jù),控制著整個(gè)模塊的工作,由CGROM、CGRAM和DDRAM等字符存儲(chǔ)區(qū)域、以

6、及與MPU和列驅(qū)動(dòng)器的I/O接口、指令寄存和譯碼機(jī)構(gòu)、地址計(jì)數(shù)器等部分組成。在控制器的控制下,模塊通過(guò)數(shù)據(jù)總線DB0DB7和E、R/W、RS三個(gè)輸入控制端與MPU接口。這三根控制線按照規(guī)定的時(shí)序相互協(xié)調(diào)作用,使控制器通過(guò)數(shù)據(jù)總線DB接受MPU發(fā)送來(lái)的指令和數(shù)據(jù),從CGROM中找到欲顯示字符的字符碼,送入DDRAM,在LCD顯示屏上與DDRAM存儲(chǔ)單元對(duì)應(yīng)的規(guī)定位置顯示出該字符??刂破鬟€可以根據(jù)MPU的指令,實(shí)現(xiàn)字符的顯示、閃爍和位移效果。下面是其引腳圖: 圖3-1 引腳圖(2) 模塊應(yīng)用LCD數(shù)據(jù)輸入輸出口是與P0口相連,寄存器選擇輸入端與單片機(jī)P2.6相連,讀寫控制輸入端接P2.5,使能端接

7、P2.7。將顯示屏初始化,使“年、月、日、時(shí)鐘等信息”通過(guò)LCD顯示屏顯示出來(lái),并通過(guò)按鍵對(duì)日期時(shí)間進(jìn)行調(diào)整,其中第一行顯示“年、月、日、星期”,第二行顯示“時(shí)、分、秒”的信息,下圖為其仿真圖:圖3-2 LCD仿真圖3.1.2 直流電機(jī)模塊(1) 直流電機(jī)驅(qū)動(dòng)電路L293D采用16引腳DIP封裝,其內(nèi)部集成了雙極型H-橋電路, L293通過(guò)內(nèi)部邏輯生成使能信號(hào)。H-橋電路的輸入量可以用來(lái)設(shè)置馬達(dá)轉(zhuǎn)動(dòng)方向,使能信號(hào)可以用于脈寬調(diào)整(PWM)。另外,L293將2個(gè)H-橋電路集成到1片芯片上,這就意味著用1片芯片可以同時(shí)控制2個(gè)電機(jī)。每1個(gè)電機(jī)需要3個(gè)控制信號(hào)EN12、IN1、IN2,其中EN12是

8、使能信號(hào),IN1、IN2為電機(jī)轉(zhuǎn)動(dòng)方向控制信號(hào),IN1、IN2分別為1、0時(shí),電機(jī)正轉(zhuǎn);反之,電機(jī)反轉(zhuǎn)。選用一路PWM連接EN12引腳,通過(guò)調(diào)整PWM的占空比可以調(diào)整電機(jī)的轉(zhuǎn)速。以下為L(zhǎng)293驅(qū)動(dòng)電機(jī)的邏輯圖和內(nèi)部仿真圖: 表3-1 驅(qū)動(dòng)電機(jī)邏輯圖EN A(B)IN1(IN3)IN2(IN4)電機(jī)運(yùn)行情況HHL正轉(zhuǎn)HLH反轉(zhuǎn)H同IN2(IN4)同IN1(IN3)快速停止LXX停止(2) 直流電機(jī)仿真圖本設(shè)計(jì)采用一路直流電機(jī)實(shí)現(xiàn)其正轉(zhuǎn)、反轉(zhuǎn)和停止,IN1和IN2分別接到單片機(jī)的P2.0,P2.1口,使能端EN1接到單片機(jī)的P2.2口,當(dāng)使能端有效,輸入端分別為不同電平時(shí),電機(jī)可實(shí)現(xiàn)正反轉(zhuǎn)和停止。

9、 圖3-3 直流電機(jī)仿真圖3.1.3 按鍵控制時(shí)間顯示電路P1.0P1.2控制LCD時(shí)間顯示的調(diào)整。其中觸發(fā)P1.0按鍵,停止DS1302計(jì)數(shù),LCD光標(biāo)閃爍顯示調(diào)節(jié)位置,表示開始調(diào)節(jié)時(shí)間。P1.1按鍵實(shí)現(xiàn)增加顯示時(shí)間,P1.2按鍵實(shí)現(xiàn)減小時(shí)間。3.1.4 鍵盤控制電機(jī)工作電路設(shè)置三個(gè)按鍵實(shí)現(xiàn)電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)和停止,三個(gè)按鍵分別接至P3.0,P3.1,P3.2口,再設(shè)置調(diào)節(jié)速度開關(guān),將其連接在P1.3引腳上。當(dāng)一直按下正轉(zhuǎn)鍵,小車前進(jìn),若此時(shí)有速度調(diào)節(jié)按鍵按下時(shí),執(zhí)行調(diào)節(jié)速度后的程序,否則,執(zhí)行未調(diào)節(jié)速度后的程序;當(dāng)一直按下反轉(zhuǎn)鍵時(shí),小車就會(huì)后退,速度調(diào)節(jié)時(shí),執(zhí)行調(diào)節(jié)速度后的程序。如果遇到突然

10、發(fā)生的情況,比如當(dāng)有行人或者車輛通過(guò)正在運(yùn)行的電動(dòng)伸縮門時(shí),就需要電動(dòng)伸縮門立即停止,這時(shí)可以按下P1.3口連接的按鍵,使正在行駛中的小車立即停下。 圖3-4 按鍵和鍵盤控制仿真圖3.1.5 DS1302時(shí)鐘芯片電路 (1) DS1302芯片說(shuō)明DS1302慢速充電時(shí)鐘芯片包括實(shí)時(shí)時(shí)鐘/日歷提供秒分時(shí)日周月和年等信息。對(duì)于小于31天的月,月末的日期就會(huì)自動(dòng)進(jìn)行調(diào)整,同時(shí)還包括了閏年校正的功能。時(shí)鐘的運(yùn)行可以采用24小時(shí)制或者帶AM(上午)或PM(下午)的12小時(shí)格式。使用同步串行通信,簡(jiǎn)化了DS1302與微處理器的通信。數(shù)據(jù)可以以每次一個(gè)字節(jié)或者多達(dá)31個(gè)字節(jié)的多字節(jié)形式傳送至?xí)r鐘/RAM或從

11、其中送出。(2) 工作原理串行時(shí)鐘芯片的組成部分有:位移寄存器控制邏輯振蕩器實(shí)時(shí)時(shí)鐘以及RAM。為了初始化任何的數(shù)據(jù)傳送,把RST置為高電平且并把提供地址和命令信息的8位裝入到移位寄存器。數(shù)據(jù)在SCLK的上升沿串行輸入。下圖為引腳排列: 圖3-5 引腳排列無(wú)論是讀周期還是寫周期發(fā)生,也無(wú)論傳送方式是單字節(jié)傳送還是多字節(jié)傳送,開始8位指定40個(gè)字節(jié)中的哪個(gè)將被訪問(wèn)。在開始8個(gè)時(shí)鐘周期把命令字裝入移位寄存器之后,另外的時(shí)鐘在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)輸入數(shù)據(jù)。以下為引腳說(shuō)明: 表3-2 引腳說(shuō)明X1,X232.768kHz晶振引腳GND 地RST 復(fù)位I/O 數(shù)據(jù)輸入/輸出SCLK 串行時(shí)鐘Vc

12、c1,Vcc2 電源引腳(3)DS1302的仿真圖將DS1302芯片的片選端,數(shù)據(jù)信號(hào)端,時(shí)鐘信號(hào)端分別接至P3.5,P3.4,P3.6口,通過(guò)軟件設(shè)置,實(shí)現(xiàn)地址和數(shù)據(jù)的傳送。在時(shí)間修改的時(shí)候,按下功能鍵,DS1302停止計(jì)時(shí)。當(dāng)修改時(shí)間完畢后,重新恢復(fù)DS1302的工作,將地址和數(shù)據(jù)送入DS1302中,計(jì)數(shù)器開始計(jì)時(shí),LCD1602開始顯示。以下是DS1302的仿真圖:圖3-6 DS1302仿真圖3.1.6 總設(shè)計(jì)仿真圖下圖為電動(dòng)伸縮門的總仿真圖:圖3-7 總仿真圖3.2 軟件設(shè)計(jì)軟件設(shè)計(jì)包括主程序的設(shè)計(jì)以及各個(gè)子程序的設(shè)計(jì)。主程序主要實(shí)現(xiàn)了小車的運(yùn)行,子程序?qū)崿F(xiàn)了LCD液晶的顯示,具體如下

13、:3.2.1 主程序主程序主要實(shí)現(xiàn)電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)、停止和安全性實(shí)現(xiàn),首先將液晶顯示和DS1302時(shí)鐘芯片進(jìn)行初始化,對(duì)時(shí)間調(diào)節(jié)按鍵進(jìn)行掃描,確定有無(wú)按鍵按下,當(dāng)功能鍵按下時(shí)光標(biāo)顯示,進(jìn)行時(shí)間調(diào)節(jié),并將調(diào)節(jié)后的時(shí)間送入LCD1602進(jìn)行顯示。當(dāng)一直按小車前進(jìn)鍵時(shí),判斷是否進(jìn)行伸縮門調(diào)速,若需要?jiǎng)t執(zhí)行調(diào)速后的前進(jìn)程序,否則執(zhí)行未調(diào)速程序,當(dāng)一直按小車后退鍵時(shí),其原理同上。在伸縮門安全性實(shí)現(xiàn)上,當(dāng)模擬開門或者關(guān)門工作時(shí),若遇到突發(fā)狀況,比如有行人或者車輛通過(guò)時(shí),按下停止按鈕,執(zhí)行中斷程序,伸縮門停止工作。3.2.2 DS1302時(shí)鐘芯片程序與LCD1602顯示程序設(shè)計(jì)該模塊程序分為以下子程序,分別

14、為寫命令與數(shù)據(jù)函數(shù),寫時(shí)分秒、年月日的日期函數(shù),對(duì)LCD1602的初始化函數(shù)。程序見附錄:3.2.3按鍵掃描程序首先定義三個(gè)調(diào)節(jié)按鍵,分別為功能鍵,增大鍵,減小鍵,當(dāng)功能鍵按下1次時(shí),LCD光標(biāo)顯示在“年”位置處,表明開始調(diào)節(jié)時(shí)間,液晶停止從DS1302讀數(shù)據(jù),記錄按下功能鍵次數(shù),分別將其定位到LCD不同位置處。當(dāng)功能鍵按下8次后,表明已調(diào)節(jié)完畢,不顯示光標(biāo),將調(diào)解后的日期寫入DS1302,并讓液晶從中讀取數(shù)據(jù)顯示。當(dāng)功能鍵定位在某一位置,按下增大鍵,相應(yīng)數(shù)據(jù)加1,并將調(diào)整后的數(shù)據(jù)送入DS1302。減小鍵與增大鍵的原理相同。部分程序見附錄:4 結(jié)果分析本次設(shè)計(jì)主要實(shí)現(xiàn)了小車運(yùn)行,包括前進(jìn)、后退

15、和停止,以及時(shí)間日期的顯示,結(jié)果分析主要從LCD顯示和電動(dòng)伸縮門的運(yùn)行兩個(gè)方面考慮。4.1 LCD液晶顯示模塊將程序燒入單片機(jī)中,LCD顯示日期與時(shí)間,第一行顯示年、月、日和星期,第二行顯示時(shí)、分、秒,當(dāng)對(duì)時(shí)間顯示進(jìn)行調(diào)節(jié)時(shí),按下功能鍵光標(biāo)定位在年的位置,實(shí)現(xiàn)時(shí)間調(diào)節(jié)的增大與減小,當(dāng)功能鍵按到第8次,即已經(jīng)將時(shí)間調(diào)整完畢后,調(diào)節(jié)后的時(shí)間即可通過(guò)LCD顯示出來(lái)。4.2 電動(dòng)伸縮門控制在未調(diào)節(jié)速度按鈕前,一直按下前進(jìn)鍵,小車前進(jìn),小車后退同上。在調(diào)節(jié)速度后,按下前進(jìn)與后退鍵,小車速度有明顯改變。當(dāng)遇到突發(fā)情況時(shí),按下停止鍵,小車能在運(yùn)行的情況下立即停止,實(shí)現(xiàn)其安全性能。由于小車自身存在機(jī)械缺陷,該

16、部分功能顯示不太明顯。5 歸納和總結(jié)此次有關(guān)自動(dòng)伸縮門的控制系統(tǒng)的設(shè)計(jì),讓我感覺到了單片機(jī)的復(fù)雜深度性,它并不是想象中的那么簡(jiǎn)單,也并非是無(wú)法克服的堡壘。首先設(shè)計(jì)硬件之前,要收集好有關(guān)的基礎(chǔ)性資料,應(yīng)備有良好的應(yīng)用類參考書和專業(yè)類參考書。對(duì)于有關(guān)的科技期刊和專利文獻(xiàn),也要經(jīng)常閱讀以便了解最新的發(fā)展情況,借鑒現(xiàn)成的經(jīng)驗(yàn),避免重復(fù)勞動(dòng)。在設(shè)計(jì)中,要充分了解所用芯片的使用條件及輸入輸出的特性,這樣才能避免因使用錯(cuò)誤而多走彎路。電路設(shè)計(jì)部分應(yīng)該有的精神就是廣集資料。只憑借自己頭腦中的知識(shí)是遠(yuǎn)遠(yuǎn)不夠的。哪里出現(xiàn)了問(wèn)題,就要翻書本,或上網(wǎng)查資料。當(dāng)然也要開動(dòng)自己的腦筋怎樣使系統(tǒng)電路更完美。例如我的設(shè)計(jì)題目

17、是基于單片機(jī)的自動(dòng)伸縮門控制系統(tǒng)設(shè)計(jì)。有自動(dòng)門,自然會(huì)用到電動(dòng)機(jī),每種電機(jī)都有不同的特性和功能,這就要進(jìn)行選擇了。例如對(duì)電機(jī)的選擇,就要選擇我所熟悉的,所了解的。在電路設(shè)計(jì)時(shí),應(yīng)充分發(fā)揮單片機(jī)的記憶運(yùn)算、判斷控制能力,避免采用復(fù)雜的、穩(wěn)定性較差的模擬電路。本設(shè)計(jì)程序以匯編語(yǔ)言語(yǔ)言編寫,易于讀寫、易于調(diào)試和修改,同時(shí)匯編語(yǔ)言用來(lái)編制系統(tǒng)軟件和過(guò)程控制軟件,其目標(biāo)程序占用內(nèi)存空間少,運(yùn)行速度快。為了使微機(jī)控制系統(tǒng)各種硬件設(shè)備能夠正常運(yùn)行,有效地實(shí)現(xiàn)電機(jī)各個(gè)控制環(huán)節(jié)的實(shí)時(shí)控制和管理,除了要設(shè)計(jì)合理的硬件電路,還必須要有高質(zhì)量的軟件支持。因此用匯編語(yǔ)言編寫電機(jī)單片機(jī)實(shí)施控制的應(yīng)用程序,使整個(gè)系統(tǒng)中十分

18、重要的內(nèi)容。一直以來(lái),都在強(qiáng)調(diào)單片機(jī)對(duì)專業(yè)的重要性,但也只是了解了大概,在這次課程設(shè)計(jì)中,才真正認(rèn)識(shí)到它功能的強(qiáng)大,同時(shí)也對(duì)單片機(jī)設(shè)計(jì)的工程產(chǎn)生了濃厚的興趣。這次設(shè)計(jì)雖然只是一個(gè)很小的系統(tǒng),但運(yùn)用了單片機(jī)開發(fā)板上的多個(gè)功能,讓我有機(jī)會(huì)學(xué)習(xí)到這些知識(shí),同時(shí)整個(gè)設(shè)計(jì)的實(shí)現(xiàn),也為我今后想要繼續(xù)這方面的學(xué)習(xí)打下了基礎(chǔ),比如要首先清楚每個(gè)器件的功能作用,看懂它的資料說(shuō)明,才能更好的運(yùn)用。另外在軟件的編寫過(guò)程中,也查閱了各類資料,豐富了我其他方面的知識(shí)。這次課程設(shè)計(jì)雖然結(jié)束了,但我卻將它作為以后學(xué)習(xí)的起點(diǎn),要想真正提高自己的動(dòng)手能力還需要不斷的學(xué)習(xí)與實(shí)踐。我想在自己的努力下,一定會(huì)有所收獲。附錄:#inc

19、lude<reg51.h>#include<lcd1602.h>#include<ds1302.h>#include<key scan.h>Sb it d j_2=P21;/電機(jī)2Sb it d j_en=P22;/電機(jī)使能端Sb it open=P30;Sb it close=P31;Sb it bia su=P13;unsigned char i i;unsigned char j j;int a,b;void delay numbers(unsigned int n)/延時(shí)函數(shù)unsigned char ii;while(n-)for(ii

20、=0;ii<150;ii+);void door open(void) /開門d j_1=1;d j_2=0;if(bi an s u=0)d j_en=0;/使d j_en產(chǎn)生PWM波 delay numbers(10);d j_en=1;delay numbers(90);else d j_en=0;/使d j_en產(chǎn)生PWM波 delay numbers(30);d j_en=1;delay numbers(70);void door close(void)/關(guān)門d j_1=0;d j_2=1;if(biansu=0)d j_en=0;/使d j_en產(chǎn)生PWM波 delay nu

21、mbers(10);d j_en=1;delay numbers(90);else d j_en=0;/使d j_en產(chǎn)生PWM波 delay numbers(30);d j_en=1;delay numbers(70);void stop(void)d j_en=1;/使能端有效控制停轉(zhuǎn)d j_1=d j_2=0;void main()LCD_INITIAL();/液晶初始化INITIAL_1302();/DS1302初始化while(1)Key scan();/按鍵掃描if(flag=0)/當(dāng)標(biāo)志位為0,允許讀取DS1302數(shù)據(jù),將數(shù)據(jù)送入液晶顯示second=READ_1302(0x81

22、);LCD_WRITE_SFM(10,second);/從DS1302讀取秒送入液晶顯示minute=READ_1302(0x83);LCD_WRITE_SFM(7,minute);/從DS1302讀取分送入液晶顯示hour=READ_1302(0x85);LCD_WRITE_SFM(4,hour);/從DS1302讀取時(shí)送入液晶顯示week=READ_1302(0x8b);LCD_WRITE_WEEK(week);/從DS1302讀取星期送入液晶顯示day=READ_1302(0x87);LCD_WRITE_NYR(9,day);/從DS1302讀取日送入液晶顯示month=READ_130

23、2(0x89);LCD_WRITE_NYR(6,month);/從DS1302讀取月送入液晶顯示 year=READ_1302(0x8d);LCD_WRITE_NYR(3,year);/從DS1302讀取年送入液晶顯示LCD_WRITE_NYR(漢字);/從DS1302讀取漢字送入液晶顯示if(!open)/開門 EX0=1;EA=1;TCON=0x01;Door open();elseEX0=0;EA=0;stop();if(!close)/關(guān)門EX0=1;EA=1;TCON=0x01;Door close();elseEX0=0;EA=0;stop(); void myint0(void)

24、 interrupt 0 /外部中斷0stop();Delay numbers(5000);EX0=0;EA=0; (1) 地址數(shù)據(jù)發(fā)送子函數(shù)void WRITE_1302(unsigned char add,unsigned char date)/地址、數(shù)據(jù)發(fā)送子程序unsigned char i,temp;RST=0;/RST引腳為低,數(shù)據(jù)傳送中止SCLK=0;/清零時(shí)鐘總線RST=1;/RST引腳為高,邏輯控制有效for(i=8;i>0;i-)/發(fā)送地址,循環(huán)8次移位SCLK=0;temp=add;DIO=(bit)(temp&0x01);/每次傳送低字節(jié)add>&g

25、t;=1;/右移一位SCLK=1;for(i=8;i>0;i-)/發(fā)送數(shù)據(jù)SCLK=0;temp=date;DIO=(bit)(temp&0x01);date>>=1;SCLK=1;RST=0; (2) 讀取數(shù)據(jù)函數(shù)unsigned char READ_1302(unsigned char add)/讀取數(shù)據(jù)unsigned char i,temp,date1,date2;RST=0;SCLK=0;RST=1;for(i=8;i>0;i-)/循環(huán)8次移位SCLK=0;temp=add;DIO=(bit)(temp&0x01);/每次傳送低字節(jié)add>

26、;>=1;/右移一位SCLK=1;for(i=8;i>0;i-)ACC_7=DIO;SCLK=1;ACC>>=1;SCLK=0;RST=0;date1=ACC;date2=date1/16;/數(shù)據(jù)進(jìn)制轉(zhuǎn)換date1=date1%16;/十六進(jìn)制轉(zhuǎn)十進(jìn)制date1=date1+date2*10;return(date1) ;void LCD_WRITE_COM(unsigned char com)/寫命令函數(shù)LCD_RS=0;LCD_RW=0;LCD_E=1;P0=com;delay(5);LCD_E=0;void LCD_WRITE_DATA(unsigned char

27、 date)/寫數(shù)據(jù)函數(shù) LCD_RS=1; LCD_RW=0; LCD_E=1; P0=date; delay(5); LCD_E=0;void LCD_WRITE_SFM(unsigned char add,unsigned char date)/寫時(shí)分秒函數(shù)unsigned char sh,g;sh=date/10;g=date%10;/分解2位數(shù)的十位和個(gè)位LCD_WRITE_COM(0x80+0x40+add);/設(shè)置顯示位置LCD_WRITE_DATA(0x30+sh);/送去液晶顯示十位LCD_WRITE_DATA(0x30+g);/送去液晶顯示個(gè)位 void LCD_WRITE

28、_NYR(unsigned char add,unsigned char date)/寫年月日函數(shù) char sh,g; sh=date/10; g=date%10;/分解2位數(shù)的十位和個(gè)位 LCD_WRITE_COM(0x80+add);/設(shè)置顯示位置 LCD_WRITE_DATA(0x30+sh);/送去液晶顯示十位 LCD_WRITE_DATA(0x30+g);/送去液晶顯示個(gè)位void LCD_WRITE_WEEK(unsigned char week)/寫液晶星期顯示函數(shù)LCD_WRITE_COM(0x80+12);/設(shè)置顯示位置switch(week)case 1: LCD_WRI

29、TE_DATA('M');delay(5);LCD_WRITE_DATA('O');delay(5);LCD_WRITE_DATA('N');break;case 2: LCD_WRITE_DATA('T');delay(5);LCD_WRITE_DATA('U');delay(5);LCD_WRITE_DATA('E');break;case 3: LCD_WRITE_DATA('W');delay(5);LCD_WRITE_DATA('E');delay(5);L

30、CD_WRITE_DATA('D');break;case 4: LCD_WRITE_DATA('T');delay(5);LCD_WRITE_DATA('H');delay(5);LCD_WRITE_DATA('U');break;case 5: LCD_WRITE_DATA('F');delay(5);LCD_WRITE_DATA('R');delay(5);LCD_WRITE_DATA('I');break;case 6: LCD_WRITE_DATA('S')

31、;delay(5);LCD_WRITE_DATA('A');delay(5);LCD_WRITE_DATA('T');break;case 7: LCD_WRITE_DATA('S');delay(5);LCD_WRITE_DATA('U');delay(5);LCD_WRITE_DATA('N');break;void LCD_INITIAL()/液晶初始化函數(shù)unsigned char i;LCD_WRITE_COM(0x38);/設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口LCD_WRITE_COM(0x0c)

32、;/設(shè)置開顯示,不顯示光標(biāo)LCD_WRITE_COM(0x06);/寫一個(gè)字符后地址指針加1LCD_WRITE_COM(0x80);/液晶第一行顯示for(i=0;i<16;i+)LCD_WRITE_DATA(str1i);delay(5);LCD_WRITE_COM(0x80+0x40);/液晶第二行顯示for(i=0;i<16;i+)LCD_WRITE_DATA(str2i);delay(5);LCD_WRITE_COM(0x80+0x40);/液晶第三行顯示for(i=0;i<16;i+)LCD_WRITE_DATA(str2i);delay(5);該模塊程序分為以下子

33、程序,分別為寫命令與數(shù)據(jù)函數(shù),寫漢字函數(shù) ORG 00HSTART6:MOV SP,#50H MOV P0,01H MOV P0,#38H CALL ENABLE MOV DPTR,TET0 CALL WRITECG MOV DPTR,TET1 CALL WRITECG MOV DPTR,TET2 CALL WRITECG MOV DPTR,TET3 CALL WRITECG MOV DPTR,TET4 CALL WRITECG MOV DPTR,TET5 CALL WRITECG MOV DPTR,TET6 CALL WRITECG MOV DPTR,TET7 CALL WRITECG MO

34、V DPTR,TET8 CALL WRITECG MOV DPTR,TET9 CALL WRITECG MOV DPTR,TET10 CALL WRITECG MOV DPTR,TET11 CALL WRITECGENABLE:CLR P2.5 CLR P2.7 CALL DELAY SETB P2.7 RETREPRINT: MOV R7,#00HPRINT1: MOV A,R7 MOVC A,A+DPTR CALL REWRITE INC R7 CJNE A,#0FEH,PRINT1 RET REWRITE: MOV P0,A SETB P2.5 CLR P2.7 CALL DELAY S

35、ETB P2.7 RETWRITECG:MOV R6,#00HWRITE: MOV A,R2 MOV P0,A CALL ENABLE MOV A,R6 MOVC A,A+DPTR CALL REWRITE INC R6 INC R2 CJNE A,#00H,WRITE RETDELAY:MOV R4,#01HDL2: MOV R5,#40HDL3: MOV R0,#00H DJNZ R0,$ DJNZ R5,DL3 DJNZ R4,DL2 RETTXT0:DB 15H,3FH,12H,17H,17H,13H,11H,00H;您TXT1:DB 10H,3FH,2FH,32H,0FH,32H,0

36、2H,00H;好TXT2:DB 02H,3FH,2AH,2AH,19H,21H,21H,00H;歡TXT3:DB 20H,17H,0FH,3FH,16H,16H,3FH,00H;迎TXT4:DB 15H,0EH,04H,1FH,0AH,0AH,23H,00H;光TXT5:DB 14H,1FH,32H,3FH,3FH,1FH,1FH,00H;臨TXT6:DB 02H,27H,32H,3FH,2FH,29H,29H,00H;陜TXT7:DB 00H,1FH,3FH,2BH,2BH,33H,3FH,00H;西TXT8:DB 0AH,15H,3FH,12H,3AH,12H,12H,00H;科TXT9:

37、DB 12H,3FH,12H,1FH,15H,32H,15H,00H;技TXT10:DB 04H,04H,3FH,04H,04H,0AH,12H,00H;大TXT11:DB 35H,3FH,1EH,02H,04H,3FH,04H,00H;學(xué) ENDvoid key scan()if(key0=0)/確認(rèn)功能鍵按下delay(20);if(key0=0)/功能鍵確實(shí)按下while(!key0);/釋放number+;/按下次數(shù)記錄switch(number)case 1: flag=1;/修改時(shí)間,液晶禁止從DS1302讀數(shù)據(jù)TR0=0;/定時(shí)器關(guān)LCD_WRITE_COM(0x0f);/光標(biāo)開始閃爍LCD_WRITE_COM(0x80+3);/第一次按下,光標(biāo)定位到年位置break;case 2: LCD_WRITE_COM(0x80+6);/第二次按下,光標(biāo)定位到月位置break;case 8: num=0;/第八次按下,記錄清零LCD_WRITE_COM(0x0c);/不顯示光標(biāo) WRITE_1302(WRITE_PROTECT,0x00)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論