关键词不能为空

当前您在: 主页 > 英语 >

实验三P3.3口输入、P1口输出实验

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2020-11-04 18:07
tags:三口

诃-什么叫ipo

2020年11月4日发(作者:师试)


实验三 4.1 P3.3口输入、P1口输出实验
系别专业:电子系12级电信2班 学号:3121003210
姓名:李书杰 指导老师:刘志群老师

4.1.1 实验要求
1. 复习 Keil C51调试硬件的操作方法。
2. 复习单片机作为通用 IO口的注意事项。
3. 复习单片机操作 IO口的程序设计方法。
4.1.2 实验设备
PC 机一台,TD- NMC+教学实验系统
4.1.3 实验目的
1. 熟悉单片机仿真实验软件 Keil C51调试硬件的方法。
2. 了解 P3、P1口作通用 IO口的使用方法。
3. 掌握延时子程序的编写和使用方法。
4. 了解单片机对简单 IO的扩展方法。
4.1.4 实验内容
实验 1
根据TD- NMC+实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能:
将 P1口的低 4位定义为输出,高 4位定义为输入,数字量从 P1口的高 4位输入,从 P1
口的低 4位输出控制发光二极管的亮灭。
程序如下:
KEY: MOV P1,#0F0H ;令所有行为低电平
KEY1:MOV R7,#0FFH ;设置计数常数
DJNZ R7,KEY1 ;延时
MOV A, P1 ;读取P1口的列值
ANL A,#0F0H ;判别有键值按下吗?
CPL A ;求反后,有高电平就有键按下
JZ EKEY ;无键按下时退出
LCALL DEL20 ms ;延时20 ms去抖动
SKEY:MOV A,#00 ;下面进行行扫描,1行1行扫
MOV R0,A ;R0作为行计数器,开始为0
MOV R1,A ;R1作为列计数器,开始为0
MOV R3 #0FEH ;R3暂存行扫描字,低4位为行扫描字
SKEY2:MOV A,R3
MOV P1,A ;输出行扫描字,高4位全1
NOP
NOP
NOP
MOV A,P1 ;读列值
MOV R1,A ;暂存列值


ANL A,#0F0H ;取列值
CPL A ;高电平则有键闭合
S123:JNZ SKEY3 ;有键按下转SKEY3
INC R0 ;行计数器加1
SETB C ;准备将行扫描左移1位,
;形成下一行扫描字,C=1保证输出行扫描字中高4位全为1,
;为列输入作准备,低4位中只有1位为0
MOV A,R3 ;R3带进位C左移1位
RLC A
MOV R3,A ;形成下一行扫描字→R3
MOV A,R0
CJNE A,#04H,SKEY1 ;最后一行扫(4次)完了吗?
EKEY:RET
;列号译码
SKEY3:MOV A,R1
JNB ACC.4,SKEY5
JNB ACC.5,SKEY6
JNB ACC.6,SKEY7
JNB ACC.7,SKEY8
AJMP EKEY
SKEY5:MOV A,#00H
MOV R2,A ;存0列号
AJMP DKEY
SKEY6:MOV A,#01H
MOV R2,A ;存1列号
AJMP DKEY
SKEY7:MOV A,#02H
MOV R2,A ;存2列号
AJMP DKEY
SKEY8:MOV A,#03H
MOV R2,A ;存3列号
AJMP DKEY
;键位置译码
DKEY: MOV A,R0 ;取行号
ACALL DECODE
AJMP EKEY
;键值(键号)译码
DECODE:MOV A,R0 ;取行号送A
MOV B,#04H ;每一行按键个数
MUL AB ;行号×按键数
ADD A,R2 ;行号×按键数+列号=键值
RET

实验 2


