基于WIFI模塊和單片機(jī)的無(wú)線數(shù)據(jù)傳輸附代碼_第1頁(yè)
基于WIFI模塊和單片機(jī)的無(wú)線數(shù)據(jù)傳輸附代碼_第2頁(yè)
基于WIFI模塊和單片機(jī)的無(wú)線數(shù)據(jù)傳輸附代碼_第3頁(yè)
基于WIFI模塊和單片機(jī)的無(wú)線數(shù)據(jù)傳輸附代碼_第4頁(yè)
基于WIFI模塊和單片機(jī)的無(wú)線數(shù)據(jù)傳輸附代碼_第5頁(yè)
已閱讀5頁(yè),還剩33頁(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、工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Project3 課程設(shè)計(jì)2014-2015 學(xué)年第二學(xué)期班 級(jí): 浦電子 1203 組員: 組員學(xué)號(hào): 指導(dǎo)老師:武曉光,胡方強(qiáng),包亞萍 袁建華,毛錢萍2015年 7月 8日目錄第一章階段任務(wù)第二章1.4基于 WIFI 模塊的無(wú)線數(shù)據(jù)傳輸?shù)脑?時(shí)鐘模塊最小單片機(jī)系統(tǒng)的原理溫度傳感器 DS18B20 串口1.5 WIFI 模塊第三章2.1基于 WIFI 模塊的無(wú)線數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)WIFI 模塊設(shè)置2.2串口部分設(shè)置2.3調(diào)試與運(yùn)行過(guò)程第四章程序與框圖第五章小結(jié)第一章 階段任務(wù):第一階段(1天) 1、了解課程所給的 WIFI 模塊,并詳細(xì)研讀其說(shuō)明書

2、2 、復(fù)習(xí)單片機(jī)知識(shí)(2 天) 1、了解溫濕度傳感器模塊,并設(shè)計(jì)其硬件模塊2 、了解 lcd1602 顯示模塊,并設(shè)計(jì)其硬件模塊(2天) 1、設(shè)計(jì)整合電路: 5v轉(zhuǎn) 3.3v 電路2 、串口通訊電路第二階段(4 天) 1 、并完成整體電路圖的設(shè)計(jì),并檢查2 、焊接電路并調(diào)試。第三階段(3 天) 1、根據(jù)設(shè)計(jì)的硬件模塊設(shè)計(jì)程序 (1):溫濕度傳感器模塊 (2):串口通訊模塊 ( 3): WIFI 傳輸與接收模塊 ( 4):顯示電路模塊(3 天) 2、將設(shè)計(jì)好的模塊程序燒錄到單片機(jī),調(diào)試第四階段: 2 天2 天)寫報(bào)告第二章 基于 WIFI 模塊的無(wú)線數(shù)據(jù)傳輸?shù)脑頃r(shí)鐘 DS1302模塊:電路原理

3、圖: DS1302 與單片機(jī)的連接也僅需要 3 條線: CE引腳、 SCLK串行時(shí)鐘引腳、 I/O 串行數(shù)據(jù)引腳, Vcc2 為備用電源,外接 32.768kHz 晶振,為芯片提供計(jì)時(shí)脈沖。讀寫時(shí)序說(shuō)明: DS1302 是 SPI 總線驅(qū)動(dòng)方式。它不僅要向寄存器寫入控制字,還需要讀取 相應(yīng)寄存器的數(shù)據(jù)??刂谱挚偸菑淖畹臀婚_(kāi)始輸出。在控制字指令輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入 DS1302,數(shù)據(jù)輸入從最低位(0 位)開(kāi)始。同樣,在緊跟 8 位的控制字指令后的下一個(gè) SCLK脈沖的下降沿,讀出 DS1302 的數(shù)據(jù),讀出的數(shù)據(jù)也是從最低位到最高位。數(shù)據(jù)讀寫時(shí)序如圖單字節(jié)讀Q. nn

