測(cè)控系統(tǒng)、設(shè)備及儀器應(yīng)用綜合能力訓(xùn)練_第1頁
測(cè)控系統(tǒng)、設(shè)備及儀器應(yīng)用綜合能力訓(xùn)練_第2頁
測(cè)控系統(tǒng)、設(shè)備及儀器應(yīng)用綜合能力訓(xùn)練_第3頁
測(cè)控系統(tǒng)、設(shè)備及儀器應(yīng)用綜合能力訓(xùn)練_第4頁
測(cè)控系統(tǒng)、設(shè)備及儀器應(yīng)用綜合能力訓(xùn)練_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、測(cè)控系統(tǒng)、設(shè)備與儀器應(yīng)用綜合能力訓(xùn)練-紅外遙控電子時(shí)鐘設(shè)計(jì)說明書目錄1 緒論12 硬件設(shè)計(jì)22.1 DS1302時(shí)鐘芯片22.1.1 管腳介紹22.1.2讀寫指令32.1.3 電路連接42.2紅外遙控器42.3 1602顯示屏53 程序設(shè)計(jì)83.1程序流程圖83.2時(shí)間顯示83.2.1 讀取時(shí)間83.2.2顯示時(shí)間93.3按鍵識(shí)別113.4時(shí)間設(shè)置123.4.1 光標(biāo)位置控制123.4.2 設(shè)置時(shí)間14參考文獻(xiàn)16附錄 程序清單171 緒論電子時(shí)鐘在我們生活中隨處可見,已經(jīng)不是一個(gè)稀奇的東西了。然而現(xiàn)在的各種電子時(shí)鐘雖然可能有著各種先進(jìn)的功能,但普遍存在一個(gè)缺點(diǎn)時(shí)鐘的控制按鍵都設(shè)置在時(shí)鐘上,要

2、想完成時(shí)間設(shè)置這一基本功能,必須拿到時(shí)鐘才能實(shí)現(xiàn)。尤其是對(duì)于那些壁掛式的電子時(shí)鐘,若每次設(shè)置的時(shí)候都要將其取下來必然帶來很大的不便。針對(duì)這一缺點(diǎn),本文闡述了一個(gè)普通電子時(shí)鐘的改進(jìn)方案。本次課程設(shè)計(jì)設(shè)計(jì)的電子時(shí)鐘,要求能夠計(jì)時(shí)年、月、日、時(shí)、分、秒和星期,并可以通過紅外遙控器設(shè)置時(shí)間,非常方便。計(jì)時(shí)部分采用DS1302時(shí)鐘芯片實(shí)現(xiàn)。該芯片有兩個(gè)電源引腳,在主電源掉電的情況下可由電池供電而繼續(xù)工作,從而避免了每次開機(jī)都需要重新設(shè)置時(shí)間的麻煩。顯示部分采用的是1602顯示屏,可以在一屏上顯示出所有時(shí)間信息,比數(shù)碼管顯示更加清晰。2 硬件設(shè)計(jì)本文設(shè)計(jì)的是一個(gè)電子時(shí)鐘。系統(tǒng)的時(shí)間從DS1302讀取。用戶

3、可以通過紅外遙控器設(shè)置系統(tǒng)時(shí)間。為了提高遙控器所發(fā)射信號(hào)的抗干擾能力,遙控器發(fā)射的紅外信號(hào)是經(jīng)過調(diào)制的,所以首先要經(jīng)過解碼器將原始信號(hào)從載波信號(hào)中分離出來。然后再由單片機(jī)對(duì)原始信號(hào)進(jìn)行處理,識(shí)別出當(dāng)前按下的按鍵并執(zhí)行相應(yīng)的命令,實(shí)現(xiàn)時(shí)間設(shè)置。最終由LCD1602顯示屏將時(shí)間顯示出來。系統(tǒng)工作原理如圖2.1所示。圖2.1 電子時(shí)鐘電路工作原理2.1 DS1302時(shí)鐘芯片2.1.1 管腳介紹DS1302時(shí)鐘芯片是本次設(shè)計(jì)的電子時(shí)鐘的時(shí)間來源。他和我們?nèi)粘=佑|的電子表差不多,可以對(duì)年月日、時(shí)分秒和星期計(jì)時(shí)??梢杂脝纹瑱C(jī)從DS1302中讀取時(shí)間放在液晶屏上顯示,也可以用單片機(jī)往DS1302里面寫入時(shí)間

