温度控制系统设计毕业设计论文(5)

2019-09-01 16:34

毕业论文

8279的IRQ端经反相器接到8051的INT1端(即P3.3引脚)。先将8279设置成编码键盘,允许INT1中断,当键按下时,反相器输出低电平,CPU进入中断服务程序,读取键特征码后,又为高电平。返回主程序后,转向功能程序(例如调模进)。输出控制信号(例如P1.0为“1”时调模进电磁阀得电)后,将8279设置为传感器方式,并且不允许INT1中断,然后调试P3.3是否为低电平。如果按键松开,8279将测出传感器状态发生变化,而使IRQ由低电平转为高电平。也就是说P3.3脚为低电平时,按键已经松开,程序重新设置8279为编码键盘,INT1中断开放,以便使键盘脱离按钮功能。

程序清单如下: ORG 0000H

MOV DPTR,#7000H ; 指向8279数据口 INC DPTR ; 指向8279控制口 MOV A, #00H ; 设定8279工作方式 M0VX @DPTR,A

MOV A , #0GFH ; 清除8279内部显示RAM状态 MOVX @DPTR, A MOV A , #22H

MOVX @DPTR , A ; 设定8279分频系数 LOOP:MOVX A , @DPTR

JB ACC.7 , LOOP ; 显示RAM清除完毕吗? MOV A , 80H ; 指向第一位数码管 MOVX @DPTR , A

MOV A , 9FH ; 输出\一个字形 MOV DPTR ,#7000H MOVX @DPTR , A INC DPTR

LOOP1:M0VX A , @DPTR AND A , #07H

毕业论文

CJNE A , #00H,L00P2

AJMP LOOP1 ; 无键按下转 LOOP2:MOV DPTR ,#7000H

MOVX A , @DPTR; 有键按下将键值送累加器A

键值,由8279的行扫描信号(SL0-SL3)与列信号(RL0-RL4)组成,不同组合的矩阵将得到不同键,但

在同一矩阵中不会有相同的键值,这对初学者编制键显示程序大为方便.下表是通用键盘板键值:

名称 0 1 2 3 4 5 6 7 8 9

键值 C1 C8 C9 D0 D8 E0 C2 CA D1 D9 名称 状态切换 清除 键值 DA C3

4.3.2.1判定有无闭合键的子程序:

判定有无闭合键的子程序为KSI,供在键盘扫描程序中调 用。程序如下:

KSI:

MOV MOV MOVX INC INC MOVX CPL ANL RET

DPTR,#0FDF9H A, #00H @DPTR,A DPTR DPTR A,@DPTR A A,#0FH

;A口地址

;A口送00H

;C口地址 ;读C口

;屏蔽高四位

4.3.2.2键盘扫描程序

如前所述,在单片机应用系统中常常是键盘和显示器同时存在,因此可以把

毕业论文

键盘扫描程序和显示程序配合起来使用,即:把显示程序作为键扫描程序的延时子程序。这样做既省去了一个专门的延时子程序,又能保证显示器常亮的可观效果。

假定本系统中显示程序为DIR,执行时间约为6ms。键盘扫描程序如下: KEY1:ACALL KSI;检查是否有键闭合

JNZ LK1;A非“0”则转移

ACALL DIR;显示一次(“延时6s) AJMP KEY1

LK1: ACALL DIR; 有键闭合二次延时

ACALL DIR; 共12ms去抖动

ACALL KSI; 再检查是否有键闭合 JNZ LK2; 有键闭合转移到LK2 ACALL DIR

AJMP KEY; 无键闭合,延时6ms后转KEY1

LK2: MOV R,#0FEH; 扫描初值送R2

MOV R,#00H; 扫描列号送R4

LK4: MOV DPTR,#0101H; A口地址

MOV A,R

MOVX @DPTR,A; 扫描初值送A口 INC DPTR

INC DPTR; C口地址 MOVX A,@DPTR; 读C口

JB ACC.0, LONE;ACC.0=1,第0行无键闭合,转LONE MOV A,#00H; 装第0行值 AJMP LKP

LONE: JB ACC.1 LTWO;ACC.1=1,第1行无键闭合,转LTWO

MOV A,#08H; 装第1行值 AJM PLKP

LTWO: JB ACC.2,LTHR;ACC.2=1,第2行无键闭合,转LTHR

MOV A#10H AJMP LKP

LTHR: JB ACC.3,NEXT;ACC.3=1,第3行无键闭合,转NEXT

MOV A,#18H; 装第3行值

LKP: ADD A,R; 计算键码

PUSH ACC; 保护键码

LK3: ACALL DIR; 延时6ms

ACALL KSI; 检查是否继续闭合,若闭合再延时 JNZ LK3

POP ACC; 若键起,则键码送A RET

NEXT: INC R; 扫描列号加1

MOV A,R

毕业论文

JNB ACC.7,KND;若第7位=0,已扫完最高列则转KND RL A MOV R,A

AJMP LK4; 进行下一行扫描

KND: AJMP KEY1; 扫描完毕,开始新一轮

4.3.3 A/D转换程序

(1)A/D转换子程序。

PUSH A

SETB EA ; 开中断

SETB IT1; 外中断1定义为跳变触发 MOV DPTR,#0BFFFH; 送ADC0809口地址 MOV A,#00H; 选通IN0通道 MOVX @DPTR,A ; 启动A/D转换 NOP NOP NOP NOP NOP

SETB EX1; 开外中断1 POP A RET

(2)A/D转换结束中断程序。

ADINT1: PUSH PSW ; 保护现场 PUSH A PUSH DPH PUSH DPL

MOV DPTR,#0BFFFH

MOVX A,@DPTR ; 读A/D转换结果 MOV 60H,A ; 送入内部RAM60H中 MOV A,#00H; 再次启动IN0通道 MOVX @DPTR,A

POP DPL ; 恢复现场 POP A POP PSW RET1

毕业论文

4.3.4温度检测子程序

A/D转换采用查询方式。为提高数据采样的可靠性,对采样温度进行数字滤波。数字滤波的算法很多,这里采用4次采样取平均值的方法。如前所述,本系统A/D转换结果乘2正好是温度值,因此,4次采样的数字量之和除以2就是检测的当前温度。检测结果高位存入50H,低位存入51H。温度检测子程序流程图如图1所示。

N

A清检测结果缓冲区采样次数4→R2NR2-1=0Y4次累加结果除2→检测结果缓冲区启动A/D转换转换结束Y累加采样结果结果低8位→51H高8位→50H 返回

A图1:温度检测子程序流程图

温度检测子程序TIN:

TIN: MOV TEMP1,#00H ; 清检测温度缓冲区

MOV TEMP0,#00H

MOV R2,#04H; 取样次数送R2

MOV DPTR,#7FF8H; 指向A/D转换器0通道

LTIN1:MOVX @DPTR,A; 启动转换 HERE:JNB IE1,HERE; 等待转换结束

MOVX A,@DPTR ; 读转换结果

ADD A,TEMP0; 累加(双字节加法)

MOV TEMP0,A MOV A,#00H


温度控制系统设计毕业设计论文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:派遣协议书2016

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: