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

下载本文档

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

文档简介

1、1/ 36数据采集与显示系统设计说明与要求一、本题目模拟一个数据采集和处理系统。设原始信号为一个压力信号 压力范围为:0100kg),现在经过一定的模拟调理电路变为05V 电压信号 电位器输出TADC0809 采集T数字量(二进制十进制T数码管显示考虑键盘编程的完整设计任务:a. 参考硬件:AD 转换模块,键盘接口 8279 及数码管显示模块。b. 设计要求:原始信号为一个压力信号压力范围为:0100kg),经过信号调理电路后输出给定可调直流电压为05V,经过 AD 转换后,通过键盘控制在实验板的数码管上显示该压力信号的大小 十进制)。程序设计时,要加入数字滤波程序:即采集多个数据 可为 18

2、 个,要求存放于外部的 RAM 中,从 4100H 开始存放),剔除最大值和最小值后剩下的数据求平均值。假定:信号值在01V020kg )时,对象处于过低的非正常工作状态。信号值在 14V2080kg )时,对象处于正常工作状态。信号值在45V80100kg )时,对象处于过高的非正常工作状态。用实验箱左下脚发光二极管分别表示)。c. 具体的要求如下:1.程序全速运行后,数码管显示“ P”字样,表示程序准备就绪。2.按下实验板上的“ 0”键,数码管实时显示采样的电压值大小 小数点后两位),采样的时间自定。例如:如果可调的压力信号是24. 6kg,在数码管上应该显示24.6G。3.按下实验板上的

3、“ 1”键,程序暂停并冻结显示的压力值。4.如果再按下“ 0”键重新实时显示电压值。5.按下其他的键,显示“ e r r o r ”。6.撰写实验报告 打印)2/ 36四、实验报告包括的内容:1、实验报告的格式和要求:参见范本。2、实验报告的内容:实验目的和要求;实验原理 框)图;程序流程图 包括主程序和 子程序) ;源程序清单。仅供参考的程序流程图:1.芯片8279初始化程序流程图:3/ 362.主程序流程图:3.AD转换子程序流程图:4/ 36开始4.LED显示子程序流程图:5/ 36AD 转换程序:A_DPORT EQU 8100H。0809口地址ORG 0000HLJMP STARTO

4、RG 0003HLJMP INT_0ORG 0040HSTART:MOV SP,#60H6/ 36MOV R7,#00H。初始化SETB IT0SETB EASETB EX0。INT0允许A_D:MOV R0,#00H。通道数MOV A,R0MOV DPTR,#A_DPORTORL DPL,AMOVX DPTR,A。启动A_DCJNE R7,#00H,$。等待A_D转换结束MOV DPTR,#8300HMOV A,BMOVX DPTR,A。数据输出MOV R7,#0FFH。清读数标志SJMP A_DINT_0:读A_D数据MOVX A,DPTR7/ 36MOV B,AMOVR7,#00H。置读

5、数标志RETIENDI8/ 368279显示Z8279 EQU 0FF82H。8279状态/命令口地址D8279 EQU 0FF80H。8279数据口地址LEDMOD EQU 00H。左边输入 八位字符显示。外部译码键扫描方式,双键互锁LEDFEQ EQU 2FH。扫描速率LEDCLS EQU 0C1H。清除显示RAMLEDWR0 EQU 80H。设定的将要写入的显示RAM地址0 -ORG 0000H9/ 36AJMP START10/ 36ORG 001BH。INT T1入口地址AJMP INT_T1ORG 0040HSTART:MOV SP,#60HLCALL INIT8279MOV R3

6、,#0HMOV R2,#0HMOV R1,#0HMOV R6,#0HMOV TMOD,#10HMOV TL1,#00HMOV TH1,#04CH。初始化8279。时。分。秒。标志。50 mS的时间常数MOV R0,#20SETB TR1SETB ET1SETB EA。允许中断WAIT:11/ 36CJNE R6,#0FFH,WAITLCALL DISPLAYMOV R6,#0SJMP WAITINIT8279:。8279初始化子程序PUSH DPH。保存现场PUSH DPLPUSH ACCLCALL DELAY。延时MOV DPTR ,#Z8279MOV A,#LEDMOD。置8279工作方式

