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

正文內(nèi)容

基于at89s51的多路溫度巡檢儀設(shè)計(jì)說(shuō)明書-資料下載頁(yè)

2024-12-03 17:01本頁(yè)面

【導(dǎo)讀】實(shí)際動(dòng)手能力,作為工程技術(shù)工作的一次基本訓(xùn)練。設(shè)計(jì)一個(gè)以單片機(jī)為核心的多路溫度巡回檢測(cè)顯示儀表系統(tǒng)。按鈕開關(guān)操控作凍結(jié)或切換顯示,在單片機(jī)實(shí)驗(yàn)板臺(tái)上模擬調(diào)試實(shí)現(xiàn)?;蚱渌缑嫘畔?,溫度顯示單位為oC,保留一位小數(shù)。信號(hào),綜合誤差為±°C。動(dòng)存放保存的4次的溫度值都是最新的溫度值然后對(duì)這4次的溫度值求平均值。觸點(diǎn)輸出控制功能。用靜態(tài)顯示的時(shí)候要很多條I/O線。儲(chǔ)區(qū)中,把AD值轉(zhuǎn)化成溫度內(nèi)碼,再把溫度內(nèi)碼轉(zhuǎn)化成BCD碼。

  

【正文】 RET DISP:MOV R6,6EH 。取當(dāng)前進(jìn)程碼 MOV R0,30H 。顯示更新子程序。顯示緩沖單元首地址 MOV R3,01H 。字位碼初值(從最右位起) MOV A,R3 DISP1:MOV DPTR,0FEFDH 。 8255B 口(字位碼輸出口) MOVX @DPTR,A 。 輸出當(dāng)前字位碼 MOV A,@R0 。 取當(dāng)前位顯示數(shù)據(jù)碼 ADD A,TABNET1 。 加 TAB 與 NEXTPC 差址 MOVC A,@A+PC 。 查表得相應(yīng)字段碼 NET1:CJNE R0,33H,NET 。是否轉(zhuǎn)到 33H 單元? CJNE R6,01,NET 。是,在判斷是否是狀態(tài) 01H? ANL A,7FH 。是,個(gè)位增加小數(shù)點(diǎn) NET:MOV DPTR,0FEFCH 。 8255A 口(字段碼輸出口) MOVX @DPTR,A 。 輸出字段碼 LCALL D1MS 。 保持顯示 1 毫秒 INC R0 。 指向下一顯示緩沖單元 MOV A,R3 。 取出字位碼 JB ,DISP2 。 判已顯示到最左位否 RL A 。 未完 ,字位碼左移 1 位 MOV R3,A 。 回存新字位碼 LJMP DISP1 。 轉(zhuǎn)下一位的顯示驅(qū)動(dòng) DISP2:RET TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H 。0~9 顯示字段碼表 DB 88H,83H,0C6H,0A1H,86H,8EH,0BFH,89H,00H,0FFH 。AF,,H,全亮 ,全滅 DB 9CH,0C6H,0A4H,92H 。176。 ,C度 39。S DONGJIE:JB ,DONE1 。凍結(jié)判斷子程序。判 PB0 下降沿 JNB ,DONE1 CPL F0 。取反標(biāo)志位 DONE1:RET 。判斷完成,返回 QIEHUAN:JB ,DONE1 。凍結(jié)判斷子程序。判 PB1 下降沿 JNB ,DONE1 INC 6DH 。路次按 18 加一 MOV A,6DH 。判斷當(dāng)前 的路次值是否到達(dá)第九路?? CJNE A,10,DONE1 。 MOV 6DH,1 。是,置為第一路 RET 。返回 ZDXUNX:JB F0,BACK1 。自動(dòng)巡顯節(jié)拍控制子程序。檢測(cè)當(dāng)前的凍結(jié)位 MOV A,3EH 。非凍結(jié)狀態(tài) CJNE A,3FH,BACK 。判斷節(jié)拍值是否已到? MOV 3EH,0 。已到,中斷次數(shù)計(jì)數(shù)單元清零 INC 6DH 。路次加一 LCALL WDNM 。調(diào)用 AD 轉(zhuǎn)化為溫度內(nèi)碼的子程序 LCALL NEI2BCD 。調(diào)用 T 內(nèi)碼轉(zhuǎn) BCD 碼子程序 MOV A,6DH 。判斷是否已到第九路 CJNE A,10,BACK 。 MOV 6DH,1 。置為第一路 BACK:RET 。返回 BACK1:LCALL WDNM 。凍結(jié)狀態(tài)。調(diào)用 AD 值轉(zhuǎn)化為溫度內(nèi)碼的子程序 LCALL NEI2BCD 。調(diào)用 T 內(nèi)碼轉(zhuǎn) BCD 碼子程序 RET KEY:MOV A,81H 。鍵盤掃描子程序 MOV DPTR,0FEFFH MOVX @DPTR,A 。C 口先初始化為高 4 位輸出驅(qū)鍵行線、低 4 位輸入鍵列線 MOV DPTR,0FEFEH 。鍵盤行線 高 4 位 輸出驅(qū)動(dòng)全 39。039。 MOV A,00H MOVX @DPTR,A MOVX A,@DPTR 。輸入鍵盤列線電平 低 4 位 MOV 67H,A MOV A,88H 。C 口改初始化為高 4 位輸入驅(qū)鍵行線、低 4 位輸出驅(qū)鍵列線 MOV DPTR,0FEFFH MOVX @DPTR,A MOV DPTR,0FEFEH 。鍵盤列線 低 4 位 輸出驅(qū)動(dòng)全 39。039。 MOV A,00H MOVX @DPTR,A MOVX A,@DPTR 。輸入鍵盤行線電平 高 4 位 ANL 67H,0FH 。列線電平值保留所在的低 4 位 ANL A,0F0H 。行線電平值保留所在的高 4 位 ORL 67H,A 。兩次輸入的列線、行線電平組合成 8 位行列碼 MOV 66H,00H 。鍵號(hào)初值為 00H MOV R5,10H 。將進(jìn)行 16 個(gè)鍵碼查表 MOV DPTR,KEY_N 。鍵碼表首地址 KY:MOV A,00H MOVC A,@A+DPTR 。查表讀取鍵碼表中當(dāng)前位置鍵碼 CJNE A,67H,NK 。與 8 位行列碼比較,不同則轉(zhuǎn) NK 查下一個(gè) SJMP KN 。相同則轉(zhuǎn) KN 根據(jù)已獲取的鍵號(hào)進(jìn)行相應(yīng)處理 NK:INC 66H 。鍵號(hào)加 1 INC DPTR 。指向鍵值表下一個(gè)位置 DJNZ R5,KY 。未查完,繼續(xù) MOV 66H,0FFH 。查完,說(shuō)明無(wú)按鍵或出現(xiàn)異常行列碼,存儲(chǔ)新的鍵號(hào) KN:MOV 65H,64H 。已找到鍵號(hào),存儲(chǔ)上一次的鍵號(hào) MOV 64H,66H 。存儲(chǔ)新的鍵號(hào) RET KEY_N:DB 0EEH,0EDH,0EBH,0E7H 。鍵碼 K0,K1,K2,K3 DB 0DEH,0DDH,0DBH,0D7H 。鍵碼 K4,K5,K6,K7 DB 0BEH,0BDH,0BBH,0B7H 。鍵碼 K8,K9,K10,K11 DB 7EH,7DH,7BH,77H 。鍵碼 K12,K13,K14,K15 SDJP:MOV A,64H 。設(shè)定節(jié)拍子程序 CJNE A,0FFH,KBACK 。 MOV A,65H 。 CJNE A,0FFH,KBACK1 。 LJMP KBACK 。 KBACK1:CJNE A,10,KBACK2 。是否是按鍵 F? MOV 33H,19 MOV 32H,19 MOV 30H,19 MOV 35H,19 MOV 6EH,02H 。修改進(jìn)程碼 SETB 。 MOV R7,A 。把 A 的值暫時(shí)存放在 R7 中 MOV A,24H 。取超時(shí)操作的設(shè)定的單元 CJNE A,23H,KBACK2 。不等的時(shí)候直接返回 MOV A,R7 。回存 A 的值 MOV 23H,00H 。23H 單元清零 MOV 6EH,01H 。修改進(jìn)程碼 CLR LJMP KBACK 。 KBACK2:CJNE A,11,KBACK3 。是否是按鍵 S? MOV 30H,22 。顯示 S 字符 。修改進(jìn)程碼 KBACK3:CJNE A,12,KBACK4 。是否是按鍵 C? MOV 6EH,01H 。修改進(jìn)程碼 CLR 。 LJMP KBACK JNB ,KBACK 。沒(méi)按下 F 鍵的時(shí)候直接返回 KBACK4:CJNE A,0,KBACK5 。是否是按鍵 0? MOV 35H,0 KBACK5:CJNE A,1,KBACK6 。是否是按鍵 1? MOV 35H,1 KBACK6:CJNE A,2,KBACK7 。是否是按鍵 2? MOV 35H,2 KBACK7:CJNE A,3,KBACK8 。是否是按鍵 3? MOV 35H,3 KBACK8:CJNE A,4,KBACK9 。是否是按鍵 4? MOV 35H,4 KBACK9:CJNE A,5,KBACK10 。是否是按鍵 5? MOV 35H,5 KBACK10:CJNE A,6,KBACK11 。是否是按鍵 6? MOV 35H,6 KBACK11:CJNE A,7,KBACK12 。是否是按鍵 7? MOV 35H,7 KBACK12:CJNE A,8,KBACK13 。是否是按鍵 8? MOV 35H,8 KBACK13:CJNE A,9,KBACK 。是否是按鍵 9? MOV 35H,9 KBACK:RET CAIJIWD:MOV DPH,0FBH 。寫外部數(shù)據(jù)指針高 8位采用 8路溫度滾存 。 MOV DPL,69H 。讀取外部數(shù)據(jù)指針低八位 MOVX A,@DPTR 。讀取上一次 AD 轉(zhuǎn)換的結(jié)果 MOV 68H,A 。暫存結(jié)果 MOV A,DPL 。數(shù)據(jù)指針低八位放入累加器中, AD 數(shù)據(jù)存儲(chǔ)地址 SUBB A,0F7H 。減去 F7H MOV B,4 。再乘以 4 MUL AB 。 ADD A,3EH 。再加上 3EH MOV R0,A 。R0 指向?qū)憯?shù)據(jù)的首地址 MOV A,@R0 。讀取該單元的數(shù)據(jù) INC R0 。指針加一 MOV @R0,A 。在該單元放入前個(gè)單元的數(shù)據(jù) DEC R0 。指針連續(xù)后退兩次 DEC R0 。 MOV A,@R0 。讀取該單元的數(shù)據(jù) INC R0 。指針加一 MOV @R0,A 。在該單元放入前個(gè)單元的數(shù)據(jù) DEC R0 。指針連續(xù)后退兩次 DEC R0 。 MOV A,@R0 。讀取該單元的數(shù)據(jù) INC R0 。指針加一 MOV @R0,A 。在該單元放入前個(gè)單元的數(shù)據(jù) DEC R0 。指針后退一次 MOV A,68H 。讀取最新的數(shù)據(jù) MOV @R0,A 。在該單元放入最新的數(shù)據(jù) INC DPL 。數(shù)據(jù)指針低八位加一,準(zhǔn)備轉(zhuǎn)換下一路 MOV A,DPL 。 MOV 69H,A 。存儲(chǔ)數(shù)據(jù)指針低八位 CJNE A,00H,AD1 。判斷八路是否全部轉(zhuǎn)換過(guò)?? MOV DPL,0F8H 。是,重新從第一路開始 MOV 69H,0F8H 。 AD1:MOVX @DPTR,A 。啟動(dòng) AD 轉(zhuǎn)換 RET WDNM:MOV A,6DH 。取當(dāng)前路次值 A/D 數(shù)據(jù)轉(zhuǎn)化成溫度內(nèi)碼子程序 MOV B,4 。B 存入地址倍數(shù) MUL AB 。求得當(dāng)前路的存儲(chǔ)首地址 ADD A,3CH 。 MOV R0,A 。R0 指針指向存儲(chǔ)路數(shù) AD 值的首地址 40H5FH 中的一個(gè) MOV R5 ,04H MOV R2,00H MOV R4,00H MOV R1,00H WDNM5:MOV A ,@R0 WDNM1:DJNZ R5 ,WDNM2 LJMP WDNM3 WDNM2:INC R0 ADD A ,@R0 。把四次 A/D 值的和的低字節(jié)放到累加器 A 中 JNC WDNM1 。計(jì)算出溫度內(nèi)碼實(shí)現(xiàn)的運(yùn)算 D1+D2+D3+D4 *251/256 CLR C INC R2 。R2 用來(lái)存放四次 A/D 值相加的高字節(jié) LJMP WDNM1 WDNM3:MOV B ,251 MUL AB 。低字節(jié)先乘以 251,低字節(jié)放到 A 中 MOV R4 ,B 。相乘后右移 8 位相當(dāng)于丟棄低字節(jié) ,高字節(jié)放到 R4 中 MOV A ,R2 。 MOV B ,251 。相加后的高字節(jié) *251
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1