freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于51單片機的蓄冰系統(tǒng)控制電路設(shè)計-大學(xué)畢業(yè)論文畢業(yè)設(shè)計學(xué)位論文范文模板參考資料-文庫吧

2025-04-17 20:18 本頁面


【正文】 括閏年校正功能。 時鐘操作可通過 AM/PM 指示決定采用 24 或 12 小時格式 。 DS1302 與單片 機之間能簡單地采用同步串行的方式進行通信 , 僅需用到三個口線 :( 1) RES 復(fù)位 ( 2) I/O 數(shù)據(jù)線 ( 3) SCLK 串行時鐘 。 時鐘 /RAM 的讀 /寫數(shù)據(jù)以一個字節(jié)或多達 31 個字節(jié)的字符組方式通信。 DS1302 工作時功耗很低 , 保持數(shù)據(jù)和時鐘信息時功率小于 1mW。 DS1302 主要由一位寄存器、控制邏輯、振蕩器、實時時鐘以及 RAM構(gòu)成。為了實現(xiàn)數(shù)據(jù)傳送,首先把 RST 置為高電平,然后單片機以一定的時序產(chǎn)生 SCLK 移位時鐘,把地址和命令字節(jié)信息通過 I/O 線傳給移位寄存器。數(shù)據(jù) 在 SCLK 的上升沿串行輸入。 無論是讀還是寫周期,開始的 8 位指定 RAM 中 的字節(jié) 。開始的 8個時鐘周期把命令輸入移位寄存器之后,另外的時鐘在讀操作時輸出數(shù)據(jù),在寫操作時輸入數(shù)據(jù)。 DS1302 每一次數(shù)據(jù)傳送由命令字節(jié)初始化。如表 所示為地址 /命令字節(jié)。 表 地址 /命令字節(jié) 7 6 5 4 3 2 1 0 1 RAM/CK A4 A3 A2 A1 A0 RD/WR 最高有效位(位 7)必須為邏輯 0,才能寫 DS1302,否則禁止寫 6為邏輯 0指定時時鐘 /日歷數(shù)據(jù),邏 輯 1指定 RAM數(shù)據(jù)。位 1— 5 指定進行輸入和輸出的特定寄存器,最低有效位 LSB(位 0)為邏輯 0 表示進行寫操作(向 DS1302 輸入數(shù)據(jù))、邏輯 1 表示進行讀操作( DS1302 輸出數(shù)據(jù)),命令字節(jié)總是從最低有效位開始輸入。 時鐘 /日歷包含在 7個寫 /讀寄存器內(nèi),寄存器內(nèi)的數(shù)據(jù)都是 BCD 碼表示的。如表 所示為時鐘 /日歷 寄存器詳表。 表 時鐘 /日歷寄存器 寄存器地址 寄存器命令 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 SEC 1 0 0 0 0 0 0 RD/WR CH 10SEC SEC MIN 1 0 0 0 0 0 1 RD/WR 0 10MIN MIN HR 1 0 0 0 0 1 0 RD/WR 12/24 0 110 HR HR 6 A/P DATE 1 0 0 0 0 1 1 RD/WR 0 0 10DATE DATE MONTH 1 0 0 0 1 0 0 RD/WR 0 0 0 10M MONTH DAY 1 0 0 0 1 0 1 RD/WR 0 0 0 0 0 DAY YEAR 1 0 0 0 1 1 0 RD/WR 10YEAR YEAR 在上表中有兩個要注意的地方 。( 1)時鐘暫停。秒寄存器的位 7為時鐘暫停位,當此位設(shè)置為邏輯 1 時,時鐘振蕩器停止, DS1302 被置為低功率備份方式;當此位為 0時,時鐘將啟動。( 2) AMPM/1224 方式。小時寄存器的位 7 定義為 12或 24 小時方式選擇位。當它為高電平時,選擇的是 12 小時方式,此時位 5 為 AM/PM 位,此位為邏輯高電平表示PM; 24小時方式時,位 5表示第二個十小時位( 20— 23時)。 綜上,本部分 通過對 DS1302 進行相應(yīng)的設(shè)置及處理,使時鐘數(shù)據(jù)在時鐘信號控制下通過 DS1302 的 I/O口送入單片機 進行處理和顯示。 程序 流程圖 如 圖 所示 。 圖 時鐘程序流程 圖 程序 定義部分 如下 ,完整程序見附錄 : ifndef _REAL_TIMER_DS1302_ define _REAL_TIMER_DS1302_ sbit DS1302_CLK = P1^0。 //實時時鐘時鐘線引腳 sbit DS1302_IO = P1^1。 //實時時鐘數(shù)據(jù)線引腳 開 始 初始化DS1302 獲取時鐘 數(shù) 據(jù) 數(shù) 據(jù)處理 LED 顯示 7 sbit DS1302_RST = P1^2。 //實時時鐘復(fù)位線引腳 sbit ACC0 = ACC^0。 sbit ACC7 = ACC^7。 typedef struct __SYSTEMTIME__ { unsigned char Second。 unsigned char Minute。 unsigned char Hour。 unsigned char Week。 unsigned char Day。 unsigned char Month。 unsigned char Year。 }SYSTEMTIME。 //定義的時間類型 define AM(X) X define PM(X) (X+12) // 轉(zhuǎn)成 24 小時制 define DS1302_SECOND 0x80 //定義秒寄存器地址 define DS1302_MINUTE 0x82 //定義分寄存器地址 define DS1302_HOUR 0x84 //定義小時寄存器地址 define DS1302_WEEK 0x8A //定義星期寄存器地址 define DS1302_DAY 0x86 //定義日期寄存器地址 define DS1302_MONTH 0x88 //定義月寄存器地址 define DS1302_YEAR 0x8C //定義年寄存器地址 define DS1302_RAM(X) (0xC0+(X)*2) //用于計算 DS1302_RAM 地址的宏 endif 溫度程序設(shè)計 本部分采用 DS18B20 進 行測溫 。 DS18B20 是單線數(shù)字溫度傳感器,它可直接將被測溫度轉(zhuǎn)化成串行數(shù)字信號,以供單片機處理,它具有微型化、低功耗、高性能、抗干擾能力強等優(yōu)點。 DS18B20 有嚴格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。主機 操作單線器件必須遵循以下順序。( 1)初始化。初始化過程如下:主機通過拉低單線 480us 以上,產(chǎn)生復(fù)位脈沖,然后釋放該線,進入 Rx 接收模式。主機釋放總線時,會產(chǎn)生一個上升沿。DS18B20 檢測到該上升沿后,延時 15— 60us,DS18B20 通過拉低總線 60— 240us 來產(chǎn)生應(yīng)答 8 脈沖。主機接收到 應(yīng)答脈沖后 ,說明有單線器件存在。( 2) ROM 操作命令。一旦總線主機檢測到應(yīng)答脈沖,它就可以發(fā)起 ROM 操作命令。 如表 所示。 ( 3) 內(nèi)存操作命令。在成功執(zhí)行了 ROM 操作命令之后,才可以使用內(nèi)存操作命令。 如表 所示。 ( 4)數(shù)據(jù)處理。 DS18B20 要求有嚴格的時序來保證數(shù)據(jù)的完整性。 在單線 DQ上存在復(fù)位脈沖、應(yīng)答脈沖、寫‘ 0’、寫‘ 1’、讀‘ 0’、讀‘ 1’幾種信號,其中除了應(yīng)答脈沖之外,均由主機產(chǎn)生。 當主機將數(shù)據(jù)線從高電平拉至低電平時產(chǎn)生寫時隙所有寫時隙必須在 60us 以上(即由高拉低后持續(xù) 60us 以上),各個寫時隙之間必須保證最短 1us 的恢復(fù)時間 。 DS18B20 在DQ 線變低后的 15us— 60us 的時間內(nèi)對 DQ 線進行采樣,高電平寫‘ 1’ ,低電平寫‘ 0’。對于寫‘ 1’的情況,數(shù)據(jù)線必須先拉低,然后釋放, 在寫時隙開始后的 15us 內(nèi) DQ 線拉至高電平。 寫‘ 0’時, DQ線必須被拉至低電平并至少保持 60us 的時間。當主機從 DS18B20讀數(shù)據(jù)時,把數(shù)據(jù)線從高電平拉至低電平,產(chǎn)生讀時隙。 數(shù)據(jù)線 DQ 必須保持低電平至少1us,來自 DS18B20 的輸出數(shù)據(jù)在讀時隙下降沿之后的 15us 內(nèi)有效,因此在此期間,主機必須停止將 DQ引腳置低。在讀時隙結(jié)束時, DQ 引腳將通過外部上拉電阻拉回至高電平。 所有讀寫時隙至少需要 60us,且每兩個獨立的時隙之間需要 1us 的恢復(fù)時間。 在寫時隙中,主機將在拉低總線 15us 內(nèi)釋放總線,并向 DS18B20 寫‘ 1’;若主機拉低總線后能保持至少 60us的低電平,則是寫‘ 0’。 DS18B20 僅在主機發(fā)出讀時隙時才向主機傳輸數(shù)據(jù),所以,當主機向 DS18B20 發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時隙,以便 DS18B20 能傳輸數(shù)據(jù)。 表 ROM 操作命令表 指令 代碼 Read ROM(讀 ROM) 33H Match ROM(匹配 ROM) 55H Skip ROM(跳過 ROM] CCH Search ROM(搜索 ROM) F0H Alarm search(告警搜索 ) ECH 表 存儲器操作命令表 指令 代碼 Write Scratchpad(寫暫存存儲器 ) 4EH Read Scratchpad(讀暫存存儲器 ) BEH Copy Scratchpad(復(fù)制暫存存儲器 ) 48H Convert Temperature(溫度變換 ) 44H Recall EPROM(重 新調(diào)出 ) B8H Read Power supply(讀電源 ) B4H 由于 DS18B20 轉(zhuǎn)換后的代碼并不是實際的溫度值,所以要進行計算轉(zhuǎn)換。溫度高字節(jié)( MS Byte)高 5位是用來保存溫度的正負(標志為 S的 bit11~ bit15),高字節(jié)( MS Byte) 9 低 3位和低字節(jié)來保存溫度值( bit0 ~ bit10)。其中低字節(jié)( LS Byte)的低 4 位來保存溫度的小數(shù)位( bit0 ~ bit 3)。由于本程序采用的是 的精度,小數(shù)部分的值,可以用后四位代表的實際數(shù)值乘以 ,得到真正的數(shù) 值,數(shù)值可能帶幾個小數(shù)位 。 算法核心:首先程序判斷溫度是否是零下,如果是,則 DS18B20 保存的是溫度的補碼值,需要對其低 8位( LS Byte)取反加一變成原碼。處理過后把 DS18B20 的溫度 Copy 到單片機的 RAM中,里面已經(jīng)是溫度值的 Hex 碼了,然后轉(zhuǎn)換 Hex碼到 BCD 碼,分別把小數(shù)位,個位,十位的 BCD 碼存入 RAM 中。 綜上,本部分 通過程序設(shè)置單線時序使單線器件可以和單片機進行通信,使 DS18B20產(chǎn)生應(yīng)答脈沖,控制 DS18B20 進行溫度轉(zhuǎn)換 , 通過 LED 數(shù)碼管進行 顯示。 程序流程圖如圖 所示。 N Y 圖 DS18B20 測溫程序流程圖 本 程序 最重要的是單線的時序問題,所以本部分延時程序非常重要。本部分延時程序如下: void DelayUs(uint num) // 延時函數(shù) { 開 始 初始化 DS18B20 應(yīng)答脈沖 ? 啟動溫度轉(zhuǎn) 換 溫度 處理 LED 顯示 10 while( num )。 //大概 8 微秒 , 晶振 } 由于 DS18B20 的溫度數(shù)據(jù)存在兩個字 節(jié)中,且該數(shù)據(jù)并不是溫度數(shù)據(jù),需要處理后與精度相乘才是真的溫度值。此溫度處理子程序下。 /****************************************** 計算讀回的溫度值。由于讀回的數(shù)據(jù)是 16 位的 ,所以分讀高位和低位。 ******************************************/ uint tmp() //get the temperature { uchar a,b,y1,y2,y3。 dsreset()。 TmpreExist () 。
點擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1