单片机实验报告.docx
- 文档编号:23948138
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:19
- 大小:183.04KB
单片机实验报告.docx
《单片机实验报告.docx》由会员分享,可在线阅读,更多相关《单片机实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
单片机实验报告
湖南师范大学工学院
单片机实验报告
姓名:
张佩玉
年级:
2010级
专业:
电子信息工程
学号:
2010180121
任课教师:
杨进宝
开课时间:
2012~2013学年第一学期
目录
实验一存储器块清零………………………………………………3
实验二P1口输入输出………………………………………………5
实验三外部中断实验………………………………………………8
实验四八段数码管显示……………………………………………10
实验五数字钟………………………………………………………14
湖南师范大学职业技术学院(工学院)实验报告
记
分
实验课程:
MCS-51系列单片机系统及其应用
实验题目:
实验一:
存储块清零
实验日期:
2012年12月17日
姓名:
张佩玉学号:
2010180121
实验内容:
一:
实验要求
指定存储器中某块的起始地址和长度,要求能将其内容清零。
二:
实验目的:
1.掌握存储块读写方法
2.了解存储器的块操作方法
三:
实验程序:
ORG0000
MOVR0,#01
MOVB,#127
LOOP:
MOV@R0,#00
INCR0
DJNZB,LOOP
MOVR0,#00
SJMP$
优化方案:
ORG0000
MOVR0,#127
CLRA
LOOP:
MOV@R0,A
DJNZR0,LOOP
SJMP$
四:
实验结果:
五:
实验分析与总结:
之前在设计程序的时候,用R0做指针,用R2作计数器,结果就是无法达到存储块清0的效果,现在用B寄存器作为计数器可实现存储块清零。
因为Ri与Rn(n=1,2)共用地址0000H,0001H,只是实现的功能不同。
实验程序的整体思路是,首先设置起始地址,然后设置块长度,之后对当前地址内容清零,每清零一位地址加1然后判断是否清除完,若未清零完成则继续对当前地址清零,若清零完成则程序结束。
只是我们普遍编写的程序所需要的时间很长,大约是258.75us,然而老师所编写的优化程序则大大的缩短了时间,大约几十个微秒。
R0既作指针又作计数器,存储块从最后开始实现清零效果。
通过此次实验,我清楚的了解了单片机读写存储器的读写方法,对单片机编程及调试了也有了一点的认识。
程序的编写是可以灵活运用的。
湖南师范大学职业技术学院(工学院)实验报告
记
分
实验课程:
MCS-51系列单片机系统及其应用
实验题目:
实验二:
P1口输入输出实验
实验日期:
2012年12月21日
姓名:
张佩玉学号:
2010180121
实验内容:
一:
实验要求:
1.P1口作输出口,接八只发光二极管,编写程序,是发光二极管循环点亮。
2.P1.0、P1.1做输入口接两个拨动开关,P1.2、P1.3做输出口,接两个发光二极管,编写程序读取开关状态,将此状态,在发光二极管上显示出来。
编程时应注意P1.0、P1.1作为输入口时应先置1,才能正确读入值。
二:
实验目的:
1.学习P1口的使用方法。
2.学习延时子程序的编写和使用。
3.学习用‘与’‘或’运算对MCS96系列CPU的变量进行位操作。
三:
实验程序:
1.
LOOP:
MOVA,#01
MOVR1,#8
OUTPUT:
MOVP1,A
RLA
LCALLdelay
DJNZR1,OUTPUT
SJMPFANX
FANX:
MOVA,#80H
MOVR0,#8
OUTPUT1:
MOVP1,A
RRA
LCALLdelay
DJNZR0,OUTPUT1
SJMPLOOP
delay:
MOVR6,#0h
MOVR7,#0h
delayloop:
DJNZR6,delayloop
DJNZR7,delayloop
RET
2.
aaBITP1.0
bbBITP1.1
ccBITP1.2
ddBITP1.3
ORG0000H
SETBaa
SETBbb
MOVc,aa
MOVcc,c
CLRc
MOVc,bb
MOVdd,c
RET
四:
实验结果:
1.用P1口输出,循环以每秒点亮一只发光二极管。
2.P1口输出点亮的八只发光二极管分别表示对应的输入口P3。
下图为1的数据图:
五:
实验分析与总结:
P1口是准双向口。
它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用为输入口时,必须先对它置“1”,若不先对它置“1”,读入的数据是不正确的。
由于80C196系列CPU没有位操作,所以要对P1.0,P1.1进行与运算,以判断位为高还是为低,然后再用‘与’和‘或’运算将P1.0,P1.1的相应位置高或低,这与80C196系列CPU不同。
80C51可以将位变量通过C标志位赋值给其他位。
延时子程序涉及到延时计算问题。
实验1是实现对p1口循环点灯,查指令表可知mov和djnz都是2个机器周期指令,对于实验中提供的实验箱单片机是6MHZ的晶振,那么延时时间约为(256*255+2)*2*12/6=261ms,通过对累加器的逻辑移位,实现对p1口的控制逻辑,实验二则是直接对位进行操作,用连续的字母区分寄存器,实验中要注意的是要先把p1口置1,才能继续输入数据。
湖南师范大学职业技术学院(工学院)实验报告
记
分
实验课程:
MCS-51系列单片机系统及其应用
实验题目:
实验三:
外部中断实验
实验日期:
2012年12月23日
姓名:
张佩玉学号:
2010180121
实验内容:
一:
实验要求:
用单次脉冲申请中断,在中断处理程序中对输出信号进行反转。
二:
实验目的:
1.学习外部中断技术的基本使用方法。
2.学习中断处理程序的编程方法。
三:
实验程序:
ORG0000H
LJMPMAIN
ORG0003H
LJMPINT0
INT0:
PUSHPSW;保护现场
CPLP1.0;取反P1.0
POPPSW;恢复现场
MAIN:
CLRP1.0
MOVTCON,#01H;外部中断0下降沿触发
MOVIE,#81H;打开外部中断允许位(EX0)及总中断允许位(EA)
LJMP$;死循环
END
四:
实验结果:
单次负脉冲请求中断控制LED灯亮灭。
五:
实验分析与总结:
通过实验,我们进一步了解了中断的关键:
1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。
2.必须在中断程序中设定是否允许中断重入,即设置EXO位。
3.对于80C196,要选择相应的中断源,并设置中断屏蔽器的相应位。
实验中中使用了INTO中断(80C196为EXTINT中断),一般中断程序进入时应保护PSW,ACC以及中断程序使用但非其专用的寄存器。
实验中的中断程序保护了PSW,ACC等三个寄存器并且在退出前恢复了这三个寄存器。
另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。
这次的实验之后才发现自己在中断方面学的不好,对于知识点掌握不够。
湖南师范大学职业技术学院(工学院)实验报告
记
分
实验课程:
MCS-51系列单片机系统及其应用
实验题目:
实验四:
八段数码管显示实验
实验日期:
2012年12月24日
姓名:
张佩玉学号:
2010180121
实验内容:
一:
实验要求:
利用实验仪提供的显示电路,动态显示一行数据。
二:
实验目的:
1.了解数码管动态显示原理。
2.了解用总线方式控制数码管显示。
三:
实验程序:
OUT_SEGEQU8004H;字段端口地址
OUT_BITEQU8002H;字位端口地址
DIS_NUM1EQU30H;显示数据
DIS_NUM2EQU31H
DIS_NUM3EQU32H
SEG_BUF1EQU40H;显示缓冲区,段码
SEG_BUF2EQU41H
SEG_BUF3EQU42H
SEG_BUF4EQU43H
SEG_BUF5EQU44H
SEG_BUF6EQU45H
ORG0000H
AJMPSTART
ORG0030H
START:
MOVSP,#60H
MOVDIS_NUM1,#12H
MOVDIS_NUM2,#34H
MOVDIS_NUM3,#56H
ACALLNUM_SEG
LOOP:
ACALLDISPLAY
SJMPLOOP
;=========拆字查表子程序================
NUM_SEG:
MOVR0,#DIS_NUM1
MOVR1,#SEG_BUF1
MOVR2,#3
MOVDPTR,#TAB_SEG
LOOP1:
MOVA,@R0;把R0的值给A
SWAPA;字节交换
ANLA,#0FH;相与
MOVCA,@A+DPTR
MOV@R1,A
MOVA,@R0
ANLA,#0FH
MOVCA,@A+DPTR
INCR1
MOV@R1,A
INCR0
INCR1
DJNZR2,LOOP1
RET
;-------段码表--------------------------
TAB_SEG:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
;'0''1''2''3''4''5''6''7'
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
;'8''9''A''B''C''D''E''F'
;==========数码管动态扫描子程序===================
DISPLAY:
MOVR0,#SEG_BUF1
MOVR2,#20H
LOOP2:
MOVA,R2
MOVDPTR,#OUT_BIT
MOVX@DPTR,A
MOVA,@R0
MOVDPTR,#OUT_SEG
MOVX@DPTR,A
ACALLDLY_2MS
CLRA
MOVX@DPTR,A
INCR0
MOVA,R2
RRA
MOVR2,A
JNBACC.7,LOOP2
RET
;===========延时子程序Td=2ms================
DLY_2MS:
PUSH04H
PUSH05H
MOVR4,#0
DLY1:
MOVR5,#0
DJNZR5,$
DJNZR4,DLY1
POP05H
POP04H
RET
四:
实验结果:
动态显示数据123456
五:
实验分析与总结:
此次实验中的实验仪提供了6位8段码LED显示电路,按地址输出相应数据,实现对显示器的控制。
显示共有6位,用动态方式显示。
8位段码、6位位码是由两片74LS374输出。
位码经MC1413或ULN2003倒相驱动后,选择相应显示位。
实验仪中8位段码输出地址为0X004H,位码输出地址为0X002H。
此处X是由KEY/LEDCS决定,参见地址译码。
做键盘和LED实验时,需将KEY/LEDCS接到相应的地址译码上。
以便用相应的地址来访问。
之前上课的时候就学习过拆字程序,延时程序,所以难点就在于动态扫描程序,以及把已知的程序片断组合成完整的程序。
在实验讲解中老师提了一个问题,就是怎样点亮小数点。
开始的时候完全没有头绪,之后在仔细的看了七段数码管的构造后发现,还有个h位,我们只要在相应位的段码表数值都加上08H就可以实现。
通过此次实验,我了解了数码动态显示的原理及怎样用总线方式控制数码显示。
虽然了解不是很全面,但是还是有所进步。
湖南师范大学职业技术学院(工学院)实验报告
记
分
实验课程:
MCS-51系列单片机系统及其应用
实验题目:
实验五:
电子钟实验
实验日期:
2012年12月26日
姓名:
张佩玉学号:
2010180121
实验内容:
一:
实验要求:
利用CPU的定时器和实验仪上提供的数码显示电路,设计一个电子时钟,格式如下:
XXXXXX由左向右分别为:
时、分、秒
二:
实验目的:
1.进一步掌握定时器的使用和编程方法。
2.进一步掌握中断处理程序的编程方法。
3.进一步掌握数码显示电路的驱动访法。
三:
实验程序:
OUT_SEGEQU8004H
OUT_BITEQU8002H
HOUREQU20H
MINUTEEQU21H
SECONDEQU22H
COUNT_SEQU23H;秒计数器
STATE_SEQU24H;
DIS_NUM1EQU30H
DIS_NUM2EQU31H
DIS_NUM3EQU32H
SEG_BUF1EQU40H;显示缓冲区
SEG_BUF2EQU41H
SEG_BUF3EQU42H
SEG_BUF4EQU43H
SEG_BUF5EQU44H
SEG_BUF6EQU45H
ORG0000H
AJMPSTART
ORG001BH
AJMPINT_T1
ORG0030H
START:
MOVSP,#60H
MOVHOUR,#0H
MOVMINUTE,#59H
MOVSECOND,#59
MOVSTATE_S,#0H;秒标志
MOVCOUNT_S,#20;1秒钟计数
MOVTMOD,#10H
MOVTL1,#58H;50ms的时间常数
MOVTH1,#9EH
SETBTR1
SETBET1
SETBEA;允许中断
DIS_LOOP1:
MOVDIS_NUM1,HOUR
MOVDIS_NUM2,MINUTE
MOVDIS_NUM3,SECOND
LCALLNUM_SEG
DIS_LOOP2:
LCALLDISPLAY
MOVA,STATE_S
CJNEA,#0FFH,DIS_LOOP2
MOVSTATE_S,#0
SJMPDIS_LOOP1
NUM_SEG:
MOVR0,#DIS_NUM1
MOVR1,#SEG_BUF1
MOVR2,#3
MOVDPTR,#TAB_SEG
LOOP1:
MOVA,@R0
SWAPA
ANLA,#0FH
MOVCA,@A+DPTR
MOV@R1,A
MOVA,@R0
ANLA,#0FH
MOVCA,@A+DPTR
INCR1
MOV@R1,A
INCR0
INCR1
DJNZR2,LOOP1
RET
TAB_SEG:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
;'0''1''2''3''4''5''6''7'
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
;'8''9''A''B''C''D''E''F'
DISPLAY:
MOVR0,#SEG_BUF1
MOVR2,#20H
LOOP2:
MOVA,R2
MOVDPTR,#OUT_BIT
MOVX@DPTR,A
MOVA,@R0
MOVDPTR,#OUT_SEG
MOVX@DPTR,A
ACALLDLY_2MS
CLRA
MOVX@DPTR,A
INCR0
MOVA,R2
RRA
MOVR2,A
JNBACC.7,LOOP2
RET
DLY_2MS:
PUSH06H
PUSH07H
MOVR6,#5
DLY1:
MOVR7,#100
DJNZR7,$
DJNZR6,DLY1
POP07H
POP06H
RET
INT_T1:
cplp1.0
PUSHACC
PUSHPSW
CLRTR1
NOP
MOVTL1,#64H;58H
MOVTH1,#9EH
SETBTR1
DJNZCOUNT_S,EXIT
MOVCOUNT_S,#20
MOVSTATE_S,#0FFH
MOVA,SECOND
CJNEA,#00H,JMP_S
MOVSECOND,#59H
MOVA,MINUTE
CJNEA,#1H,JMP_M
MOVMINUTE,#59H
MOVA,HOUR
CJNEA,#1H,JMP_H
MOVHOUR,#0H
JMP_H:
MOVA,HOUR
DECA
DAA
MOVHOUR,A
JMP_M:
MOVA,MINUTE
DECA
DAA
MOVMINUTE,A
JMP_S:
MOVA,SECOND
DECA
DAA
MOVSECOND,A
EXIT:
POPPSW;恢复现场
POPACC
RETI
END;中断返回
四:
实验结果:
用六个数码管分成三组从左到右显示时钟时、分、秒的电子时钟。
五:
实验分析与总结:
定时器每100us中断一次,在中断服务程序中,对中断次数进行计数,100us计数10000次就是1秒。
然后再对秒计数得到分和小时值,并送入显示缓冲区。
键盘及LED显示电路这次实验的程序认真看后还是能明白,但自己编写不出来。
在程序中分,秒的范围是00H~59H,时的范围是00H~23H。
对应于不同的时分秒的情况跳转到不同的指令实现循环执行。
通过实验,我们了解了定时器使用技巧和如何编程实现定时器。
定时器中需要应用到中断处理,所以实验中也要熟悉中断处理程序的编程方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 报告