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

正文內(nèi)容

硬件課程設(shè)計-基于microchip單片機的數(shù)字溫度計(編輯修改稿)

2025-07-04 03:59 本頁面
 

【文章內(nèi)容簡介】 個15μs 到60μs 的窗口內(nèi)對I/O 線采樣。如果線上是高電平,就是寫1,如果線上是低電平,就是寫0(見圖12)讀時間隙當(dāng)從 DS1820 讀取數(shù)據(jù)時,主機生成讀時間隙。當(dāng)主機把數(shù)據(jù)線從高高平拉到低電平時,寫時間隙開始。數(shù)據(jù)線必須保持至少1μs;從DS1820 輸出的數(shù)據(jù)在讀時間隙的下降沿出現(xiàn)后15μs 內(nèi)有效。因此,主機在讀時間隙開始后必須停止把I/O 腳驅(qū)動為低電平15μs,以讀取I/O 腳狀態(tài)(見圖12)。在讀時間隙的結(jié)尾,I/O 引腳將被外部上拉電阻拉到高電平。所有讀時間隙必須最少60μs,包括兩個讀周期間至少1μs 的恢復(fù)時間。當(dāng)DS18B20處于寫存儲器操作時,總線上必須有強的上拉,上拉開啟時間最大為10us。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。4. 電路分析和完整電路圖 驅(qū)動蜂鳴器APP001開發(fā)板上蜂鳴器由RC2控制一個三極管來驅(qū)動,當(dāng)JP4的跳線開關(guān)短路時,RC2管腳輸出高電平便會是蜂鳴器發(fā)出聲音,RC2輸出低電平便使蜂鳴器停止發(fā)聲。APP001開發(fā)板配置2*16字符LCD,接口為LCD的RS接PIC18F452的RD4,表示命令和數(shù)據(jù)標(biāo)志位;LCD的RW接PIC18F452的RD5,表示讀寫控制位; LCD的使能接PIC18F452的RA2。LCD與PIC18F452的接口是RD0RD3,連接到LCD模塊的DB4DB7。RD=0時,RD0RD3是讀取和寫入數(shù)據(jù)到LCD的命令寄存器;RD=時,RD0RD3讀取和寫入要顯示的數(shù)據(jù)使用DS18B20溫度傳感器。其中DS18B20的高低電平與PIC18F452的高低電平直接相連,DS8B20的傳輸數(shù)據(jù)引腳與RE0相連。本連接只為方便,未考慮其他因素。使用開發(fā)板上按鍵由圖中可以看出,溫度傳感器使用單片機的D端口,按鍵,LCD顯示,蜂鳴器使用單片機的I/O口。同時通過MPLAB IDE2進行程序的調(diào)試。 PROTUES仿真圖如圖所示蜂鳴器通過RC2相連,溫度傳感器通過RE0相連,LCD通過RD相連。同時PIC18F452也外接晶振。5. 軟件分析和完整流程圖//定義端口define DQ //定義18B20數(shù)據(jù)端口define DQ_DIR //定義18B20D口方向寄存器define DQ_HIGH() DQ_DIR =1 //設(shè)置數(shù)據(jù)口為輸入define DQ_LOW() DQ = 0。 DQ_DIR = 0 //設(shè)置數(shù)據(jù)口為輸出// DS18B20初始化程序void Init18B20(void) { DQ_LOW()。 //主機拉至低電平 delay(100)。 //至少延時480us(400us~960us) 總線控制器發(fā)出(TX)一個復(fù)位脈沖(一個最少保持480μs 的低電平信號) DQ=1。 //釋放總線燈電阻拉高總線 delay(8)。 //進行適當(dāng)延時 DQ_HIGH()。 //講數(shù)據(jù)口和寄存器都置高 delay(16)。 //至少延時100us DQ_DIR = 0。 //將寄存器置0 DQ=1。 //將數(shù)據(jù)口置1}寫時間間隙需要延時,大概為小于15us,并且在兩次獨立寫間隙間要45us的恢復(fù)時間。寫時序起始于單片機拉低總線。void Write_Byte (unsigned char wr) //單字節(jié)寫入{ unsigned char i。 DQ_DIR = 0。 //將寄存器置0 DQ=1。 //將數(shù)據(jù)口置1 for (i=0。i8。i++) { DQ = 0。 //將數(shù)據(jù)口置0 Nop()。Nop()。Nop()。Nop()。 //進行小延時15us if(wramp。0x01){DQ=1。} //若寫入0x01則數(shù)據(jù)口置1 else{DQ=0。} //其他則數(shù)據(jù)口置0 delay(8)。 //delay 45 uS //5 wr = (wr1)。 DQ=1。 //將數(shù)據(jù)口置1 }}根據(jù)DS18B20讀時序,讀間隙需要延時,并且在2次獨立的讀間隙至少西藥1us的恢復(fù)時間。讀間隙起始于單片機拉低總線至少1us,DS18B20在讀時序開始15us開始采樣總線電平。unsigned char Read_Byte (void) //讀取單字節(jié){ unsigned char i,u=0。 DQ_DIR = 0。 //將寄存器置0 DQ = 1。 //將數(shù)據(jù)口置1 for(i=0。i8。i++) { DQ= 0。 u = (u1)。// NOP()。NOP()。 DQ = 1。 DQ_DIR= 1。Nop()。 if(DQ){u= (u|0x80)。} delay(8)。 //50us DQ_DIR = 0。 DQ = 1。 } return(u)。}void DS18B20_Read(void) //讀取DS18B20當(dāng)前溫度值 { Init18B20()。 Write_Byte(0xCC)。 // 跳過 ROM Write_Byte(0x44)。 // 啟動溫度轉(zhuǎn)換 Delay_nms(1)。 Init18B20()。 //復(fù)位操作 Write_Byte(0xCC)。 // 跳過 ROM Write_Byte(0xBE)。 // 讀暫存器 [0] = Read_Byte()。 [1] = Read_Byte()。 } LCD顯示部分代碼與注釋OpenLCD()。 //打開LCD WriteCmdLCD( 0x01 )。 delay_ms(5)。 // 延時 LCD_Set_Cursor( 0, 0 )。 // 光標(biāo)指向(0,0) putrsLCD(Temperature is)。 // 輸入字符串 LCD_Set_Cursor( 1, 0 )。 //光標(biāo)指向(1,0) delay_ms(1)。 // 延時 putcLCD( ch)。 // 輸出溫度值 LCD_Set_Cursor( 1, 1 )。 delay_ms(1)。 putcLCD(cl)。// LCD_Set_Cursor( 1, 2 )。 delay_ms(1)。 putrsLCD(.)。 L
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1