4、nnnnnnnnnnnnn_(R 麗AO A1 | A2 | A3 | A4 陀| 1 ” 切 | D1D2 | D3 | D4 | D5 | D6 | D7單字節(jié)寫nfwwmjwuwwiRAVA0A1A2A3A4R/C1DOD1D2D3D4D5D6D7圖7數(shù)據(jù)讀寫時(shí)序單片機(jī)最小系統(tǒng)的原理:說(shuō)明復(fù)位電路 :由電容串聯(lián)電阻構(gòu)成 ,由圖并結(jié)合 電容電壓不能突變 的性質(zhì) ,可以知道 ,當(dāng)系統(tǒng) 一上電 ,RST 腳將會(huì)出現(xiàn)高電平 ,并且, 這個(gè)高電平持續(xù)的時(shí)間由電路的RC值來(lái)決定 .典型的51單片機(jī)當(dāng) RST腳的高電平持續(xù)兩個(gè)機(jī)器周期以上就將復(fù)位, 所以, 適當(dāng)組合 RC的取值就可以保證可靠的復(fù)位 .

5、晶振電路 :典型的晶振取 11.0592MHz(因?yàn)榭梢詼?zhǔn)確地得到 9600 波特率和 19200 波特率 ,用于有串口通訊的場(chǎng)合 )/12MHz( 產(chǎn)生精確的 uS級(jí)時(shí)歇 , 方便定時(shí)操作 )單片機(jī) :一片 AT89S51/52 或其他 51系列兼容單片機(jī)特別注意 :對(duì)于 31 腳(EA/Vpp), 當(dāng)接高電平時(shí) ,單片機(jī)在復(fù)位后從部ROM的 0000H 開(kāi)始執(zhí)行 ;當(dāng)接低電平時(shí) , 復(fù)位后直接從外部 ROM的 0000H 開(kāi)始執(zhí)行 .溫度傳感器 DS18B20的原理(連接到單片機(jī)最小系統(tǒng),并將溫度發(fā)送給WIFI 模塊) :3.1.1 DS18B20 性能特點(diǎn)(1) 獨(dú)特的單線接口方式,只需

6、一個(gè)接口引腳即可通信;(2) 每一個(gè) DS18B20都有一個(gè)唯一的 64 位 ROM序列碼;(3) 在使用中不需要任何外圍元件;(4) 可用數(shù)據(jù)線供電,電壓圍 :+3.0V-+5.5 V ;(5) 測(cè)溫圍 :-55 -+125 ,在 -10 -+85 圍精度為 +0.5 ,分辨率為 0.0625 ;(6) 通過(guò)編程可實(shí)現(xiàn) 9-12 位的數(shù)字讀數(shù)方式。溫度轉(zhuǎn)換成 12 位數(shù)字信號(hào)所需時(shí)間最長(zhǎng)為 750ms,而在 9 位分辯模式工作時(shí)僅需 93.75ms ;(7) 用戶可自設(shè)定非易失性的報(bào)警上下限值;(8) 告警搜索命令可識(shí)別和定位那些超過(guò)報(bào)警限值的DS18B20;(9) 多個(gè) DS18B20可以

7、并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫;(10) 電源極性接反時(shí), DS18B20不會(huì)因發(fā)熱而燒毀,但不能正常工作;3.1.2 DS18B20 部存儲(chǔ)器及溫度數(shù)據(jù)格式對(duì)于 DS18B20部存儲(chǔ)器結(jié)構(gòu)(如圖 3.1 ),它包括一個(gè)暫存 RAM和一個(gè)非易失性電可擦 除 EERAM后, 者存放報(bào)警上下限 TH、TL。當(dāng)改變 TH、T L 中的值時(shí),數(shù)據(jù)首先被寫進(jìn)暫存器 的第二、三字節(jié)中,主機(jī)可再讀出其中容進(jìn)行驗(yàn)證 。如果正確 ,當(dāng)主機(jī)發(fā)送復(fù)制暫存器命令, 暫存器的第二、三字節(jié)將被復(fù)制到TH、TL 中,這樣處理有利于確保該數(shù)據(jù)在單總線上傳輸?shù)耐暾?7 。暫存器結(jié)構(gòu) EERAM 結(jié)構(gòu)溫度低字節(jié)(BYTE0)

