实验指导书单片机.docx
《实验指导书单片机.docx》由会员分享,可在线阅读,更多相关《实验指导书单片机.docx(27页珍藏版)》请在冰豆网上搜索。
实验指导书单片机
《单片机原理》
实验指导书
徐迎曦张松灿
河南科技大学电子信息工程学院
自动化系
2007年4月
目录
前言......................................................1
试验一清零程序.........................................2
试验二拆字程序..........................................4
试验三拼字程序..........................................6
试验四数据区传送子程序..................................8
试验五数据排序程序.....................................10
实验六8031单片机P3、Pl口应用.........................12
实验七工业顺序控制器...................................14
实验八并行接口芯片8255应用............................18
实验九8279键盘、显示实验...........................22
附录DVCC实验装置及实验系统说明..........................27
前言
《单片机原理及应用》课程不仅是自动化专业的专业课,还是计算机应用等非电专业的选修课。
由于单片机具有良好的控制性能和灵活的嵌入品质,单片机在各种领域都得到了极为广泛的使用,这也使我们必须学好这门课程。
《单片机原理及应用》课程的主要内容包括单片机的结构、时序、指令系统与程序设计、中断系统、定时器/计数器、存储器扩展、接口技术(包括用户界面技术、串行通信技术、A/D及D/A转换接口技术)、开发系统的组成和功能等。
在学习本课程的过程中,只有通过上机做实验,能够更好地激发学生的学习兴趣,才能使学生真正掌握单片机原理、工作方式。
本课程实验要求学生通过对各部分实验的具体操作练习,使学生通过实验能够加深对MCS—51单片机以及扩展电路的理解,更全面地掌握MCS—51单片机的基本知识以及单片机扩展技术。
学生应认真阅读《单片机原理及应用》教材中的与实验相关的章节内容,提前做好实验预习,做到在每个实验前明确实验目的、掌握实验的基本内容及操作方法;在实验中正确使用实验设备,认真观察、分析实验结果;实验后要根据要求做好总结,上交实验报告。
这些实验都是在基于启动计算机厂的DVCC系列实验仪和试验系统的基础上编写的,实验教材也是以此为蓝本编写的。
实验一软件类清零程序
一、实验目的
(一)通过本实验了解和熟悉单片机实验装置和实验系统的使用,掌握如何在实验系统中编写汇编程序,如何编译、调试程序,如何使用各种程序运行方式,并能够分析程序运行的结果。
(二)掌握如何在实验系统中观察单片机各个寄存器的状态、数据区数据的查看。
(三)掌握汇编语言程序设计特点、调试方法与技巧。
二、预习要求
(一)熟悉实验软件环境和程序调试方法。
(二)复习DPTR作间接寻址用时的方法。
三、实验内容
编写程序把8031单片机存储器2000H~20FFH地址单元的内容全部清零。
四、算法流程
图1-1
五、参考程序
ORG0640H
SE01:
MOVR0,#00H
MOVDPTR,#2000H
LOO1:
CLRA
MOVX@DPTR,A
INCDPTR
INCR0
CJNER0,#00H,LOO1
LOOP:
SJMPLOOP
END
六、思考题
(一)程序LOO1中指令“INCDPTR”的作用是什么?
(二)指令“CJNER0,#00H,LOO1”中的CJNE如果改为DJNZ,程序该如何实现?
七、实验报告要求
(一)实验报告要用学校统一的纸。
(二)实验内容应包括,实验题目、实验目的、实验原理、步骤简述、实验调试过程中出现的问题、结果和分析以及程序清单并给程序做注释。
(三)每个实验后的思考题必须完成。
(四)对实验中发现的问题应加以讨论,并提出自己的改进意见和要求、希望等。
实验二软件类拆字程序
一、实验目的
掌握汇编语言设计和调试方法。
二、预习要求
(一)熟悉实验软件环境和程序调试方法。
(二)熟悉逻辑运算指令的运用及外部存储器的访问方法。
三、实验内容:
把单片机存储器2000H地址单元的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。
四、参考算法
图2-1
五、参考程序
ORG0660H
SE02:
MOVDPTR,#2000H
MOVXA,@DPTR
MOVB,A
SWAPA
ANLA,#0FH
INCDPTR
MOVX@DPTR,A
INCDPTR
MOVA,B
ANLA,#0FH
MOVX@DPTR,A
LOOP:
SJMPLOOP
END
六、思考题
对比程序执行前后存储器2001H、2002H地址单元内容的变化情况。
并记录2001H、2002H单元内容的变化情况。
七、实验报告要求
(一)实验报告要用学校统一的纸。
(二)实验内容应包括,实验题目、实验原理、实验目的、步骤简述、试验调试过程中出现的问题、结果和分析以及程序清单并给程序做注释。
(三)每个实验后的思考题必须完成。
(四)对实验中发现的问题应加以讨论,并提出自己的改进意见和要求、希望等。
实验三软件类拼字程序
一、实验目的
进一步掌握汇编语言设计和调试方法。
二、预习要求
(一)熟悉实验软件环境和程序调试方法。
(二)熟悉逻辑运算指令,外部数据存储器的访问方法。
三、实验内容
把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成一个字节。
四、参考算法
图3-1
五、参考程序
ORG0680H
MOVDPTR,#2000H
MOVXA,@DPTR
ANLA,#0FH
SWAPA
MOVB,A
INCDPTR
MOVXA,@DPTR
ANLA,#0FH
ORLA,B
INCDPTR
MOVX@DPTR,A
END
六、思考题
对比程序执行前后存储器2000H、2001H、2002H地址单元内容的变化情况。
并记录2000H、2001H、2002H单元内容的变化情况。
七、实验报告要求
(一)实验报告要用学校统一的纸。
(二)实验内容应包括,实验题目、实验原理、实验目的、步骤简述、试验调试过程中出现的问题、结果和分析以及程序清单并给程序做注释。
(三)每个实验后的思考题必须完成。
(四)对实验中发现的问题应加以讨论,并提出自己的改进意见和要求、希望等。
实验四软件类数据区传送子程序
一、实验目的
掌握RAM中的数据操作。
二、预习要求
(一)熟悉实验软件环境和程序调试方法。
(二)进一步熟悉外部数据存储器的访问方法和堆栈指针的应用。
三、实验内容
把R2、R3源RAM区首址内的R6、R7个字节数据,传送到R4、R5目的RAM区。
四、参考算法
图4-1
五、参考程序
ORG07B0H
SE22:
MOVDPL,R3
MOVDPH,R2
MOVXA,@DPTR
MOVDPL,R5
MOVDPH,R4
MOVX@DPTR,A
CJNER3,#0FFH,LO42
INCR2
LO42:
INCR3
CJNER5,#0FFH,LO43
INCR4
LO43:
INCR5
CJNER7,#00H,LO44
CJNER6,#00H,LO45
LOOP:
SJMPLOOP
NOP
LO44:
DECR7
SJMPSE22
LO45:
DECR7
DECR6
SJMPSE22
END
六、思考题
如果使0000~1000H中内容与2000~3000H内容完全一致,如何来改写程序?
七、实验报告要求
(一)实验报告要用学校统一的纸。
(二)实验内容应包括,实验题目、实验原理、实验目的、步骤简述、试验调试过程中出现的问题、结果和分析以及程序清单并给程序做注释。
(三)每个实验后的思考题必须完成。
(四)对实验中发现的问题应加以讨论,并提出自己的改进意见和要求、希望等。
实验五软件类数据排序实验
一、实验目的
熟悉MCS-51指令系统,掌握汇编语言程序设计方法。
二、预习要求
(一)熟悉实验软件环境和程序调试方法。
(二)熟悉外部数据存储器的访问方法和显示程序的编写方法。
三、实验内容
编写并调试一个排序子程序,其功能为用冒泡法将内部RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。
四、参考算法
图5-1
五、实验程序
ORG09B0H
QUE:
MOVR3,#50H
QUE1:
MOVA,R3
MOVR0,A
MOVR7,#0AH
CLR00H
MOVA,@R0
QL2:
INCR0
MOVR2,A
CLRC
MOV22H,@R0
CJNEA,22H,QL3
SETBC
QL3:
MOVA,R2
JCQL1
SETB00H
XCHA,@R0
DECR0
XCHA,@R0
INCR0
QL1:
MOVA,@R0
DJNZR7,QL2
JB00H,QUE1
LOOP:
SJMPLOOP
END
六、思考题
编一程序,把50H—5AH中内容按从大到小排列。
七、实验报告要求
(一)实验报告要用学校统一的纸。
(二)实验内容应包括,实验题目、实验原理、实验目的、步骤简述、试验调试过程中出现的问题、结果和分析以及程序清单并给程序做注释。
(三)每个实验后的思考题必须完成。
(四)对实验中发现的问题应加以讨论,并提出自己的改进意见和要求、希望等。
试验六硬件类8031单片机P3、Pl口应用
一、实验目的
(一)掌握P3口、P1口简单使用。
(二)学习延时程序的编写和使用。
二、预习要求
(一)认真阅读实验指导书,明确本次实验的目的、方法与步骤,并进行必要的记录。
(二)熟悉并行口做输入输出时的用法,分析脉冲输入的电路原理。
(三)预习延时子程序的设计方法及如何确定延时的时间。
三、实验内容
1、P3.3口做输入口线,外接一脉冲输入,每输入一个脉冲,P1口按十六进制加一。
2、P1口做输出口,编写程序,使P1口接的8个发光二极管L1—L8按16进制加一方式点亮发光二极管。
3、实验电路
图6-1
四、实验说明
1、P1口是准双向口,它作为输出口时与一般的双向口使用方法相同,由准双向口结构可知:
当P1口作为输入口时,必须先对它置高电平,使内部MOS管截止,因内部上拉电阻是20KΩ—40KΩ,故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。
2、延时子程序的延时计算问题。
对于延时程序
DELAY:
MOVR6,#00H
DELAY1:
MOVR7,#80H
DJNZR7,$
DJNZR6,DELAY1
查指令表可知MOV、DJNZ指令均需用两个机器周期,而一个机器周期时间长度为12/6.0MHZ,所以该段指令执行时间为:
((80+1)×256+1)×2×(12÷6000000)=132.1ms
五、实验步骤
1P3.3用插针连至K1,P1.0—P1.7用插针连至L1—L8。
2开关K1每拨动一次,L1—L8发光二极管按16进制方式加一点亮。
3编译、运行、调试自己所编写的程序,并检验结果。
六、思考题
如果开关K1每拨动一次,L1-L8八个发光管轮流点亮,应该怎么实现?
七、实验报告要求
(一)实验报告要用学校统一的纸。
(二)实验内容应包括,实验题目、实验原理、实验目的、步骤简述、试验调试过程中出现的问题、结果和分析以及程序清单并给程序做注释。
(三)每个实验后的思考题必须完成。
(四)对实验中发现的问题应加以讨论,并提出自己的改进意见和要求、希望等。
试验七硬件类工业顺序控制器
一、实验目的
(一)掌握单片机开发系统的使用。
(二)掌握工业顺序控制程序的简单编程、中断的使用。
二、预习要求
(一)认真阅读实验指导书,明确本次实验的目的、方法与步骤,并进行必要的记录。
(二)熟悉工业顺序控制程序的设计思路,预习中断子程序的设计方法及在汇编语言中如何实现。
三、实验内容
(一)实验原理:
在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些断续生产过程,这些过程又都是按照某种顺序有规律地执行预定的动作,对这类生产过程的控制称为顺序控制。
例如:
注塑机要生产一个工件,其工艺流程大致按“合模-注射-延时-开模-产伸-产迟”等时间顺序动作。
这种顺序动作采用微机是很容易实现的。
本试验就是以控制注塑机为例而设计的典型控制试验。
(二)实验内容:
用8031的P1口的P1.0—P1.6依次作为输出,模拟控制注塑机的七道工序,现模拟控制七只发光二极管的点亮,高电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,低电平启动。
P3.3为外故障输入模拟开关,P3.3为0时不断告警。
P1.7为报警声音输出,设定6道工序只有一位输出,第七道工序三位有输出。
(三)实验电路(见下页)
四、实验说明
实验中用外部中断0,编中断服务程序的关键是:
(一)保护进入中断时的状态,并在退出中断之前恢复进入的状态。
(二)必须在中断程序中设定是否允许中断重入,即设置EX0位。
一般中断程序进入时应保护PSW、ACC以及中断程序使用但非其专用的寄存器,本实验中未涉及。
五、实验步骤
①P3.4连K1,P3.2连K2,P1.0—P1.6分别连到L1—L7,P1.7连SIN(电子音响输入端)。
②K1开关拨在上面,K2拨在上面。
③用连续方式从起始地址0580H开始运行程序(输入0580后按EXEC键),此时应在等待开工状态。
④K1拨至下面(显低电平),各道工序应正常运行。
图7-1
⑤K2拨至下面(低电平),应有声音报警(人为设置故障)。
⑥K2拨至上面(高电平),即排除故障,程序应从刚才报警的那道工序继续执行。
六、工业顺序控制程序
ORG0003H
LJMPHA2S3
ORG0580H
HA2S:
MOVP1,#07FH
ORLP3,#00H
HA2S1:
JNBP3.4,HA2S1
ORLIE,#85H
ORLIP,#04H
MOVPSW,#00H
MOVSP,#53H
HA2S2:
MOVP1,#01H
ACALLHA2S7
MOVP1,#02H
ACALLHA2S7
MOVP1,#04H
ACALLHA2S7
MOVP1,#08H
ACALLHA2S7
MOVP1,#10H
ACALLHA2S7
MOVP1,#20H
ACALLHA2S7
MOVP1,#40H
ACALLHA2S7
SJMPHA2S2
HA2S3:
MOVB,R2
HA2S4:
MOVP1,#00H
MOV20H,#0A0H
HA2S5:
SETBP1.7
ACALLHA2S6
CLRP1.7
ACALLHA2S6
DJNZ20H,HA2S5
CLRP1.7
ACALLHA2S6
JNBP3.2,HA2S4
MOVR2,B
RETI
HA2S6:
MOVR2,#06H
ACALLDELAY
RET
HA2S7:
MOVR2,#30H
ACALLDELAY
RET
DELAY:
PUSH02H
DELAY1:
PUSH02H
DELAY2:
PUSH02H
DELAY3:
DJNZR2,DELAY3
POP02H
DJNZR2,DELAY2
POP02H
DJNZR2,DELAY1
POP02H
DJNZR2,DELAY
RET
END
七、思考题
修改程序,使每道工序中有多位输出。
八、实验报告要求
(一)实验报告要用学校统一的纸。
(二)实验内容应包括,实验题目、实验原理、实验目的、步骤简述、试验调试过程中出现的问题、结果和分析以及程序清单并给程序做注释。
(三)每个实验后的思考题必须完成。
(四)对实验中发现的问题应加以讨论,并提出自己的改进意见和要求、希望等。
实验八硬件类并行接口芯片8255应用
一、实验目的
1、掌握可编程I/O接口芯片8255的结构及编程方法
2、熟悉对8255初始化编程和输入,输出软件的设计方法。
3、学习模拟交通灯控制的实现方法。
二、预习要求
1、认真阅读实验指导书,明确本次实验的目的、方法与步骤,并进行必要的记录。
2、熟悉8255接口芯片的特点及工作原理及能够根据需要编写8255的初始控制字。
三、实验内容
1、用8255做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。
2、实验电路
图8-1
四、实验说明
因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化情况和规律。
假设一个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1东西绿灯通车,南北红灯。
过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。
再转状态3,南北绿灯通车,东西红灯。
过一段时间转状态4,南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。
最后循环至状态1。
五、实验步骤
(一)8255PC0—PC7、PB0—PB3依次接发光二极管L1—L12。
(二)以连续方式从0630H开始执行程序,初始态为四个路口的红灯全亮之后,东西路口的绿灯亮南北路口的红灯亮,东西路口方向通车。
延时一段时间后东西路口的绿灯熄灭,黄灯开始闪耀。
闪耀若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪耀。
闪耀若干次后,再切换到东西路口方向,之后重复以上过程。
六、实验程序
ORG0600H
HA4S:
MOVSP,#60H
MOVDPTR,#0FF2BH
MOVA,#80H
MOVX@DPTR,A
MOVDPTR,#0FF29H
MOVA,#49H
MOVX@DPTR,A
INCDPTR
MOVA,#49H
MOVX@DPTR,A
MOVR2,#25H
LCALLDELAY
HA4S3:
MOVDPTR,#0FF29H
MOVA,#08H
MOVX@DPTR,A
INCDPTR
MOVA,#61H
MOVX@DPTR,A
MOVR2,#55H
LCALLDELAY
MOVR7,#05H
HA4S1:
MOVDPTR,#0FF29H
MOVA,#04H
MOVX@DPTR,A
INCDPTR
MOVA,#51H
MOVX@DPTR,A
MOVR2,#20H
LCALLDELAY
MOVDPTR,#0FF29H
MOVA,#00H
MOVX@DPTR,A
INCDPTR
MOVA,#41H
MOVX@DPTR,A
MOVR2,#20H
LCALLDELAY
DJNZR7,HA4S1
MOVDPTR,#0FF29H
MOVA,#03H
MOVX@DPTR,A
INCDPTR
MOVA,#0cH
MOVX@DPTR,A
MOVR2,#55H
LCALLDELAY
MOVR7,#05H
HA4S2:
MOVDPTR,#0FF29H
MOVA,#02H
MOVX@DPTR,A
INCDPTR
MOVA,#8aH
MOVX@DPTR,A
MOVR2,#20H
LCALLDELAY
MOVDPTR,#0FF29H
MOVA,#02H
MOVX@DPTR,A
INCDPTR
MOVA,#08H
MOVX@DPTR,A
MOVR2,#20H
LCALLDELAY
DJNZR7,HA4S2
LJMPHA4S3
DELAY:
PUSH02H
DELAY1:
PUSH02H
DELAY2:
PUSH02H
DELAY3:
DJNZR2,DELAY3
POP02H
DJNZR2,DELAY2
POP02H
DJNZR2,DELAY1
POP02H
DJNZR2,DELAY
RET
END
七、思考题
如果在各灯亮的同时显示倒计时时间该如何实现?
八、实验报告要求
(一)实验报告要用学校统一的纸。
(二)实验内容应包括,实验题目、实验目的、实验目的、步骤简述、试验调试过程中出现的问题、结果和分析以及程序清单并给程序做注释。
(三)每个实验后的思考题必须完成。
(四)对实验中发现的问题应加以讨论,并提出自己的改进意见和要求、希望等。
实验九硬件类8279键盘、显示实验
一、实验目的
(一)掌握8031系统中,扩展8279键盘显示接口的方法。
(二)掌握8279工作原理和编程方法。
二、预习要求
(一)熟悉8279接口芯片的特点及工作原理能够根据需要编写8255的初始控制字。
(二)预习如何编写键盘的识别程序和数码管的显示程序。
三、实验内容
(一)在外接的键盘功能板上,按数字键,数码管上应相应能显示按下的数字,按下功能键,能相应执行其它功能程序。
(二)实验电路
图9-1
四、实验说明
利用8279可以实现对键盘/显示器的自动扫描,以减轻CPU负担,具有显示稳定,程序简单,不会出现误动作等特点。
本实验利用8279实现显示扫描自动化。
五、实验步骤
①将DVCC实验系统上J8插座与键盘显示板用扁平电缆相连。
②将KEY区D0—D7用8芯排线连到BUS2区XD0—XD7上。
③将KEY区WR、RD、ALE分别连到BUS3区XWR、XRD、ALE上。
④KEY区A0连到BUS1区XA0上。
⑤KEY区RST连到MP区SP上。
⑥KEY区KCS连