MCS51单片机数据采集与显示系统_第1页
MCS51单片机数据采集与显示系统_第2页
MCS51单片机数据采集与显示系统_第3页
MCS51单片机数据采集与显示系统_第4页
MCS51单片机数据采集与显示系统_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据采集与显示系统设计说明与要求一、此题目模拟一个数据采集和处理系统。设原始信号为一个压力信号〔压力范围为:0~100kg,现在经过确定的模拟调理电路变为5V电压信号〔电位器模拟产生。现需要编程完成以下功能:二、用试验箱上的分压电阻VR2或VR1,模拟测试信号。信号电压的变化范围:0~5V。用手动调整分压值,来模拟信号的变化。三、设计流程:数码管显示(16电位器输出→ADC0809考虑键盘编程的完整设计任务:参考硬件:A\D8279及数码管显示模块。个,要求存放于外部的RAM中,从4100H开头存放设计要求:原始信号为一个压力信号〔100k0~5V个,要求存放于外部的RAM中,从4100H开头存放求平均值。假定:信号值在0~1V〔0~20kg〕时,对象处于过低的非正常工作状态。信号值在1~4V〔20~80kg〕时,对象处于正常工作状态。信号值在4~5V〔80~100kg〕时,对象处于过高的非正常工作状态〔用试验箱左下脚发光二极管分别表示。具体的要求如下:程序全速运行后,数码管显示“P”字样,表示程序预备就绪。”键,数码管实时显示采样的电压值大小〔小数点后两位,采样的时间自定。例如:假设可调的压力信号是24.6kg24.6G。按下试验板上的“1”键,程序暂停并冻结显示的压力值。假设再按下“0”键重实时显示电压值。erro撰写试验报告〔打印〕四、试验报告包括的内容:1、试验报告的格式和要求:参见范本。2、试验报告的内容:试验目的和要求;试验原理〔框〕图;程序流程图〔包括主程序和子程序;源程序清单。保存现场保存现场8279工作方式〔左端输入,双键互锁〕827915,即设置了键盘扫描速率写入去除命令字C1H或D1H用来清屏恢复现场开头SP指针赋值8279初始化置中断状态SETBIT0;SETBEA;SETBEX0N是否有键输入LED显示PYN0Y启动A/DLED显示输入电压1YNAD转换停顿LED显示EEROR仅供参考的程序流程图:芯片8279初始化程序流程图:主程序流程图:A\D转换子程序流程图:开头0809初始化0809的/CS0,启动ADINT_0B51,商送LED显示〔整数局部〕5,商送LED显示〔小数点后第一位〕1位,结果送LED显示〔小数点后其次位〕N是否有键输入YN0Y启动A/D转换同时LED显示输入电压 键值是否为1YNAD转换停顿LED显示EEROR开头开头保存现场80H〔RAM1〕〔80H+R4〕查表〔表起始位置+R5〕显示数据恢复现场完毕LED显示子程序流程图:AD转换程序: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 ;通道数MOV A,R0MOV ORL DPL,AMOVX @DPTR,A ;启动A_DCJNE R7,#00H,$;等待A_D转换完毕MOV DPTR,#8300HMOVA,BMOVX@DPTR,A;数据输出MOVR7,#0FFH;清读数标志SJMPA_DINT_0:MOVXA,@DPTR;读A_D数据MOVB,AMOVR7,#00H;置读数标志RETIEND8279;-------------------------------------------------------Z8279 EQU 0FF82H ;8279状态/命令口地址D8279 EQU 0FF80H ;8279数据口地址LEDMOD EQU 00H ;左边输入八位字符显示;外部译码键扫描方式,双键互锁LEDFEQEQU2FH;扫描速率LEDCLSEQU0C1H;去除显示RAMLEDWR0EQU80HRAMORG 0000HAJMP STARTORG 001BH ;INTT1入口地址AJMP INT_T1ORG 0040HSTART:MOV SP,#60HLCALLINIT8279 8279MOVR3,#0H;时MOVR2,#0H;分MOVR1,#0H;秒MOVR6,#0H;标志MOVTMOD,#10HMOVTL1,#00H;50mS的时间常数MOVTH1,#04CHMOVR0,#20SETBTR1SETBET1SETB EA ;允许中断WAIT:CJNE LCALLDISPLAYMOVR6,#0SJMPWAITINIT8279:;8279初始化子程序PUSHDPH;保存现场PUSHDPLPUSHACCLCALLDELAY ;延时MOVDPTR,#Z8279MOVA,#LEDMOD8279MOVX@DPTR,AMOVA,#LEDFEQ;置键盘扫描速率MOVX@DPTR,AMOVA,#LEDCLS;去除LED显示MOVX@DPTR,ALCALLDELAY ;延时POP ACC ;恢复现场POP DPLPOP RET;显示字符子程序R4,位置R5,值DISLED:PUSH DPH ;保存现场PUSHDPLPUSHACCMOVA,#LEDWR0;置显示起始地址ADDA,R4;加位置偏移量MOVDPTR,#Z8279MOVX@DPTR,A;设定显示位置MOV DPTR,#LEDSEGMOVA,R5MOVCA,@A+DPTR;查表MOVDPTR,#D8279MOVX @DPTR,A ;显示数据POP ACC ;恢复现场POP DPLPOP RETDELAY: ;延时子程序MOVDELAY1:

010,#0H

;保存现场MOV1,#0HDJNZ1,$DJNZ0,DELAY1POP1;恢复现场POP0RETINT_T1:;INT_T1PUSHDPH;保护现场PUSHDPLPUSHACCPUSHPSWCLRTR1MOVTL1,#00H;50mS定时常数MOVTH1,#4CHSETBTR1DJNZR0,EXIT;推断毫秒=0MOVR0,#20;DELAY1SECONDMOVR6,#0FFH;置秒标志CJNE R1,#59H,SECOND;推断秒=59MOV R1,#99HCJNE R2,#59H,MINUTE;推断分=59MOV R2,#99HCJNE R3,#23H,HOUR ;推断时=23MOV R3,#99HHOUR:MOV A,R3ADD A,#1 ;时加1DA AMOV MINUTE:MOVADDDAMOVSECOND:

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

PSW ;恢复现场ACCDPLDPHRETI ;中断返回DISPLAY:MOVA,R3ANLA,#0FHMOVR5,AMOVR4,#6LCALLDISLED;显示小时低位MOVA,R3SWAPAANLA,#0FHMOVR5,AMOVR4,#7LCALLDISLED;显示小时高位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状态/命令口地址D8279 EQU0FF80H ;8279数据口地址LEDMOD EQU00H ;左边输入八位字符显示;外部译码键扫描方式,双键互锁LEDFEQ EQU2FHLEDCLS EQU0C1HLEDWR0 EQU80HREADKB EQU40H;扫描速率;去除显示RAMRAM;读FIFORAM地址0的命令字;-------------------------------------------------------ORG0000HAJMPSTARTORG001BH ;INTT1入口地址AJMPINT_T1ORG0040HSTART:MOVSP,#60HLCALLINIT8279 8279MOVR3,#0H;时MOVR2,#0H;分MOVR1,#0H;秒MOVR0,#0H;10MOVR6,#0FFH;标志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”,转MONITORAJMP MONITORCONT:CJNE R6,#0FFH,WAIT;假设无秒标志则循环LCALLDISPLAY ;显示时间MOV R6,#0 ;清标志SJMP WAIT ;循环MONITOR:NOPSJMP $ ;等待回到监控CLEAR_T:;时间清零子程序CLRTR1;关计数器MOVR3,#0H;小时清零MOVR2,#0H;分钟清零MOVR1,#0H;秒清零MOVR0,#0H;10MOVR6,#0FFH;置秒标志LCALLDIS_mS ;显示毫秒RETSTART_T: ;电子钟计时子程序SETBRETSTOP_T:TR1;电子钟停顿计时子程序CLRTR1RETSET_T:;设置初值子程序CLRTR1;关计数器MOVR4,#7LCALLGETWORD ;读小时数CJNE A,#0FFH,INVALID;推断输入合法性MOV A,BADD A,#232JCINVALID;推断输入小时值<24MOVA,BMOVB,#10DIVABSWAPAADDA,BMOVR3,A;保存输入的值MOVR4,#5LCALLGETWORD ;读分钟数CJNE A,#0FFH,INVALID;推断输入合法性MOV A,BADD A,#196JC INVALID ;推断输入分钟数<60MOV A,BMOV DIV ABSWAP AADD A,BMOV R2,A 输入的值MOV R4,#3LCALLGETWORD ;读分钟数CJNE A,#0FFH,INVALID;推断输入合法性MOV A,BADD A,#196JC INVALID ;推断输入分钟值<60MOV A,BMOV DIV ABSWAP AADD A,BMOV R1,A ;保存输入的值MOV R4,#1LCALLGETWORD ;读10毫秒数CJNE A,#0FFH,INVALID;推断输入合法性MOV A,BMOV B,#10DIV ABSWAP ADD A,BMOV R0,A ;保存输入的值AJMP SET_TOKINVALID:LCALLCLEAR_T ;时间清零SET_TOK:LCALLDIS_mS 10LCALLDISPLAY ;显示时间RETGETWORD: ;读数子程序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 ;置合法输入标志AJMP KEYOKERROR2:POP ACCERROR1:MOV A,#0 ;置非法输入标志KEYOK: RETINIT8279: ;8279初始化子程序PUSH DPH ;保存现场PUSH DPLPUSH ACCLCALLDELAY ;延时MOV DPTR,#Z8279MOVA,#LEDMOD8279MOVX@DPTR,AMOVA,#LEDFEQ;置键盘扫描速率MOVX@DPTR,AMOVA,#LEDCLS;去除LED显示MOVX@DPTR,APOP ACC ;恢复现场POP DPLPOP RETGETKEY: ;读取键盘子程序;输入:无;输出:B:读到的键码A:按键的标志PUSHDPH;保存现场PUSHDPLPUSHPSWMOVDPTR,#Z8279MOVXA,@DPTR8279ANL A,#07H D7-D3JNZ GETVAL 否有键输入MOV A,#0H ;置标志(无键输入)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 ;置标志(有键输入)NKBHIT:POP PSW ;恢复现场POP DPLPOP DPHRETDISLED: ;显示字符子程序R4,位置R5,值PUSH DPH ;保存现场PUSH DPLPUSH ACCMOV A,#LEDWR0 ;置显示起始地址ADD A,R4 ;加位置偏移量MOV DPTR,#Z8279MOVX @DPTR,A ;设定显示位置MOV DPTR,#LEDSEG;置显示常数表起始位置MOV A,R5MOVC A,@A+DPTR ;查表MOV DPTR,#D8279MOVX @DPTR,A ;显示数据POP ACC ;恢复现场POP DPLPOP DPHRETDELAY:;延时子程序PUSH0;保存现场PUSH1MOV0,#0HDELAY1:MOV 1,#0HDJNZ 1,$DJNZ 0,DELAY1POP POP RET

;恢复现场DIS_mS:MOV A,R0ANL A,#0FHMOV R5,AMOV R4,#0LCALLDISLED 10MOV A,R0SWAP A ;凹凸半字节交换ANL A,#0FHMOV R5,AMOV R4,#1LCALLDISLED 10RETINT_T1: ;INT_T1中断效劳子程序PUSHDPH ;保护现场PUSHDPLPUSHACCPUSHPSWCLRTR1MOV TL1,#00H ;10毫秒定时常数MOV TH1,#0DCHSETB TR1MOV ADD A,#1 ;10毫秒数加1DA AMOV R0,ALCALLDIS_mS ;显示10毫秒CJNE R0,#0,EXIT ;推断10毫秒=0MOV R6,#0FFH ;置秒标志CJNE R1,#59H,SECOND;推断秒=59MOV R1,#99HCJNE 推断分=59MOV R2,#99HCJNE R3,#23H,HOUR ;推断时=23MOV R3,#99HHOUR:MOV A,R3ADD A,#1 ;时加1DA AMOV MINUTE:MOV A,R2ADD A,#1 ;分加1DA AMOV SE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论