8、溫度高字節(jié)(BYTE1)TH上限報(bào)警溫度TH(BYTE2)下限報(bào)警溫度TL(BYTE3)TL結(jié)構(gòu)寄存器(BYTE4)結(jié)構(gòu)寄存器保留(BYTE5)保留(BYTE6)保留(BYTE7)CRC( BYTE8)圖 3.1 DS18B20 結(jié)構(gòu)框圖暫存存儲(chǔ)器作用是在單線通信時(shí)確保數(shù)據(jù)的完整性,它由8 字節(jié)組成,頭兩個(gè)字節(jié)表示測(cè)得的溫度讀數(shù) 。以 12 位轉(zhuǎn)化為例說(shuō)明溫度高低字節(jié)存放形式 ( 溫度的存儲(chǔ)形式如表 3.1 ) 及計(jì)算: 12位轉(zhuǎn)化后得到的 12位數(shù)據(jù),存儲(chǔ)在 18B20的兩個(gè)高低 8 位的 RAM中,二進(jìn)制中 的前面 5 位是符號(hào)位。如果測(cè)得的溫度大于0,這 5 位為 0,只要將測(cè)到的數(shù)值乘

9、于 0.0625即可得到實(shí)際溫度 ;如果溫度小于 0,這 5 位為 1,測(cè)到的數(shù)值需要取反加 1,再乘于 0.0625 才能得到實(shí)際溫度 8 。表 3.1 溫度的存儲(chǔ)形式高 8 位SSSSS626525424低 8 位232221202-12-22-32-4S=1 時(shí)表示溫度為負(fù), S=0 時(shí)表示溫度為正,其余低位以二進(jìn)制補(bǔ)碼形式表示,最低位為 1 時(shí)表示 0.0625 。溫度 / 數(shù)字對(duì)應(yīng)關(guān)系如表 3.2 所示。表 3.2 DS18B20 溫度 / 數(shù)字對(duì)應(yīng)關(guān)系表溫度()輸出的二進(jìn)制碼對(duì)應(yīng)的十六進(jìn)制碼+1250000 0111 1101 000007D0H+850000 0101 0101

10、00000550H+25.06250000 0001 1001 00010191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0110 1110FF5EH-25.06251111 1110 0110 1111FF6FH-551111 1100 1001 0000FC90HDS18B20有六條控制命令,如表 3.3 所示:表 3.3 控制命令指令約定代碼操 作 說(shuō) 明溫度轉(zhuǎn)換44H啟動(dòng)

11、 DS18B20進(jìn)行溫度轉(zhuǎn)換讀暫存器BEH讀暫存器 9 個(gè)字節(jié)容寫暫存器4EH將數(shù)據(jù)寫入暫存器的 TH、 TL字節(jié)復(fù)制暫存器48H2把暫存器的 TH、TL 字節(jié)寫到 E2RAM中2重新調(diào) E2RAMB8H2把 E2RAM中的 TH、 TL字節(jié)寫到暫存器 TH、TL 字節(jié)讀電源供電方式B4H啟動(dòng) DS18B20發(fā)送電源供電方式的信號(hào)給主CPU3.1.3 DS18B20 操作命令及時(shí)序特性DS18B20對(duì)讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求 ,它是在一根 I/O 線上讀寫數(shù)據(jù)的 。同時(shí),DS18B20為了保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性,它有著嚴(yán)格的通信協(xié)議。DS18B20每一步操作都要遵循嚴(yán)格的工作時(shí)

