MCS51單片機(jī)數(shù)據(jù)采集與顯示系統(tǒng)_第1頁
MCS51單片機(jī)數(shù)據(jù)采集與顯示系統(tǒng)_第2頁
MCS51單片機(jī)數(shù)據(jù)采集與顯示系統(tǒng)_第3頁
MCS51單片機(jī)數(shù)據(jù)采集與顯示系統(tǒng)_第4頁
MCS51單片機(jī)數(shù)據(jù)采集與顯示系統(tǒng)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)采集與顯示系統(tǒng)設(shè)計(jì)說明與要求一、此題目模擬一個(gè)數(shù)據(jù)采集和處理系統(tǒng)。設(shè)原始信號(hào)為一個(gè)壓力信號(hào)〔壓力范圍為:0~100kg,現(xiàn)在經(jīng)過確定的模擬調(diào)理電路變?yōu)?V電壓信號(hào)〔電位器模擬產(chǎn)生?,F(xiàn)需要編程完成以下功能:二、用試驗(yàn)箱上的分壓電阻VR2或VR1,模擬測(cè)試信號(hào)。信號(hào)電壓的變化范圍:0~5V。用手動(dòng)調(diào)整分壓值,來模擬信號(hào)的變化。三、設(shè)計(jì)流程:數(shù)碼管顯示(16電位器輸出→ADC0809考慮鍵盤編程的完整設(shè)計(jì)任務(wù):參考硬件:A\D8279及數(shù)碼管顯示模塊。個(gè),要求存放于外部的RAM中,從4100H開頭存放設(shè)計(jì)要求:原始信號(hào)為一個(gè)壓力信號(hào)〔100k0~5V個(gè),要求存放于外部的RAM中,從4100H開頭存放求平均值。假定:信號(hào)值在0~1V〔0~20kg〕時(shí),對(duì)象處于過低的非正常工作狀態(tài)。信號(hào)值在1~4V〔20~80kg〕時(shí),對(duì)象處于正常工作狀態(tài)。信號(hào)值在4~5V〔80~100kg〕時(shí),對(duì)象處于過高的非正常工作狀態(tài)〔用試驗(yàn)箱左下腳發(fā)光二極管分別表示。具體的要求如下:程序全速運(yùn)行后,數(shù)碼管顯示“P”字樣,表示程序預(yù)備就緒?!辨I,數(shù)碼管實(shí)時(shí)顯示采樣的電壓值大小〔小數(shù)點(diǎn)后兩位,采樣的時(shí)間自定。例如:假設(shè)可調(diào)的壓力信號(hào)是24.6kg24.6G。按下試驗(yàn)板上的“1”鍵,程序暫停并凍結(jié)顯示的壓力值。假設(shè)再按下“0”鍵重實(shí)時(shí)顯示電壓值。erro撰寫試驗(yàn)報(bào)告〔打印〕四、試驗(yàn)報(bào)告包括的內(nèi)容:1、試驗(yàn)報(bào)告的格式和要求:參見范本。2、試驗(yàn)報(bào)告的內(nèi)容:試驗(yàn)?zāi)康暮鸵?;試?yàn)原理〔框〕圖;程序流程圖〔包括主程序和子程序;源程序清單。保存現(xiàn)場(chǎng)保存現(xiàn)場(chǎng)8279工作方式〔左端輸入,雙鍵互鎖〕827915,即設(shè)置了鍵盤掃描速率寫入去除命令字C1H或D1H用來清屏恢復(fù)現(xiàn)場(chǎng)開頭SP指針賦值8279初始化置中斷狀態(tài)SETBIT0;SETBEA;SETBEX0N是否有鍵輸入LED顯示PYN0Y啟動(dòng)A/DLED顯示輸入電壓1YNAD轉(zhuǎn)換停頓LED顯示EEROR僅供參考的程序流程圖:芯片8279初始化程序流程圖:主程序流程圖:A\D轉(zhuǎn)換子程序流程圖:開頭0809初始化0809的/CS0,啟動(dòng)ADINT_0B51,商送LED顯示〔整數(shù)局部〕5,商送LED顯示〔小數(shù)點(diǎn)后第一位〕1位,結(jié)果送LED顯示〔小數(shù)點(diǎn)后其次位〕N是否有鍵輸入YN0Y啟動(dòng)A/D轉(zhuǎn)換同時(shí)LED顯示輸入電壓 鍵值是否為1YNAD轉(zhuǎn)換停頓LED顯示EEROR開頭開頭保存現(xiàn)場(chǎng)80H〔RAM1〕〔80H+R4〕查表〔表起始位置+R5〕顯示數(shù)據(jù)恢復(fù)現(xiàn)場(chǎng)完畢LED顯示子程序流程圖:AD轉(zhuǎn)換程序:A_DPORTEQU8100H ;0809口地址ORG 0000HLJMP STARTORG 0003HLJMP INT_0ORG 0040HSTART:MOV SP,#60HMOV R7,#00H ;初始化SETB IT0SETB EASETB EX0 ;INT0允許A_D:MOV R0,#00H ;通道數(shù)MOV A,R0MOV ORL DPL,AMOVX @DPTR,A ;啟動(dòng)A_DCJNE R7,#00H,$;等待A_D轉(zhuǎn)換完畢MOV DPTR,#8300HMOVA,BMOVX@DPTR,A;數(shù)據(jù)輸出MOVR7,#0FFH;清讀數(shù)標(biāo)志SJMPA_DINT_0:MOVXA,@DPTR;讀A_D數(shù)據(jù)MOVB,AMOVR7,#00H;置讀數(shù)標(biāo)志RETIEND8279;-------------------------------------------------------Z8279 EQU 0FF82H ;8279狀態(tài)/命令口地址D8279 EQU 0FF80H ;8279數(shù)據(jù)口地址LEDMOD EQU 00H ;左邊輸入八位字符顯示;外部譯碼鍵掃描方式,雙鍵互鎖LEDFEQEQU2FH;掃描速率LEDCLSEQU0C1H;去除顯示RAMLEDWR0EQU80HRAMORG 0000HAJMP STARTORG 001BH ;INTT1入口地址AJMP INT_T1ORG 0040HSTART:MOV SP,#60HLCALLINIT8279 8279MOVR3,#0H;時(shí)MOVR2,#0H;分MOVR1,#0H;秒MOVR6,#0H;標(biāo)志MOVTMOD,#10HMOVTL1,#00H;50mS的時(shí)間常數(shù)MOVTH1,#04CHMOVR0,#20SETBTR1SETBET1SETB EA ;允許中斷WAIT:CJNE LCALLDISPLAYMOVR6,#0SJMPWAITINIT8279:;8279初始化子程序PUSHDPH;保存現(xiàn)場(chǎng)PUSHDPLPUSHACCLCALLDELAY ;延時(shí)MOVDPTR,#Z8279MOVA,#LEDMOD8279MOVX@DPTR,AMOVA,#LEDFEQ;置鍵盤掃描速率MOVX@DPTR,AMOVA,#LEDCLS;去除LED顯示MOVX@DPTR,ALCALLDELAY ;延時(shí)POP ACC ;恢復(fù)現(xiàn)場(chǎng)POP DPLPOP RET;顯示字符子程序R4,位置R5,值DISLED:PUSH DPH ;保存現(xiàn)場(chǎng)PUSHDPLPUSHACCMOVA,#LEDWR0;置顯示起始地址ADDA,R4;加位置偏移量MOVDPTR,#Z8279MOVX@DPTR,A;設(shè)定顯示位置MOV DPTR,#LEDSEGMOVA,R5MOVCA,@A+DPTR;查表MOVDPTR,#D8279MOVX @DPTR,A ;顯示數(shù)據(jù)POP ACC ;恢復(fù)現(xiàn)場(chǎng)POP DPLPOP RETDELAY: ;延時(shí)子程序MOVDELAY1:

010,#0H

;保存現(xiàn)場(chǎng)MOV1,#0HDJNZ1,$DJNZ0,DELAY1POP1;恢復(fù)現(xiàn)場(chǎng)POP0RETINT_T1:;INT_T1PUSHDPH;保護(hù)現(xiàn)場(chǎng)PUSHDPLPUSHACCPUSHPSWCLRTR1MOVTL1,#00H;50mS定時(shí)常數(shù)MOVTH1,#4CHSETBTR1DJNZR0,EXIT;推斷毫秒=0MOVR0,#20;DELAY1SECONDMOVR6,#0FFH;置秒標(biāo)志CJNE R1,#59H,SECOND;推斷秒=59MOV R1,#99HCJNE R2,#59H,MINUTE;推斷分=59MOV R2,#99HCJNE R3,#23H,HOUR ;推斷時(shí)=23MOV R3,#99HHOUR:MOV A,R3ADD A,#1 ;時(shí)加1DA AMOV MINUTE:MOVADDDAMOVSECOND:

A,R2A,#1 1AR2,AMOVA,R1ADDA,#11DAAMOVR1,AEXIT:

PSW ;恢復(fù)現(xiàn)場(chǎng)ACCDPLDPHRETI ;中斷返回DISPLAY:MOVA,R3ANLA,#0FHMOVR5,AMOVR4,#6LCALLDISLED;顯示小時(shí)低位MOVA,R3SWAPAANLA,#0FHMOVR5,AMOVR4,#7LCALLDISLED;顯示小時(shí)高位MOVA,R2ANLA,#0FHMOVR5,AMOVR4,#3LCALLDISLED;顯示分鐘低位MOVA,R2SWAPAANLA,#0FHMOVR5,AMOVR4,#4LCALLDISLED;顯示分鐘高位MOVA,R1ANLA,#0FHMOVR5,AMOVR4,#0LCALLDISLED;顯示秒低位MOVA,R1SWAPAANLA,#0FHMOVR5,AMOVR4,#1LCALLDISLED;顯示秒高位RETLEDSEG:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;”0,1,2,3,4,5,6,7”;”8,9,A,B,C,D,E,F”DB6DH,02H,08H,00H,59H,0FH,76H;”U,-,_,,I,O,P,”END鍵盤顯示〔電子秒表〕;-------------------------------------------------------Z8279 EQU0FF82H ;8279狀態(tài)/命令口地址D8279 EQU0FF80H ;8279數(shù)據(jù)口地址LEDMOD EQU00H ;左邊輸入八位字符顯示;外部譯碼鍵掃描方式,雙鍵互鎖LEDFEQ EQU2FHLEDCLS EQU0C1HLEDWR0 EQU80HREADKB EQU40H;掃描速率;去除顯示RAMRAM;讀FIFORAM地址0的命令字;-------------------------------------------------------ORG0000HAJMPSTARTORG001BH ;INTT1入口地址AJMPINT_T1ORG0040HSTART:MOVSP,#60HLCALLINIT8279 8279MOVR3,#0H;時(shí)MOVR2,#0H;分MOVR1,#0H;秒MOVR0,#0H;10MOVR6,#0FFH;標(biāo)志MOVTMOD,#10HMOVTL1,#00H;10MOVTH1,#0DCHLCALLDIS_mSSETB ET1SETB EA ;允許中斷WAIT:LCALLGETKEY ;讀鍵盤CJNE A,#0FFH,CONT;推斷是否有鍵輸入MOV A,BCJNE A,#3CH,KEY_G;輸入鍵是”C”CLEAR_TLCALLCLEAR_TKEY_G:CJNE A,#3AH,KEY_D;輸入鍵是”G”START_TLCALLSTART_TKEY_D:CJNE A,#3DH,KEY_P;輸入鍵是”D”STOP_TLCALLSTOP_TKEY_P:CJNE A,#3BH,KEY_E;輸入鍵是”P”SET_TLCALLSET_TKEY_E:CJNE A,#3EH,CONT ;輸入鍵是”E”,轉(zhuǎn)MONITORAJMP MONITORCONT:CJNE R6,#0FFH,WAIT;假設(shè)無秒標(biāo)志則循環(huán)LCALLDISPLAY ;顯示時(shí)間MOV R6,#0 ;清標(biāo)志SJMP WAIT ;循環(huán)MONITOR:NOPSJMP $ ;等待回到監(jiān)控CLEAR_T:;時(shí)間清零子程序CLRTR1;關(guān)計(jì)數(shù)器MOVR3,#0H;小時(shí)清零MOVR2,#0H;分鐘清零MOVR1,#0H;秒清零MOVR0,#0H;10MOVR6,#0FFH;置秒標(biāo)志LCALLDIS_mS ;顯示毫秒RETSTART_T: ;電子鐘計(jì)時(shí)子程序SETBRETSTOP_T:TR1;電子鐘停頓計(jì)時(shí)子程序CLRTR1RETSET_T:;設(shè)置初值子程序CLRTR1;關(guān)計(jì)數(shù)器MOVR4,#7LCALLGETWORD ;讀小時(shí)數(shù)CJNE A,#0FFH,INVALID;推斷輸入合法性MOV A,BADD A,#232JCINVALID;推斷輸入小時(shí)值<24MOVA,BMOVB,#10DIVABSWAPAADDA,BMOVR3,A;保存輸入的值MOVR4,#5LCALLGETWORD ;讀分鐘數(shù)CJNE A,#0FFH,INVALID;推斷輸入合法性MOV A,BADD A,#196JC INVALID ;推斷輸入分鐘數(shù)<60MOV A,BMOV DIV ABSWAP AADD A,BMOV R2,A 輸入的值MOV R4,#3LCALLGETWORD ;讀分鐘數(shù)CJNE A,#0FFH,INVALID;推斷輸入合法性MOV A,BADD A,#196JC INVALID ;推斷輸入分鐘值<60MOV A,BMOV DIV ABSWAP AADD A,BMOV R1,A ;保存輸入的值MOV R4,#1LCALLGETWORD ;讀10毫秒數(shù)CJNE A,#0FFH,INVALID;推斷輸入合法性MOV A,BMOV B,#10DIV ABSWAP ADD A,BMOV R0,A ;保存輸入的值A(chǔ)JMP SET_TOKINVALID:LCALLCLEAR_T ;時(shí)間清零SET_TOK:LCALLDIS_mS 10LCALLDISPLAY ;顯示時(shí)間RETGETWORD: ;讀數(shù)子程序WKEY1:LCALLGETKEY ;讀鍵盤CJNE A,#0FFH,WKEY1;無鍵輸入,則再讀MOV A,BADD A,#0C6HJC ERROR1 9MOV A,BSUBB JC ERROR1 ;推斷輸入是否小于0MOV R5,ALCALLDISLED ;顯示輸入的字符MOV B,#10MUL ABPUSH ACC ;保存輸入的值WKEY2:LCALLGETKEY ;讀鍵盤CJNE A,#0FFH,WKEY2;無鍵輸入則再讀MOV A,BADD A,#0C6H ;推斷輸入是否大于9JC ERROR2MOV A,BSUBB A,#30H ;推斷輸入是否小于0JC ERROR2DEC R4MOV R5,ALCALLDISLED ;顯示輸入的字符MOV B,APOP ACCADD A,BMOV B,A ;把得到的值存在BMOV A,#0FFH ;置合法輸入標(biāo)志AJMP KEYOKERROR2:POP ACCERROR1:MOV A,#0 ;置非法輸入標(biāo)志KEYOK: RETINIT8279: ;8279初始化子程序PUSH DPH ;保存現(xiàn)場(chǎng)PUSH DPLPUSH ACCLCALLDELAY ;延時(shí)MOV DPTR,#Z8279MOVA,#LEDMOD8279MOVX@DPTR,AMOVA,#LEDFEQ;置鍵盤掃描速率MOVX@DPTR,AMOVA,#LEDCLS;去除LED顯示MOVX@DPTR,APOP ACC ;恢復(fù)現(xiàn)場(chǎng)POP DPLPOP RETGETKEY: ;讀取鍵盤子程序;輸入:無;輸出:B:讀到的鍵碼A:按鍵的標(biāo)志PUSHDPH;保存現(xiàn)場(chǎng)PUSHDPLPUSHPSWMOVDPTR,#Z8279MOVXA,@DPTR8279ANL A,#07H D7-D3JNZ GETVAL 否有鍵輸入MOV A,#0H ;置標(biāo)志(無鍵輸入)SJMP NKBHITGETVAL:MOV A,#READKB ;讀FIFORAM命令MOVX @DPTR,AMOV DPTR,#D8279MOVX A,@DPTR ;讀鍵ANL A,#3FH ;屏蔽SHIFT和CTRL鍵MOV DPTR,#KEYCODE;鍵碼表起始地址MOVC A,@A+DPTR ;查表MOV B,A ;置返回鍵值MOV A,#0FFH ;置標(biāo)志(有鍵輸入)NKBHIT:POP PSW ;恢復(fù)現(xiàn)場(chǎng)POP DPLPOP DPHRETDISLED: ;顯示字符子程序R4,位置R5,值PUSH DPH ;保存現(xiàn)場(chǎng)PUSH DPLPUSH ACCMOV A,#LEDWR0 ;置顯示起始地址ADD A,R4 ;加位置偏移量MOV DPTR,#Z8279MOVX @DPTR,A ;設(shè)定顯示位置MOV DPTR,#LEDSEG;置顯示常數(shù)表起始位置MOV A,R5MOVC A,@A+DPTR ;查表MOV DPTR,#D8279MOVX @DPTR,A ;顯示數(shù)據(jù)POP ACC ;恢復(fù)現(xiàn)場(chǎng)POP DPLPOP DPHRETDELAY:;延時(shí)子程序PUSH0;保存現(xiàn)場(chǎng)PUSH1MOV0,#0HDELAY1:MOV 1,#0HDJNZ 1,$DJNZ 0,DELAY1POP POP RET