4、進(jìn)行時(shí)間設(shè)置。這樣就可以實(shí)現(xiàn)一塊電子表的功能了。DS1302的工作電壓為2.0-5.5V,工作電流小于320 nA,所以在主電源斷開的情況下,僅需一塊電池任然能夠維持長(zhǎng)時(shí)間的工作。芯片能夠自動(dòng)完成大月小月以及閏年的計(jì)算,計(jì)時(shí)時(shí)間可到2100年。DS1302共有8個(gè)管腳,管腳圖如圖2.2所示。圖2.2 DS1302管腳圖其中X1,X2腳為32.768KHz晶振管腳,為芯片提供工作頻率,該晶振的精度直接影響到芯片的計(jì)時(shí)精度。2.1.2讀寫指令DS1302的一條指令一個(gè)字節(jié)8位,其中第七位(即最高位)是固定1,這一位如果是0的話,那寫進(jìn)去是無效的。第六位是選擇RAM還是CLOCK的,我前邊說過,我們

5、這里主要講CLOCK時(shí)鐘的使用,它的RAM功能我們不用,所以如果選擇CLOCK功能,第六位是0,如果要用RAM,那第六位就是1。從第五到第一位,決定了寄存器的5位地址,而第零位是讀寫位,如果要寫,這一位就是0,如果要讀,這一位就是1。DS1302有8個(gè)和時(shí)鐘有關(guān)的寄存器,5位地址分別是00000一直到00111這8個(gè)地址,還有一個(gè)寄存器的地址是01000,這是涓流充電所用的寄存器,程序中沒有用到。在DS1302的數(shù)據(jù)手冊(cè)里的地址,直接把第七位、第六位和第零位值給出來了,所以指令就成了80H、81H那些了,最低位是1,那么表示讀,最低位是0表示寫,如圖2.3所示。圖2.3 DS1302時(shí)鐘寄存器

6、從圖中可以看出,年月日、時(shí)分秒和星期都有各自的地址,且讀寫地址不同,所以只要先向芯片中寫入目標(biāo)地址,就可以從芯片中讀取時(shí)間或向芯片中寫入時(shí)間1。2.1.3 電路連接圖2.4 DS1302外部電路DS1302外部電路如圖2.4所示。SCLK腳、I/O腳和RST腳分別接單片機(jī)的P10、P11和P12腳,時(shí)鐘脈沖由單片機(jī)發(fā)出,根據(jù)三線之間的電平變化關(guān)系,可以實(shí)現(xiàn)從芯片中讀取時(shí)間或向芯片中寫入時(shí)間2。具體時(shí)序關(guān)系參見程序設(shè)計(jì)部分。2.2紅外遙控器紅外遙控器主要作用是設(shè)置時(shí)間,這里選用的遙控器采用的是TC9012芯片,該芯片可應(yīng)用于電視機(jī)、組合音響設(shè)備、錄音卡座、VCD、DVD播放機(jī)等設(shè)備的控制。由于我

7、們用到的的只是遙控器發(fā)出的紅外信號(hào),所以這里對(duì)芯片的工作原理不做詳細(xì)介紹。按下遙控器的不同按鍵可發(fā)出不同的紅外編碼,通過程序解碼后可判斷是哪一按鍵被按下,然后做相應(yīng)的處理。解碼原理將在程序設(shè)計(jì)部分介紹。紅外遙控器的接收器與單片機(jī)的連接關(guān)系如圖2.5所示3。圖2.5 紅外接收器電路圖接收器的1腳為信號(hào)輸出端,連接到單片機(jī)的3.2腳做外部中斷0的中斷源,同時(shí)連接到了LED1,通過LED指示接收器是否接收到了信號(hào)。2腳為電源負(fù)極,3腳為電源正極,這里接了一個(gè)0.1uF的電容,濾除電源中的雜波。接收器的作用是將接收到的紅外信號(hào)中的原信號(hào)與載波信號(hào)分離,得到原始信號(hào)。2.3 1602顯示屏LCD1602