12、序和通信協(xié)議, 如主機(jī)控制 DS18B20完成溫度轉(zhuǎn)換這一過(guò)程, 根據(jù) DS18B20的通訊協(xié)議,須經(jīng)三個(gè)步驟:每一次讀寫之前都要對(duì)DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條 ROM指令,最后發(fā)送 RAM指令,這樣才能對(duì) DS18B20進(jìn)行預(yù)定的操作 。該 協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè) 備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫時(shí)序開(kāi)始 的,如果要單總線器件送回?cái)?shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)的接收。另 外,數(shù)據(jù)和命令的傳輸都是低位在先 9 。( 1) DS18B20的復(fù)位時(shí)序主機(jī)控制 DS18B20

13、完成任何操作之前必須先初始化 ,即主機(jī)發(fā)一復(fù)位脈沖 (最短為 480s 的低電平),接著主機(jī)釋放總線進(jìn)入接收狀態(tài) ,DS18B20在檢測(cè)到 I/0 引腳上的上升沿之后, 等待 1560s,然后發(fā)出存在脈沖 (60240) s的低電平。如圖 3.2 所示。( 2) DS18B20的讀時(shí)序DS18B20的讀時(shí)序分為讀 0 時(shí)序和讀 1 時(shí)序兩個(gè)過(guò)程。 DS18B20的讀時(shí)序是從主機(jī)把單總線拉低后,在 15 秒之就得釋放單總線,從而讓 DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。 DS18B20完成一個(gè)讀時(shí)序的過(guò)程,至少需要 60s。如圖 3.3 所示。圖 3.2 DS18B20 的復(fù)位時(shí)序圖 3.3 DS

14、18B20 的讀時(shí)序3) DS18B20的寫時(shí)序DS18B20的寫時(shí)序同讀時(shí)序一樣,仍然分為寫0時(shí)序和寫 1 時(shí)序兩個(gè)過(guò)程。DS18B20寫 0 時(shí)序和寫 1時(shí)序的要求不同 ,當(dāng)要寫 0 時(shí)序時(shí),單總線要被拉低至少 60,s 保證 DS18B20能夠在 15s到 45s之間能正確地采樣 I/O 總線上的“ 0”電平,當(dāng)要寫 1 時(shí)序時(shí),單總線被拉低之后,在15s之就得釋放單總線。如圖 3.4 所示。圖 3.4 DS18B20 的寫時(shí)序由 DS18B20的通訊協(xié)議得知,主機(jī)控制 DS18B20完成溫度轉(zhuǎn)換的過(guò)程必須經(jīng)過(guò)三個(gè)步 驟:每一次讀寫之前都要對(duì) DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條R

15、OM指令,最后發(fā)送RAM指令,從而對(duì) DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉 500s,然后釋放, DS18B20收到信號(hào)后等待 1660s左右,然后發(fā)出 60240s的存在低脈沖,主 CPU收到此信號(hào)表示復(fù)位成功。串口部分 (讓 WIFI 與電腦,單片機(jī)進(jìn)行通訊)串口原理圖:80C51串行口的結(jié)構(gòu)圖:80C51 串行口的工作方式 : 方式 1方式 1是 10 位數(shù)據(jù)的異步通信口。 TXD為數(shù)據(jù)發(fā)送引腳, RXD為數(shù)據(jù)接收引腳, 傳送 幀數(shù)據(jù)的格式如圖所示。其中 1位起始位, 8 位數(shù)據(jù)位, 1位停止位。TXD1、方式 1 輸出 寫入SBUF停止位TI (中斷標(biāo)志)方式 1

