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

正文內(nèi)容

基于labview和ds18b20的多點(diǎn)溫度測(cè)量系統(tǒng)—下位機(jī)部分(文件)

2025-07-14 10:49 上一頁面

下一頁面
 

【正文】 5所示。① 液晶初始化函數(shù):設(shè)置液晶的工作方式viod LCD_init(viod){ LCD_en_mand(DATA_MODE)。 //清屏,準(zhǔn)備} ② 設(shè)置顯示坐標(biāo):設(shè)置字符的顯示位置,行、列坐標(biāo) 參數(shù):x列坐標(biāo),y行坐標(biāo) void LCD_set_xy(unsigned char x,unsigned char y){unsigned char address。 //將地址寫入寄存器}③ 寫字符函數(shù):向液晶寫一個(gè)字符參數(shù):x列坐標(biāo),y行坐標(biāo),dat將要顯示的字符數(shù)據(jù)void LCD_write_char(unsigned char x, unsigned char y, unsigned char dat){LCD_set_xy(x,y)。 //循環(huán)調(diào)用寫數(shù)據(jù)函數(shù)LCD_en_dat(*s)。在并行通信方式中,數(shù)據(jù)各位同時(shí)傳送。假設(shè)并行傳送8位二進(jìn)制數(shù)所需時(shí)間為T,在發(fā)送速率相同的情況下,串行口傳送至少需要8T。在這種通信方式中,數(shù)據(jù)塊內(nèi)各個(gè)字節(jié)數(shù)據(jù)之間沒有間隙,傳輸速率高,但發(fā)送、接收雙方必須保持同步。如果不再需要發(fā)送新的數(shù)據(jù)或數(shù)據(jù)尚未準(zhǔn)備就緒時(shí),就將數(shù)據(jù)傳輸線置為高電平狀態(tài)??梢?,異步串行通信所需傳輸線最少,一根數(shù)據(jù)線和一根地線就能實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接收,因此在單片機(jī)控制系統(tǒng)中得到廣泛應(yīng)用,在本設(shè)計(jì)中也使用異步串行通信的方式。 AT89C52串行通信接口內(nèi)部結(jié)構(gòu)在AT89C52單片機(jī)中,與串行通信控制有關(guān)的寄存器為串行通信接口控制寄存器SCON(選擇串行通信接口工作方式)和電源控制寄存器PCON的SMOD1位(發(fā)送、接收波特率倍增控制位)。REN 是串行接收控制位。TI 是發(fā)送結(jié)束中斷標(biāo)志。因此,在串行中斷服務(wù)程序中,需要查詢TI或RI,以確定串行中斷請(qǐng)求時(shí)發(fā)送引起的還是接收引起的。在方式1中,選擇定時(shí)器T1溢出率的16分頻或32分頻作為串口發(fā)送/接收波特率,此時(shí),當(dāng)smod位為1則波特率是為0時(shí)的兩倍。當(dāng)?shù)?位數(shù)據(jù)發(fā)送結(jié)束后(即開始發(fā)送停止位時(shí)),發(fā)送結(jié)束標(biāo)志TI置1,表示發(fā)送緩沖區(qū)內(nèi)容已發(fā)送完畢。在接收狀態(tài)下,存在兩個(gè)定時(shí)信號(hào):一個(gè)是移位信號(hào)(即發(fā)送波特率);一個(gè)是RXD引腳電平狀態(tài)檢測(cè)信號(hào)(也稱為數(shù)據(jù)檢測(cè)脈沖),其頻率是移位脈沖的16倍。由于串口進(jìn)行通信所需要的波特率是由定時(shí)器的溢出率產(chǎn)生的,所以定時(shí)器的工作方式與串行口的工作是息息相關(guān)的。與定時(shí)/計(jì)數(shù)器T0、T1工作方式相關(guān)的寄存器為TMOD和TCON。MM0用于選擇定時(shí)/計(jì)數(shù)器的工作方式,如下表。其中TR0位控制T0的啟動(dòng);TR1位控制T1的啟動(dòng)。當(dāng)T1用于定時(shí)且工作于方式2時(shí)的結(jié)構(gòu)如圖。第三章 硬件設(shè)計(jì)根據(jù)模塊化的系統(tǒng)設(shè)計(jì)方法,整個(gè)下位機(jī)分為6個(gè)模塊進(jìn)行設(shè)計(jì):?jiǎn)纹瑱C(jī)模塊、測(cè)溫模塊、顯示模塊、報(bào)警模塊、溫度限值設(shè)定模塊、串行接口模塊。AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫口線,AT89C52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。如下圖,一個(gè)AT89C52構(gòu)成了整個(gè)核心控制模塊。 若干個(gè)DS18B20傳感器組成的測(cè)溫模塊電路連接圖中的CN1插座用于連接數(shù)字溫度傳感器DS18B20,可以連接的若干個(gè)測(cè)點(diǎn)都并行連接在從CN1引出去的3個(gè)接線端子上,其中用于DS18B20數(shù)據(jù)輸入、輸出的I/O端口可以連接到單片機(jī)上除P0口外的任意I/O端口引腳上。目前字符型液晶顯示模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用到的信息顯示器件。V0引腳接一個(gè)100歐的電阻用來調(diào)節(jié)液晶顯示的對(duì)比度,BG VCC引腳接一個(gè)1K電阻用來設(shè)置背光的亮度。AT89C52單片機(jī)內(nèi)帶有一個(gè)全雙工的串行口,該串行口具有多機(jī)通信功能,可以與PC機(jī)、數(shù)據(jù)收發(fā)設(shè)備或其他單片機(jī)構(gòu)成通信系統(tǒng)。本例中使用的RS232收發(fā)器芯片是MAXIM公司的MAX202E,它采用16腳DIP封裝,包含兩個(gè)發(fā)送器和兩個(gè)接收器。最主要的還是軟件的編寫,需要通過軟件的來實(shí)現(xiàn)測(cè)溫、顯示和通訊的控制。下一步判斷串行接收中斷標(biāo)志RI是否等于0,等于0表示串行接收完畢,檢測(cè)接收到的字符數(shù)據(jù),若為“A”,則將前面測(cè)得的溫度數(shù)據(jù)通過串行口傳送到上位機(jī);如果RI不等于0,返回溫度測(cè)量。其中LCD1602工作方式的設(shè)定包括數(shù)據(jù)接口的位數(shù)設(shè)定(8位或4位)。 TH1 = 0xfd。 TR1 = 1。 //串行口發(fā)送控制電路處于空閑狀態(tài) RI=0。 光標(biāo)右移(11)寫指令01 H。 //顯示開,關(guān)光標(biāo) delay(1)。 //清除LCD的顯示內(nèi)容 delay(1)。void Init_DS18B20(void) { unsigned char x=0。 //單片機(jī)將DQ拉低 delay_18B20(80)。 //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗 delay_18B20(20)。 for (i=8。0x01。 }} 單片機(jī)主動(dòng)產(chǎn)生一個(gè)下降沿的啟動(dòng)信號(hào),并維持低電平大于1us后釋放總線,15us后DS18B20占主動(dòng)權(quán),DS18B20會(huì)將數(shù)據(jù)按位放在總線上(低位在先,當(dāng)讀取兩個(gè)字節(jié)的溫度值時(shí),低字節(jié)在先),這時(shí)單片機(jī)可讀取信號(hào),讀取一位的時(shí)間應(yīng)在60us內(nèi)完成。 for (i=8。 DQ = 1。}DS18B20通過調(diào)用初始化和讀寫DS18B20的子函數(shù)輸入功能命令完成獲取攝氏溫度信息的過程。 unsigned int t,tflag。 // 跳過讀序號(hào)列號(hào)的操作 WriteOneChar(0x44)。 //跳過讀序號(hào)列號(hào)的操作WriteOneChar(0xBE)。 //讀取溫度值高位 t=n。 //tflag=0溫度值為正 else { t=~t+1。 //溫度數(shù)據(jù)轉(zhuǎn)換成液晶字符顯示if(tflag==0) temp[0]=39。 temp[1]=t/1000+39。 //個(gè)位 temp[3]=39。 //小數(shù)十位 temp[5]=t%10+39。}對(duì)LCD1602的顯示模式設(shè)置等的初始化操作完成后,就可以通過將需要顯示的字符的ASCII寫入LCD1602顯示緩沖區(qū)RAM的操作進(jìn)行顯示了。 delay(10)。while(n[ i ] != 39。delay(30)。 delay(10)。while(n[ i ] != 39。delay(30)。 調(diào)試結(jié)果圖將調(diào)試好的程序燒入單片機(jī),上電復(fù)位后,液晶顯示器將會(huì)在第一行和第二行分別顯示姓名學(xué)號(hào)“weiruiyun”“200540503131”,然后將測(cè)得的溫度值進(jìn)行顯示。第五章 設(shè)計(jì)總結(jié) 意識(shí)勝過能力。做設(shè)計(jì)從選題到實(shí)施的過程反映了自己的意識(shí)和能力。有了耐心還要有方法,一種學(xué)習(xí)的方法。如果我們堅(jiān)持不斷地、有計(jì)劃地去學(xué)習(xí),很好地掌握了這些相關(guān)的技術(shù)和動(dòng)態(tài),我們將大有可為。 sbit LCD_RS = P1^0。 //存放測(cè)得溫度信息unsigned char a[]=weiruiyun。unsigned char e[]=Send pleted。 i++) { _nop_()。 }}}/***********測(cè)試LCD忙碌狀態(tài)*******/ BOOL lcd_bz(){ BOOL result。 _nop_()。 result = (BOOL)(DATA amp。 }/***********寫入指令數(shù)據(jù)到LCD*******/ lcd_wcmd(BYTE cmd){ BYTE m=cmd4。 LCD_EP = 0。0xF0)。 _nop_()。 LCD_EP = 1。 _nop_()。 LCD_RW = 0。 DATA=(DATAamp。 _nop_()。 _nop_()。 LCD_EP = 0。 LCD_RS = 1。}/***********寫入字符顯示數(shù)據(jù)到LCD*******/ lcd_wdat(BYTE dat) { BYTE m=dat4。 _nop_()。 _nop_()。 //把低四位送到數(shù)據(jù)總線 DATA=(DATA|m)。 _nop_()。 while(lcd_bz())。 _nop_()。 _nop_()。0x0F)。 _nop_()。 LCD_RS = 0。 //取最高位 LCD_EP = 0。 _nop_()。 //RS為數(shù)據(jù)/命令選擇端,L選擇命令(指令),H選擇數(shù)據(jù)讀寫 LCD_RW = 1。 _nop_()。while(ms){ for(i = 0。unsigned char c[]=temperature。sbit LCD_EP = P1^2。define DATA P1typedef unsigned char BYTE。計(jì)劃越詳細(xì),學(xué)習(xí)越有效率。從資料的查詢到軟件的調(diào)試。但是也不能就說有了意識(shí)就足夠了,還要有知識(shí)底蘊(yùn)。如果接收到來自上位機(jī)的字符“A”,則將6位的字符數(shù)據(jù)通過串口上傳給上位機(jī),且發(fā)送中顯示提示“sending...”,完畢顯示提示“Send pleted”。 }將以上程序根據(jù)總程序流程圖()整體進(jìn)行連接,就完成了總程序的編寫。){ lcd_wdat(n[ i ])。 //向右移動(dòng)光標(biāo)lcd_pos(0x40)。 }void xianshi2(unsigned char n[]) //在顯示器的第二行顯示字符串{ BYTE i。){ lcd_wdat(n[ i ])。 //向右移動(dòng)光標(biāo)lcd_pos(0)。void xianshi1(unsigned char n[]) //在顯示器的第一行顯示字符串{ BYTE i。//小數(shù)百位 temp[6]=39。 temp[4]=t%100/10+39。 //十位 temp[2]=t%1000/100+39。elsetemp[0]=39。 //tflag=1溫度值為負(fù) } tt=t*。 //溫度值的高8位放在t的高8位 t=t|m。 m=ReadOneChar()。 // this message is very important Init_DS18B20()。 Init_DS18B20()。 /**************讀取ds18b20當(dāng)前溫度************/void ReadTemp(void){ unsigned char m=0。 delay_18B20(4)。i) { DQ = 0。 unsigned char ReadOneChar(void){ unsigned char i=0。 DQ = 1。 i) { DQ = 0。若低電平寫入的位是0,高電平寫入的位是1,連續(xù)寫時(shí)位間的間隙應(yīng)大于1us。 //拉高總線 delay_18B20(14)。 //DQ復(fù)位 delay_18B20(8)。 DS18B20初始化 主機(jī)總線發(fā)送一復(fù)位脈沖(最短為480us,最高為960us的低電平信號(hào)),接著在釋放總線(置總線為高電平)并進(jìn)入接收狀態(tài)。 //移動(dòng)光標(biāo) delay(1)。 //16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù) delay(1)。 //當(dāng)REN位為1時(shí),串行口處于接收狀態(tài) LCD1602初始化設(shè)定 LCD1602初始化過程: (1)延時(shí) 15um; (2)寫指令28 H(不檢測(cè)忙信號(hào)); (3)延時(shí) 15um; (4)寫指令28 H(不檢測(cè)忙信號(hào));(5)延時(shí) 15um;(6)寫指令28 H(不檢測(cè)忙信號(hào));(7)(以后每次寫指令、讀寫數(shù)據(jù)操作之前均需檢測(cè)忙信號(hào))(8)寫指令28 H; 顯示模式設(shè)置為四位數(shù)據(jù)接口模式 (9)寫指令OC H。 //設(shè)置串行口工作在方式1 PCON = 0x00。 TMOD = 0x20。在本設(shè)計(jì)中讓T1工作在方式2,溢出率為9600,又因?yàn)閱纹瑱C(jī)晶振頻率選擇12MHz,通過計(jì)算可得M=FD H。本設(shè)計(jì)主程序流程圖如下圖所示。 程序啟動(dòng)后,首先對(duì)串行接口等各個(gè)器件進(jìn)行初始化并清理系統(tǒng)內(nèi)存,然后單片機(jī)指示溫度傳感器采集溫度信號(hào)并進(jìn)行轉(zhuǎn)換后傳送到單片機(jī),系統(tǒng)將設(shè)定溫度與現(xiàn)在溫度進(jìn)行比較,如果現(xiàn)在的溫度超出設(shè)定范圍,那么蜂鳴器和發(fā)光二級(jí)管將產(chǎn)生聲光報(bào)警。因?yàn)镻C機(jī)采用的是母外殼、公連接針形式的DB9接頭,為了使連接電纜的兩端有所區(qū)別,在圖中,單片機(jī)一側(cè)采用公外殼、母連接針的DB9接頭。如圖所示,串行接口模塊的電路原理圖。發(fā)光二級(jí)管LED用于在溫度超出設(shè)定范圍時(shí)提供閃爍的光報(bào)警信號(hào),發(fā)光二極管LED處于點(diǎn)亮狀態(tài)。它可以顯示兩行,每行16個(gè)字符,采用單+5V電源供電,外圍電路配置簡(jiǎn)單,價(jià)格便宜,具有很高的性價(jià)比。圖中對(duì)若干個(gè)溫度傳感器DS18
點(diǎn)擊復(fù)制文檔內(nèi)容
外語相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1