8、是一種常用的簡(jiǎn)易顯示屏,可以顯示阿拉伯?dāng)?shù)字、英文大小寫字母以及一些簡(jiǎn)單的日文和符號(hào)等,但是不能顯示漢字。LCD1602模塊上固化了字模存儲(chǔ)器(CGROM和CGRAM),內(nèi)置了192個(gè)常用字符的字模,存于字符產(chǎn)生器CGROM(Character Generator ROM)中,還有8個(gè)允許用戶自定義的字符產(chǎn)生RAM,稱為CGRAM(Character Generator RAM)。DDRAM(Display Data RAM)是顯示數(shù)據(jù)RAM,用來寄存待顯示的字符代碼。DDRAM相當(dāng)于計(jì)算機(jī)的顯存,我們?yōu)榱嗽谄聊簧巷@示字符,就把字符代碼送入顯存,這樣該字符就可以顯示在屏幕上了。同理,為了在液晶屏

9、幕上顯示字符,把字符代碼送入DDRAM即可。1602的字符代碼與字符的ASCII碼一致。字符的顯示位置由字符寫入的顯存地址控制。1602共有80個(gè)字節(jié)的顯存,但顯示屏只有十六位,所以只用到了其中的16個(gè)字節(jié),第一行的八個(gè)字節(jié)的地址為0x800x87,第二行的八個(gè)位置對(duì)應(yīng)的地址是0xC00xC7。寫在這些地址外的內(nèi)容除非移動(dòng)屏幕否則不會(huì)被顯示。1602有16個(gè)引腳,如圖2.6所示(圖中從左往右依次是16腳到1腳)。圖2.6 1602引腳圖各個(gè)引腳的功能說明見表2-1。表2-1 1602引腳說明引腳號(hào)符號(hào)引腳說明引腳號(hào)符號(hào)引腳說明1VSS電源地9D2數(shù)據(jù)端口2VDD電源正極(+5V)10D3數(shù)據(jù)端

10、口3VO偏壓信號(hào)11D4數(shù)據(jù)端口4RS命令/數(shù)據(jù)12D5數(shù)據(jù)端口5RW讀/寫13D6數(shù)據(jù)端口6E使能14D7數(shù)據(jù)端口7D0數(shù)據(jù)端口15A背光正極8D1數(shù)據(jù)端口16K背光負(fù)極注:1. VO是液晶顯示的偏壓信號(hào),可接10K的3296精密電位器?;蛲瑯幼柚档腞M065/RM063藍(lán)白可調(diào)電阻。2. RS是命令/數(shù)據(jù)選擇引腳,接單片機(jī)的一個(gè)I/O,當(dāng)RS為低電平時(shí),選擇命令;當(dāng)RS為高電平時(shí),選擇數(shù)據(jù)。3. RW是讀/寫選擇引腳,接單片機(jī)的一個(gè)I/O,當(dāng)RW為低電平時(shí),向LCD1602寫入命令或數(shù)據(jù);當(dāng)RW為高電平時(shí),從LCD1602讀取狀態(tài)或數(shù)據(jù)。如果不需要進(jìn)行讀取操作,可以直接將其接VSS。4.

11、E為執(zhí)行命令的使能引腳,接單片機(jī)的一個(gè)I/O。5. D0D7,并行數(shù)據(jù)輸入/輸出引腳,可接單片機(jī)的P0P3任意的8個(gè)I/O口。如果接P0口,P0口應(yīng)該接4.7K10K的上拉電阻。如果是4線并行驅(qū)動(dòng),只須接4個(gè)I/O口。6. A背光正極,可接一個(gè)1047歐的限流電阻到VDD。7. K背光負(fù)極,接VSS。1602的電路連接圖如圖2.7所示。圖2.7 LCD1602電路連接圖數(shù)據(jù)位DB0DB7連接的是單片機(jī)的P0口,VO接10K的電位器用來調(diào)節(jié)顯示屏的對(duì)比度。3 程序設(shè)計(jì)3.1程序流程圖圖3.1 數(shù)字時(shí)鐘流程圖3.2時(shí)間顯示3.2.1 讀取時(shí)間DS1302的讀取時(shí)序如圖3.2所示。圖3.2 DS13