;恢復(fù)現(xiàn)場(chǎng)DIS_mS:MOV A,R0ANL A,#0FHMOV R5,AMOV R4,#0LCALLDISLED 10MOV A,R0SWAP A ;凹凸半字節(jié)交換ANL A,#0FHMOV R5,AMOV R4,#1LCALLDISLED 10RETINT_T1: ;INT_T1中斷效勞子程序PUSHDPH ;保護(hù)現(xiàn)場(chǎng)PUSHDPLPUSHACCPUSHPSWCLRTR1MOV TL1,#00H ;10毫秒定時(shí)常數(shù)MOV TH1,#0DCHSETB TR1MOV ADD A,#1 ;10毫秒數(shù)加1DA AMOV R0,ALCALLDIS_mS ;顯示10毫秒CJNE R0,#0,EXIT ;推斷10毫秒=0MOV R6,#0FFH ;置秒標(biāo)志CJNE R1,#59H,SECOND;推斷秒=59MOV R1,#99HCJNE 推斷分=59MOV R2,#99HCJNE R3,#23H,HOUR ;推斷時(shí)=23MOV R3,#99HHOUR:MOV A,R3ADD A,#1 ;時(shí)加1DA AMOV MINUTE:MOV A,R2ADD A,#1 ;分加1DA AMOV SE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論