内容发布更新时间 : 2024/12/27 1:12:42星期一 下面是文章的全部内容请认真阅读。
实验人:肖爰龙学号:08321067 专业:微电子学时间:2012年11月24日
MOV MOV MOV LOOP: MOV MOVC INC MOV CJNE MOV MOV MOV MOV
30H,A DPTR,#DATA1 R4,#00H
;把A的值暂时存入30H中
A,R4 A,@A+DPTR R4 B,30H A,B,LOOP A,R4 @R0,A B,R0 A,B
;读取第R4个数据
;把R4个数据存入A ;R4加1 ;重新读出30H中的数据 ;比较30H与R4个数据是否相等 ;相等说明就是第R4个数据,将其赋给A ;把A的值赋给@R0,即第几个数 ;B赋值为当前存储到的地址
LJMP MAIN ;扫描结束
DEL1: MOV R2,#20 DEL2: MOV R3,#126 DEL3: DJNZ R3,DEL3 DJNZ R2,DEL2 DJNZ R1,DEL1 MOV R1,#10 RET DATA1:
DB 0EEH,0EDH,0EBH,0DEH,0DDH,0DBH,0BEH,0BDH,0BBH JM: MOV P3,0FFH JMP JM END
三、现象及分析 1、每按相应的键,则在数码管上显示相应的字符 四、结论 1、因为实验箱的数码管并不有串接相应的限流电阻,所以要求我们不能用静态显示,否则将烧坏数码管。
内容三:输入的数动态显示 一、接线方法:
显示连线:数码管的段LEDA-LEDDp与LS273的00-07相连,LED1-LED6与P3.0-P3。5相连,
实验人:肖爰龙学号:08321067 专业:微电子学时间:2012年11月24日
CS273接CS0。
键盘连接:列线为KA10-KA12,对应的P1.4-P1.6;行线为:RL10-RL12,对应的P1.0-P1.2。 二、代码分析: PORT EQU 0CFA0H ORG 4000H MOV 30H,#01H MOV 31H,#01H MOV 32H,#01H MOV 33H,#01H MOV 34H,#01H MOV 35H,#01H MOV B,#30H MOV R0,#30H
MAIN:
;****************************************************************************显示函数开始 PUSH ACC PUSH PSW ANL PSW,#0C7H ORL PSW,#10H DISPLAY: ;MOV MOV CLR SUBB JZ NOP DS1: MOV MOV MOV DS2: MOV ACALL MOV MOVX MOV CPL MOV MOV DEL: NOP
B,36H A,B C
A,#30H NONUM
;调用显示函数
;把B赋予要显示的最后个数据的地址
;若还没有键输入,则不显示
R0,B R4,#60H R2,#20H A,@R0 TABLE DPTR,#PORT @DPTR,A A,R2 A P3,A R3,#0FFH
;R0赋予要显示的最后一个数据地址 ;扫描需要显示60次 ;位码的初值
;A里面暂存RAM里的数据 ;取段码
;送段码的入口地址 ;送段码 ;读位码 ;取反 ;送位码 ;适当延时
实验人:肖爰龙学号:08321067 专业:微电子学时间:2012年11月24日
DJNZ CLR MOV RRC MOV DEC MOV CJNE MOV MOV DJNZ MOV ;SJMP JMP TABLE:
R3,DEL C A,R2 A R2,A R0 A,R0
A,#30H,DS2 R0,B R2,#20H R4,DS2 R4,#60H DS1 NONUM
;判断地是否结束 ;清C
;右移位码
;若没有显示到足够的码,则继续扫描 ;重新赋给R0要显示的最后一个数的地址 ;重新赋给R2显示的位码 ;扫描60次完毕
;整个程序循环执行 ;显示程序完,准备退出显示程序
INC A ;算上RET一个字节 MOVC A,@A+PC RET
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH NONUM: POP PSW POP ACC
;******************************************************************显示模块结束
;******************************************************************扫描模块 MOV 30H,#0FEH ;设定扫描的初值 SCAN: MOV P1,30H MOV A,P1 CJNE A,30H,CHECK MOV A,30H RL A MOV 30H,A CJNE A,#0F7H,SCAN JMP MAIN
CHECK: ACALL DEL1 MOV P1,30H MOV A,P1 CJNE A,30H,SEARCH JMP SCAN ;MOV R0,30H ;选取数值存储的地址首位
实验人:肖爰龙学号:08321067 专业:微电子学时间:2012年11月24日
SEARCH: MOV MOV MOV LOOP: MOV MOVC INC MOV CJNE MOV INC MOV MOV MOV
30H,A DPTR,#DATA1 R4,#00H A,R4 A,@A+DPTR R4 B,30H A,B,LOOP A,R4 R0 @R0,A B,R0 A,B
;把A的值暂时存入30H中
;读取第R4个数据 ;把R4个数据存入A ;R4加1
;重新读出30H中的数据
;比较30H与R4个数据是否相等
;相等说明就是第R4个数据,将其赋给A ;R0加1,至下一地地址
;把A的值赋给@R0,即第几个数 ;B赋值为当前存储到的地址
CJNE A,#37H,MAIN1 ;若读到第六个数,结束 JMP JM MAIN1: JMP MAIN
DEL1: MOV R2,#20 DEL2: MOV R3,#126 DEL3: DJNZ R3,DEL3 DJNZ R2,DEL2 DJNZ R1,DEL1 MOV R1,#10 RET DATA1:
DB 0EEH,0EDH,0EBH,0DEH,0DDH,0DBH,0BEH,0BDH,0BBH JM: MOV P3,0FFH JMP JM END
三、实验现象及分析
1、没有键被按下时没有显示,当有键按下时,在数码管的最右边显示所按下键对应的数 2、再按键则原先的数值左移,刚被按下的键所对应的数显示在数码管的最右边
实验人:肖爰龙学号:08321067 专业:微电子学时间:2012年11月24日
3、当按下第七个键盘的时候,数码管停止更新,熄灭。 四、结论 此程序虽然能完成任务,但是数码管的亮度随着显示字符的变多而减弱,这是因为程序设计者在设计程序时不了解实验箱的内部结构,不知道单个数码管显示亮度过高会烧坏数码管。