16、 輸入RXD起始 D0D1 D2 D3 D4 D5 D6D7停止位位采樣脈沖RI(中斷標(biāo)志)用軟件置 REN為 1 時(shí),接收器以所選擇波特率的 16 倍速率采樣 RXD引腳電平,檢測(cè)到 RXD 引腳輸入電平發(fā)生負(fù)跳變時(shí),則說(shuō)明起始位有效,將其移入輸入移位寄存器,并開(kāi)始接收這 一幀信息的其余位。接收過(guò)程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄 存器最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng)RI=0,且 SM2=0(或接收到的停止位為 1)時(shí),將接收到的 9 位數(shù)據(jù)的前 8 位數(shù)據(jù)裝入接收 SBUF,第 9 位(停止位)進(jìn)入 RB8,并置 RI=1 ,向 CPU請(qǐng)求中斷始位 1 位,數(shù)據(jù)

17、 9位(含 1位附加的第 9位,發(fā)送時(shí)為 SCON中的 TB8,接收時(shí)為 RB8), 停止位 1 位,一幀數(shù)據(jù)為 11 位。方式 2 的波特率固定為晶振頻率的 1/64 或 1/32 ,方式 3 的波特率由定時(shí)器 T1 的溢出率決定。 WIFI 模塊:使用接口:1 電源接口系統(tǒng)采用標(biāo)準(zhǔn)電源插座,外徑 5.5mm 徑 2.1mm的標(biāo)準(zhǔn)尺寸,正外負(fù),輸入電壓圍548V,電流 350mA2 指示燈ID名稱描述1Power設(shè)備供電后亮2Ready部 Linux 系統(tǒng)啟動(dòng)完成后亮3Link網(wǎng)絡(luò)連接建立后亮4RXD本設(shè)備的串口收到數(shù)據(jù)閃爍5TXD本設(shè)備通過(guò)串口向外發(fā)送數(shù)據(jù)時(shí)閃爍2.3 RS232 接口設(shè)備

18、的串口為公口 (針),RS232 電平 (可以直接連電腦串口的電平 ) ,引腳順序與計(jì)算機(jī)的 COM口 保持一致,與電腦連接時(shí)需要用交叉線 (2-3 交叉, 7-8 交叉, 5-5 直連, 7-8 可以 不接但是一定不能直連電腦 ,否則可能導(dǎo)致工作不正常 ) ,一共有 6 根線有定義 ,其余懸空。序號(hào)名稱描述2RXD設(shè)備數(shù)據(jù)接收引腳3TXD設(shè)備數(shù)據(jù)發(fā)送引腳GND信號(hào)地RTS請(qǐng)求發(fā)送CTS清除發(fā)送VCC默認(rèn)未使用, PCB 上有個(gè)焊盤跳線,需要 時(shí)可以將它與設(shè)備的電源輸入正極連接, 用于給串口傳感器供電或者外部通過(guò)串口 線給設(shè)備供電。第三章 基于 WiFi 模塊的無(wú)線傳輸?shù)膶?shí)現(xiàn)2.1 WIFI

19、模塊的設(shè)置O O V 5- 10.10.10) 254X +TM濟(jì)南有人物聯(lián)網(wǎng)技術(shù)有限公司Jinan USR I0T Co. Ltd. Us .cn今.AM摂人點(diǎn).過(guò)百予串尺其它設(shè)宣中文OapjC:門低為捋入蟲孜式(AP) sotu創(chuàng)洼、Ml禪和僭千機(jī)、進(jìn)18、平抵屯 冬接入.梅齊諛盍情壬入“元鉄接入點(diǎn)談ST TT面O Station 桎式:MFI松禍彌擊ST巧刃超加入AI躋巾闿創(chuàng)岸朗.沖阿爲(wèi)。汁滝齊設(shè)舌林烘 式計(jì)左切無(wú)統(tǒng)綽湍參咖右設(shè)巻.相關(guān)E百詰逵入“元核蝕設(shè)置頁(yè)面無(wú)銭接入卓參數(shù)設(shè)置確定確定串口及網(wǎng)絡(luò)協(xié)議設(shè)置設(shè)置模塊應(yīng)用程序的串口參數(shù)及網(wǎng)貉協(xié)議參數(shù)。確定取消確定取消2.

