适用场景:实验课程作业提交、实验项目验收评估
本文要点:程序资源分配列表、电路图绘制、调试记录分析
行文逻辑:明确实验目的→设计电路图→编写调试流程→分析调试结果→总结经验教训
综合实验报告标题(可与实验名称不同)
一、实验目的和要求。
二、实验仪器设备。
三、实验设计及调试:
(一)实验内容。
(二)实验电路:画出与实验内容有关的简单实验电路。
(三)实验设计及调试步骤:
(1)对实验内容和实验电路进行分析,理出完成实验的设计思路。(2)列出程序设计所需的特殊标志位、堆栈sp、内部ram、工作寄存器等资源的分配列表,分配列表时注意考虑资源在程序执行过程可能会出现冲突的问题。
(3)画出程序设计流程图,包括主程序和各子程序流程图。
(4)根据(2)、(3)的内容写出实验程序。
(5)调试程序(可以使用模拟仿真器)。
a、根据程序确定调试目的,即调试时所需观察的内容结果。
b、根据各调试目的分别选择调试所需的方法,如单步、断点等命令,分别列出各调试方法中所需要关注记录的内容。
c、调试程序,按各种调试方法记录相应的内容。
d、分析调试记录的内容和结果,找出程序中可能出错的地方,然后修改程序,继续调试、记录、分析,直到调试成功。
(四)实验调试过程中所遇到的问题、解决问题的思路和解决的方法。
四、实验后的经验教训总结。
适用场景:单片机实训任务准备、实验操作流程学习
本文要点:设置仿真器监控程序、建立KeilC51工程文件、调试流水灯程序
行文逻辑:安装环境→建立工程→设置调试→调试运行→观察结果
一、实验目的
熟悉KeilC51集成开发环境的使用方法
二、实验设备及器件
IBMPC机
三、实验内容
按照本书的第2章的2.1节到2.4节内容进行KeilC51集成开发环境的安装和使用练习。然后按照以下内容建立文件并编译产生HEX文件。
ORG8000H
LJMPMain
ORG80F0H
Main:
MOVR7,#0
LOOP:
MOVR6,#0
DJNZR6,$
DJNZR6,$
DJNZR6,$
DJNZR6,$
DJNZR7,LOOP;延时一台
CPLP1.0
CPLP1.1
CPLP1.2
CPLP1.3
CPLP1.4
CPLP1.5
CPLP1.6
CPLP1.7
SJMPMain
END;P1.0取反;P1.1取反;P1.2取反;P1.3取反;P1.4取反;P1.5取反;P1.6取反;P1.7取反
通过该程序实现八盏灯的同时亮和同时灭的功能,更好的掌握汇编指令。
4、实验要求:熟练掌握结合DP-51PROC单片机综合仿真实验仪和KeilC51集成开发环境进行仿真调试。如果还有时间,可以把本书的第2章的2.6节、2.7节内容也看一下
5、实验步骤:
(1)用40针排线把DP-51PROC实验仪上的A1区J76接口和A2区J79接口相连,然后使用排线把A2区的J61接口与D1区的J52接口相连。
2、对DP-51PROC实验仪上电,然后按照本书的第2章的2.5.1小节设置TKSMonitor51仿真器和使用软件DPFlash把MON51监控程序下载到TKSMonitor51仿真器。
3、关闭DPFlash软件。把TKSMonitor51仿真器的工作模式选择开关切换到RUN处,然后按一下复位键(RST),MON51程序就开始运行了。此时,TKSMonitor51仿真器进入调试状态。
4、用户使用KeilC51集成开发环境建立工程、编辑与编译“实验内容”所列的程序。然后按照本书的第2章2.5.3节的第2点(软件调试环境的.设置)设置好,然后再编译一次。
5、此时用户就可以按照本书的第2章2.5.4节所讲述的方法进行仿真调试。如果用户在退出仿真调试模式后想再次进入仿真调试,可以先按一下TKSMonitor51仿真器的复位键(RST)。用户可以在仿真调试环境下设置断点、单步、全速运行等。在调试过程中用户可以看见D1区的LED的亮灭是由用户程序来控制的。
实验任务二:
一、实验目的:利用单片机的P1口作IO口,使用户学会利用P1口作为输入和输出口。
二、实验设备及器件:
IBMPC机一台
一台DP-51PROC单片机综合仿真实验仪
三、实验内容
1.编写一段程序,用P1口作为控制端口,使D1区的LED轮流亮。
四、实验要求
学会使用单片机的P1口作IO口,如果有时间用户也可以利用P3口作IO口来做该实验
五、实验步骤
1、用导线把A2区的J61接口与D1区的J52接口相连。原理如图所示。
2、先编写一个延时程序。
3、将LED轮流亮的程序编写完整并调试运行
六、实验程序:
ORG8000H
LJMPMain
ORG8100H
Main:
MOVA,#0FFH
CLRC
MainLoop:
CALLDelay
RLCA
MOVP1,A;把A的值输出到P1口
SJMPMainLoop
Delay:;延时
MOVR7,#0
LOOP:
第7/9页
MOVR6,#0
DJNZR6,$
DJNZR6,$
DJNZR6,$
DJNZR7,LOOP
RET
END
七、实验结果:通过调试成功之后,八盏灯依次向左点亮,实现流水灯程序的功能。
实训总结
通过这次实训,使我们能够学以致用,在实践中进一步掌握并巩固我们的单片机理论知识。虽然在实训中遇到了不少难题与困惑,暴露出了不少问题和缺乏实践的弱点,但是在老师与同学们的帮助与指导下,我们最终解决与克服了一个个的困难与困惑,顺利的完成了老师交给的实训任务。
通过几天下来的实训,感觉就是自己的知识实在是太浅了。在课本上学到的知识感觉自己都懂了,但在实际应用中还是无从下手。所以我们不应满足于课本上的知识,只有通过不断的实践,才能够真正掌握理论知识。虽然只有几天的时光,但还是学了很多的东西,比之于平常的上课更觉得学到更多。所以,这对于我们还是一门很必要的课程。当然,要真正学有所用,我们还要在实践中去不断提高,不断完善。其实刚开始还是不太喜欢实训,也有点害怕的。但过后才觉得只有几天的实训时间还是有点少,毕竟是刚开始对单片机进行实际应用,还是很陌生的。由于时间的仓促,自己的作品也远还没达到完善的地步。
适用场景:电子工程课程实验准备、实验室操作流程学习
本文要点:编写程序调试、使用avrstudio下载、运行跑马灯程序
行文逻辑:讲解编译器→编写程序→调试运行→解决错误→实现功能
这是我第做单片机实验,说起来有一些紧张和新奇。在此之前我并没有接触过单片机,我本以为与之前的光学实验及其它实验差不多,可我进到实验室之后,我就改变了这个看法。
单片机实验要求的是一种思维的创新,而不是简单的重复老师所说的实验步骤。因此第实验,实验老师向我们讲解了cvavr编译器的大体情况及使用方法和技巧,并简单的向我们示例——如何在cvavr中编写一段程序。编完程序之后,知道我们如何使用avrstudio达到将编好的程序输入到单片机中来使其运行。
之后老师让我们以组为单位合作编写一段程序,并使其运行。我们组想要编写一个跑马灯的程序。在第运行cvavr时,我们组就遇到了一个麻烦,我们在建立一个新project文件那里出现了错误。在保存这个新project文件的时候,我们单击了save,而不是generate,saveandexit.因此它弹不出我们我们所需要的源程序。之后我们通过询问其他人解决了这个问题。在编程中,我们开始做的是两盏灯的交替闪烁,间隔时间是1000ms。在运用avrstudio的时候,我们又犯了一个错误。在我们打开编译好的工程文件时,开始调试,在后一步点击finish时,弹出一对话框,问我们是否更新,然后我们单击了yes。这导致了仿真器无法下次使用。这是由于实验室中的仿真器是盗版的,无法进行更新。
经过我们的不断努力,我们终于实现了简单的跑马灯的运行,便是两个灯地交替闪烁。我们感到兴奋极了。但是我们并没有满足于当前,我们又编写了三个灯地交替闪烁,四个及多个。当我们一步步实现我们的目的时,我得到莫大成就感和自信。
在这次实验中,我体会到了合作的重要性。一个人也可能实现这一系列的过程,但是要花费很多精力和时间。群策群力,分工明确,可以使我们更好、更快地完成我们的工作。在此期间,你可以更好知道自己的不足和缺陷,来得到改正。还可以知道自己的优势所在,把握好自己的优势。
适用场景:单片机编程学习、实验操作指导
本文要点:编写汇编代码实现led控制、生成hex文件并下载验证、分析单片机引脚功能与控制逻辑
行文逻辑:了解引脚结构→编写代码→下载验证→分析原理→总结经验
一、实验目的
1、了解51单片机的引脚结构。
2、根据所学汇编语言编写代码实现led灯的流水功能。
3、利用开发板下载hex文件后验证功能。
二、实验器材
个人电脑,80c51单片机,开发板
三、实验原理
单片机流水的实质是单片机各引脚在规定的时间逐个上电,使led灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的p2端口,对8个led灯进行控制,要实现逐个亮灯即将p2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。使用rl或rr a实现位的.转换。 a寄存器的位经过rr a之后转换如下所示:
然后将a寄存器转换一次便送给p2即mov p2,a便将转换后的数送到了p2口,不断循环下去,便实现了逐位置一操作。
四、实验电路图
五、通过仿真实验正确性
代码如下:org 0
mov a,#00000001b
loop:mov p2,a
rl a
acall delay
sjmp loop
delay:mov r1,#255
del2:mov r2,#250
del1:djnz r2,del1
djnz r1,del2
ret
end
实验结果:
六、实验总结
这次试验我通过proteus仿真实现对流水灯功能的实现。受益匪浅,对80c51的功能和结构有了深层次的了解,我深刻的明白,要想完全了解c51还有一定距离,但我会一如既往的同困难作斗争。在实验中,我遇到了不少困难,比如不知道怎么将程序写进单片机中,写好程序的却总出错,不知道什么原因,原来没有生成hex文件。这些错误令我明白以后在试验中要步步细心,避免出错。
适用场景:单片机开发测试、ADC芯片接口配置
本文要点:掌握ADC0809并行接口编程、采集电压信号处理、理解A/D转换原理
行文逻辑:理解原理→选择芯片→配置接口→控制转换→处理数据
有关单片机ad转换的实验报告
一、实验目的
1、理解a/d转换的工作原理;
2、理解掌握adc0809的a/d转换原理和并行a/d转换器接口的编程方法; 3、学习使用并行模/数转换芯片adc0809进行电压信号的采集和数据处理。
二、实验原理
在设计a/d转换器与单片机接口之前,往往要根据a/d转换器的技术指标选择a/d转换器。a/d转换器的主要技术指标-----量化间隔和量化误差是a/d转换器的主要技术指标之一。量化间隔可用下式表示,其中n为a/d转换器的位数: ?量化间隔
绝对误差22
1 相对误差n1100%2
a/d转换器芯片种类很多,按其转换原理可分为逐次比较式、双重积分式、量化反馈式和并行式a/d转换器;按其分辨率可分为8~16位的a/d转换器芯片。目前最常用的是逐次逼近式和双重积分式。
a/d转换器与单片机接口具有硬、软件相依性。一般来说,a/d转换器与单片机的接口主要考虑的是数字量输出线的连接、adc启动方式、转换结束信号处理方法以及时钟的`连接等。
一个adc开始转换时,必须加一个启动转换信号,这一启动信号要由单片机提供。不同型号的adc,对于启动转换信号的要求也不同,一般分为脉冲启动和电平启动两种:
对于脉冲启动型adc,只要给其启动控制端上加一个符合要求的脉冲信号即可,如adc0809、adc574等。通常用wr和地址译码器的输出经一定的逻辑电路进行控制;
对于电平启动型adc,当把符合要求的电平加到启动控制端上时,立即开始转换。在转换过程中,必须保持这一电平,否则会终止转换的进行。因此,在这种启动方式下,单片机的控制信号必须经过锁存器保持一段时间,一般采用d触发器、锁存器或并行i/o接口等来实现。ad570、ad571等都属于电平启动型adc。
当adc转换结束时,adc输出一个转换结束标志信号,通知单片机读取转换结果。单片机检查判断a/d转换结束的方法一般有中断和查询两种:
对于中断方式,可将转换结束标志信号接到单片机的中断请求输入线上或允许中断的i/o接口的相应引脚,作为中断请求信号; ?对于查询方式,可把转换结束标志信号经三态门送到单片机的某一位i/o口线上,作为查询状态信号。
a/d转换器的另一个重要连接信号是时钟,其频率是决定芯片转换速度的基准。整个a/d转换过程都是在时钟的作用下完成的。a/d转换时钟的提供方法有两种:一种是由芯片内部提供(如ad574),一般不许外加电路;另一种是由外部提供,有的用单独的振荡电路产生,更多的则把单片机输出时钟经分频后,送到a/d转换器的相应时钟端。
adc0809与单片机接口
三、实验内容
略
四、小结与体会
在这次的实验中,我成功的理解掌握了adc0809的a/d转换原理和并行a/d转换器接口的编程方法,也学习了并行模/数转换芯片adc0809进行电压信号的采集和数据处理的使用方法。