中国地质大学武汉单片机实验报告.docx
- 文档编号:8087484
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:22
- 大小:330.58KB
中国地质大学武汉单片机实验报告.docx
《中国地质大学武汉单片机实验报告.docx》由会员分享,可在线阅读,更多相关《中国地质大学武汉单片机实验报告.docx(22页珍藏版)》请在冰豆网上搜索。
中国地质大学武汉单片机实验报告
中国地质大学(武汉)
单片机实验报告
姓名:
_吴泽光______
班号:
_075122______
学号:
_20121001873
院系:
___机电_____
专业:
__通信_____
指导教师:
_王巍_
实验一、实验开发环境学习
一、实验目的
1、学习keil软件的使用方法;
2、学习单片机汇编程序的开发流程;
3、学习程序的调试仿真方法。
二、实验内容
1、设有两个4位的BCD码,分别存放在片内RAM的23H、22H单元和33H、32H单元中,求他们的和,并送入43H、42H单元中(低位在低字节中,高位在高字节中)。
2、将8bit二进制数转换为3位BCD码。
3、找出放在内存单元40H开始的10个数的最大值,并放在内存单元50H中。
三、程序设计
1、设计思路:
(23H)(22H)+(33H)(32H)(43H)(42H)
相关程序:
ORG0000H
AJMPSTART
ORG0030H
START:
MOVA,22H
ADDA,32H
DAA
MOV42H,A
MOVA,23H
ADDCA,33H
DAA
MOV43H,A
END
END调试过程:
使用软件仿真,通过改变22H、23H、33H及32H的内容,再观察42H及43H的内容是否符合要求来判断程序是否正确。
刚开始对DA指令不太会用,仿真的时候出不来结果,最后问了老师才发现没有进行BCD码的调整,加上“DAA”后得到了正常的结果。
2、设计思路:
相关程序:
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVB,#100
DIVAB
MOVR0,#21H
MOV@R0,A
DECR0
MOVA,#10
XCHA,B
DIVAB
SWAPA
ADDA,B
MOV@R0,A
END
调试过程:
使用软件仿真,通过改变不同的值,再观察输出值是否符合要求来判断程序的正误。
因为这个程序较为简单,所以调试过程比较顺利。
3、设计思路:
相关程序:
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
CLR00H
MOVR0,#40H
MOVA,@R0
MOVR7,#0AH
MOVR2,#50H
LOOP:
INCR0
MOVR2,A
SUBBA,@R0
MOVA,R2
JNCNEXT
MOVA,@R0
NEXT:
MOVR2,A
DJNZR7,LOOP
END
调试过程:
使用软件仿真,通过输入不同大小的几个值,再看其输出的值是否符合要求来判断程序的正误。
实验二、单片机输入及输出实验
一、实验目的
1、学习单片机的I/O口的使用方法;
2、学习延时子程序的编写和使用;
3、学习分支指令的使用;
4、学习使用定时器完成延时的方法。
二、实验内容
1、P1口做输出口,接八只发光二极管,编写程序,使得发光二极管循环点亮,每个发光二极管点亮时间为1秒。
仔细思考,画出程序流程图;编写程序并写清注释;
2、P2.0和P2.1做输入口接两个拨动开关,P1口做输出口,接八只发光二极管,编写程序读取开关状态,根据此状态,改变发光二极管点亮方式。
(至少两种)。
编程时应注意P2.0、P2.1作为输入口时应先置1,才能正确读入值。
仔细思考,画出程序流程图;编写程序并写清注释;
三、实验电路及连线
连线
连接孔1
连接孔2
1
P1.0
L0
2
P1.1
L1
3
P1.2
L2
4
P1.3
L3
5
P1.4
L4
6
P1.5
L5
7
P1.6
L6
8
P1.7
L7
9
P2.0
S0
10
P2.1
S1
四、实验说明
1、对于MCS51MCU,P2口是准双向口。
它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P2口用为输入口时,必须先对它置“1”。
若不先对它置“1”,读入的数据是不正确的。
2、8051延时子程序的延时计算问题,需要考虑系统晶振和延时时长,对于较长的延时需要采用多重循环的方式得到。
如实验要求发光二极管点亮1秒,请参考课件上延时50ms的例子进行修改。
3、如果需要使用定时器完成较长时间的延时,需要定时器多次定时来完成。
五、程序设计
1、设计思路:
相关程序:
ORG10000H
AJMPSTART
ORG001BH
AJMPINT_T1;中断的入口地址
ORG0030H
START:
MOVSP,#68H
MOVA,#001H;首先点亮第一个二极管
MOVTMOD,#10H;选择定时器1,方式1
MOVTH1,#3CH
MOVTL1,#0B0H;定时50ms
MOVR7,#20;响应20次,达到1S
SETBTR1;开定时器
SETBEA;开总中断
SETBET1;中断允许
SJMP$;等待中断
INT_T1:
PUSHPSW
MOVTH1,#3CH
MOVTL1,#0B0H;定时器重新赋初值
DJNZR7,EXIT
MOVR7,#20
MOVP1,A;改变P1口的输出
RLA;左移一位
EXIT:
POPPSW
RETI
END
调试过程:
先使用软件仿真,观察外围设备中P1口是否为循环变化来判断程序的正误,再进行硬件仿真,观察八只发光二极管是否按照要求循环点亮。
2、设计思路
相关程序:
ORG0000H
AJMPSTART
ORG000BH
AJMPINT_T1
ORG0030H
START:
MOVSP,#68H
MOVP2,#0FFH;P2口置1,作为数据输入口
MOVA,#001H;先点亮第一个LED
MOVTMOD,#10H;选择定时器1,方式1
MOVTH1,#3CH
MOVTL1,#0B0H;定时50ms
MOVR7,#20;20次
SETBTR1;
SETBEA;开总中断
SETBET1;中断允许
SJMP$;等待中断
INT_T1:
PUSHPSW
MOVTH1,#3CH
MOVTL1,#0B0H;定时器重新赋初值
DJNZR7,EXIT
MOVR7,#20
MOVP1,A;P1口输入数据
JNBP2.0,LOOP;判断P2.0口按键是否被按下
RLA;按键没有被按下时,流水灯循环左移
AJMPEXIT
LOOP:
;有按键被按下时,流水灯循环右移
RRA
EXIT:
POPPSW
RETI
END
调试过程:
先使用软件仿真,通过按键P2.0的状态,再观察P1都是否按要求实行两种不同的点亮方式来判断程序的正误。
然后进行硬件操作,通过拨动连接P2口的开关来控制八只发光二极管的点亮方式。
延续上一个流水灯的程序,加一个按键,通过按键改变流水灯的流向。
实验三、单片机定时器及中断实验
一、实验目的
1、学习单片机的定时器的使用方法;
2、学习中断的使用及中断服务程序的编写;
3、学习查询方式和中断方式进行信息传递的不同。
二、实验内容
1)使用单片机定时器资源,在P1.0口上输出一个周期为1s的方波,占空比为50%。
采用查询和中断的方式分别实现。
思考并回答以下问题:
定时器工作在什么模式?
定时器工作方式?
定时器初值如何确定?
使用T0还是T1?
如何用定时器得到较长的延时时间?
中断还是查询方式?
两种方法在设计时有何区别?
给出设计思路并画出程序流程图。
2)单片机P1口接8个LED,有一个LED点亮;P2.0接一个按键,首先采用查询的方式实现:
每按一次按键,LED向左或向右移位一次。
如初始时L0亮,按一次按键,则L0熄灭,L1点亮;再按一次按键,L1熄灭,L2点亮,……给出设计思路并画出程序流程图。
3)采用单片机外部中断实现同样的功能。
思考并回答以下问题:
电路应该如何连接?
如何设置中断控制寄存器?
中断方式选择?
采用INT0还是INT1?
如何中断使能?
中断入口地址在哪里?
中断服务程序要做哪些工作?
如何中断返回?
主程序结构如何?
给出设计思路并画出程序流程图。
思考查询方式和中断方式实现同样功能在程序设计上有和不同?
三、实验电路及连线
连线
连接孔1
连接孔2
1
P1.0
L0
2
P1.1
L1
3
P1.2
L2
4
P1.3
L3
5
P1.4
L4
6
P1.5
L5
7
P1.6
L6
8
P1.7
L7
9
P2.0或P3.X
单脉冲
四、实验说明
1、仔细阅读定时器及中断控制寄存器设置部分内容,理解每一位的意义,再根据程序设计确定相关控制字。
2、中断服务程序的设计要注意现场保护以保证退出中断后程序的状态不发生变化。
3、按键连接单脉冲电路
单脉冲电路由按键(PULSE)和去抖动处理组成,每按一次(PULSE)键产生一个单脉冲。
板上有单脉冲的输出信号插孔,图为“”和“”,分别为正脉冲和负脉冲。
四、程序设计
1、周期为1s的方波,采用中断方式,设计思路:
相关程序:
ORG0000H
AJMPSTART
ORG000BH
AJMPBREAK
ORG0030H
START:
MOVSP,#68H
SETBP1.0
MOVR7,#10
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
SETBTR0
SETBEA
SETBET0
SJMP$
BREAK:
PUSHACC
PUSHPSW
MOVTH0,#3CH
MOVTL0,#0B0H
DJNZR7,EXIT
MOVR7,#10
CPLP1.0
EXIT:
POPPSW
POPACC
RETI
END
调试过程:
使用软件仿真,通过观察P1口的输出是否符合要求来判断程序的正误。
因为这个程序较为简单,所以调试过程比较顺利。
2、周期为1s的方波,采用查询方式,设计思路:
相关程序:
ORG0000H
AJMPSTART
ORG0030H
START:
MOVSP,#68H
SETBP1.0
MOVR7,#10
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
SETBTR0
LP:
JBCTF0,NEXT
SJMPLP
NEXT:
MOVTH0,#3CH
MOVTL0,#0B0H
DJNZR7,LP
CPLP1.0
MOVR7,#10
AJMPLP
END
调试过程:
一开始对中断和定时两个概念没有理解清楚,采用查询方式也开了中断。
3,按键每按一次,LED灯左移一位,采用查询方式,设计思路:
相关程序:
ORG0000H
AJMPSTART
ORG0030H
START:
MOVSP,#68H
MOVA,#01H
LOOP:
MOVP1,A
KEY:
MOVP2,#0FFH
MOVC,P2.0
JNCKEY;有键被按下
LCALLDELAY
MOVC,P2.0
JCKEY
RLA
AJMPLOOP
DELAY:
MOVR7,#10H
D1:
MOVR6,#0FFH
D2:
DJNZR6,D2
DJNZR7,D1
RET
END
调试过程:
调试的时候,对于案件时序的把握不是很好,软件消抖的时间控制不好,最后采用书上用过的一个历程,完成了这个程序。
4,按键每按一次,LED灯左移一位,采用中断方式,设计思路:
相关程序:
ORG000H
AJMPSTART
ORG0003H
AJMPBREAK
ORG0030H
START:
MOVSP,#68H
MOVA,#001H
MOVP1,A
SETBP3.2
SETBIT0
SETBEA
SETBEX0
SJMP$
BREAK:
PUSHPSW
RRA
MOVP1,A
POPPSW
RETI
END
调试过程:
关于边沿触发和电平触发有了更深的理解,刚开始采用电平触发,结果不理想,最后选用了边沿触发,完成了实验。
实验四、单片机键盘及LED显示实验
一、实验目的
1、学习数码管动态显示的原理和程序编写;
2、学习矩阵键盘的扫描原理和程序。
二、实验内容
1、使用单片机I/O口,完成一个6位7段数码管动态显示程序,显示自己学号的后六位。
数码管共阴,段码为A~H,位码为G0~G5。
思考并回答以下问题:
(1)动态扫描的原理是什么?
(2)什么是位码?
(3)什么是段码?
(4)延时时间如何确定,在此实验要求下为多少合适?
(5)改变延时时间为20ms看看有什么现象发生?
给出设计思路并画出程序流程图。
2、使用单片机I/O口,完成键盘和动态显示程序。
G0~G5是数码管的位码,也是键盘列扫描信号,键盘行信号为K0~K3。
要求:
初始时所有数码管显示“0”,然后每按一次按键,都在最右边显示该键的符号,而旧数据逐渐左移。
思考并回答以下问题:
(1)键盘扫描的原理是什么?
(2)怎么与动态显示结合?
(3)键盘在扫描过程中要注意什么?
(4)如何去抖?
(5)怎样判断一次正常的按键事件?
给出设计思路并画出程序流程图。
三、实验电路及连线
四、实验说明
1、将驱动方式开关拨到“外驱”;
2、仔细阅读课本和课件键盘及动态显示部分内容,理解其原理;
3、理解动态扫描显示的过程,理解键盘扫描的过程;
4、七段数码管的字型代码表如下表:
显示字形
g
f
e
d
c
b
a
段码
0
0
1
1
1
1
1
1
3fh
1
0
0
0
0
1
1
0
06h
2
1
0
1
1
0
1
1
5bh
3
1
0
0
1
1
1
1
4fh
4
1
1
0
0
1
1
0
66h
5
1
1
0
1
1
0
1
6dh
6
1
1
1
1
1
0
1
7dh
7
0
0
0
0
1
1
1
07h
8
1
1
1
1
1
1
1
7fh
9
1
1
0
1
1
1
1
6fh
A
1
1
1
0
1
1
1
77h
b
1
1
1
1
1
0
0
7ch
C
0
1
1
1
0
0
1
39h
d
1
0
1
1
1
1
0
5eh
E
1
1
1
1
0
0
1
79h
F
1
1
1
0
0
0
1
71h
五、程序设计
1、设计思路
相关程序:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
LJMPDIS
DIS:
MOVR0,#7EH
MOVR2,#01H
MOVA,R2
MOVDPTR,#TAB
LP0:
MOV7EH,#03
MOV7DH,#07
MOV7CH,#08
MOV7BH,#01
MOV7AH,#00
MOV79H,#00
MOVP2,A
MOVA,@R0
MOVCA,@A+DPTR
MOVP1,A
ACALLD1MS
DECR0
MOVA,R2
JBACC.5,LP1
RLA
MOVR2,A
AJMPLP0
LP1:
AJMPMAIN
TAB:
DB3FH,06H,5BH,4FH,66H,6DH
DB7DH,07H,7FH,6FH,77H,7CH
DB39H,5EH,79H,71H,40H,00H
D1MS:
MOVR7,#02H
DL:
MOVR6,#0FFH
DL1:
DJNZR6,DL1
DJNZR7,DL
RET
END
调试过程:
先使用软件仿真,通过观察P1口的输出是否符合要求来判断程序的正误。
再进行硬件操作,看是否能正常显示我的学号。
刚开始,我对单片机每个单元取值显示部分不是很理解,直接在TAB中放我要显示的数字,最后导致所有的字符都无法显示出来。
后来经过翻书发现通过没一个地址单元赋初值,然后用变址寻址方式,可以顺利显示要显示的数字。
。
通过实验发现,1ms是最好的延迟时间,当时间延迟为20ms时,数码管显示的数字开始很明显地闪烁。
实验总结
这几次单片机的实验过程,弥补了很多单片机知识点的盲点,比如程序仿真,我一直没有弄清楚这个过程,以前都是程序编好了就直接下到单片机看执行结果。
通过仿真,在调试的过程中确实省了很多的时间。
在实验的过程中,对单片机的内部结构有了更深的了解,对汇编语言的使用更加熟练了。
我觉得51单片机的学习是一个入门的课程,相信这些实验会对我以后专业课的学习提供很大的帮助。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中国地质大学 武汉 单片机 实验 报告