《单片机原理及应用》实验指导书16K.docx
- 文档编号:27914525
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:53
- 大小:2.02MB
《单片机原理及应用》实验指导书16K.docx
《《单片机原理及应用》实验指导书16K.docx》由会员分享,可在线阅读,更多相关《《单片机原理及应用》实验指导书16K.docx(53页珍藏版)》请在冰豆网上搜索。
《单片机原理及应用》实验指导书16K
目录
实验一、源程序编译软件KEILuVision2/4的使用3
一、实验目的3
二、实验内容3
三、思考题10
四、实验报告要求11
实验二、数据运算类实验12
一、实验目的12
二、实验内容12
三、思考题14
四、实验报告要求14
实验三、数据处理类实验15
一、实验目的15
二、实验内容15
三、思考题17
四、实验报告要求17
实验四、仿真软件Proteus的使用18
一、实验目的18
二、实验内容18
三、思考题28
四、实验报告要求28
实验五、外部中断实验29
一、实验目的29
二、实验内容29
三、思考题32
四、实验报告要求32
实验六、定时器实验33
一、实验目的33
二、实验内容33
三、思考题36
四、实验报告要求36
实验七、简易秒表实验37
一、实验目的37
二、实验内容37
三、思考题43
四、实验报告要求43
实验八、通信实验44
一、实验目的44
二、实验内容44
三、思考题48
四、实验报告要求48
实验一、源程序编译软件KEILuVision2/4的使用
一、实验目的
1、熟悉KEILuVision2/4的使用方法;
2、熟悉单片机程序的基本结构;
3、学会KEILuVision2/4软件对单片机程序进行编译。
二、实验内容
单片机开发中除必要的硬件外,同样离不开软件。
我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法:
一种是手工汇编,另一种是机器汇编。
手工汇编目前已极少使用了,机器汇编是通过汇编软件将源程序变为机器码,广泛用于MCS-51单片机的开发中。
汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展。
Keil软件是目前最流行开发MCS-51系列单片机的软件,它提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起,界面友好,易学易用,掌握这一软件的使用对于使用51系列单片机来说十分必要。
1、实验要求
用KEILuVision2/4软件编辑编译一段源程序,实现AT89C51单片机内部的RAM和外部RAM的数据传送。
详细要求如下:
首先将AT89C51内部RAM30H~3FH单元置初值0E0H~0EFH;然后将内部RAM30H~3FH单元的内容传送到外部RAM的2600H~260FH单元,同时将内部RAM30H~3FH单元清0;完成后,再将外部RAM的2600H~260FH单元的内容送到内部RAM40H~4FH单元中。
2、分析要求编写程序
根据实验要求编写的汇编源程序如下:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#06FH
YQ1:
MOVR0,#30H
MOVR2,#10H
MOVA,#0E0H
LP1:
MOV@R0,A
INCR0
INCA
DJNZR2,LP1
YQ2:
MOVR0,#30H
MOVDPTR,#2600H
MOVR2,#10H
LP2:
MOVA,@R0
MOVX@DPTR,A
CLRA
MOV@R0,A
INCR0
INCDPTR
DJNZR2,LP2
YQ3:
MOVR0,#40H
MOVDPTR,#2600H
MOVR2,#10H
LP3:
MOVXA,@DPTR
MOV@R0,A
INCR0
INCDPTR
DJNZR2,LP3
HERE:
SJMPHERE
END
3、程序编译调试
运行KEILuVision2/4编辑软件,接着按下面的步骤建立项目进行实验:
(1)点击Project菜单,选择弹出的下拉式菜单中的NewProject,如图1-1所示。
接着弹出一个标准Windows文件对话窗口,如图1-2所示。
在“文件名”中输入您的第一个源程序项目名称,这里我们用“test”,“保存”后的文件扩展名为uv2/4(依照计算机所装的版本),这是KEILuVision2/4项目文件扩展名,以后可以直接点击此文件以打开先前做的项目。
图1-1NewProject菜单
图1-2文件窗口
(2)选择所要的单片机,这里选择常用的Ateml公司的AT89C51。
此时屏幕如图1-3所示。
AT89C51有什么功能、特点呢?
看图中右边有简单的介绍。
单击“确定”按钮,出现如图1-4所示的开发平台界面。
(3)首先在项目中创建新的源程序文件或加入旧程序文件。
如果没有现成的程序,那么就要新建一个程序文件。
点击图1-5中1的新建文件的快捷按钮,在2中出现一个新的文字编辑窗口,这个操作也可以通过菜单File-New或快捷键Ctrl+N来实现。
在可以编写程序了。
图1-3选取芯片
图1-4新工程建立好的开发平台界面
(4)点击图1-5中的3保存新建的程序,也可以用菜单File-Save或快捷键Ctrl+S进行保存。
因为是新文件所以保存时会弹出类似图1-2的文件操作窗口,把第一个程序命名为test1.a,保存在项目所在的目录中,这时会发现程序单词有了不同的颜色,说明KEIL的汇编语法检查生效了。
如图1-6鼠标在屏幕左边的SourceGroup1文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。
选“AddFiletoGroup‘SourceGroup1’”弹出文件窗口,选择刚刚保存的文件,按ADD按钮,关闭文件窗,程序文件已加到项目中了。
这时在SourceGroup1文件夹图标左边出现了一个小“+”号说明,文件组中有了文件,点击它可以展开查看。
图1-5新建源程序文件
图1-6把文件加入到项目文件组中
(5)源程序文件已被加到了项目中了,下面就剩下编译运行了。
这个实验只是用做学习新建程序项目和编译运行仿真的基本方法,所以使用软件默认的编译设置,它不会生成用于芯片烧写的HEX文件。
先来看图1-7吧,图中1、2、3都是编译按钮。
不同是1是用于编译单个文件;2是编译链接当前项目,如果先前编译过一次之后文件没有做动编辑改动,
这时再点击是不会再次重新编译的;3是重新编译,每点击一次均会再次编译链接一次,不
管程序是否有改动;在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮
才会生效;5是菜单中的它们;在4中可以看到编译的错误信息和使用的系统资源情况等,
我们要查错就依靠它了;6是有一个小放大镜的按钮,这就是开启/关闭调试模式的按钮,
它也存在于菜单Debug-Start\StopDebugSession,快捷键为Ctrl+F5。
图1-7编译程序图
(6)进入调试模式,软件窗口样式大致如图1-8所示。
图中1为运行,当程序处于停止
状态时才有效;2为停止,程序处于运行状态时才有效;3是复位,模拟芯片的复位,程序
回到最开头处执行;按4可以打开5中的串行调试窗口,这个窗口可以看到从51芯片的串
行口输入输出的字符(图1-8是不断从串口输出“HelloWorld!
”字符的调试结果);在4的右侧是内存窗口“MemoryWindows”选项,可以显示系统中各种内存中的值。
通过在“Address”后的编辑框输入“字母:
数字”,即可显示相应的内存值,其中字母可以是C、D、I、X,分别代表程序存储空间(ROM)、直接寻址的片内存储空间(内部RAM)、间接寻址的片内存储空间、扩展的外部RAM空间(外部RAM),数字代表想要查看的地址,程序全部运行结果如图1-9所示(此处采用的是KEILuVision4,上述的按钮功能及工具条类似)。
图1-8“HelloWorld!
”调试运行程序
图1-9(a)数据传送内部RAM调试运行程序
图1-9(b)数据传送外部RAM调试运行程序
4、使用KEILuVision2/4软件来编译调试源程序大致分为以下几步:
(1)建立一个新的工程项目;
(2)建立源程序文件并输入、保存;
(3)将源程序文件添加到工程项目中;
(4)编译调试源程序,并查看调试结果。
三、思考题
1、单步运行程序,并检查单片机内部RAM或寄存器的内容,检查相应的外部RAM的内容。
2、分别在YQ2、YQ3、HERE处设置断点(“Debug”——“Insert/RemoveBreakpoint”),如图1-10所示,然后连续运行到断点后,检查相应的内部RAM和外部RAM内容。
3、AT89C51内部RAM和外部RAM传送数据时,各使用什么指令。
4、请自行学习,熟悉KEILuVision2/4界面及各个窗口的功能。
通过键盘或鼠标选择开发工具的菜单命令、设置和选项,也可以使用键盘输入程序文本,uVision2/4屏幕提供一个用于命令输入的菜单、一个可迅速选择命令按钮的工具条和一个或多个源程序窗口对话框及显示信息,使用工具条上的按钮可快速执行uVision2/4的许多功能。
图1-10YQ2处设置断点
四、实验报告要求
1、简述实验目的和原理;
2、按实验步骤给出实验结果;
3、回答思考题。
实验二、数据运算类实验
一、实验目的
1、熟悉AT89C51汇编语言程序设计的方法;
2、掌握十进制数(BCD码)相加的方法;
3、掌握多字节乘法的计算方法;
4、了解子程序设计方法;
5、进一步熟练掌握KEILuVision2/4软件的源程序编译与调试。
二、实验内容
1、多字节十进制数的加法
(1)实验要求
用KEILuVision2/4软件编辑编译一段源程序,实现AT89C51单片机内部的RAM的多字节十进制数的相加。
详细要求如下:
首先将加数(如4225)送存储单元20H(高位)、21H(低位);然后将被加数(如6418)送存储单元31H(高位)、32H(低位);最后,将相加的结果送存储单元30H(高位)、31H和32H(低位)。
(2)分析要求编写程序
根据实验要求编写的汇编源程序如下:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#60H
MOVR0,#20H
MOV@R0,#32H
INCR0
MOV@R0,#15H
MOVR1,#31H
MOV@R1,#84H
INCR1
MOV@R1,#28H
MOVR2,#02H
ACALLADDGC
AJMP$
ADDGC:
CLRC
ADDLP:
MOVA,@R0
ADDCA,@R1
DAA
MOV@R1,A
DECR0
DECR1
DJNZR2,ADDLP
CLRA
MOVACC.0,C
MOV@R1,A
RET
END
(3)程序编译调试
请读懂源程序,依照实验一中的步骤进行源程序的编译与调试,验证程序的正确性。
2、双字节数据的乘法
(1)实验要求
用KEILuVision2/4软件编辑编译一段源程序,实现AT89C51单片机内部寄存器中双字节数据的乘法。
详细要求如下:
首先将乘数存放在R3R2中;然后将被乘数存放在R5R4中;最后,将相乘的结果存放在R0指出的4个内存单元中,比如33H、32H、31H、30H(从高位到低位)。
(2)分析要求编写程序
根据实验要求编写的汇编源程序如下:
ORG0000H
LJMPMAIN
ORG003FH
MAIN:
MOVSP,#60H
MOVR2,#0FFH
MOVR3,#0FH
MOVR4,#0FFH
MOVR5,#0FH
MOVR0,#30H
MOVR7,#04H
CLRM:
MOV@R0,#0
INCR0
DJNZR7,CLRM
MOVR0,#30H
ACALLM2B
SJMP$
M2B:
MOVA,R2
MOVB,R4
MULAB
ACALLADDM
MOVA,R2
MOVB,R5
MULAB
DECR0
ACALLADDM
MOVA,R4
MOVB,R3
MULAB
DECR0
DECR0
ACALLADDM
MOVA,R5
MOVB,R3
MULAB
DECR0
ACALLADDM
RET
ADDM:
ADDA,@R0
MOV@R0,A
MOVA,B
INCR0
ADDCA,@R0
MOV@R0,A
INCR0
MOVA,@R0
ADDCA,#00H
MOV@R0,A
END
(4)程序编译调试
请读懂源程序,依照实验一中的步骤进行源程序的编译与调试,验证程序的正确性。
三、思考题
1、使用单步执行或设置断点运行加法程序,检查指令DAA执行前后的数据变化。
2、若在BLOCK1和BLOCK2为起始地址的存储区中分别有长度为N字节的压缩BCD码,请编写程序使它们相加并将和送入BLOCK1为起始地址的存储单元中(以4字节举例进行程序的编译调试)。
3、设有3个双字节无符号数X、Y和Z分别存放在20H21H、22H23H、24H25H中,请编写程序求X*Y+Z(举例进行程序的编译与调试)。
4、试根据加法、乘法运算中的子程序设计的思想,简述子程序的特点。
四、实验报告要求
1、简述实验目的和原理;
2、按实验步骤给出实验结果;
3、回答思考题。
实验三、数据处理类实验
一、实验目的
1、熟悉AT89C51汇编语言程序设计的方法;
2、掌握数据排序的基本方法;
3、掌握数据查询的基本方法;
4、进一步熟练掌握KEILuVision2/4软件的源程序编译与调试。
二、实验内容
1、数据排序
(1)实验要求
用KEILuVision2/4软件编辑编译一段源程序,实现AT89C51单片机内部RAM的数据的顺序排序。
详细要求如下:
首先将10个待排序数据存放在内部RAM50H~59H中;然后根据要求设计排序子程序(比如从大到小排序);最后,综合编程将数据排好序并且存放好。
(2)分析要求编写程序
根据实验要求编写的汇编源程序如下:
ORG0000H
LJMPMAIN
ORG003FH
MAIN:
MOVSP,#60H
MOVR0,#50H
MOV@R0,#6AH
INCR0
MOV@R0,#65H
INCR0
MOV@R0,#6EH
INCR0
MOV@R0,#6DH
INCR0
MOV@R0,#62H
INCR0
MOV@R0,#6FH
INCR0
MOV@R0,#68H
INCR0
MOV@R0,#67H
INCR0
MOV@R0,#6BH
INCR0
MOV@R0,#63H
ACALLPAIXU
SJMP$
PAIXU:
CLR00H
MOVR7,#09H
MOVR0,#50H
MOVA,@R0
LP1:
INCR0
MOVR2,A
SUBBA,@R0
MOVA,R2
JNCLP2
SETB00H
XCHA,@R0
DECR0
XCHA,@R0
INCR0
LP2:
MOVA,@R0
DJNZR7,LP1
JB00H,PAIXU
RET
END
(3)程序编译调试
请读懂源程序,依照实验一中的步骤进行源程序的编译与调试,验证程序的正确性。
2、数据查询
(1)实验要求
用KEILuVision2/4软件编辑编译一段源程序,实现AT89C51单片机内部RAM的数据的查找。
详细要求如下:
首先将实验用数据块存放在内部RAM起始地址为30H的区域;然后将数据块长度存放在50H单元(假设数据块长度≤32);最后,查找出该数据块中的最小数并存放在51H单元中,其地址存在52H单元中。
(2)分析要求编写程序
根据实验要求编写的汇编源程序如下:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#6FH
MOVR0,#30H
MOVR1,50H
MOVR2,#0FFH
LOOP:
MOVA,@R0
CLRC
SUBBA,R2
JNCNEXT
MOVA,@R0
MOVR2,A
MOV52H,R0
NEXT:
INCR0
DJNZR1,LOOP
MOV51H,R2
SJMP$
END
(3)程序编译调试
请读懂源程序,依照实验一中的步骤进行源程序的编译与调试,验证程序的正确性。
三、思考题
1、请修改数据排序程序,使得数据按从小到大的顺序排列。
2、请修改数据查询程序,找出数据块中的最大数及其地址。
3、若外部RAM1000H开始的地址单元中存放了32个数据,试编程查找出其中的偶数并存放在内部RAM30H为起始地址的存储单元中,统计偶数的个数并将其存放在3FH单元中。
四、实验报告要求
1、简述实验目的和原理;
2、按实验步骤给出实验结果;
3、回答思考题。
实验四、仿真软件Proteus的使用
一、实验目的
1、熟悉Proteus的使用方法;
2、学会利用Proteus软件绘制电路原理图;
3、学会利用KEILuVision2/4软件生成源程序的Hex代码文件;
4、学会利用KEILuVision2/4软件与Proteus软件的联调,实现电路的仿真。
二、实验内容
单片机学习与开发过程中,KEILuVision2/4软件是程序设计开发的平台,不能直接进行单片机的硬件仿真。
ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
①实现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
②支持主流单片机系统的仿真。
目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
③提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KEILuVision2/4等软件。
④具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
如果将KEILuVision2/4软件和Proteus软件有机结合起来,那么51系列单片机的设计与开发将在软、硬件仿真上得到完美的结合。
1、实验要求
用Proteus软件绘制一个单片机最小系统简单应用的电路原理图,用KEILuVision2/4软件编辑编译一段源程序,实现AT89C51单片机P1口控制8个发光二极管LED循环点亮。
详细要求如下:
用AT89C51的P1口做输出口,接8只发光二极管D1,D2,D3,D4,D5,D6,D7,D8,编写程序,使发光二极管循环点亮,时间间隔为0.2s。
即刚开始时D8点亮,延时0.2s后,接着D7点亮,接着依次点亮D6,D5,D4,D3,D2,D1,然后再点亮D8,D7,D6,D5,D4,D3,D2,D1,重复循环。
根据要求,分为以下步骤完成:
首先熟悉Proteus的使用方法,学会使用ProteusISIS绘制电路原理图;然后根据实验要求编辑编译源程序,同时生成.Hex代码文件;最后,为电路原理图中的单片机添加.Hex程序文件,进行电路仿真,根据仿真现象,不断进行源程序调试,完善设计。
2、绘制单片机最小系统简单应用的电路原理图
根据要求,硬件电路选择具有内部程序存储器的AT89C51单片机作为控制电路,其P1口接8个发光二极管(LED)和8个限流电阻。
要使LED点亮,则P1口的对应端子输出低电平,即P1.0=0时,D1亮。
一般情况下,驱动LED的电流约10mA,而LED本身的压降为2V。
当P1.0输出为低电平时,输出为0V,则流经D1的电流约为I=(5-2)V/470Ω≈6.4mA,为了在仿真实验中让LED更亮一些,在这里取限流电阻为100Ω。
相反,当P1.0输出为高电平时,输出为5V,则流经D1的电流0mA,D1不亮(熄灭),即P1.0=1时,D1不亮(熄灭)。
双击电脑桌面上的ISIS7Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus7Professional”→“ISIS7Professional”命令,出现如图4-1所示屏幕,表明进入ProteusISIS集成环境。
几秒钟过后,进入ProteusISIS的工作界面,如图4-2所示。
工作界面窗口中包括:
标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择窗口、对象器窗口、图形编辑窗口等。
图4-1启动时的屏幕
图4-2ProteusISIS的工作界面
(1)建立一个新的设计项目。
点击“File”菜单,选择下拉菜单中的“NewDesign”选项,在弹出的对话框中选择设计文件的纸张,如选择“LandscapeA4”,得到如图4-3所示的设计页面。
(2)保存设计项目。
选择你要保存的文件路径,输入工程项目文件的名称,如保存的路径为“my”文件夹,工程项目的名称为my,如图4-4所示,单机“Save”按钮。
图4-3(a)设计页面对话框
图4-3(b)设计页面对话框
(3)为设计项目选择电路元器件。
将所需元器件加入到对象选择器窗口,单击对象选择器按钮
,这里选择51单片机中使用较多的AT89C51,选定型号后,单击“OK”按钮,出现如图4-5所示的开发平台界面。
在“Results”栏的列表项中,双击“AT89C51”,则可将“AT89C51”添加至对象选择器窗口。
用同样的方法添加C1,C2,C3,X1(CRYSTAL),R1~R9,D1~D8(LED)。
在绘图工具栏中选择
,选中“Power”,“Ground”,为设计添加电源和接地,得到如图4-6所示的设计界面。
图4-4保存设计项目
图4-5选择元器件窗口
图4-6添加元器件后的窗口
(4)设计电路元器件的布局与连线。
在图形编辑窗口中选择需要移动的元器件,放置到合适的位置。
右击选中元器件,单击并按住左键拖动,就可以将需要移动的元器件移到合适的位置。
元器件连线时,将鼠标移到需连线的元器件节点单击,移到下一连线节点再单击,就可将两个节点连接上了。
用同样的方法将所有需要连接的节点连接,如图4-7所示。
图4-7元器件的连线
(5)编辑电路原理图。
对于电路中的元器件,必要时需对其进行属性或参数的修改,如电容值和电阻值等。
右击选中需要编辑的元器件,单击打开编辑窗口,可以修改元器件的名称、值和PCB封装等属性。
如图4-8所示是编辑电阻元件R2的元件编辑窗,将“Resistance”改为10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理及应用 单片机 原理 应用 实验 指导书 16