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

正文內容

基于proteus的單片機實時時鐘仿真設計(編輯修改稿)

2025-07-24 18:29 本頁面
 

【文章內容簡介】 較過程會在每次溫度測量時進行。一旦報警標志設置后,器件就會響應系統(tǒng)主機發(fā)出的條件搜索命令(ECH)。這樣處理的好處是,可以是單總線上的所有器件同時測量溫度,如果有些點上的溫度超過了設定的閾值,則這些報警器件就會通過條件搜索方式識別出來,而不需要一個個器件去讀取。無論是溫度測量值還是報警閾值,都會存儲在DS18B20芯片內的寄存器中。DS18B20的寄存器包括SRAM(暫存寄存器)和EEPROM(非易失寄存器)。EEPROM用于存放報警上限寄存器(TH)、報警下限寄存器(TL)和配置寄存器。如果在使用過程中,沒有使用報警功能,TH和TL可作為普通寄存器單元使用。DS18B20的存儲器結構如表7所示。表7 DS18B2存儲結構字節(jié)0和字節(jié)1是溫度數字量的低位字節(jié)和高位字節(jié),這兩個寄存器是只讀寄存器,在上電時默認值為0550H,即+85℃。字節(jié)2和字節(jié)3可用于存放報警閾值或用戶寄存器。字節(jié)4是配置寄存器,用于設置DS18B20溫度測量分辨率,其格式如下表:D7D6D5D4D3D2D1D00R1R011111字節(jié)7保留未使用。字節(jié)8用于存放前8個字節(jié)的CRC校驗值。EEPROM中的值在掉電后仍然保留,SRAM中的值在掉電后會丟失。在器件上電時,將EEPROM中的數據復制到SRAM中,SRAM恢復默認值。所以SRAM的字節(jié)8中的值取決于EEPROM中的值。用戶可通過“回讀EEPROM”命令后,通過一個讀時隙來判斷回讀操作是否完成:如果回讀操作正在執(zhí)行,則DS18B20會向總線上發(fā)送一個0;如果回讀操作已完成,則DS18B20會向總線上發(fā)送一個1.“回讀EEPROM”命令會在DS18B20上電時自動完成一次,保證芯片在上電后可以使用有效數據。 (2)DS18B20的功能命令:DS18B20的功能命令包括兩類:溫度轉換和存儲命令。 ROM指令表指 令 約定代碼功 能讀ROM33H讀DS1820溫度傳感器ROM中的編碼(即64位地址) 符合ROM55H發(fā)出此命令之后,接著發(fā)出 64 位 ROM 編碼,訪問單總線上與該編碼相對應的 DS1820 使之作出響應,為下一步對該 DS1820 的讀寫作準備。 搜索ROM0FOH用于確定掛接在同一總線上 DS1820 的個數和識別 64 位ROM 地址。為操作各器件作好準備。 跳過ROM0CCH忽略 64 位 ROM 地址,直接向 DS1820 發(fā)溫度變換命令。適用于單片工作。告警搜索命令0ECH執(zhí)行后只有溫度超過設定值上限或下限的片子才做出響應。 RAM指令表指 令 約定代碼功 能溫度變換44H啟動DS1820進行溫度轉換,12位轉換時最長為750ms()。結果存入內部9字節(jié)RAM中。 讀暫存器0BEH 讀內部RAM中9字節(jié)的內容 寫暫存器 4EH 發(fā)出向內部RAM的4字節(jié)寫上、下限溫度數據命令,緊跟該命令之后,是傳送兩字節(jié)的數據。 復制暫 存器 48H 將RAM中第3 、4字節(jié)的內容復制到EEPROM中。 重調EEPROM0B8H 將EEPROM中內容恢復到RAM中的第3 、4字節(jié)。 讀供電方式 0B4H 讀DS1820的供電模式。寄生供電時DS1820發(fā)送“ 0 ”,外接電源供電 DS1820發(fā)送“ 1 ”。 當系統(tǒng)中DS18B20使用寄生電源供電時,由于“溫度轉換”和“復制SRAM” 的操作都是發(fā)生在主機發(fā)命令之后,由DS18B20自主完成,同時又需要較長的時間(“溫度轉換”的時間最長),所以通常在主機發(fā)出這些命令后,通過MOSFET將總線電壓強拉至高電平,以保證這些操作順利完成。如圖12所示。一般在“溫度轉換”時需要根據測量的分辨率選擇保持強上拉的時間;在“復制SRAM”時需要至少保持10ms的強上拉,而且必須在主機發(fā)出命令的10μs的時間內使用MOSFET進行上拉。 掉電保護模塊的設計I2C總線是一種雙向二線制總線,結構簡單,可靠性和抗干擾性能好。24C02芯片是一個帶有I2C總線接口的E2PROM存儲器,具有掉電記憶的功能,方便進行數據的長期保存。圖12 DS18B20使用MOSFET進行強上拉電路原理圖(1)I2C總線結構 I2C總線結構很簡單,只有兩條線,包括一條數據線(SDA)和一條串行時鐘線(SCL)。具有I2C接口的器件可以通過這兩根線接到總線上,進行相互之間的信息傳遞。連接到總線的器件具有不同的地址,CPU根據不同的地址進行識別,從而實現對硬件系統(tǒng)簡單靈活的控制。單片機串行通訊的發(fā)送和接收一般都各用一條線TXD和RXD,而I2C總線的數據線既可以發(fā)送也可以接受,工作方式可以通過軟件設置。所以,I2C總線結構的硬件結構非常簡潔。 24C02的引腳圖: 當某器件向總線上發(fā)送信息時,它就是發(fā)送器,而當其從總線上接收信息時,又成為接收器。(2)I2C總線上的數據傳送 1)位傳輸 I2C總線每傳送一位數據必須有一個時鐘脈沖。被傳送的數據在時鐘SCL的高電平期間保持穩(wěn)定,只有在SCL低電平期間才能夠改變,示意圖如下圖所示,在標準模式下。那么是不是所有I2C總線中的信號都必須符合上述的有效性呢?只有兩個例外,就是開始和停止信號。開始信號:當SCL為高電平時,SDA發(fā)生從高到低的跳變,就定義為開始信號。停止信號:當SCL為高電平時,SDA發(fā)生從低到高的跳變,就定義為結束信號。2)數據傳輸的字節(jié)格式 SDA傳送數據是以字節(jié)為單位進行的。每個字節(jié)必須是8位,但是傳輸的字節(jié)數量不受限制,首先傳送的是數據的最高位。每次傳送一個字節(jié)完畢,必須接收到從機發(fā)出的一個應答位,才能開始下一個字節(jié)的傳輸。如果沒有接受到應答位,主機則產生一個停止條件結束本次的傳送。那么從機應該發(fā)出什么信號算是產生了應答呢?這個過程是這樣的。當主器件傳送一個字節(jié)后,在第9個SCL時鐘內置高SDA線,而從器件的響應信號將SDA拉低,從而給出一個應答位。3)I2C數據傳輸協(xié)議 I2C總線的數據傳輸協(xié)議如下:1  主器件發(fā)出開始信號2  主器件發(fā)出第一個字節(jié),用來選通相應的從器件。其中前7位為地址碼,第8位為方向位(R/W)。方向位為“0”表示發(fā)送,方向位為“1”表示接受。3  從機產生應答信號,進入下一個傳送周期,如果從器件沒有給出應答信號,此時主器件產生一個結束信號使得傳送結束,傳送數據無效。4  接下來主、從器件正式進行數據的傳送,這時在I2C總線上每次傳送的數據字節(jié)數不限,但每一個字節(jié)必須為8位(傳送的時候先送高位,再送低位)。當一個字節(jié)傳送完畢時,再發(fā)送一個應答位(第9位),如上一條所述,這樣每次傳送一個字節(jié)都需要9個時鐘脈沖。(3)AT24C02的存儲結構與尋址AT24C02的存儲容量為256B,內部分成32頁,每頁8B,操作時有兩種尋址方式:芯片尋址和片內子地址尋址。 芯片尋址AT2402的芯片地址固定為1010,是I2C總線器件特征編碼,其地址控制字格式為1010A2A1A0R/。其中,AAA0為可編程地址選擇位。AAA0引腳接高、低電平后得到確定的三位編碼,與1010形成7位編碼,即為該器件的地址碼。由于AAA0或接高電平,或接低電平,共有8種組合,故系統(tǒng)最多可接8片AT24C02,對應的存儲容量為2KB。R/為芯片讀/寫控制位,R/=0,表示對芯片進行寫操作;R/=1,表示讀芯片進行讀操作。 表9 AT24C02引腳定義及功能引腳名稱功能1~3A0、AA2可編程地址輸入端4GND電源地5SDA串行數據輸入/輸出端6SCL串行時鐘輸入端7WP寫保護輸入端,用于硬件數據保護,當WP為低電平時,可以對整個存儲器進行正常的讀/寫操作;當WP為高電平時,存儲器具有寫保護功能,但讀操作不受影響8Vcc電源輸入引腳,接+5V 片內子地址尋址在確定了AT24C02芯片的7位地址編碼后,片內的存儲空間可用一個字節(jié)作為地址碼進行尋址,可尋址范圍為00~FFH,可對其內部256個單元進行讀/ 寫操作。(4)AT24C02的讀/寫操作AT24C02有兩種寫入方式,一種是字節(jié)寫入方式,一種是頁寫入方式。字節(jié)寫入方式在字節(jié)寫入方式下,單片機(主控器)先發(fā)送啟動信號和一個字節(jié)的控制字 (AT24C02的芯片地址和讀/寫控制位),AT24C02(從器件)發(fā)出應答信號后,單片機再發(fā)送一個字節(jié)的存儲單元子地址(AT24C02芯片內部單元地址碼),單片機收到AT24C02的響應后,再發(fā)送8位數據和一位停止信號。頁寫入方式在頁寫入方式下,單片機先發(fā)送啟動信號,接著送一個字節(jié)的控制字,再送一個字節(jié)的存儲器起始單元地址,上述幾個字節(jié)都得到AT24C02應答后,就可以發(fā)送最多一頁的數據并順序存放在以指定起始地址開始的相繼單元中,最后以停止信號結束。AT24C02的讀操作也有兩種方式,一種是指定地址讀方式,另一種是指定地址連續(xù)讀方式。指定地址讀方式在指定地址讀方式下,單片機在啟動信號后先發(fā)送含有片選地址的寫操作控制字,AT24C02應答后,再發(fā)送一個字節(jié)的指定單元的地址,AT24C02應答后再發(fā)送一個含有片選地址的讀操作控制字,此時如果AT24C02做出應答,被訪問單元的數據就會按SCL信號同步出現在SDA線上,供單片機讀取。指定地址連續(xù)讀方式指定地址連續(xù)讀方式的讀寫地址控制與指定讀地址方式相同。單片機在收到每個字節(jié)數據后要做出應答,只要AT24C02檢測到應答信號后,其內部的地址寄存器就自動加1指向下一個單元,并順序將指向的單元的數據送到SDA線上。當需要結束讀操作時,單片機接收到數據后,在需要應答的時刻發(fā)送一個非應答信號,接著再發(fā)送一個停止信號即可。第四章 系統(tǒng)的軟件設計 程序流程框圖圖A 主程序流程圖 圖B 時間調整程序流程圖 圖C 定時鬧鈴程序流程圖 子程序的設計 LCD1602初始化子程序void lcd1602_init() //LCD初始化函數 { uchar lcdnum。 P3=0xdf。 lcd_write_(0x38)。 lcd_write_(0x0c)。 lcd_write_(0x06)。 lcd_write_(0x01)。 lcd_write_(0x80)。 for(lcdnum=0。lcdnum8。lcdnum++) //寫第一行數據 { lcd_write_date(tabe1[lcdnum])。 delay(2)。 } lcd_write_(0x80+0x40)。 //寫入第二行數據 for(lcdnum=0。lcdnum13。lcdnum++) { lcd_write_date(tabe2[lcdnum])。 delay(2)。 }} DS1302寫子程序void write_byte(uchar dat) //寫一字節(jié){ uchar k。 ACC=dat。 for(k=8。k0。k) { ds1302_io=ACC0。 ds1302_sclk=0。 //拉低sclk ds1302_sclk=1。 //拉高sclk ACC=1。 } }uchar read_byte(){ uchar k。 for(k=8。k0。k) { ACC7=ds1302_io。 ds1302_sclk=1。 //拉高sclk ds1302_sclk=0。 //拉低sclk ACC=1。 } return ACC。 }void ds1302_write(uchar add,uchar date){ ds1302_rst=0。 ds1302_sclk=0。 //在rst沒拉高之前先把sclk置0 ds1302_rst=1。 write_byte(add)。 write_byte(date)。 ds1302_sclk=1。 ds1302_rst=0。 } DS18B20讀子程序ucha
點擊復制文檔內容
語文相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1