单片机作业文档格式.docx
- 文档编号:17947766
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:21
- 大小:2.11MB
单片机作业文档格式.docx
《单片机作业文档格式.docx》由会员分享,可在线阅读,更多相关《单片机作业文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
MOVA,P1
;
取开关值
开关对应发光二极管
ANLA,#0F0HRRA
RRA
ORLA,#0F0H
MOVP1,A
2.上机调试程序。
六.思考:
1.并行输入/输出接口中P0、P1、P2、P3口各有什么功能?
并加以比较
对比
P0口不接片外存储器与不扩展I/O口时,可作为准双向I/O口。
接片外存储器或扩展I/O口时,P0口分时复用低8位地址总线和双向数据总线。
P1口可以作为准双向I/O口使用,另外对于52子系列,P1.0有第二功能:
定时/计数器2的计数脉冲输入端T2;
P1.1也有第二功能:
定时/计数器2的外部控制端T2EX。
P2口可以作为准双向I/O口使用以及高8位地址总线。
P3口可以作为准双向I/O口,并且每一位都有第二功能。
见下表
引脚
第二
■功能
P3.0
RxD:
串行口接收数据输入端
P3.1
TxD:
串行口发送数据输出端
P3.2
INT0:
外部中断申请输入端0
P3.3
INT1:
外部中断申请输入端1
P3.4
T0:
外部计数脉冲输入端0
P3.5
T1:
外部计数脉冲输入端1
P3.6
WR:
与外设控制信号输出端
P3.7
RD:
读外设控制信号输出端
2.有关端口操作的指令有哪些?
了解这些指令的功能
这四个端口均各有一个锁存器(即特殊功能寄存器P0~P3),故可以具有所有包含直接寻址方式的指令
如:
数据传送指令MOVP0#data,PUSHP0等
算术运算指令ADDCAP0等
逻辑运算指令ANLA,P0等
条件转移指令CJNEA,P0,rel等
另外这四个端口可以按位使用,即每一位均能独立作输入输出用,故可以使用位操作指令
位传送指令MOVCP0.1;
位逻辑操作指令CPLP0.3;
位条件转移指令JBP0.2,rel等
3.要求任务1中,将延时时间改为1分钟,则改程序将作如何的修改?
由于本题中,设定振荡频率为12MHz,指令周期为1us,而DJNZ指令为双周期指令,故执行每条该指令需花费2us时间。
1分钟为60000000us故需要执行30000000次DJNZ指令,所以这里可以将代码修改为
DELAY:
MOVR4,#30
D1:
MOVR5,#100涎时子程序,延时60秒
D2:
MOVR6,#100
D3:
MOVR7,#100
DJNZR7,$
DJNZR6,D3
DJNZR5,D2
DJNZR4,D1
RET
实验二广告灯
1.学习P1口的使用方法。
2.学习延时子程序的设计方法。
3.学习移位指令的用法。
实验设备:
预装了keil及proteus的PC机。
实验内容:
1.八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮,开始时P1.XP1.1—P1.2—P1.3-—TP1.7—P1.6-—TP1.0亮,重复循环。
2.利用取表的方法,使端口P1做单一灯的变化:
左移2次,右移2次,闪烁2次(延时的时间0.2秒)。
4.实验步骤:
使用keil编辑程序,生成hex文件,打开DSN文件,把hex文件加入到单片机中,观察二极管的闪烁情况是否符合实验要求。
5.实验要求:
1.根据实验任务要求,编写源程序;
MOVR2,#8
MOVA,#0FEH;
最开始L1亮
SETBC
LOOP:
MOVP1,A
RLCA;
L2,L8依次亮
DJNZR2,LOOP
MOVR2,#8
LOOP1:
TABLE:
MOVDPTR,#TABLE
CLRA
MOVCA,@A+DPTR
CJNEA,#10H,LOOP;
执行到表中数据为10H时结束
JMPSTART
MOVR3,#20
INCDPTR
JMPLOOP
MOVR4,#20;
延时子程序
MOVR5,#248
DJNZR5,$
DJNZR3,DELAY
DB0FEH,0FDH,0FBH,0F7H;
按顺序排列码值
DB0EFH,0DFH,0BFH,07FH
DB0FEH,0FDH,0FBH,0F7H
DB07FH,0BFH,0DFH,0EFH
DB0F7H,0FBH,0FDH,0FEH
DB00H,0FFH,00H,0FFH
DB10H
END
1.修改程序,使发光二极管闪亮时间改变。
修改闪亮时间即是将代码中的延时子程序修改,这里修改为0.1秒闪
亮1次,则将延时子程序改为:
MOVR4,#10
MOVR5,#248
2.修改程序,使发光二极管闪亮移位方向改变。
对于任务一,可以将RLCA和RRCA的顺序调整,实现发光二极管自L8—L1—L8依次变亮
对于任务二,根据如图所示电路,从程序中可以看出发光二极管的移位方向是自上而下两次,在自下而上两次,最后全亮全灭两次结束。
这里将其修改为
自上而下—自下而上—自上而下—自下而上—全亮—全灭—结束
将TABLE表数据改为:
DB0FEH,0FDH,0FBH,0F7H
DB00H,0FFH
试验三报警产生器
1.实验目的:
掌握利用单片机产生音频信号的方法。
2.实验设备:
3.实验内容:
用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求
1KHz信号响100ms,500Hz信号响200ms交替进行,P1.7接一开关进行控制,
当开关合上响报警信号,当开关断开告警信号停止,编出程序。
55分钟
使用keil编辑程序,生成hex文件,打开DSN文件,把hex文件加入到单片机中,运行仿真,报警器产生报警信号,按下SP1,报警信号停止。
FFBITP1.5;
设置频率转换标志位
SETBFF;
首先将频率置为1KHz
JBP1.7,START
1.要求1KHz信号响200ms,500Hz信号响100ms,应该如何调整程序?
本题中,500Hz信号周期为2ms,信号电平为每1ms变反1次,1KHz
的信号周期为1ms,信号电平每500us变反1次。
若要更改程序,达到1KHz信号响200ms,500Hz信号响100ms。
只需将程序上半段产生500Hz信号的持续时间改为:
MOVR2,#100
程序下半段产生1KHz信号的持续时间改为:
MOVR2,#10DV1:
MOVR1,#40DV2:
CPLP1.0
DJNZR1,DV2
DJNZR2,DV1
2.若使两种信号交替有间隔的响,应该如何调整程序?
假设间隔为100毫秒,则在FIRST和NEXT之前加入如下程序:
MOVR2,#200
LOOPO:
LCALLDELY500
DJNZR2,LOOP0
实验四I/O并行口直接驱动LED显示
1.掌握七段数码管的显示原理。
2.掌握通过AT89C51驱动七段数码管的方法。
利用AT89C51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地。
在数码管上循环显示0-9数字,时间间隔0.2秒。
使用keil编辑程序,生成hex文件,打开DSN文件,把hex文件加入到单片机中,运行仿真,数码管循环显示0-9数字。
实验代码为:
NEXT:
MOVR1,#00H
MOVA,R1
MOVCA,@A+DPTR;
从0开始显示
MOVP0,A
INCR1
CJNER1,#10,NEXT;
判断是否显示到9
LJMPSTART
MOVR5,#20;
MOVR6,#20
MOVR7,#248
DJNZR6,D1
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
2.上机调试程序。
六.思考:
调整程序,试让数码管所显示数字递减循环。
只需将表TABLE中数据颠倒一下变为从9-0的段选码即可。
为:
DB6FH,7FH,07H,7DH,6DH,66H,4FH,5BH,06H,3FH
实验五按键识别
1.了解按键识别的方法。
2.掌握一键多功能的原理。
实验设备:
实验内容:
1.每按下一次开关SP1,计数值加1,通过AT89C51单片机的P1端口的P1.0到P1.3显示出其的二进制计数值。
2.开关SP1接在P3.7/RD管脚上,在AT89C51单片机的P1端口接有四个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在闪烁,
3.
1•任务一:
使用keil编辑程序,生成hex文件,打开DSN文件,把hex文件加入到单片机中,运行仿真,每次按下开关,计数加一,二极管都会用二进制形式显示结果。
文件加入到单片机中,运行仿真,按周实验内容的要求,按下开关,观察二极管的亮灭是否符合要求。
3.根据实验任务要求,编写源程序;
;
从0开始计数
CPLA
送出P1端口由发光二极管显示
REL:
JNBP3.7,REL
判断SP1是否按下
若按下,则延时10ms左右
MOVA,R1CPLA
JBP3.7,$
SJMPRELDELAY:
MOVR6,#20L1:
MOVR7,#248
DJNZR6,L1
END任务二的代码:
FLAGEQUP2.0
L1BITP1.0
L2BITP1.1
L3BITP1.2L4BITP1.3
MOVFLAG,#00HSTART:
JBP3.7,REL
LCALLDELAY1
JBP3.7,RELINCFLAGMOVA,FLAG
CJNEA,#04,REL
MOVFLAG,#00H
JNBP3.7,$
MOVA,FLAG
CJNEA,#00H,IS0
计数内容加1
发光二极管显示
等待SP1释放
延时10ms子程序
定义标志位
开始时标志位置0,从L1亮起;
调用延时程序1判断是否真的按键;
每按一次键,二极管移位一次;
判断是否按到连续按到第五次
按到第5次标志位清0
CPLL1;
按到第一次则执行
SJMPSTART
IS0:
CJNEA,#01H,IS1
CPLL2
按到第二次则执行
IS1:
CJNEA,#02H,IS2
CPLL3
LCALLDELAYSJMPSTART
按到第三次则执行
IS2:
CJNEA,#03H,IS3
CPLL4
按到第四次则执行
IS3:
按到第五次重新开始
DELAY1:
延时10毫秒程序
DJNZR6,LOOP1
MOVR5,#20
延时200毫秒程序
LOOP2:
DJNZR5,LOOP2RET
4.上机调试程序。
1.在任务一中,我们做的是加法显示,如果要求是减法显示,应如何调整程序?
减法显示只需将上述程序改为:
MOVR1,#0FFH
JJJJJJJJ
JNBP3.7,REL;
判断SP1是否真得按下
DECR1;
若真按下,计数内容减1
2.在任务二中,如果要求二极管闪烁的顺序颠倒过来,应如何调整程序?
当最开始判断时,CJNEA,#00H,IS0
若相等,则CPLL4
F面依次执行CPLL3、CPLL2、CPLL1即可
实验六计数器与计时器
1.学习单片机计数器的使用和编程。
2.熟悉计数器中断处理程序的编程。
1.利用AT89C51单片机来制作一个手动计数器,在AT89C51单片机的
P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0—
P2.7接一个共阴数码管,作为00—99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00—99计数的十位数显示。
2.在AT89C51单片机的P0和P2端口分别接有两个共阴数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个位。
四.实验步骤:
使用keil编辑程序,生成hex文件,打开DSN文件,把hex文件加入到单片机中,运行仿真,按照实验要求,按下开关,计数加一,观察数码管显示数字是否正确。
使用keil编辑程序,生成hex文件,打开DSN文件,把hex文件加入到单片机中,运行仿真,观察数码管是否显示秒表计时,到达59秒时,是否归零。
五.实验要求:
1.根据实验任务要求,编写源程序;
任务一的代码:
SP1BITP3.7
MOVR1,#00H;
设初值0
MOVB,#10
DIVAB;
得到计数值的十位
MOVA,B;
得到计数值的个位
MOVP2,A
WT:
JNBSP1,WT
WAIT:
JBSP1,WAIT;
判断键是否按下
LCALLDELY1
JBSP1,WAIT
INCR1;
计数值加1
CJNEA,#100,NEXT;
判断是否加到100
DELY1:
DJNZR6,D1RET
任务二的代码:
ORG0
MOVR0,#00H;
MOVA,R0
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
1.实验电路中只有2位数码管,当需要多位数码管时,电路应如何连接?
在这里我们可以采用动态显示方式,将所有位的段选线并接在一个
I/O口上,而利用另一个I/O口来选择哪一位显示。
这样从段选线I/O口上按位依次分别送显示字符的段选码,在位选控制口也按相应的次序分别选通相应的显示位,选通位显示相应字符,并保持几毫秒的延时,未选通位则不显示字符。
因为人的视觉滞留,看不出这种变化,各位显示器能连续稳定地显示不同的字符。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)