20、2 串口部分設(shè)置2.3 調(diào)試:運(yùn)行過(guò)程:?jiǎn)纹瑱C(jī)首先運(yùn)行, 然后對(duì) DS18B20和 DS1302,LCD1602進(jìn)行初始化,接著對(duì) DS18B20和 DS1302 進(jìn)行寫設(shè)置,讀取溫度和時(shí)間, 單片機(jī)處理數(shù)據(jù), 將其在 LCD1602上顯示, 單片機(jī)進(jìn)行串口 初始化并通過(guò)串口程序?qū)囟群蜁r(shí)間準(zhǔn)備好, 等到串口接收到相應(yīng)的信號(hào), 在發(fā)送數(shù)據(jù)。 在 程序檢測(cè)溫度, 若溫度超過(guò)設(shè)定的值 (值可通過(guò)終端修改) ,將發(fā)出報(bào)警信號(hào)。蜂鳴器報(bào)警, 待溫度下降后(可通過(guò)終端打開(kāi)降溫系統(tǒng)) ,蜂鳴器關(guān)閉。第五章 程序與框圖程序:#include#include#include #define uchar uns

21、igned char#define uint unsigned int sbit DQ=P20; sbit lcden=P34;sbit lcdrs=P35; sbit dula=P26;sbit wela=P27;時(shí)鐘信號(hào)線信號(hào)線 片選, 也是 RST/sbit led=P10; sbit sclk=P14; / sbit io=P15; / sbit ce=P16; / sbit buzz=P23; sbit ledle=P25;unsigned int temp,temp1,temp2,temper,xs,flag,a,s,cc; unsigned char j;uchar code d

22、ay=1234567;uchar shi,fen,miao,nian,yue,ri;uchar cdflag;uchar code number=0123456789;sbit ACC0 = ACC0; / 定義寄存器 ACC的零位 sbit ACC7 = ACC7;void delay1(unsigned int m) unsigned int i,j; for(i=m;i0;i-) for(j=110;j0;j-);void delay(unsigned int m)while(m-); DS18B20*void Init_DS18B20()unsigned char x=0;DQ=1;d

23、elay(8);DQ=0;delay(80);DQ=1;delay(4);x=DQ;delay(20);uchar ReadOneChar()unsigned char i=0;unsigned char dat=0;for(i=8;i0;i-)DQ=0;dat=1;DQ=1;if(DQ)dat|=0x80;delay(4);return(dat);void WriteOneChar(unsigned char dat)unsigned char i=0;for(i=8;i0;i-)DQ=0;DQ=dat&0x01; delay(5);DQ=1;dat=1;void duwendu()unsi

24、gned char a=0;unsigned char b=0; Init_DS18B20();WriteOneChar(0xcc);WriteOneChar(0x44); delay(5); Init_DS18B20();WriteOneChar(0xcc);/ 去除高四位,即正負(fù)位WriteOneChar(0xbe); delay(5); a=ReadOneChar(); b=ReadOneChar(); temp1=(b4; / 個(gè)位temp2=a&0x0f; / 小數(shù) temp=(b*256+a)4); / 整數(shù) xs=temp2*0.0625*10;temper=temp+xs;程序

25、/*lcd* void write_(uchar )lcdrs=0;P0=;delay(5);lcden=1;delay(5);lcden=0;void write_data(uchar date)lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0; 串口初始化void ckinit()TMOD=0x20;/設(shè)置定時(shí)器 1 為工作方式 2TH1=0xfa;TL1=0xfa;TR1=1;REN=1;/允許串行接收SM0=0;SM1=1;/工作方式 1/SCON=0x50;PCON=0x80;/波特率加倍EA=1;ES=1;/*LCD1602 初 始

26、 化 */void lcdinit()dula=0;wela=0;ledle=0;lcden=0;write_(0x38);write_(0x0e);write_(0x06);write_(0x01);write_(0x80+0x10);* 溫度顯示*/void display()write_(0x80+0x40);/write_data(numbertemper/100); write_data(numbertemp/10); write_data(numbertemp%10); write_data(.);write_data(numberxs%10); write_data(C);voi

