ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:2.38MB ,
资源ID:10892222      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10892222.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(合肥工业大学单片机实验报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

合肥工业大学单片机实验报告.docx

1、合肥工业大学单片机实验报告单片机原理与程序设计课程实验报告*学号: * 班级: 通信工程17-1班 指导老师: 王昕,吴从中 实验一 系统认识(一)实验目的1、 学习及掌握在Keil C51开发平台上建立、汇编、连接、调试及运行汇编程序的方法和步骤。2、 学习及掌握Vision2系统项目窗口、调试窗口和存储器窗口等常用平台的操作。 3、 学习及掌握MCS-51汇编源程序的书写格式和汇编语言的语法规则。(二)实验内容及要求1、 以单片机原理及应用实验教程(第2版)“第2章 实验1”中示例汇编语言源程序为蓝本,学习及掌握在Vision2平台上开发单片机应用程序的一般步骤。2、 学习Vision2平

2、台项目窗口、调试窗口和存储器窗口等常用平台的使用。 3、 记录实验操作过程和结果。4、 完成实验报告。(三)实验过程和结果1.建立一个新的工程项目第1步:点击菜单project,选择建立new project。第2步:从键盘输入工程项目文件名(不需要扩展名),选择项目文件保存路径,如下图所示,项目文件名为test,保存到keil目录里, 然后点击保存 。第3步:这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择。keil 支持大部分51单片机, 如图所示,选择Atmel 的89c51之后,右边一栏是对这个单片机的基本的说明,然后点击确定。第4步:点击菜单File-Ne

3、w,新建一个源程序文件,建立一个汇编或c文件,如果你已经有源程序文件,可以忽略这一步。第5步:输入示例程序,如下图并保存文件第6步:在Save对话框的文件名栏里输入源程序文件名,注意一定要输入扩展名, 我们这里是要存储一个汇编源程序文件,所以输入.ASM( .A)扩展名,保存为text.ASM的名字第7步:将源程序文件加入到项目中。点击Target 1前面的+号,展开里面的内容source Group1,用鼠标的右键点击Sourece Group 1,将弹出一个菜单,选择Add Files to GuoupSource Group 1出现Add对话框,在文件类型栏选择asm source fi

4、le项,然后选择刚才的文件text. ASM, 最后点击Add按纽。之后,窗口不会消失,(如果要添加多个文件,可以不断添加),添加完毕,再点击Close按纽关闭该窗口。,2.项目设置第1步:点击菜单project,选择Options for TargetTarget 1 项,选择项目第2步:这时会弹出一个对话框,要求你选择单片机的晶振Xtl,输入12(MHZ)第3步:点击菜单中Debug标签项,设置软件仿真Use Simulator第4步:点击菜单中Output标签项,设置16进制格式文件,最后点击确定关闭该窗口。3.编译、调试程序第1步:点击菜单project项,选择Build Target

5、 标签项编译源程序文件。如果源文件没有语法错误,编译成功,生成目标文件。第2步:点击菜单中Debug,选择Start标签项,进入调试方式。第3步:选择菜单VIEW项中的Memory Window标签项,打开存储器窗口。存储器窗口如下图,在窗口Address处键入地址D:50H第4步:在存储器窗口点击鼠标右键,出现下图所示快捷菜单,选择最后一项Modify Memory 更改指定存储单元内容。单击该选项,弹出如下图所示对话框,输入示例程序中的一组实验数据,然后单击OK按纽后,新键入的数据将取代原来存储单元的内容。第5步:点击菜单中Debug,选择RUN标签项,全速运行程序在存储器窗口观察片内RA

6、M单元03H(高位)04H(低位)中数据是否正确。(00DEH)实验二 查表程序设计(一)、实验目的1.学习汇编语言查表程序设计方法。2.学习并掌握51单片机MOVC A,A+DPTR和MOVC A,A+PC两条指令功能及编程方法。3.学习并掌握51单片机数据地址定义伪指令DB的功能及应用。(二)实验内容及要求1.程序设计要求:【功能1】在片内RAM区中生成十六进制数组Hex:00H、01H、0EH、0FH,数组Hex的首地址为10H。【功能2】 用DB伪指令在程序中定义Hex数组元素 ASC码表,表首地址用符号地址TABLE表示。【功能3】用MOVC A,A+DPTR 和A+PC指令指令编写

7、查表程序,实现用查表方式将数组Hex的十六进制数转换为ASC码并存入片内RAM数组Asc中,数组Asc首地址70H。2.开机启动Keil C51进入Vision2软件仿真开发环境。3.完成程序的设计、编辑、编译、连接。4.进入DEBUG方式,打开存储器Memory 1窗口,在窗口Address处键入地址C:XXH;观察程序存储器中建立的ASC码表。5.调试和运行程序并记录存储器Memory 2窗口Hex数组和Asc数组实验结果。6.完成实验报告。(三)程序框图(四)设计说明1.生成16进制数组部分:MOV R0,#00H; 累加初值为0MOV R7,#16;循环次数为16MOV R1,#Hex

8、;Hex地址用R1表示LOOP: MOV A,R0MOV R1,A;将自加1后的书送入Hex数组INC R0INC R1;地址数加1DJNZ R7,LOOP;R7-1;直到减到零停止循环2.转换为ASCII码部分:1利用A+DPTRMOV R1,#AscMOV R0,#Hex;Asc,Hex的地址分别用R1,R0代替MOV R7,#16;循环次数为16MOV DPTR,#TABLENEXT:MOV A,R0MOVC A,A+DPTRMOV R1,A;利用A+DPTR通过A将表中的书送入Asc数组INC R1INC R0DJNZ R7,NEXT;循环16次SJMP $2利用A+PCMOV R1,

9、#AscMOV R0,#HexMOV R7,#16;和第一种方法一致NEXT: MOV A,R0ADD A,TABLE- ($+3);计算修正值MOVC A,A+PCMOV R1,A;利用A+PC通过A将表中的书送入Asc数组INC R1INC R0DJNZ R7,NEXTSJMP $(五)运行结果两个程序都运行正确结果正确(六)心得体会本次程序设计和范例类似,主要就是先利用循环语句通过自加一产生16个数送入Hex,然后通过查表程序,利用基址变址寻址用A+DPTR或A+PC来查找出表中的数,最后循环通过A将数送入Asc中。注意利用A+PC时要计算修正值,因为PC不是一开始就指向表地址的,我们查

10、阅资料利用ADD A,TABLE- ($+3)从而让PC指向表地址。通过本次实验更加熟练地掌握了循环语句和了解了两种基址变址寻址实验三 十进制数1-100累加运算(一)实验目的1.学习并掌握ADD、ADDC、INC、DA指令的应用。2.学习并掌握多字节程序设计及应用。3.学习并掌握十进制数累加程序设计方法。(二)程序设计实验报告要求1、 编写程序,实现以下功能: 【功能1】产生十进制数1100,并存入片外RAM Deci数组中,首地址为1001H。 【功能2】对Deci数组元素进行累加运算,并将累加和存入内部RAM中60H(存累加和低位)和61H(存累加和高位)单元。2、开机启动Keil C5

11、1进入Vision2软件仿真开发环境。3、完成程序的设计、编辑、编译、连接。4、进入DEBUG方式,打开存储器Memory 1窗口,在窗口Address栏键入X:1001H;打开存储器Memory 2窗口,在窗口Address栏键入D:60H;运行程序并记录存储器窗口Memory1和Memory2的实验结果。5、完成实验报告。(三)程序框图1.存数部分2.累加部分(四)设计说明 本次实验程序主要由两部分构成,一是给数组赋值,利用循环语句,从0零开始依次加1后送给Deci数组。这里要注意存储器中不能存储两位,所以不能直接表示100,所以我们用低位表示00,高位表示1,即循环101次,第100次对

12、应的地址里存00H,第101次存01H,这样既可表示100;第二个是累加部分,也是利用循环语句,由第一位和零相加后面依次与下一位相加,加的过程低位放到60H,高位存到61H。对于和特殊的100相加,低位无需变动,只需将存储高位的R6和100的高位地址里的内容(01)相加。1.赋值部分:MOV DPTR, #DeciMOV R1, #0 ;设置累加初值MOV R5, #101;设置循环次数,101次NEXT1:MOV A,R1ADD A,#1DA AMOVX DPTR,A;将R1值加1后送入Deci数组中MOV R1,A ;更新R1值INC DPTR ;地址数加1DJNZ R5,NEXT12.累

13、加部分(1)前99次累加MOV DPTR, #DeciMOV R5,#0MOV R6,#0;设置累加初值MOV R7,#99;累加99次NEXT2: MOVX A,DPTRADD A,R5 ;低位累加DA A ;累加后转为10进制存入R5中MOV R5,A MOV A,R6 ;进位累加ADDC A,#0DA A ;转化为10进制MOV R6,A INC DPTR;地址数+1DJNZ R7,NEXT2;开始循环(2)和100相加INC DPTR ;与第101个地址里的内容相加MOVX A,DPTRADD A,R6DA AMOV R6,AMOV 60H,R5;低位送入60HMOV 61H,R6;

14、高位送入61H;最后将低位送入60H,高位送入61H(五)程序运行结果60H(低位)存50,61H(低位)存50,程序运行正确外部RAM从1001H开始存连续100个自然数,程序正确。(六)心得首先,通过这次实验更加深入理解和学习并掌握ADD、ADDC、INC、DA指令的应用。学习并掌握多字节程序设计及应用。本个实验还是主要采用 顺序设计方法,所以通过本次实验也是我更加深入理解了顺序的相关指令和程序。顺序结构也是程序分支结构里最简单的 的程序,通过对顺序结构的顺联,可以为以后设计大型程序打好基础。本实验遇到的最主要的问题是最后一位100的表示,经过多次失败,最终想到了用低位(1070H)表示0

15、0,高位(1071H)表示1,即循环101次,第100次对应的地址里存00H,第101次存01H,这样1070H,1071H共同表示出100H。所以最后与100相加时,只需将存储高位的R6和100的高位地址里的内容(01)相加。最后调试的结果终于不是4950了实验四 数据交换程序设计(一)实验目的1.学习并掌握51指令系统的MOV、MOVX、XCH、INC指令功能及应用。2.掌握51单片机内部RAM和外部RAM寻址方式和应用。3.学习并掌握汇编语言子程序设计及调用方法。4.学习并掌握汇编语言程序设计中堆栈的定义及应用。(二)程序设计实验报告要求1.编写程序,实现以下操作:【功能1】产生十进制数

16、组Deci: 0、1、2、97、98、99,并存储到片内RAM区中,数组Deci的首地址为10H。【功能2】产生十六进制数组Hex: 63H、62H、61H、01H、00H,并存到片外RAM区中,数组Hex的首地址为1000H。【功能3】将片外RAM数组Hex与片内RAM数组Deci交换内容。1.开机启动Keil C51软件进入Vision2软件仿真开发环境。2.完成程序的设计、编辑、编译、连接。3.进入DEBUG方式,打开存储器Memory 1窗口,在窗口Address栏键入D:10H;打开存储器Memory 2窗口,在窗口Address栏键入X:1000H;运行程序并记录存储器窗口Memo

17、ry1和Memory2的实验结果。4.完成实验报告。(三)程序框图(四)设计说明1.给Deci数组赋值 数组中的数从0-99,相邻两数隔一位,也就是在上一个数的基础上加1,所以用ADD A,#1语句,所以用R1存累加数,循环将将上一个数加1 后存到下一个数中。MOV R0, #DeciMOV R1, #0 ;累加初值MOV R5, #100 ;循环次数LCALL SUB1 ;调用给Deci数组赋值的子程序 SUB1:LOOP1: MOV A,R1MOV R0,A ; 将上一个地址中的值传到下一个地址中。ADD A,#1DA A ;转换为10进制MOV R1,A ;A自加1后再传回R1中INC

18、R0 DJNZ R5,LOOP1 ;地址数+1,循环RET2.为Hex数组赋值 和1同理,利用循环语句,R1中存累减数,每次减1后存到下一个R1中,在用寄存器间接寻址送入Hex数组中。MOV DPTR,#HexMOV R1,#63H;设置自减初值MOV R5,#100;设置循环次数LCALL SUB2 ;调用给Hex数组赋值的子程序。SUB2:LOOP2 : MOV A,R1MOVX DPTR,A;将R1中的值送入Deci数组中DEC R1 ;然后R1自减1INC DPTRDJNZ R5,LOOP2;地址数+1,循环RET3.两数组交换数据 还是利用循环语句,用R0表示Deci的地址,DPTR

19、表示Hex的地址,通过寄存器A交换每对地址里面的数据 MOV DPTR,#Hex;外部数据通过MOV A,DPTR传送,所以先设置DPTR的地址MOV R0,#DeciMOV R6,#100LCALL SUB3;调用交换子程序SUB3:LOOP3: MOVX A,DPTRXCH A,R0MOVX DPTR,A;通过A交换两数组中的数。INC R0INC DPTRDJNZ R6,LOOP3;两个数组中的地址都+1,开始循环RET(五)运行结果外部RAM数组和内部RAM数组成功进行了交换(六)心得体会通过本次实验深入掌握51指令系统的MOV、MOVX、XCH、INC指令功能及应用。同时也更加深入理

20、解了51单片机内部RAM和外部RAM寻址方式和应用。本程序主要用循环语句和子程序来进行设计的,所以程序的编写过程中也更加深入掌握了子程序的调用和使用,更加熟练地运用循环语句。实验五 定时器应用实验(一)实验目的1.掌握Vision2平台硬件操作步骤。2.熟悉ZY15MCU12BC2单片机实验箱,掌握实验箱内拨位开关KC、KF使用。3.学习并掌握51单片机内部定时器/计数器的编程方法。4.学习并掌握中断服务程序的设计方法。(二)实验程序框图(三)实验内容及步骤。1.建立一个新的工程项目2.项目设置:点击菜单工程,选择Options for TargetTarget 1设置选项 :选择单片机的晶振

21、Xtl,输入12(MHZ):击菜单中Debug标签项,设置硬件仿真Use Keil Montor-51 Drivar。:点击菜单中Output标签项,设置16进制格式文件(四)硬件仿真结果及程序分析仿真结果如图:(五)心得体会通过本次实验初步了解了ZY15MCU12BC2单片机实验箱,掌握实验箱内拨位开关KC、KF使用。同时也学习并掌握了51单片机内部定时器/计数器的编程方法和中断服务程序的设计方法。同时最重要的还是第一次将单片机软硬件结合使用,用Keil C51软件进入Vision2 集成开发环境,使89C51完成硬件仿真。 实验由于老师已经贴心地给出代码,所以程序设计上没遇上问题,但是硬件

22、仿真上却是问题重重。一开始是不知道怎么进行硬件仿真的,不知道怎么才能将单片机箱与电脑连接,经过查阅资料,认真看PPT才发现项目设置有问题,应该在Debug窗口设置硬件仿真Use Keil Montor-51 Drivar。设置完之后又是仿真不了,在其他同学的帮助下才发现是setting里面的port选择有问题,试验箱连接电脑的port应该是COM3而不是默认的COM2。错误全纠正后试验箱就可以成功运行了。 通过这次实验,我也深深地感觉到细节的重要性,我们组发生的两个错误都是细节上出了问题,结果导致卡了很长时间。以后的实验一定要注意,不要再粗心了。实验六 并行口应用模拟广告灯实验(一)实验目的1

23、.熟悉ZY15MCU12BC2单片机实验箱的资源,学会选用其模块电路连接成实验需要的系统。2.掌握MCS-51单片机P1端口的应用方法。3.学习及掌握单片机内部定时器和并行接口综合应用程序设计技术。(二)实验程序框图(三)实验内容及步骤1.建立一个新的工程项目2.项目设置1点击菜单工程,选择Options for TargetTarget 1设置选项 2选择单片机的晶振Xtl,输入12(MHZ)3击菜单中Debug标签项,先设置硬件仿真Use Use Simulator。4点击菜单中Output标签项,设置16进制格式文件5程序文件加入target后编译程序1)原程序:2)中断方式:3)查询方