12、02讀時(shí)序RST引腳(復(fù)位引腳)標(biāo)號(hào)上面的一個(gè)橫杠表示此引腳低電平有效,也即給它低電平后芯片復(fù)位,不能正常工作4。所以欲使芯片正常工作,此引腳應(yīng)該給高電平,從時(shí)序圖中也可以看出,我們進(jìn)行寫操作的時(shí)候RST引腳應(yīng)該置為高電平。再看SCLK時(shí)鐘引腳和IO引腳。圖中的前八位的黑色箭頭表示寫入的數(shù)據(jù)在上升沿鎖存,后八位的黑色箭頭表示下降沿讀取數(shù)據(jù)。也就是說如果我們要從DS1302里面讀出一位二進(jìn)制數(shù)據(jù),首先應(yīng)該把SCLk引腳拉高,然后把SCLK拉低(在SCLK拉低的一瞬間DS1302的數(shù)據(jù)送到了IO端口上),再把IO口上的數(shù)據(jù)存入變量,此時(shí)就讀到了一位二進(jìn)制數(shù)據(jù)。還有一點(diǎn)需要注意,讀數(shù)據(jù)的時(shí)候先讀低位

13、,后讀高位,且要先寫地址,后讀數(shù)據(jù)。從R/的符號(hào)中可以看出,寫地址時(shí),如果最低位寫入的是0這說明是要往芯片里寫數(shù)據(jù),在輸入完第一個(gè)字節(jié)后,芯片會(huì)等待輸入數(shù)據(jù);如果最低位寫入的是1,則是從芯片讀取數(shù)據(jù),在寫完地址后芯片會(huì)在串行時(shí)鐘的控制下輸出時(shí)間數(shù)據(jù)。要注意的是,芯片在寫完一個(gè)字節(jié)后的第一個(gè)下降沿就開始輸出時(shí)間,中間沒有間隔。從DS1302直接讀取的是時(shí)間的8421BCD碼,前四位儲(chǔ)存的是十位數(shù)的二進(jìn)制值,后四位是給位數(shù)的二進(jìn)制值。經(jīng)time = time/16*10+time%16;這步運(yùn)算后將其轉(zhuǎn)化為十進(jìn)制數(shù)并作為函數(shù)的返回值。3.2.2顯示時(shí)間1602顯示屏的寫操作分為寫命令和寫數(shù)據(jù)兩種。

14、寫命令包括清屏、光標(biāo)歸位、顯示屏開關(guān)以及是否顯示光標(biāo)等。詳細(xì)指令集可查閱1602元件手冊(cè)。寫入數(shù)據(jù)前先寫入命令將光標(biāo)移動(dòng)到要顯示該數(shù)據(jù)的位置。寫入數(shù)據(jù)后,根據(jù)設(shè)置光標(biāo)自動(dòng)向左或向右移動(dòng)一位。所以如果是寫連續(xù)顯示的幾位的話可以不必每次都寫入光標(biāo)移動(dòng)命令。執(zhí)行寫操作時(shí)RW腳要清零,此時(shí)若RS腳也清零則為寫命令,否則為寫數(shù)據(jù),寫時(shí)序圖如圖3.3所示。圖3.3 1602寫時(shí)序圖先將使能端E電平拉低,然后將R/W腳電平拉低,根據(jù)寫命令還是寫數(shù)據(jù)設(shè)置好RS腳的電平,把要寫入的數(shù)據(jù)放到P0口,這樣便做好了寫的準(zhǔn)備工作。這時(shí)再將E腳電平置1即可將P0的數(shù)據(jù)寫入1602。1602執(zhí)行某些指令需要花費(fèi)較長(zhǎng)的時(shí)間,