27、d fas(unsigned char dat)ES=0; / 串口中斷允許位 SBUF=dat;while(!TI);TI=0;ES=1; /*函數(shù)發(fā)送字符串 */ void fss(unsigned char *str)uchar b,i; b=strlen(str);for(i=0;i0; i-)io = ACC0; /就是把最低位的數(shù)據(jù)傳輸給 IOsclk =1; /時(shí)鐘拉高讀走數(shù)據(jù)sclk =0; /時(shí)鐘拉低允許數(shù)據(jù)變化ACC =ACC 1; /把 ACC右移一位,然后又把最低的一位傳送過(guò)去/*DS1302 讀字節(jié)*/uchar read_ds1302_byte() /讀 DS130

28、2一個(gè)字節(jié)uchar i;for(i=8; i0; i-)ACC = ACC 1; /特別說(shuō)明,讀回來(lái)的數(shù)據(jù)是從最低位到最高位。ACC7 = io; / 把讀回來(lái)的數(shù)據(jù)存到 ACC寄存器的最高位,然后在移到最低位 sclk = 1;sclk = 0; return ACC;/*DS1302 寫地址數(shù)據(jù)*/void write_ds1302(uchar add, uchar dat)/寫任意地址,任意數(shù)據(jù)ce=0; / 根據(jù)時(shí)序圖編寫 sclk=0;ce=1; / 片選打開(kāi)write_ds1302_byte(add); write_ds1302_byte(dat);io=0; / 釋放總線 sc

29、lk=0; / 時(shí)鐘釋放 ce=0; / 片選關(guān)閉/*返回值時(shí)間DS1302 讀 地 址 數(shù) 據(jù)*/uchar read_ds1302(uchar add) / 讀任意地址數(shù)據(jù) uchar temp;ce=0;sclk=0; ce=1; / 片選打開(kāi)write_ds1302_byte(add); temp=read_ds1302_byte();sclk=0; / 時(shí)鐘釋放 io=0; / 釋放總線 ce=0; / 片選關(guān)閉return temp;時(shí)間顯示函數(shù)void dis_sj()uchar th,tl;nian=read_ds1302(0x8d); / 年寄存器 yue=read_ds13

30、02(0x89); / 月寄存器 ri=read_ds1302(0x87); / 日寄存器write_(0x80+0x08); / 設(shè)置時(shí)位置 th=nian4;write_data(numberth); / 刷新年高位 tl=nian&0x0f;write_data(numbertl); / 刷新年低位write_data(-);th=yue4; write_data(numberth); tl=yue&0x0f; write_data(numbertl);write_data(-);th=ri4; write_data(numberth);tl=ri&0x0f; write_data(nu

31、mbertl);時(shí)寄存器分寄存器秒寄存器刷新時(shí)高位刷新時(shí)低位shi=read_ds1302(0x85); / fen=read_ds1302(0x83); / miao=read_ds1302(0x81); /write_(0x80+0x48);th=shi4; write_data(numberth); / tl=shi&0x0f;write_data(numbertl); /write_data(:);th=fen4; write_data(numberth);tl=fen&0x0f; write_data(numbertl);write_data(:);th=miao4; write_d

32、ata(numberth);tl=miao&0x0f; write_data(numbertl);void fssj()uchar th,tl; th=nian4; fas(numberth); tl=nian&0x0f; fas(numbertl); fas(-);th=yue4; fas(numberth); tl=yue&0x0f; fas(numbertl); fas(-); th=ri4; fas(numberth); tl=ri&0x0f; fas(numbertl);fss( ); th=shi4; fas(numberth); tl=shi&0x0f; fas(numbertl); fas(:); th=fen4; fas(numberth); tl=fen&0x0f; fas(numbertl); fas(:); th=miao4; fas(

溫馨提示

  • 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)論