7、MOVX DPTR,AMOV A,#LEDFEQ。置键盘扫描速率MOVX DPTR,AMOV A,#LEDCLS。清除LED显示MOVX DPTR,ALCALL DELAY。延时POP ACC。恢复现场POP DPLMOVX DPTR,A12/ 36POP DPHRET。显示字符子程序。输入:R4,位置R5,值DISLED:PUSH DPH。保存现场PUSH DPLPUSH ACCMOV A,#LEDWR0。置显示起始地址ADD A,R4。加位置偏移量MOV DPTR,#Z8279MOVX DPTR,AMOV DPTR,#LEDSEGMOV A,R5MOVC A,A+DPTRMOV DPTR,

8、#D8279设定显示位置。置显示常数表起始位置。查表显示数据13/ 36POP DPLPOP DPHRETDELAY:。延时子程序PUSH 0。保存现场PUSH 1MOV 0,#0HDELAY1:MOV 1,#0HDJNZ 1,$DJNZ 0,DELAY1POP 1。恢复现场POP 0RETINT_T1:。INT_T1中断服务子程序PUSH DPH。保护现场PUSH DPLPOP ACC恢复现场14/ 36PUSH ACCADD A,#115/ 36DA APUSH PSWCLRTR1MOV TL1,#00H。50mS定时常数MOV TH1,#4CHSETB TR1DJNZ R0,EXIT。判

9、断毫秒=0MOV R0,#20。DELAY 1 SECONDMOV R6,#0FFH。置秒标志CJNE R1,#59H,SECOND。判断秒=59MOV R1,#99HCJNE R2,#59H,MINUTE。判断分=59MOV R2,#99HCJNE R3,#23H,HOUR。判断时=23MOV R3,#99HHOUR:MOV A,R3o时加116/ 36MOV R3,AMINUTE:MOV A,R2ADD A,#1。分加1DA AMOV R2,ASECOND:MOV A,R1ADD A,#1。秒加1DA AMOV R1,AEXIT:POP PSW。恢复现场POP ACCPOP DPLPOP

10、DPHRETI。中断返回17/ 36DISPLAY:MOV A,R3ANL A,#0FHMOV R5,AMOV R4,#6LCALL DISLED。显示小时低位MOV A,R3SWAP AANL A,#0FHMOV R5,AMOV R4,#7LCALL DISLED。显示小时高位MOV A,R2ANL A,#0FHMOV R5,AMOV R4,#3LCALL DISLED。显示分钟低位18/ 36MOV A,R219/ 36SWAP AANL A,#0FHMOV R5,AMOV R4,#4LCALL DISLEDMOV A,R1ANL A,#0FHMOV R5,AMOV R4,#0LCALL

11、DISLEDMOV A,R1SWAP AANL A,#0FHMOV R5,AMOV R4,#1LCALL DISLEDRET显示分钟高位显示秒低位。显示秒高位LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H0,1,2,3,4,5,6,720/ 36DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H。8,9,A,B,C,D,E,FDB 6DH,02H,08H,00H,59H,0FH,76H。U,-,_, ,I,O,P,END键盘显示电子秒表)Z8279 EQU 0FF82H。8279状态/命令口地址D8279 EQU 0FF80H。8279数

12、据口地址LEDMOD EQU 00H。左边输入 八位字符显示。外部译码键扫描方式,双键互锁21/ 36LEDFEQ EQU 2FH。扫描速率MOV TMOD,#10H22/ 36LEDCLS EQU 0C1H。清除显示RAMLEDWR0 EQU 80H。设定的将要写入的显示RAM地址READKB EQU 40H。读FIFO RAM地址0的命令字oSTART:MOV TH1,#0DCHMOV SP,#60HLCALL INIT8279。初始化MOV R3,#0H。时MOV R2,#0H。分MOV R1,#0H。秒MOV R0,#0H。10毫秒MOV R6,#0FFH。标志8279ORG0000H

13、AJMP STARTORG001BH。INT T1入口地址AJMP INT_T1ORG0040HMOV TL1,#00Ho10毫秒的时间常数23/ 36LCALL DIS_mSSETB ET1SETB EA。允许中断WAIT:LCALL GETKEYCJNE A,#0FFH,CONTMOV A,BCJNE A,#3CH,KEY_GLCALL CLEAR_TKEY_G:CJNE A,#3AH,KEY_DLCALL START_TKEY_D:CJNE A,#3DH,KEY_PLCALL STOP_TKEY_P:读键盘。判断是否有键输入。输入键是C,转CLEAR_T。输入键是G,转START_T。输