15、當(dāng)上條指令沒有執(zhí)行完時(shí)是無法接收下一條指令的。所以在寫指令之前要進(jìn)行判忙,以免指令丟失。利用以上兩個(gè)函數(shù)便可實(shí)現(xiàn)顯示功能,如以下兩個(gè)函數(shù)分別可以實(shí)現(xiàn)在指定位置顯示一個(gè)字符和字符串。void WriteChar(int x,int y,char charData)/在(x,y)處顯示字符charDataif(y = = 0)WriteCommand(0x80+x);/寫入要顯示的位置elseWriteCommand(0xC0+x);WriteData(charData);/寫入顯示的內(nèi)容void WriteString(int x,int y,char* string)/從(x,y)處顯示字符串

16、string/addx = x;/addy = y;if(y = = 0)WriteCommand(0x80+x);elseWriteCommand(0xC0+x);while(*string) /循環(huán)發(fā)送所有字符,每寫完一個(gè)字符光標(biāo)自動(dòng)右移一位WriteData(*string);string+;3.3按鍵識(shí)別遙控器按鍵按下后會(huì)發(fā)射不同編碼,這些編碼的結(jié)構(gòu)為:起始碼,兩位客戶碼,數(shù)據(jù)碼和數(shù)據(jù)碼的反碼。如圖3.4所示。圖3.4 紅外遙控器編碼結(jié)構(gòu)對(duì)于同一款遙控器,每個(gè)按鍵的起始碼和客戶碼是相同的,數(shù)據(jù)碼不同用以區(qū)分不同按鍵。該芯片以一個(gè)持續(xù)4.5ms的高電平和4.5ms的低電平作為起始碼,只有

17、收到起始碼后才認(rèn)為有按鍵按下,這樣可以有效的避免外界干擾。除起始碼外,剩下的每一位都以一個(gè)0.56ms的高電平開始,根據(jù)該高電平與接下來的低電平持續(xù)的總時(shí)間來區(qū)別0和1:若總時(shí)間為1.125ms則為0,若總時(shí)間為2.25ms則為1。如圖3.5所示。圖3.5 0與1的電平持續(xù)時(shí)間圖因?yàn)槊總€(gè)按鍵的碼值都是可以檢測(cè)出來的,這樣在解讀到碼值時(shí)通過對(duì)比的方法就可以確定是哪一個(gè)按鍵按下了。為了增強(qiáng)抗干擾能力,發(fā)送的紅外信號(hào)是經(jīng)過調(diào)制的,在接收端由硬件將原是新號(hào)從載波信號(hào)中分離出來。但分離出來的信號(hào)的電平高低與原始信號(hào)正好相反,這樣原始信號(hào)中的上升沿在接收后就變成了下降沿,所以信號(hào)的每一位開始時(shí)都會(huì)有一個(gè)下

18、降沿。這里采用了中斷處理的方式,保證響應(yīng)的及時(shí)性。從圖3.5中可以看出,起始碼的判斷沒有區(qū)分高電平4.5ms和低電平4.5ms,但在程序中可以只確保了起始碼的總時(shí)間,只要這個(gè)總時(shí)間在8ms11ms區(qū)間內(nèi),只都認(rèn)為收到了起始碼。這樣做放寬了接收條件,可以更好的接收按鍵信號(hào)。因?yàn)榭蛻舸a加數(shù)據(jù)碼總共32位,而unsigned long 型在單片機(jī)中占4個(gè)字節(jié),也是32位,正好可以儲(chǔ)存下遙控編碼。所以可以定義一個(gè)unsigned long 型的變量?jī)?chǔ)存碼值。3.4時(shí)間設(shè)置3.4.1 光標(biāo)位置控制程序啟動(dòng)后默認(rèn)不顯示光標(biāo),當(dāng)檢測(cè)到設(shè)置鍵按下后才會(huì)顯示閃爍的光標(biāo)。光標(biāo)有兩個(gè)作用,一是提示用戶當(dāng)前是在哪一位

