机电课程设计-------温度巡回检测仪
在上图(a)中,当没有键被按下时,单片机3条列线全部输出为0,则将从行线读入的位数全为1.
在上图(b)中,当圆圈中的按键被按下时,列线输出全部为0,被按下键所在行线读入位数字为0,其它行线仍然为1,这样可通过检测行状态判断是否有按键被按下,并且图视情况可知被按下的键所在行号为2.
当判断有键按下后,令三条列线中只有一条输出为0,其他列线输出为1,然后检测行线的位数字是否出现0,若没有则依次使下一列线输出为0,重复行线检测,直道有按键按下的行位数字为0为止,从而实现确定按键的位置。(如下图)通过列扫描,键值公式可由K=(行数i-1)*3+列数j求得。
温度巡回检测仪 21 机电课程设计-------温度巡回检测仪
键盘程序:
INTR0:
LACALL DELAY ;延时去抖 MOV A,P1 ;读取P1口列值 ANL A, #0C7H ;屏蔽低六位
CJNE A,#0C7H,SKEY ;不等转移指令,判断是否有键闭合,有转SKEY
键盘扫描
AJMP FINISH ;无键闭合,返回 MOV A,#00H ;列扫描 MOV R0,A MOV R1,A
;R0作为列计数器,开始为0 ;行计数器
;R3为列扫描字暂存
SKEY:
MOV R3,#0F7H
SKEY2: MOV A, R3 ;扫描第一列
MOV P1,A NOP NOP NOP
;输出列扫描字
;三个nop操作使P1口输出稳定
温度巡回检测仪 22 机电课程设计-------温度巡回检测仪
MOV A,P1 MOV R1,A
;读行值 ;暂存行值
ANL A,#OC7H CPL A
;与运算,无闭合键则0C7H不变,取行值
;取反,高电平则有键闭合
JNZ SKEY3 ;非0跳转,有键按下转SKEY3,无则进行下一列扫描 INC R0 SETB C MOV A,R3 RLC A MOV R3,A MOV A,R0
;列计数器加一
;为行扫描字左移做准备
;带进位C左移 ;形成下一列扫描字
CJNE A,#03H,SKEY2 ;共需扫描3列
AJMP FINISH
行号译码 SKEY3: MOV A,R1
JNB ACC.2, SKEY4 JNB ACC.1, SKEY5 JNB ACC.0, SKEY6
AJMP FINISH
MOV A,#01H MOV R2,A AJMP DKEY MOV A,#02H MOV R2,A AJMP DKEY MOV A,#03H MOV R2,A AJMP DKEY
;存3行号 ;存2行号 ;存1行号
SKEY4:
SKEY5:
SKEY6:
键位置译码
DKEY: MOV A,R2
;取行号
ACALL DECODE ; MOV DPTR, #TABLE1 JMP @A+DPTR ACALL AA
TABLE1:
温度巡回检测仪 23 机电课程设计-------温度巡回检测仪
ACALL BB ACALL CC ACALL DD ACALL EE ACALL FF ACALL GG ACALL HH ACALL II RETI
FINISH: 键号译码
DECODE: MOV A,R2 ;取行号送A
DEC A ;(行号-1);
MOV B,#03H ;每行按键个数 MUL AB ADD A,R0 RET
;(行号-1)*按键数
;(行号-1)*按键数+列号=键号,存在A中
延时 DELAY:
TM:
MOV R7,#18H MOV R6,#0FFH
TM1: DJNZ R6,TM1
DJNZ R7,TM RET
延时时间={(15*16+15)*(1*16+8)}*机器周期T 4.4温度采集:
温度巡回检测仪 24 机电课程设计-------温度巡回检测仪
开始定义A/D转换缓冲区首地址置通道数置DPTR启动转换延时 NN转换完毕? Y8次采集完毕? Y求平均值存数 温度采集程序:
AA:
MOV R0, #00H
返回
;存数据高八位
MOV R1, #00H ;存数据低八位 MOV R2, #08H ;共8次采样
MOV DPTR, #0BFF8H ;定义ADC转换器首地址 MOV @DPTR, A ;开始转换 ACALL DELAY ;延时 JNB P3.3,LP1 ;等待转换完毕 MOVX A, @DPTR ;读一个数据 ADD A, R1 ;与低八位相加
温度巡回检测仪 25 LP4:
LP1:
LP2:
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库机电课程设计—温度巡回检测仪 - 图文(5)在线全文阅读。
相关推荐: