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

正文內容

單片機溫濕度設計畢業(yè)論文-文庫吧資料

2025-07-03 12:56本頁面
  

【正文】 特定的緩沖區(qū),我們只要寫程序去讀那個特定的緩沖區(qū)就可以了。圖形能移動的原理,是我們首先改變的只是數據,圖形并沒有變,但圖形的形式是由這些數據來確定的,當數據發(fā)生變化后,我們通過刷新顯示區(qū)來變化的。有數據向串口發(fā)過來時,程序可以將數據接收到,接收的數據是字符型的,那么將數據轉化為數字型的,再將這個數據的大小作為畫圖的某一個點的縱坐標,這個就是圖形顯示基本原理。 將字符串寫入發(fā)送緩沖區(qū)CommEvent 屬性為通信事件或錯誤返回下列值之一,在該控件的對象庫 中也可以找到這些常量。 設置或返回通信端口的狀態(tài)。 設置或返回通信端口號Settings基本屬性與描述如下:屬性一般說來,計算機都有一個或多個串行端口,它們依次為ComCom…,這些串口還提供了外部設備與PC進行數據傳輸和通信的通道。5 軟硬件調試部分 軟件調試。在設計過程中可以用虛擬串口和串口調試助手對所設計的VB程序進行仿真,看是否達到設計要求。保存數據Data_save (datatemp(num))此外,本VB程序還做了一定的功能擴展,能夠顯示歷史溫度的最大值和最小值以及平均值,還可通過下拉方式選擇合適的波特率、串口和采樣間隔時間。 Mid(buffer, 3, 3) amp。 Mid(buffer, 1, 2)) * Elsedatatemp(num) = Val(amp。 Mid(buffer, 3, 3) amp。為了在VB界面能夠顯示當前的溫度值,需要將采集的兩字節(jié)溫度數據轉化為十進制測量數據,轉化程序如下:If Len(Trim(Mid(buffer, 1, 2))) = 1 Thendatatemp(num) = Val(amp。讀取儀表返回數據串 Select Case Case EvReceive count = Inbyte = If count 2 Then Exit Sub counter = counter + 1 For i = LBound(Inbyte) To UBound(Inbyte) buffer = buffer + Hex(Inbyte(i)) Next i End Select程序中,接收到的數據暫存在Inbyte()中,buffer為溫度數據緩存,接收到的數據按16進制的格式放入緩沖中,便于之后的數據處理。程序中還編寫了錯誤處理程序,當串口被占用時會轉去執(zhí)行err程序,出現系統報錯。主要使用方法如下:串口設置:(“波特率,校驗方式,數據位數,停止位數”)串口數據:MSComm. InputMode(輸入模式設定)其具體程序設計如下:Private Sub Form_Load()On Error GoTo err: = 1 = InputModeBinary = 1 = 1 = 9600,n,8,2 Call tabinit Call ScaleSys If = False Then = True mark = True = False Exit Suberr: Select Case Case PortAlreadyOpen MsgBox 沒有發(fā)現此串口或被占用, 49, 溫度采集系統 Case Else MsgBox 沒有發(fā)現此串口或被占用, 49, 溫度采集系統 End Select End Sub在VB程序中設置為串口1,輸入模式為二進制,且接收和發(fā)送一個字符就會觸發(fā)MSComm1的OnComm接收觸發(fā)事件。,接收溫度數據并儲存在數據庫中;接收數據時,能同步畫出溫度變化的曲線,系統可查詢歷史溫度信息。上位機是應用VB進行編寫的,它把下位機傳送上來是兩字節(jié)的十六進制數據進行解碼顯示出來。}}Else {flag_zf=0} 其中 temp_data[1] 為溫度數據的高八位,temp_data[0]為溫度數據的低八位,flag_zf=1表示溫度為負,進行相應轉化再執(zhí)行上面的顯示轉化程序,為正則直接執(zhí)行顯示轉化程序里的內容。temp_data[0]= temp_data[0]+1。Unsigned char code LEDData[]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0xff}當然應特別注意由于個位的顯示需要顯示小數點,所以它的查表顯示代碼不一樣,應為下面的程序:UnsignedcharcodeLEDData1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff}由于測溫范圍包含負數,還要對溫度的正負進行判別,由DS18B20的特性可知,當溫度為負數時,溫度高八位的前五位都為高電平,轉化時應先將測得的溫度數據取反再在最低位加1進行運算,具體程序設計如下:if(temp_data[1]7) { flag_zf=1。 display[1]=display[1]%10。 display[1]=display[4]%100。0x0f)4)。 display[4]=((temp_data[0]amp。0x0f。 }此外,在顯示模塊中,小數位的轉化才用了一定的技巧,由于實際顯示中只要求顯示一位小數,℃/LSB,當每一位變化時,第一位小數只有16種狀態(tài),我們只需一一算出放在一個數組中,通過查表指令即可獲取第一位小數的十進制值。 TR1 = 1。 PCON amp。 TL1=(unsigned char)(256 (XTAL / (32L * 12L * baudrate)))。 TMOD = 0x20。令TCON中的TR1=1,啟動定時器,并禁止其他中斷。波特率的產生用定時器產生,在設置時選擇定時器1,并將它的設為工作方式2,8位的常數自動重新裝載的定時器,這種工作方式可以省去用戶軟件中重裝初值的程序,簡化定時初值的計算方法,可以相當精確的確定定時時間。當一幀數據采集完畢即RI接受中斷標志位為1,判斷下位機是否接受到來自上位機的字符“1”對應的ASC碼49時接收到時才開始將采集到的數據發(fā)送給上位機進行處理,RI標志位必須由軟件清零。) { send_char()。 if (receive == 39。 } if (RI) { RI = 0。 if (flash==0) { Disp_Temperature()。 init()。其中包括DS18B20的測溫模塊,顯示模塊和串口通信模塊,當上位機向下位機發(fā)送讀溫度指令時,單片機才會將所測得的數據傳給上位機。 顯示數據刷新子程序顯示數據刷新子程序主要是對顯示緩沖器中的顯示數據進行刷新操作,當最高顯示位為0時將符號顯示位移入下一位。Y發(fā)DS18B20復位命令發(fā)跳過ROM命令發(fā)讀取溫度命令讀取操作,CRC校驗9字節(jié)完?CRC校驗正?確?移入溫度暫存器結束 NNY 讀流程圖 計算溫度子程序計算溫度子程序將RAM中讀取值進行轉換運算,并進行溫度值正負的判定。這樣可以在一秒之內測量一次被測溫度。4 系統軟件設計部分系統程序主要包括主程序,讀出溫度子程序,溫度轉換命令子程序,計算溫度子程序,顯示數據刷新子程序等。最后還要實現單片機與上位機通信的功能,所以要連接好串口,以便能向上位機發(fā)送或接受數據。實際使用中只用到七個LED,最后2個用來顯示攝氏度符號,第二個用來顯示溫度的正負,當溫度為負時,顯示“—”號,為正時不顯示,同樣由軟件可以實現,當百位為零時,百位不顯示,百位十位為零時,百位十位都不顯示,這樣設計方便觀察,更加直觀。 硬件電路設計系統整體硬件電路包括,傳感器數據采集電路,溫度顯示電路,報警電路,單片機主板電路等, 電路設計原理圖,不過硬件簡單,軟件肯定復雜,讀寫時都有嚴格的時序要求。系統對DS18B20的各種操作按協議進行。其輸出用于修正減法計數器的預置值,只要計數器門仍未關閉就重復上述過程,直到溫度寄存器值大致被測溫度值。計數門的開啟時間由高溫度系數振蕩器來決定,每次測量前,首先將-55℃所對應的一個基數分別置入減法計數器溫度寄存器中,計數器1和溫度寄存器被預置在-55℃所對應的一個基數值。DS18B20的測溫原理是這這樣的,器件中低溫度系數晶振的振蕩頻率受溫度的影響很小,用于產生固定頻率的脈沖信號送給減法計數器1;高溫度系數晶振隨溫度變化其振蕩頻率明顯改變,所產生的信號作為減法計數器2的脈沖輸入。在64位ROM的最高有效字節(jié)中存儲有循環(huán)冗余檢驗碼(CRC)。若T>TH或T<TL,則將該器件內的報警標志位置位,并對主機發(fā)出的報警搜索命令作出響應。當符號位S=0時,表示測得的溫度值為正值,可以直接將二進制位轉換為十進制;當符號位S=1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數值。轉換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第2字節(jié)。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗數據,從而保證通信數據的正確性。因此,在實際應用中要將分辨率和轉換時間權衡考慮。低5位一直為1,TM是工作模式位,用于設置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設置為0,用戶要去改動,R1和R0決定溫度轉換的精度位數,來設置分辨率。第5個字節(jié),為配置寄存器,它的內容用于確定溫度值的數字轉換分辨率。高速暫存RAM的結構為8字節(jié)的存儲器。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。DS18B20的性能特點如下:獨特的單線接口僅需要一個端口引腳進行通信;多個DS18B20可以并聯在惟一的三線上,實現多點組網功能;無須外部器件;可通過數據線供電,~;零待機功耗;溫度以9或12位數字;用戶可定義報警設置;報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作; DS18B20采用3腳PR-35封裝或8腳SOIC封裝。在掉電模式下,保存RAM的內容并且凍結振蕩器,禁止所用其他芯片功能,直到下一個硬件復位為止。在閑置模式下,CPU停止工作。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復編程以前,該操作必須被執(zhí)行。有余輸入至內部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。石晶振蕩和陶瓷振蕩均可采用。振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出。XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。/PSEN:外部程序存儲器的選通信號。另外,該引腳被略微拉高。如想禁止ALE的輸出可在SFR8EH地址上置0。因此它可用作對外部輸出的脈沖或用于定時目的。在FLASH編程期間,此引腳用于輸入編程脈沖。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳 備選功能 RXD(串行輸入口) TXD(串行輸出口) /INT0(外部中斷0) /INT1(外部中斷1) T0(記時器0外部輸入) T1(記時器1外部輸入) /WR(外部數據存儲器寫選通) /RD(外部數據存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。在FLASH編程和校驗時,P1口作為第八位地址接收。P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,
點擊復制文檔內容
教學教案相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1