24、式:6运行程序1)原程序:2)中断方式:3)查询方式:7点击菜单中Debug标签项,设置硬件仿真Use Keil Montor-51 Drivar(四)试验箱仿真结果1.原程序2.中断方式3.查询方式(五)实验心得体会本次实验较之前的实验难度有所提升,但因为实验之前就已经在课后完成了程序的设计,所以上机实验很快就完成,但实验过程中还是遇到了不少问题。首先是我们的试验箱没有51单片机芯片,我和队友在实验室到处找才终于找到一个多余的试验箱;在对着实验电路图连好线后,程序项目设置也弄好好后却又发生了上次一样的情况-无法连接试验箱,一切检查完毕后都没发现问题,最后在咨询了吴从中老师,老师给的意见是可能

25、试验箱接口有问题。最后不想再在这个问题上耽误时间了,于是便等其他同学完成了实验,直接用他们的试验箱完成我们的实验。对于本次实验设计,老师已经给出了总的程序,我们只需把其中的延时程序段换成定时器程序就行,所以程序上主要就是弄清中断方式和查询方式。中断方式是指编写中断服务子程序,等产生溢出时,中断信号响应中断来处理中断事件,而查询方式是不断查询标志位,等标志位置1时将标志位清零,重新给TH0,TL0赋值。弄清这两个方式后就可以先编写一小段程序,然后加入到完整程序中。在程序调试过程中,一直有“ error A45: UNDEFINED SYMBOL (PASS-2)”,查阅资料是说没有定义符号,后来

26、认真观察程序才发现,TR零,TL零写成了TRO,TLO,这的确挺需要注意的,阿拉伯数字零和英文0有时候的确挺容易弄错的。 “error 56: cant open file”点击rebuild在运行就可以解决问题。通过本次实验,首先是更加熟悉ZY15MCU12BC2单片机实验箱的资源,学会选用其模块电路连接成实验需要的系统。同时也更加熟练地掌握MCS-51单片机P1端口的应用方法,学习及掌握单片机内部定时器和并行接口综合应用程序设计技术。当然,本次实验更重要地是培养了解决问题的能力,无论是程序设计还是上机仿真都遇到了不少问题,有可以解决的,也有无能为力的。但最终,通过查阅相关资料和同学们热心帮助,我也最终完成了实验任务。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1