19、輸入,二是可以幫助用戶更快速的完成設(shè)置。如當(dāng)前的時(shí)間年月日、星期以及小時(shí)都是對(duì)的,只需要對(duì)分鐘做一下調(diào)整,沒有光標(biāo)用戶需要把所有的信息輸入一次,而有了光標(biāo)只需要把光標(biāo)移動(dòng)到分鐘的位置輸入分鐘的值就可以了。另外,時(shí)間在屏幕上的顯示如圖3.6所示,在設(shè)置時(shí)間的時(shí)候光標(biāo)的移動(dòng)應(yīng)該跳過“/”“:”的位置和無字符的位置,所以必須對(duì)光標(biāo)的位置進(jìn)行控制。圖3.6 LCD1602顯示時(shí)間光標(biāo)位置調(diào)整用到了讀取1602屏幕上顯示的內(nèi)容,所以先對(duì)如何獲取顯示內(nèi)容做一個(gè)介紹。要用到讀取操作首先要將R/W置1,若讀取指令,RS置1,若讀取數(shù)據(jù),RS清零。1602的讀取時(shí)序圖如圖3.7所示。圖3.7 1602讀操作時(shí)序

20、圖讀操作與寫操作的區(qū)別是R/W腳置1,P0口的值是有1602控制的而不是有單片機(jī)設(shè)置。在E由0變1的t0時(shí)間后P0口得到所需的數(shù)據(jù)。因?yàn)橐xP0口,所以在對(duì)之前要把P0口置1。1602中雖然有讀數(shù)據(jù)和讀命令的操作,但無法直接讀取光標(biāo)當(dāng)前位置,所以只能定義兩個(gè)變量addx、addy來儲(chǔ)存當(dāng)前光標(biāo)位置(x,y),變量的值隨光標(biāo)位置的改變而改變,這樣通過查詢addx和addy的值就可以知道光標(biāo)當(dāng)前位置了5。因?yàn)樾枰脩粼O(shè)置的內(nèi)容都是數(shù)字,所以光標(biāo)需要停留的位置必然是數(shù)字。光標(biāo)每一移動(dòng)一次都讀取一次當(dāng)前位置顯示的內(nèi)容,若是數(shù)字則停留,否則繼續(xù)向下移動(dòng)一位,直到找到數(shù)字為止。程序如下:void Move

21、Cursor(char dir)/光標(biāo)移動(dòng)函數(shù),dir為移動(dòng)方向,若為0則不動(dòng)if(!IsSettingTime)/如果不在設(shè)置時(shí)間則不移動(dòng)return;if(dir = = LEFT)/左方向鍵按下,光標(biāo)左移一位 addx-;while(!(ReadData(addx,addy)=0 & ReadData(addx,addy)=0 & ReadData(addx,addy)=0 & ReadData(addx,addy)15)/坐標(biāo)超過屏幕顯示范圍,歸零,循環(huán)移動(dòng)addx = 0;else if(addx 0)addx = 15;if(addy)/執(zhí)行移動(dòng)光標(biāo)命令,真正將光標(biāo)移動(dòng)到(addx

22、,addy)處WriteCommand(0xC0+addx);/第二行elseWriteCommand(0x80+addx);/第一行程序先是對(duì)坐標(biāo)位置標(biāo)識(shí)變量進(jìn)行運(yùn)算,此時(shí)并沒有真正改變光標(biāo)位置,待找到合適的光標(biāo)位置后再通過光標(biāo)移動(dòng)指令一次性移動(dòng)到該位置。因?yàn)槠聊恢挥袃尚?,所以上下方向鍵的行為是一樣的,都是換行,沒有必要分別處理。光標(biāo)每移動(dòng)一次都調(diào)用這個(gè)函數(shù)進(jìn)行判斷,這樣看上去光標(biāo)就只是在我們想要的位置移動(dòng)了。3.4.2 設(shè)置時(shí)間本次設(shè)計(jì)中遙控器上共定義了設(shè)置鍵、確認(rèn)鍵、退出鍵、上下左右方向鍵和09十個(gè)數(shù)字鍵等幾個(gè)按鍵。在設(shè)置鍵按下之前,系統(tǒng)忽略所有的輸入。用戶要想設(shè)置時(shí)間,首先要按下設(shè)置鍵