根据TD- NMC+实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能:
将 P3.3口作状 态输入口(接一个逻辑开关,即拨码开关),P1口做输入口(接八只发光二
极管D0~D7)。当 P3.3=1时循环轮流点亮一个 LED灯;当 P3.3=0时循环轮流点亮相邻
两个LED灯。
程序如下:
BUFF EQU 30H
KEYADR:MOV A,BUFF ;键号→A
CJNE A,#0FH,KYARD1
AJMP DIGPRO ;等于F,转数字键处理
KYARD1:JC DIGPRO ;小于F,转数字键处理
KEYTBL:MOV DPTR,#JMPTBL ;送功能键地址表指针
CLR C ;请进位位
SUBB A,#10H ;功能键值(10H~1FH)减16
RL A ;(A)×2,使(A)为偶数:0,2,4,…
JMP @A+DPTR ;转相应的功能键处理程序
JMPTBL: AJMP AAA
AJMP BBB
AJMP CCC
AJMP DDD
AJMP EEE
AJMP FFF
AJMP GGG
AJMP HHH
AJMP III
AJMP JJJJ
AJMP KKK
AJMP LLL
AJMP MMM
AAA:
DIS: MOV R0,#7EH ;显示缓冲区末地址→R0
MOV R2,#01H ;位控字,先点亮最低位(右边)
MOV A,R2
MOV DPTR,#TAB ;字型表头地址→DPTR
LP0: MOV P1,A
MOV A,@R0 ;取显示数据
MOVC A,@A+DPTR ;取出字形码
MOV P0,A ;送出显示
ACALL D1MS ;调延时子程序
DEC R0 ;数据缓冲区地址减1
MOV A,R2
JB ACC.5,LP1 ;扫描到最左面的显示器了吗?
RL A ;没有到,左移1位
MOV R2,A
AJMP LP0


LP1: RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH
DB 6FH,77H,7CH, 39H,5EH,79H,71H,40H,00H
D1MS: MOV R7,#02H ;延时1 ms子程序
DL: MOV R6,#0FFH
DL1: DJNZ R6,DL1
DJNZ R7,DL
RET
4.1.5 实验单元电路及连线
开关及 LED显示单元



4.1.6 实验说明
1、 P1口是准双向口,作输出口时与一般的双向口使用方法相同。由准双向口结构可知
当 P1口作输入口时,必须先对它置高电平,同时内接上拉电阻(20KΩ~40 KΩ),使内部
MOS截止,这样对外部输入不会产生影响,否则会使读入的数据不正确。


2、 由于机械键盘的抖动作用,常常通过硬件 RS或软件延时的方法去除机械抖动。使
用软件延时方法时注意延时子程序的编写。
3、 发光二极管的需要5~10mA的驱动电流,1.7~2.4V的驱动电压。
4、循环轮流点亮LED,可以通过循环移位指令实现。
4.1.7 思考题
1. 8051系列单片机的四个并行口可以作准双向 IO使用,当它们作为输入口时,必须先向
端口输入高电平,为什么?
解: IO是开漏的 ,如果输入低电平,该口无论输入高低电平都会被拉至低,所以电平,也就
无法正确识别输入电平。
2. 编写按键(如拨码开关)程序时,应注意什么问题?
解:根据不同的拨码开关状态,在程序里写相应拨码开关的程序。
3. 若系统晶振为12MHz,试编写一个延时 10ms的程序段。
MOV R5,#5
D1: MOV R6,#4
D2: MOV R7,#248
DJNZ R7,$$
DJNZ R6,D2
DJNZ R5,D1
RET
4. 本实验中,允许单片机的 IO口直接驱动 LED灯,为什么?
解:单片机的IO 口的高电平接近电源电压+5V,而发光二极管的工作电压为2V以下,因此
需要串接降压电阻,但在此 实验中使用低电平驱动,所以允许单片机的 IO口直接驱动 LED
灯。



oo的发音-我的家人英语


分歧的意思-文件夹英文


一会儿的英语-尒


紧缚-概念股什么意思


潇潇暮雨子规啼的意思-高一英语课本


slice是什么意思-513


百的拼音-唱歌英文


怀念的意思-结果是英语



本文更新与2020-11-04 18:07,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/439730.html

实验三P3.3口输入、P1口输出实验的相关文章