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

正文內(nèi)容

基于can總線的溫度測量系統(tǒng)-資料下載頁

2024-11-08 06:27本頁面

【導(dǎo)讀】串行通訊網(wǎng)絡(luò),被公認(rèn)是最有前途的總線之一。本文基于CAN總線設(shè)計(jì)了一種新。LCD、鍵盤、復(fù)位電路、蜂鳴器等幾部分組成。單片機(jī)AT89C51是硬件電路的核。位機(jī)進(jìn)行遠(yuǎn)程通訊,能夠獨(dú)立完成CAN總線上數(shù)據(jù)的接收和發(fā)送工作。DS18B20芯片用于檢測和發(fā)送溫度數(shù)據(jù),通過CAN控制器同上位機(jī)進(jìn)。擴(kuò)展的數(shù)據(jù)幀或遠(yuǎn)程幀。實(shí)驗(yàn)證明,該系統(tǒng)精度高,可靠性好,結(jié)構(gòu)簡單,成本。低,適用范圍內(nèi)可取代傳統(tǒng)測溫系統(tǒng)。

  

【正文】 判斷是數(shù)字鍵還是功能鍵,若是數(shù)字鍵則送顯示緩沖區(qū),以便顯示。如果是功能鍵則轉(zhuǎn)到相應(yīng)的功能鍵處理程序,完成相應(yīng)的操作。 4. CAN 總線溫度測量系統(tǒng)的軟件設(shè)計(jì) 智能節(jié)點(diǎn)軟件主要完成三項(xiàng) 任務(wù) :一 是溫度傳感器的采樣,二是當(dāng)上位機(jī)請求數(shù)據(jù)時(shí)將節(jié)點(diǎn)所在現(xiàn)場的溫度和 CAN節(jié)點(diǎn)狀態(tài)等數(shù)據(jù)傳送給 上位機(jī)。三溫度超過閘值時(shí),通過CAN總線向上位機(jī)報(bào)警。溫度傳感器的采樣與控制算法在定時(shí)器中斷服務(wù)程序中完成,數(shù)據(jù)信息的傳輸在主程序下完成。 下位分機(jī)的驅(qū)動(dòng)程序見附錄 1。 下位分機(jī)的流程圖如圖 11所示: 電路測試結(jié)果分析 32 N 圖 11 下位分機(jī)流程圖 開始 接收主機(jī)命令 發(fā)送數(shù)據(jù)到主機(jī) 讀溫度 初始化 DS18B20 初始化 CAN 總線 判斷超限 是否更改控制參數(shù) 更改溫度數(shù) 據(jù)上下限 是否發(fā)送數(shù)據(jù) 報(bào)警 YY Y N Y 電路測試結(jié)果分析 33 上位機(jī)的流程圖: Y 圖 12 上位機(jī)流程圖 溫度采集系統(tǒng)的軟件設(shè)計(jì) 在系統(tǒng)設(shè)計(jì)中 ,溫度測量這一部分程序作為一個(gè)獨(dú)立的程序段可定時(shí)調(diào)用。其主要包括 DS18B20數(shù)據(jù)讀取、開路判斷、數(shù)據(jù)處理和碼制轉(zhuǎn)換等幾個(gè)部分。 DS18B20初始化 及驅(qū)動(dòng) 程序見附錄 2。 DS18B20程序流程圖見圖 13。 N 開始 LCD顯示溫度值 讀分機(jī)數(shù)據(jù) 發(fā)送分機(jī)號 根據(jù)增加減少的鍵號確定分機(jī)號 讀鍵盤 初始化 LCD 初始化 CAN 是否 ENTER 電路測試結(jié)果分析 34 圖 13 溫度采集程序流程圖 CAN 通訊節(jié)點(diǎn)的軟件設(shè)計(jì) CAN接口通信軟件設(shè)計(jì)主要分為三部分 :CAN初始化、數(shù)據(jù)發(fā)送、數(shù)據(jù)接收。 CAN 控制器 SJA1000 的初始化 CAN初始化主要是設(shè)置 SJA1000的參數(shù)。需要初始化的 CAN控制寄存器 有 :模式寄存器、時(shí)分寄存器、接收代碼寄存器、屏蔽寄存器、總線定時(shí)寄存器、輸出控制寄存器。這些寄存器只能在 CAN控制器處于復(fù)位狀態(tài)下才可寫訪問。 SJA1000的初始化程序 : 設(shè) SJA1000的首地址是 0BF00H CR EQU 0BF00H 。控制寄存器 開始 讀取 DS18B20 中的數(shù)據(jù) 數(shù)據(jù)處理 報(bào)警 返回 調(diào)用顯示子程 序 判斷是否超出報(bào)警溫度 Y N 電路測試結(jié)果分析 35 CMR EQU 0BF01H 。命令寄存器 SR EQU 0BF02H 。狀態(tài)寄存器 IR EQU 0BF03H 。中斷寄存器 ACR EQU 0BF04H 。驗(yàn)收碼寄存器 AMR EQU 0BF05H 。驗(yàn)收屏蔽寄存器 BTR0 EQU 0BF06H 。總線定時(shí)寄存器 0 BTR1 EQU 0BF07H ??偩€定時(shí)寄存器 1 OCR EQU 0BF08H 。輸出控制寄存器 CANINI :MOV DPTR , CR 。開始初始化 MOV A , 01H 。置復(fù)位請求為高 MOVX @DPTR , A CANI1 :MOVX A , @DPTR 。判復(fù)位請求有效 JNB ACC . 0 , CANI1 MOV DPTR , ACR 。寫接收碼寄存器 MOV A ,NODE 。設(shè)置接點(diǎn)號 MOVX @DPTR ,A MOV DPTR , AMR 。寫接收碼屏蔽寄存器 MOV A , 00H MOVX @DPTR ,A MOV DPTR , BTR0 。寫總線定時(shí)寄存器 0 MOV A ,NBTR0 。設(shè)置波特率 MOVX @DPTR ,A MOV DPTR , BTR1 。寫總線定時(shí)寄存器 1 MOV A ,NBTR1 MOVX @DPTR ,A MOV DPTR , OCR 。寫輸出控制寄存器 MOV A , OFAH 電路測試結(jié)果分析 36 MOV @DPTR ,A MOV DPTR , CDR 。寫時(shí)鐘分頻寄存器 MOV A , 00H 。設(shè)定工作模式 MOVX @DPTR ,A MOV DPTR , CR 。寫控制寄存器 MOV A , 0EH 。開放中斷源 MOVX @DPTR ,A RET SJA1000的初始化流程圖: Y 初始化 AT89C51 關(guān)閉 SJA1000 的所有中斷源 設(shè)置復(fù)位方式 /請求標(biāo)志 配置時(shí)鐘分屏寄存器 復(fù)位模式 /請求標(biāo)志 設(shè)置中斷使能寄存器 設(shè)置驗(yàn)收碼屏蔽寄存器 設(shè)置輸出控制寄存器 設(shè)置總路線定時(shí)寄存器 設(shè)置接受緩沖器起始地 址寄存器 使能 CAN 中斷打開 AT89C51 的外部中斷0 清除復(fù)位模式 /請示標(biāo)志 配置過程結(jié)束 復(fù)位模式 /請求標(biāo)志被置位 Y N N 電路測試結(jié)果分析 37 圖 14 SJA1000的 初始化流程圖 CAN 接收與發(fā)送數(shù)據(jù)程序 發(fā)送數(shù)據(jù)程序把數(shù)據(jù)存儲(chǔ)區(qū)中待發(fā)送的數(shù)據(jù)取出 ,組成數(shù)據(jù)幀 ,并將主機(jī)的 ID 地址填入幀頭 ,然后將數(shù)據(jù)幀發(fā)送 到 CAN控制器的發(fā)送緩沖區(qū)。其數(shù)據(jù)幀形 式如下 : 幀起 始 → 仲裁場 → 控制場 → 數(shù)據(jù)場 (8B)→CRC 場 →ACK 場 → 幀結(jié)束 在接收到主機(jī)的發(fā)送請求 后 ,發(fā)送程序啟動(dòng)發(fā)送命 令。數(shù)據(jù)從 CAN控制器發(fā)送到總線是由 CAN控制器自動(dòng)完成的。 數(shù)據(jù)從 CAN總線到 CAN控制器的接收緩沖區(qū)也是由 CAN控制器自動(dòng)完成的。接收程序只需從接收緩沖區(qū)讀取 數(shù)據(jù) ,并將其 存儲(chǔ)在數(shù)據(jù)存儲(chǔ)區(qū)。接收和發(fā)送數(shù)據(jù)的中斷程序流程如圖 1圖 16所示。 電路測試結(jié)果分析 38 Y Y 關(guān)中斷 返回 置新數(shù)標(biāo)志 從接收緩存器取數(shù)據(jù) 開始 讀中斷寄存器 取描述寄存器的數(shù)據(jù)信息并作處理 開中斷 是否接收中斷 取完否 N N 電路測試結(jié)果分析 39 圖 15 接收數(shù)據(jù)中斷流程圖 圖 16 發(fā)送數(shù)據(jù) 的中斷程序流程 鍵盤接口電路的軟件設(shè)計(jì) 程控掃描是由程序控制鍵掃描的方法。程控掃描的任務(wù)是: ( 1)首先判斷是否有鍵按下。其方法是使所有的行輸出均為低電平,然后從端口 A讀入列值。如果沒有鍵按下,則讀入的列鍵為 FFH;如果有鍵按下,則讀入的列值不為FFH。 ( 2)去除鍵抖動(dòng)。若有鍵按下,則延時(shí) 5~ 18MS,在一次判斷有無鍵按下,如果此時(shí)仍有鍵按下,則認(rèn)為鍵盤上有一個(gè)鍵處于穩(wěn)定閉合期。 ( 3)若有鍵閉合,這求出閉合鍵的鍵值。求鍵值的辦法是對鍵盤逐行掃描。先使 PC0=0,然后 讀入列值,看其是否等于 FFH,若等于 FFH,則說明該行無鍵按下。再對下一行進(jìn)行掃描,如果不等于 FFH,則說明有鍵按下,求出其鍵值。求其鍵值時(shí),要采用行值,列值返回 開中斷 讀取中斷寄存器 開始 關(guān)中斷 寫控制字,允許 CAN 發(fā)送 置發(fā)送標(biāo)志位為 1 電路測試結(jié)果分析 40 兩個(gè)寄存器(或存儲(chǔ)器)。每掃描一行后,如無鍵按下,則行值寄存器加 08H;如有鍵按下,則行值寄存器保持原值,并轉(zhuǎn)至求相應(yīng)的列值。此時(shí),首先將列值讀數(shù)右移,每移位一次列值寄存器加一,直到有鍵按下(低電平)為止。最后將行值和列值相加,即得到鍵值( 16進(jìn)制數(shù))。例如, X2行 Y3列鍵被按下,求其鍵值。第一次掃描 X0行( PC0=0),無鍵按下,行值寄存器( R4) =00H+08H;第二次掃描 X1行,仍無鍵按下,再加 08H,( R4)=08H+08H=10H。第 三次掃描 X2行,此時(shí)發(fā)現(xiàn)有鍵按下(列值不等于 FFH),則 R4=4H,不變,轉(zhuǎn)向求列值。具體做法是:將列值讀書逐位右移,第一次移動(dòng),無鍵按下,列值寄存器 R3=00H+01H=01H。第 二次移動(dòng) ,無鍵 按下 。第三 次 移動(dòng),仍 無鍵按下 ,R3=00H+01H+01H=03H;當(dāng)?shù)谒拇我苿?dòng),發(fā)現(xiàn)有鍵按下, R3=03H,不變。 將行值與列值相加,即 R4+R3=10H+03H=13H,故 該鍵值為 13H。 ( 4)為了保證每閉合一次, CPU只做一次處理,程序中需等閉 合鍵釋放后才對其進(jìn)行處理。完成上述任務(wù)的程控掃描程序流程圖如圖 16所示: 上位機(jī)中設(shè)置了 4*4的 16鍵的鍵盤與單片機(jī)相接, AT89C51端口 P01P03行掃描口,工作于輸出方式;端口 P04— P07工作于輸入方式,用來讀入列值。 1~ 4鍵是數(shù)字鍵, 5~8是功能鍵,當(dāng)對鍵盤進(jìn)行掃描時(shí)首先判斷是數(shù)字鍵還是功能鍵,若是數(shù)字鍵則送顯示緩沖區(qū),以便顯示。如果是功能鍵則轉(zhuǎn)到相應(yīng)的功能鍵處理程序,完成相應(yīng)的操作。當(dāng)按下 1~ 4數(shù)字鍵時(shí), LCD就顯示相就應(yīng)的數(shù)字。 5至 6的功能鍵的作用分別為 5:顯示溫度值;6:判斷讀出的溫度值是 否超出溫度設(shè)定的范圍,如果超出則報(bào)警; 7:加溫; 8:降溫。鍵盤初始化程序見附錄 3。 電路測試結(jié)果分析 41 Y Y 圖 17 鍵盤輸入流程圖 程控掃描子程序 列值 +1 ++ 調(diào)顯示程序 掃描整個(gè)鍵盤 延時(shí) 10MS 再次掃描整個(gè) 鍵盤 輸出使 Xi 為低電平 數(shù)據(jù)右移
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1