23、。按下設(shè)置鍵后系統(tǒng)進(jìn)入設(shè)置模式,出現(xiàn)閃爍的光標(biāo),表示用戶當(dāng)前正在設(shè)置哪一位。用戶可以直接鍵入所有時(shí)間位的數(shù)值,也可以通過方向鍵將光標(biāo)移動(dòng)到需要修改的地方,然后按下相應(yīng)的數(shù)字鍵設(shè)置該位的值。用戶在輸入完時(shí)間后若確認(rèn)想修改時(shí)間,可按下遙控器上的確認(rèn)鍵,這時(shí)程序讀取屏幕上當(dāng)前顯示的時(shí)間,并將這一新的時(shí)間數(shù)據(jù)寫入到DS1302芯片;若想放棄修改,則可按下退出鍵,這時(shí)不會(huì)對(duì)1302的時(shí)間產(chǎn)生任何影響,屏幕上繼續(xù)顯示當(dāng)前時(shí)間。無論用戶按下確認(rèn)鍵還是退出鍵系統(tǒng)都會(huì)退出設(shè)置模式,隱藏光標(biāo),繼續(xù)顯示1302中的時(shí)間。至此,一個(gè)可用遙控設(shè)置時(shí)間的時(shí)鐘程序已全部完成。參考文獻(xiàn)1 陳權(quán)昌,李興富.單片機(jī)原理及應(yīng)用.廣

24、州:華南理工大學(xué)出版社,2007.8.2 楊志忠.數(shù)字電子技術(shù).北京:高等教育出版社,2003.12.3 及力.Protel 99 SE原理圖與PCB設(shè)計(jì)教程.北京:電子工業(yè)出版社,2007.8.4 徐江海.單片機(jī)實(shí)用教程.北京:機(jī)械工業(yè)出版社,2006.12. 5 李慶亮.C語言程序設(shè)計(jì)實(shí)用教程.北京:機(jī)械工業(yè)出版社,2005.3. 附錄 程序清單1.DS1302讀取時(shí)間的程序。sbit timeClk = P10;sbit timeData = P11;sbit timeRst = P12;UCHAR ReadTimeByte(UCHAR addr)UCHAR i, time = 0;ti

25、meRst = timeClk = 0;timeRst = 1; addr |= 0x01;/最低位置1,進(jìn)入讀狀態(tài)(先寫地址后讀數(shù)據(jù))for(i=0;i= 1;if(timeData & 0x01)/讀取第一位time |= 0x80;elsetime &= 0x7f;for(i=0;i= 1;if(timeData & 0x01)time |= 0x80;elsetime &= 0x7f;timeRst = 0;time = time/16*10+time%16;/8421BCD轉(zhuǎn)常規(guī)數(shù)字return time;2.1602寫命令程序:id WriteCommand(unsigned ch

26、ar com)/寫命令函數(shù),com為寫入的命令while(CheckBusy();/CheckBusy( )為判忙函數(shù)WC;/#define WC RS = 0; RW = 0 寫入命令EN = 1;/使能端置1Data = com;/數(shù)據(jù)發(fā)到P0口_nop_();/空指令,延時(shí)EN = 0; /下降沿寫入指令3. 1602寫數(shù)據(jù)程序:void WriteData(unsigned char charData)/寫指令函數(shù),com為寫入的指令while(CheckBusy();/addx+;WD;/#define WD RS = 1;RW = 0 寫入數(shù)據(jù)EN = 1;Data = charData;_nop_();EN = 0; /下降沿寫入數(shù)據(jù)4. 紅外遙控器按鍵識(shí)別的程序:void infrafedSignal( ) interrupt 0/判斷起始碼if(counter30 & counter60)/30=8000us/256us,60=11000us/256usflag = 1;num = 0;counter = 0;else if(num = = 0)ET1 = 1;TR1 = 1;counter = 0;if(flag)num+;signal 7) signal |= 1;if(nu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論