14、入键是D,转STOP_TCJNE A,#3BH,KEY_E。输入键是P,转SET_T24/ 36LCALL SET_TKEY_E:CJNE A,#3EH,C0NT。输入键是E,转MONITORAJMP MONITORCONT:CJNE R6,#0FFH,WAIT。若无秒标志则循环LCALL DISPLAY。显示时间MOV R6,#0。清标志SJMP WAIT。循环MONITOR:NOPSJMP $。等待回到监控CLEAR_T:。时间清零子程序CLRTR1。关计数器MOV R3,#0H。小时清零MOV R2,#0H。分钟清零MOV R1,#0H。秒清零MOV R0,#0Ho10毫秒清零25/ 3

15、6MOV R6,#0FFHLCALL DIS_mSRETSTART_T:SETB TR1RETSTOP_T:CLR TR1RETSET_T:CLR TR1MOV R4,#7。置秒标志。显示毫秒。电子钟计时子程序电子钟停止计时子程序设置初值子程序关计数器。读小时数判断输入合法性JC INVALID判断输入小时值 24LCALL GETWORDCJNE A,#0FFH,INVALIDMOV A,BADD A,#232MOV R2,A。保存输入的值26/ 36MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R3,A。保存输入的值MOV R4,#5LCALL GETWOR

16、D。读分钟数CJNE A,#0FFH,INVALID。判断输入合法性MOV A,BADD A,#196JC INVALID。判断输入分钟数 60MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R4,#327/ 36LCALL GETWORD。读分钟数CJNE A,#0FFH,INVALID。判断输入合法性MOV A,BADD A,#196JC INVALID。判断输入分钟值MOV A,#0H32/ 3633/ 36SJMP NKBHITGETVAL:MOV A,#READKB。读FIFO RAM命令MOVX DPTR,AMOV DPTR,#D8279MOVX A,

17、DPTR。读键ANL A,#3FH。屏蔽SHIFT和CTRL键MOV DPTR,#KEYCODE。键码表起始地址MOVC A,A+DPTR。查表MOV B,A。置返回键值NKBHIT:POP PSW。恢复现场POP DPLPOP DPHRETDISLED:。显示字符子程序。输入:R4,位置R5,值MOV A,#0FFH置标志(有键输入34/ 36PUSH DPLPUSH ACCMOV A,#LEDWR0。置显示起始地址ADD A,R4。加位置偏移量MOV DPTR,#Z8279MOVX DPTR,A。设定显示位置MOV DPTR,#LEDSEG。置显示常数表起始位置MOV A,R5MOVC A

18、,A+DPTR。查表MOV DPTR,#D8279MOVX DPTR,A。显示数据POP ACC。恢复现场POP DPLPOP DPHRETDELAY:。延时子程序PUSH 0。保存现场PUSH 1PUSH DPH保存现场35/ 36MOV 0,#0HDELAY1:MOV 1,#0HDJNZ 1,$DJNZ 0,DELAY1POP 1。恢复现场POP 0RETDIS_mS:MOV A,R0ANL A,#0FHMOV R5,AMOV R4,#0LCALL DISLED。显示10毫秒低位MOV A,R0SWAP A。高低半字节交换ANL A,#0FHLCALL DIS_mS。显示10毫秒36/ 3

19、6MOV R5,AMOV R4,#1LCALL DISLEDRETINT_T1:。PUSH DPHPUSH DPLPUSH ACCPUSH PSWCLR TR1MOV TL1,#00HMOV TH1,#0DCHSETB TR1MOV A,R0ADD A,#1。DA AMOV R0,A。显示10毫秒高位INT_T1中断服务子程序。保护现场10毫秒定时常数10毫秒数加1LCALL DIS_mS。显示10毫秒37/ 3638/ 36CJNE R0,#0,EXIT。判断10毫秒=0MOV R6,#0FFH。置秒标志CJNE R1,#59H,SECOND。判断秒=59MOV R1,#99HCJNE R2

20、,#59H,MINUTE。判断分=59MOV R2,#99HCJNE R3,#23H,HOUR。判断时=23MOV R3,#99HHOUR:MOV A,R3ADD A,#1。时加1DA AMOV R3,AMINUTE:MOV A,R2ADD A,#1。分加1DA AMOV R2,ASECOND:LCALL DISLED。显示小时低位39 / 36MOV A,R1ADD A,#1。秒加1DA AMOV R1,AEXIT:POP PSW。恢复现场POP ACCPOP DPLPOP DPHRETI。中断返回DISPLAY:MOV A,R3ANL A,#0FHADD A,#10HMOV R5,AMOV R4,#6LCALL DISLED。显示分钟高位40 / 36MOV A,R3SWAP AANL A,#0FHMOV R5,AMOV

温馨提示

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

评论

0/150

提交评论