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

正文內(nèi)容

精品--多點(diǎn)式單總線數(shù)字溫度監(jiān)測系統(tǒng)設(shè)計(完整程序)(參考版)

2024-12-10 03:26本頁面
  

【正文】 } } /********功能: LCD 顯示函數(shù) **。 //AC 遞增 , 畫面不動 _To } /*********功能:顯示位置設(shè)置 **參數(shù): x行; y列 *******/ void GotoXY(unsigned char x,unsigned char y) { if(y==0) {Lcd_Write(Lcd_Command,0x80|x)。 // 開 啟 顯 示 , 無光標(biāo)|Lcd_Cursor|Lcd_Flash //Lcd_Move(Lcd_CursorMove|Lcd_Left)。 } /*********功能: LCD 初始化 **參數(shù):取值如下 *******/ void Lcd_Init(void) { Lcd_Write(Lcd_Command,0x38)。 } 14 /********功能: LCD 移動設(shè)置 **參數(shù):取值如下 ******/ void Lcd_Move(unsigned char MoveMode) { Lcd_Write(Lcd_Command,0x10|MoveMode)。 //delay1_64ms()。 //delay1_64ms()。 Lcd_Wait()。 LcdEn=0。 _nop_()。 _nop_()。 DBPort=input。 _nop_()。 LcdRs=style。 _nop_()。 return DBPort。 } LcdEn=0。 if((DBPortamp。 _nop_()。 _nop_()。 _nop_()。 LcdRw=1。 _nop_()。 _nop_()。 12 } }*/ /******功能 : 判斷 LCD 忙 ****參數(shù) : 無 ****/ unsigned char Lcd_Wait(void) { while(1) { DBPort=0xff。i 20。 } } /******功能 : 延時 40us**參數(shù) : 無 ****/ /*void delay40us(void) { uchar i。 _nop_()。i++) { _nop_()。 for(i = 0。 } while(1)。 } Print( )。 if(dot_dis) Print(.)。 } else //負(fù) { Print()。 if(dot_dis) Print(.)。 Print(str4)。 } temperature_process(temp[0],temp[1])。i2。 //匹配第 四 路 ds18b20_writemand(0xbe)。 //轉(zhuǎn)換 delay(500)。 ds18b20_writemand(0xcc)。 } Print( )。 if(dot_dis) Print(.)。 } else //負(fù) { Print()。 if(dot_dis) Print(.)。 Print(str3)。 } temperature_process(temp[0],temp[1])。i2。 //匹配第三路 ds18b20_writemand(0xbe)。 //轉(zhuǎn)換 delay(500)。 ds18b20_writemand(0xcc)。 } Print( )。 if(dot_dis) Print(.)。 } else //負(fù) { Print()。 if(dot_dis) Print(.)。 Print(str2)。 } temperature_process(temp[0],temp[1])。i2。 //匹配第二路 ds18b20_writemand(0xbe)。 //轉(zhuǎn)換 delay(500)。 ds18b20_writemand(0xcc)。 } Print( )。 if(dot_dis) Print(.)。 } else //負(fù) { Print()。 if(dot_dis) Print(.)。 Print(str1)。 } temperature_process(temp[0],temp[1])。i2。 //匹配第一路 ds18b20_writemand(0xbe)。 //轉(zhuǎn)換 8 delay(500)。 ds18b20_writemand(0xcc)。 } while(1)。i++) //顯示序列號 { print_char(ds18b20_num2[i]/16)。 for(i=0。 ds18b20_rom++。i8。 /*ds18b20_rom=read_rom()。 GotoXY(0,0)。 Lcd_Init()。 char *str4=4:。 char *str2=2:。 uchar *ds18b20_rom。j++)。i++) for(j=0。 7 for(i=0。 extern unsigned char temp[5]。 sbit DQ=P1^0。 // bit flag。 void process(unsigned char,unsigned char)。 uchar ds18b20_num4[8]={0xe0,0x00,0x00,0x00,0xb8,0xc5,0x32,0x28}。 uchar ds18b20_num2[8]={0x8e,0x00,0x00,0x00,0xb8,0xc5,0x30,0x28}。 extern bit dot_dis。 extern char xiaoshu_temp[5],zhen_temp[4]。 extern bit match_rom(uchar *rom)。 6 extern void serial_set(void)。 extern void ds18b20_writemand(unsigned char mand)。 endif 頭文件 ifndef _DS18B20_H_ define _DS18B20_H_ extern void ds18b20_init(void)。 /*********功能: LCD 清屏函數(shù) **參數(shù):無 *******/ void ClrScreen(void)。 /********功能: LCD 顯示函數(shù) ****參數(shù): str要顯示的字符串指針 ******/ void Print(unsigned char *str)。 /********功能: LCD 初始化 ****參數(shù):取值如下 ************/ void Lcd_Init(void)。 /**************功能: LCD 移動設(shè)置 ****參數(shù):取值如下 ***************/ define Lcd_CursorMove 0x00 define Lcd_PictureMove 0x08 define Lcd_Left 0x00 define Lcd_Right 0x04 void Lcd_Move(unsigned char MoveMode)。 /************功能:寫 LCD 函數(shù) **** 參數(shù): style 為寫命令 /數(shù)據(jù), 0命令, 1數(shù)據(jù); input 為寫入的 8 位 **** 命令 /數(shù)據(jù) **********/ define Lcd_Command 0 define Lcd_Data 1 define Lcd_Clear_Screen 0x01 define Lcd_Home 0x02 void Lcd_Write(bit style,unsigned char input)。 //sfr DBPort =0x80。 //sbit LcdRw =P3^6。 sfr DBPort =0x80。 sbit LcdRw =P2^1。測試中 ,DS18B20 選擇芯片出廠時默認(rèn)的 12 位轉(zhuǎn)換精度 ,轉(zhuǎn)換的結(jié)果用 16 位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供。 (9)再重復(fù)第 1 步到第 8 步 ,進(jìn)行下一輪的巡回測量。 (7)進(jìn)行 CRC 校驗(yàn)和數(shù)據(jù)處理后送 LCD 顯示器顯示。 (5)按照 AT89C51中建立的關(guān)系表的順序取出 64 位 ROM代碼發(fā)送到單總線。 (3)延遲 1s。由于已經(jīng)在上面獲取了多個 DS18B20的 ROM 代碼并在 AT89C51 單片機(jī)內(nèi)部的中建立了測量位置點(diǎn)和傳感器 64 位ROM 代碼之間的關(guān)系表 ,因 此對多個溫度的巡回測量的步驟如下 : (1)發(fā)跳過 ROM 命令 CCH。由于采取公用的放大電路和 A/D 轉(zhuǎn)換器只能逐一轉(zhuǎn)換,顯然通道數(shù)越多這種省時效應(yīng)就越明顯。 系統(tǒng)軟件 主 流程如圖 41所示 : 圖 41 系統(tǒng)軟件總流程圖 測溫模塊流程圖 溫度的采集 每一片 DSl8B20 在其 ROM 中都存有其唯一的 48 位序列號,在出廠前已寫入片內(nèi) ROM 中,主機(jī)在進(jìn)入操作 程序前必須逐一接入 DSl8B20,用讀 ROM(33H)命令將該 DSl8B20 的序列號讀出并登錄。 1 開始 系統(tǒng) 初始化 溫度采集 溫度處理 數(shù)據(jù)顯示 第 4 章 系統(tǒng)軟件設(shè)計 軟件設(shè)計總體思路及主程序流程圖 本系統(tǒng)采用 C 語言編寫,主程序主要由四部分構(gòu)成 ,系統(tǒng)通電后首先初始化系統(tǒng) ,依次完成溫度采集、溫度處理、數(shù)據(jù)顯示 等 三 項功能。 D:控制整體顯示的 開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表示有游標(biāo),低電平表示無游標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍 ; 指令 5:光標(biāo)或顯示移位元 S/C:高電平時移動顯示的文字,低電平時移動光標(biāo) ; 指令 6:功能設(shè)置命令 DL:高電平時為 4 位總線,低電平時為 8 位總線 N:低電平時為單行顯示,高電平時雙行顯示 F:低電平時顯示 5x7 的點(diǎn)陣字符,高電平時顯示 5x10 的點(diǎn)陣字符 ; 指令 7:字符發(fā)生器 RAM 地址設(shè)置 ; 指令 8: DDRAM 地址設(shè)置 ; 指令 9:讀忙信號和光標(biāo)地址 BF:為忙標(biāo)志位,高電平 表示忙,此時模塊16 不能接收命令或者數(shù)據(jù),如果為低電平表示不忙 ; 指令 10:寫數(shù)據(jù) ; 指令 11:讀數(shù)據(jù) ; 液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。(說明: 1 為高電平、 0 為低電平) 指令 1:清顯示,指令碼 01H,光標(biāo)復(fù)位到地址 00H 位置 ; 指令 2:光標(biāo)復(fù)位,光標(biāo)返回到地址 00H; 指令 3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。 15 6 E 使能信號 7 D0 Data I/O 8 D1 Data I/O 9 D2 Data I/O 10 D3 Data I/O 11 D4 Data I/O 12 D5 Data I/O 13 D6 Data I/O 14 D7 Data I/O 15 BLA 背光源正 16 BLK 背光源負(fù) 表 310 LCD1602A接口信號說明 ③ LCD1602 的顯示與控制命令 1602 液晶模塊內(nèi)部的字符發(fā)生內(nèi)存( CGROM) 已經(jīng)存儲了 160 個不同的點(diǎn)陣字符圖形,如下圖所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是 01000001B( 41H),顯示時模塊把地址 41H 中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母 “A”。控制 P2 端口與 LCD1602A 的數(shù)據(jù)端口相連,傳輸數(shù)據(jù)。控制器還常含有內(nèi)部 ASCII 字符庫,或可外擴(kuò)的大容量漢字庫。 本實(shí)驗(yàn)將使用并采用 八 位數(shù)據(jù)方式來控制 1602 顯示 ,如圖 35 所示 : 圖 35 AT89C51 與 LCD1602接口電路圖 進(jìn)行 LCD 設(shè)計主要是 LCD 的控制 /驅(qū)動和外界的接口設(shè)計。最后 5 位總保持為 1。 R1 與 R0 確定傳感器的分辨率 ,如表 35 所示 ,DS18B20 有 4 種分辨率可供選擇。其出廠時的默認(rèn)值為 0,為工作模式 (即用戶使用時的模式 )。第 5
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1