流水灯焊接实验报告模板 流水灯控制实训报告范文15篇

写好实验报告,可以让我们对实验过程中的操作方法有进一步的认识和理解,也可以让我们总结实验中的问题,以便在下次实验过程中避免出现试错的可能性。下面这些是“流水灯焊接实验报告模板和流水灯控制实训报告范文15篇”的相关内容,有需要的朋友们可以来此查看。

流水灯焊接实验报告模板 流水灯控制实训报告范文15篇

流水灯焊接实验报告模板1

一、实验目的:

1、进一步熟悉Keil C51集成开发环境调试功能的使用

2、学会自己编写程序,进行编译、仿真调试

3、学会使用单片机的P0口作为I/O口去控制外围电路,实现LED灯以固定的频率进行闪烁。

二、实验设备:

1、PC机

2、SW-51PROC单片机综合实验平台

三、实验内容:

1、编写一段程序,用单片机P0口的8个输出去控制8个LED灯,实现如下功能:

先使8个LED灯轮流点亮,从左向右移动,时间间隔0.5s。以上过程循环实现。

四、实验步骤:

1、实验原理:

单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口,对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。使用rl或rr a实现位的转换。A寄存器的位经过rr a之后转换如下所示:

A0A1A2A3A4A5A6A7 然后将A寄存器转换一次便送给P2即MOV P2,A便将转换后的数送到了P2口,不断循环下去,便实现了逐位置一操作。

2、实验电路图 +5v1234123412340a1a2a3a4a1a2a3a4a1a2a3a4GND0Vcc1P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7b1b2b3b***C51

3通过仿真实验正确性

代码如下: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 ORG 0000H LJMP MAIN

4、实验程序 :

ORG 0050H MAIN:MOV R0,#14

MOV DPTR,#TABLE L0:

MOV A,#0 L1:

MOVC A,@DPTR+A

MOV P0,A

ACALL DELAY1

INC A41 DJNZ R0,L1 SJMP L0 DELAY1:

MOV R1,#250 LOOP1:

MOV R2,#250 LOOP2:

NOP

NOP

NOP

NOP

NOP

DJNZ R0,LOOP2

DJNZ R1,LOOP1

RET TABLE: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH END

5、实验结果:

五、实验总结

这次试验我通过Proteus仿真实现对流水灯功能的实现。受益匪浅,对80c51的功能和结构有了深层次的了解,我深刻的明白,要想完全了解c51还有一定距离,但我会一如既往的同困难作斗争。在实验中,我遇到了不少困难,比如不知道怎么将程序写进单片机中,写好程序的却总出错,不知道什么原因,原来没有生成hex文件。这些错误令我明白以后在试验中要步步细心,避免出错。

流水灯焊接实验报告模板2

一、任务

让8个LED灯轮流亮起来,实现流水灯的功能。

二、思路

让接在P0.0口的LED灯亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的LED灯熄灭,就要把P0.0口的电平变为高电平就可以了。要实现流水灯功能,只要将8个LED灯依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。

我们应该注意一点,由于单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

三、步骤

1、用proteus画电路图。如下图:

2、用keil建工程。

1)运行keil C51软件,点击Project菜单新建项目,选择为AT89C52的单片机型号。然后单击File选择New新建程序文件,保存成.c 文件,右击Source Group1添加入程序文件。2)用C语言编写程序代码如下:

#include void delay(unsigned char tmp);code unsigned char tmpled[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void main(void){ unsigned char i;while(1){ for(i=0;i<8;i++){

P0=tmpled[i];

delay(50);} } }

void delay(unsigned char tmp){ unsigned char i,j;i=tmp;while(i){ i–;j=255;{

j–;} } } 3)右击Target 1打开设置,Output菜单下勾选上create hex file。

4)调试运行程序后,在proteus中双击单片机,添加hex文件,运行看到流水的的效果。

四、实验中遇到的问题。

1、用proteus仿真时候,发现错误:

error variable not found parsing property resistance of RN1-Rnvalue expected for RN1-R(n=1~8)而且led灯亮度十分微弱。可能是接入的电阻太大了。

检查电路图发现排阻的值为RX8,修改为220(自己选择)后。错误便没有了,同时,led灯的亮度也增强了。

2、关于延时函数。

延时的时间计算不太明白。

3、P0=0xfe;是对单片机P0口的8个I/O口同时进行操作,0x后的数使用十六进制表示,fe转换为二进制是1111 1110,则P0.0为低电平,对应的led灯亮,其他7个led灯灭。

流水灯焊接实验报告模板3

设计课题:

多功能流水灯

专业班级:

学生姓名:

指导教师:

设计时间:

题目 多功能流水灯

一、课程设计目的

1、掌握数字系统的设计方法和测试方法。

二、课程设计题目(问题)描述和要求

设计一个四模式三路彩灯(红、绿、黄三种颜色)显示系统。该系统的显示模式由外部输入Z、Y控制,要求开机自动置入初态后便按规定模式循环运行。设各路彩灯均为8个(红灯序号为r1-r8,绿灯序号为g1-g8,黄灯序号为y1-y8),各模式规定如下: XY=00时,系统的显示模式在以下六个节拍间循环:

第一节拍,依次点亮奇号红灯(r1亮→r1、r3亮→r1、r3、r5亮→r1、r3、r5、r7亮),其余灯均灭。

第二节拍,依次点亮偶号红灯,其余灯均灭。第三节拍,依次点亮奇号绿灯,其余灯均灭。第四节拍,依次点亮偶号绿灯,其余灯均灭。第五节拍,依次点亮奇号黄灯,其余灯均灭。第六节拍,依次点亮偶号黄灯,其余灯均灭。XY=01时,系统的显示在第一、二节拍间循环。XY=10时,系统的显示在第三、四节拍间循环。XY=11时,系统的显示在第五、六节拍间循环。

三、系统分析与设计

根据课程设计题目问题描述和要求,完成:

主要器件:

绘制电路原理图:确定选用的元件及其封装形式,完善电路。

原理图设计过程:进行电子电路设计时,首先要有一个设计方案,而将电路设计方案表达出来的最好方法就是画出清晰、正确的电路原理图。根据设计需要选择出元器件,并把所选用的元器件和相互之间的连接关系明确地列出,直观地表达出设计概念。

电路原理图的基本组成是电子元器件符号和连接导线,电子元器件符号包含了该元器件的功能,连接导线则包含了元器件的电气连接信息,所以电路原理图设计的质量好坏直接影响到PCB印制电路板的设计质量。

绘制原理图的两大原则:首先应该保证整个电路原理图的连线正确,信号流向清晰,便于阅读分析和修改;其次应该做到元器件的整体布局合理、美观、实用。

在Protel中绘制电路原理图的步骤: 启动原理图编辑器,新建电路原理图文件。

设置原理图的相关参数,如图纸的大小、版面及环境参数等。加载元件库,在图纸上放置需要的各种元器件。编辑元器件的属性,并对元器件进行合理的布局调整。使用导线或网络标签对所有的元器件进行电气意义上的连接。对电路原理图进行整体的编辑、调整。保存文档,打印输出。

绘制元件库:为绘制原理图做补充。有些元件在系统库文件里可能找不到,我们可以自己动手绘制一个能表示实际元件的图形,并将其添加到原理图中。建议大家从一开始就建立一个属于自己的元件库,以后每设计一次电路,当遇到没有的原件时,就往库里添加一个元件,日积月累,自己的元件库就会充实起来,以后绘制原理图时就会非常方便。

绘制PCB封装:也是为设计原理图做补充。原理图上的元件仅仅是一个元件代号,我们可以随意改变其模样,但是PCB封装绝对不能随意改动。所谓封装,就是元件在PCB上的实际焊接点,如果焊接点与元件对应不上,那么这块板子就没用了。

对原理图进行编译:执行【项目管理】→【Compile Document ADAC.SCHDOC】,编译原理图文件。根据Massage面板中的错误和警告提示,修改原理图,直至编译通过,生成网络表。

在PCB编辑器中,执行【设计】→【层堆栈管理器】命令,选择PCB板层结构;执行【设计】→【PCB板形状】→【重定义PCB板形状】定义PCB的外观尺寸,设置PCB文件的编辑环境。

设置PCB的电气边界:在PCB编辑器中,单击【Keep-Out Layer】标签,执行【放置】→【禁止布线区】→【导线】设置PCB的电气边界。

更新PCB文件:在原理图编辑器内,执行【设计】→【Update PCB Document ADAC.PCBDOC】命令,生成【工程变化订单(ECO)】,在对话框内单击“使变化生效”按钮,再单击“执行变化”按钮,将网络表和元件封装载入到PCB文件中。

设置布线规则:在PCB编辑器中,选择【设计】→【规则】命令,在弹出的【PCB规则和约束编辑器】对话框中,重点进行元件间距、导线间距、导线宽度、焊盘大小、孔径大小等规则设置。

原件布局:自动布局(执行【工具】→【放置元件】→【自动布局】命令)和手工布局相结合,摆放元件到适当位置。

布线:计算机自动布线(执行【自动布线】→【全部对象】命令,并选择布线策略)或手工布线。

DRC(Design Rule Check设计规则检查)校验和违规项修改:执行【工具】→【设计规则检查】命令,在弹出的【设计规则检查器】对话框中,分别设置【Report Options】和【Rules To Check】文件夹下的相关选项,然后单击“运行设计规则检查”按钮,运行批处理DRC。

敷铜:执行【放置】→【覆铜】命令,在弹出的对话框中设置覆铜属性,包括填充模式、导线宽度、网格尺寸、连接网络及删除死铜等。

文件保存,输出打印:保存、打印各种报表文件及PCB制作文件。

2、将打印好的电路图纸通过高温印刷到已给的覆铜板上,再将电路板通过腐蚀制作成线路板,将线路板打孔。1)把图纸印刷到覆铜板上

四.系统调试过程中出现的主要问题

现有的元件库中没有设计所需的芯片元件库。为了解决这个问题,我上网寻找解决方案,并向老师请教,发现可以自己创建一个集成元件库。首先启动 protel dxp,在菜单中点击file—new—library–schematic library。新建一个原理图库文件。点击菜单file—save,为原理图库文件取个名字,然后自己选要用的图形和引脚,画至成功之后放置到sheet1.SchDoc文件中。

五.系统运行报告与结论 Pcb图如图所示

腐蚀好的电路板如图所示

六.总结

1、打开PCB编辑软件Proteus 7.4 的ARES。

在Proteus ISIS 编辑环境下,选择“Tools”–“ Netlist to ARES ” 或是单击工具栏中的图标按钮,即可进入PCB设计软件ARES界面。当然也可直接运行Proteus 7.4 ARES 软件进入其编辑界面。

放置焊盘

在编辑界面中应根据元件的引脚间距放置焊盘及元件所占空间的大小画元件的边框。

在ARES软件界面中点击左侧工具栏中的或图标用于放置焊盘,这时在对象选择器中列出了所有焊盘的外径和内径的尺寸,我们选择S/C-70-30(其中S表示正方形焊盘,C表示圆形焊盘,70为焊盘的外径尺寸,30为内径的尺寸即钻孔直径)如下图:

如果列表中没有该尺寸的焊盘,可单击列表上的图标新建焊盘,在弹出的对话框中输入焊盘的名称及选择焊盘的形状后点击确定,如下图:

在接着弹出的对话框中设置好焊盘参数后单击确定即可完成焊盘的新建,如下图:

现在我们开始放置焊盘,将第一个焊盘放在原点处(即X=0;Y=0),如下图:

2、分配引脚编号

右键单击某一个焊盘,在弹出的下拉列表中选择“Edit Properties / 编辑属性”项,在弹出的“Edit Single Pin/编辑引脚”对话框中按下图进行设置。按照同样的方法可完成其它焊盘的设置。

3、添加元件边框

完成了焊盘放置,接着需要根据元件的实际大小添加边框。单击左侧工具栏中的并将左下角图标,层,在编辑区内按照实际尺寸画一个元件边框,如下图

4、放置封装原点

点击左侧工具栏中的图标,在左侧列表框中选择“ORIGIN”,单击第一个焊盘,确定为封装的原点。如下图:

5、放置元件“REF”

在左侧列表框中选择“REFERENCE”,在元件边框中单击添加“REF”。如下图:

6、保存元件封装

单击右键并拖动鼠标指针,将整个设计完成的封装选中,然后选择“Library / 库”à “Makepackage / 创建封装”菜单项,弹出创建封装对话框,按下图进行设置即可。

对电子工艺的理论有了初步的系统了解。我们了解到了测试普通元件与电路元件的技巧、印制电路板图的设计制作与工艺流程作用等。这些知识不仅在课堂上有效,对以后的电子工艺课的学习有很大的指导意义,在日常生活中更是有着现实意义。二.对自己的动手能力是个很大的锻炼。实践出真知,纵观古今,所有发明创造无一不是在实践中得到检验的。没有足够的动手能力,就奢谈在未来的科研尤其是实验研究中有所成就。在实习中,我锻炼了自己动手技巧,提高了自己解决问题的能力。

七.参考书目

1、Protel 2004电路设计入门与应用

2、Protel dxp

3、Protel99教程

流水灯焊接实验报告模板4

作为使用矿板实现的第一个实验,咱们从最简单的做起,实现一个间隔1秒钟的流水灯。工程所采用的时钟为PL端的晶振。

因为矿板在PL端,默认是没有焊接晶振的,所以在做本章的实验,必须要在PL端把晶振焊上。

PL端有晶振更好,没有咱们也能照样玩,咱们后面会给大家说,在没有这个晶振的情况下如果让PL端也实现流水灯。

关于如何焊接晶振,咱们会在下一篇文章详细介绍。

当然在咱们店铺里面购买矿板时,如有要求需焊接晶振等器件,咱们也是可以免费焊上的。相信也是有不少朋友在咱们这购买的矿板,晶振都是已经焊好的。

在本节内容,Kevin 力争把 Vivado 创建工程、编译工程和下载bit 文件的步骤都详细的记录下来,在后面的章节会对这些基础操作进行省略。

第一步:打开vivado

双击桌面上 vivado 的快捷启动方式,vivado 的启动过程略显迟缓,耐心等待即可,咱们FPGA工程师还是要有耐心的。如果连vivado启动的这点时间都没法等待,那之后vivado的编译过程,会让你气得摔电脑的!!!

第二步:创建工程

点击【CreateProject】之后,会弹出来创建工程的界面,可以点击【next】。

当做好了工程创建的步骤后,接下来就会出现下面这个截图的内容了。这就说明咱们的工程已经创建好了。

第三步:添加代码

工程创建好了,咱们可以添加代码。后面的步骤,有要点 YES就点YES,有要点OK 的就点OK!

之后就能够在 DesignSources 下看到.v 文件了。

接下来,把下边这段流水灯的代码,直接敲到shiftl_led.v这个文件里面。

流水灯焊接实验报告模板5

LED灯流水作为一个经典的入门实验,其地位堪比编程界的“Hello,World!”。对于很多电子工程师来说,LED灯流水都是他们在硬件上观察到的第一个实验现象。本章我们同样通过LED灯流水实验,带你进入FPGA的精彩世界。

本章包括以下几个部分:

1.1 简介

1.2 实验任务

1.3 硬件设计

1.4 程序设计

1.5 下载验证

一.1 简介

LED,又名发光二极管。LED灯工作电流很小(有的仅零点几毫安即可发光),抗冲击和抗震性能好,可靠性高,寿命长。由于这些优点,LED灯被广泛用在仪器仪表中作指示灯、液晶屏背光源等诸多领域。

不同材料的发光二极管可以发出红、橙、黄、绿、青、蓝、紫、白这八种颜色的光。图 8.1.1是可以发出黄、红、蓝三种颜色的直插型二极管实物图,这种二极管长的一端是阳极,短的一端是阴极。图 8.1.2是开发板上用的贴片二极管实物图。贴片二极管的正面一般都有颜色标记,有标记的那端就是阴极。

发光二极管与普通二极管一样具有单向导电性。给它加上阳极正向电压后,通过5mA左右的电流就可以使二极管发光。通过二极管的电流越大,发出的光亮度越强。不过我们一般将电流限定在3~20mA之间,否则电流过大就会烧坏二极管。

一.2 实验任务

本节实验任务是使新起点开发板上的4个LED灯顺序点亮并熄灭,循环往复产生流水的现象。

一.3 硬件设计

发光二极管的原理图如图 8.3.1所示, LED0到LED3这4个发光二极管的阴极都连到地( GND)上, 阳极分别与FPGA相应的管脚相连。原理图中LED与地之间的电阻起到限流作用。

本实验中,系统时钟、按键复位以及LED端口的管脚分配

一.4 程序设计

由于发光二极管的阳极与FPGA的管脚相连,只需要改变与LED灯相连的FPGA管脚的电平,LED灯的亮灭状态就会发生变化。当FPGA管脚为高电平时,LED灯点亮;为低电平时,LED灯熄灭。

由于人眼的视觉暂留效应,流水灯状态变换间隔时间最好不要低于0.1s,否则就不能清晰地观察到流水效果。这里我们让流水灯每间隔0.2s变化一次。在程序中需要用一个计数器累加计数来计时,计时达0.2s后计数器清零并重新开始计数,这样就得到了固定的时间间隔。每当计数器计数满0.2s就让led灯发光状态变化一次。

本程序中输入时钟为50MHz,所以一个时钟周期为20ns(1/50MHz)。因此计数器counter通过对50MHz系统时钟计数,计时到0.2s,需要累加0.2s/20ns=10000000次。在代码第22行,每当计时到0.2s计数器清零一次。

同时,每当计数器计数到10000000时,将各个LED灯的状态左移一位,并将最高位的值移动到最低位,循环往复。其他时间,LED灯的状态不变。如代码中第29至32行所示。

需要说明的是,led的初始值必须是一位为1,其它位为0,在循环左移的过程中才会呈现流水灯的效果;而如果led的初始值为0,则左移后led的状态仍然为0。代码中led的初始值是由复位信号(sys_rst_n)控制的,如代码中第27行和第28行所示。这里的复位信号对应的就是板载的复位按键,尽管在上电后没有按下复位按键,由于FPGA芯片内部有一个上电检测模块,一旦检测到电源电压超过检测门限后,就产生一个上电复位脉冲(Power On Reset)送给所有的寄存器,led的初始值就是在这个时候复位成4’b0001的。

我们在Modelsim中对流水灯程序进行仿真,为了减少仿真过程所需要的时间,将流水灯状态变化的间隔时间修改为0.1ms。仿真得到的波形图如图 8.4.2所示,led端口寄存器的值按照0001→0010→0100→1000→0001的顺序变化,对应的各个LED灯的接口电平依次改变。

一.5 下载验证

首先我们打开流水灯工程,在工程所在的路径下打开flow_led/par文件夹,在里面找到“flow_led.qpf”并双击打开。注意工程所在的路径名只能由字母、数字以及下划线组成,不能出现中文、空格以及特殊字符等。查看图中红色矩形框中是否已经加载下载文件(sof文件)。如果没有,则需要通过点击“Add File”按钮添加流水灯工程中flow_led/par/output_files目录下的“flow_led.sof”文件。

将USB Blaster下载器一端连接电脑,另一端与开发板上的JTAG下载口连接,如下图所示。然后连接电源线并打开电源开关。

接下来我们下载程序,验证流水灯功能。

开发板电源打开后,在程序下载界面点击“Hardware Setup”,在弹出的对话框中选择当前的硬件连接为“USB-Blaster”。然后点击“Start”将工程编译完成后得到的sof文件下载到开发板中,

下载完成后,就能在开发板上看到流水灯的效果了。

流水灯焊接实验报告模板6

实验

1、流水灯实验

1.1实验要求

编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。

1.2原理分析

实验主要考察对STM32F10X系列单片机GPIO的输出操作。

参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式: ◇输入浮空 ◇输入上拉 ◇输入下拉 ◇模拟输入 ◇开漏输出 ◇推挽式输出

◇推挽式复用功能 ◇开漏式复用功能

根据实验要求,应该首先将GPIO配置为推挽输出模式。

由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。由于74HC244的OE1和OE2都接地,为相同电平,故A端电平与Y端电平相同且LED灯共阳,所以,如果要点亮LED,GPIO应输出低电平。反之,LED灯熄灭。

1.3程序分析

软件方面,在程序启动时,调用SystemInit()函数(见附录1),对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。

GPIO配置函数为SZ_STM32_LEDInit()(见附录2),函数中首先使能GPIO时钟:

RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE);然后配置GPIO输入输出模式:

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 再配置GPIO端口翻转速度: GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 最后将配置好的参数写入寄存器,初始化完成: GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。

初始化完成后,程序循环点亮一个LED并熄灭其他LED,中间通过Delay()函数进行延时,达到流水灯的效果(程序完整代码见附录3)。

实验程序流程图如下:

硬件方面,根据实验指南,将实验板做如下连接:

1.3实验结果

实验

二、按键实验

2.1实验要求

利用STM32读取外部按键状态,按键按下一次产生一次外部中断在中断处理函数中使按键所对应的灯亮起。

2.2原理分析

实验主要考察对STM32F10X系列单片机GPIO外部中断功能的使用。

STM32F107VCT一共有5组GPIO,分别是PA[15:0]、PB[15:0]、PC[15:0]、PD[15:0]、PE[15:0]。STM32的所有GPIO都可以作为中断输入源,单片机通过复用的方式使其对处理器来说来自 GPIO 的一共有 16 个中断Px[15:0]。具体实现是PA[0]、PB[0]、PC[0]、PD[0]和PE[0]共享一个GPIO中断;PA[1]、PB[1]、PC[1]、PD[1]和PE[1]共享一个GPIO中断;……PA[15]、PB[15]、PC[15]、PD[15]和PE[15]共享一个GPIO中断。以下图片为以EXTI0为例的外部中断/事件线路映像:

要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置2个触发寄存器,同时在中断屏蔽寄存器的相应位写‘1’允许中断请求。当外部中断线上发生了期待的边沿时,将产生一个中断请求,对应的挂起位也随之被置‘1’。在挂起寄存器的对应位写’1’,将清除该中断请求。

要把IO口作为外部中断输入,有以下几个步骤:

(1)初始化 IO 口为输入。这一步设置要作为外部中断输入的IO口的状态,可以设置为上拉/下拉输入,也可以设置为浮空输入,但浮空的时候外部一定要带上拉,或者下拉电阻。否则可能导致中断不停的触发。在干扰较大的地方,就算使用了上拉/下拉,也建议使用外部上拉/下拉电阻,这样可以一定程度防止外部干扰带来的影响。

(2)开启IO口复用时钟,设置IO口与中断线的映射关系。STM32的IO口与中断线的对应关系需要配置外部中断配置寄存器EXTICR,这样我们要先开启复用时钟,然后配置IO口与中断线的对应关系。才能把外部中断与中断线连接起来。

(3)开启与该IO口相对的线上中断/事件,设置触发条件。这一步,我们要配置中断产生的条件,STM32可以配置成上升沿触发,下降沿触发,或者任意电平变化触发,但是不能配置成高电平触发和低电平触发。这里根据自己的实际情况来配置。同时要开启中断线上的中断,这里需要注意的是:如果使用外部中断,并设置该中断的EMR位的话,会引起软件仿真不能跳到中断,而硬件上是可以的。而不设置EMR,软件仿真就可以进入中断服务函数,并且硬件上也是可以的。建议不要配置EMR位。

(4)配置中断分组(NVIC),并使能中断。这一步,我们就是配置中断的分组以及使能,对STM32的中断来说,只有配置了 NVIC 的设置,并开启才能被执行,否则是不会执行到中断服务函数里面去的。

(5)编写中断服务函数。这是中断设置的最后一步,中断服务函数,是必不可少的,如果在代码里面开启了中断,但是没编写中断服务函数,就可能引起硬件错误,从而导致程序崩溃。所以在开启了某个中断后,应为该中断编写服务函数。在中断服务函数里面编写要执行的中断后的操作,并很据情况判断是否要对中断产生的标志位进行清零。

由原理图可知,按键未按下时,GPIO读到的为高电平,按键按下后,IO口接地,产生一个电平跳变,所以外部中断触发方式应该设置为下降沿触发。

2.3程序分析

LED灯的点亮与实验一中相同,不过多赘述。程序首先对按键进行初始化,初始化函数为GPIO_KEY_Config()(见附录4),配置过程与实验一中GPIO配置基本一致。由于此处GPIO需要采集外界按键信号,故GPIO模式应该为调整为内部上拉电阻输入

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU。

然后执行GPIO中断初始化函数KEY_EXIT_Init()(见附录5),首先将连接按键的IO口与EXTI线链接到一起:

GPIO_EXTILineConfig(GPIO_KEY1_EXTI_PORT_SOURCE,GPIO_KEY1_EXTI_PIN_SOURCE);

然后将触发方式设置为下降沿触发并写入中断配置寄存器,并使能中断: EXTI_InitStructure.EXTI_Line = GPIO_KEY1_EXTI_LINE;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure)。

之后进行中断分组配置及中断优先级配置,函数为InterruptConfig()(见附录6)。配置过程较为复杂,涉及到抢占优先级和响应优先级的概念。程序首先将所有外部中断归为NVIC_PriorityGroup_2,即2位抢占优先级和2位响应优先级:

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

然后将所有外部中断信号的抢占优先级规定为0、1、2,使其可以相互区别,并将配置好的参数写入对应寄存器中,完成配置:

NVIC_InitStructure.NVIC_IRQChannel = GPIO_KEY1_EXTI_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = GPIO_KEY2_EXTI_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = GPIO_KEY3_EXTI_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;NVIC_Init(&NVIC_InitStructure)。

初始化完成后,程序进入等待按键中断触发状态,一旦按键按下,则进入中断服务函数EXTI9_5_IRQHandler()(见附录7)中。在函数中对LED灯进行点亮、熄灭操作,并重置中断产生标志位。

实验流程图如下(主函数代码见附录8):

硬件连接方式如下图所示:

2.3实验结果

实验

三、定时器实验

3.1实验要求

利用STM32的通用定时器 TIM5 产生一个1S的中断,在中断函数中实现 LED1、LED2、LED3、LED4同时翻转的效果。

3.2原理分析

实验主要考察对STM32F10X系列单片机定时器的使用。

实验中使用的STM32F107单片机有多达10个定时器,包括:

◇多达4个16位定时器,每个定时器有多达4个用于输入捕获/输出比较/PWM 或脉冲计数的通道和增量编码器输入

◇1个16位带死区控制和紧急刹车,用于电机控制的 PWM 高级控制定时器

◇2个独立的看门狗定时器(独立的和窗口型的)

◇系统时间定时器:24 位自减型计数器

◇2个 16 位基本定时器用于驱动DAC

根据时钟树可知,系统时钟经过分频之后,进入TIM5的时钟模块入口,在经过预分频处理,才供给TIM5作时钟使用。预分频器的系数为:TIMx_PSC,当TIMx_PSC = 0时表示不分频,则TIM5定时器的时钟

用CK_CNT =模块入口时钟72MHz;当TIMx_PSC = 1时表示不分频,则TIM5定时器的时钟用CK_CNT=模块入口时钟36MHz;以此类推。公式为:CK_CNT =fCK_PSC/(PSC[15:0]+1),其中PSC最大为65535。

其次是TIM5计数器计数值的设置,TIM5计数器以CK_CNT为时钟计数,向下计数到0或向上计数到设定值(TIMx_ARR)则产生中断。以向上计数为例,从 0 开始计数到设定值TIMx_ARR 时产生中断。要产生一秒一次中断则要使计数器的值乘以预分频的值=系统时钟72MHz,其中计数器的值和预分频值都必须小于65535。我们使预分频值为7200,计数器值为10000,则7200 * 10000 = 72,000,000即72M。其中拆分方法很多35000*2000 = 72,000,000,只要注意计数器的值和预分频值都必须小于65535即可。当计数值溢出后,会改变计数溢出标志位,并产生定时器中断,实验中使用其产生中断来进行LED灯翻转。

3.3程序分析

LED初始化部分与实验一相同,完成初始化后,点亮所有LED灯。定时器配置函数为TIM5_Init()(见附录6)。配置函数首先使能计数器时钟:

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); 然后自动装载计数值,计数从0开始:

TIM_TimeBaseStructure.TIM_Period =(1001); 并将计数器设置为向上计数:

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 最后写入计时器配置寄存器,完成配置:

TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure)。

配置完成后,还要对计数器溢出标志位进行清零,并打开溢出中断,使能计数器以开始计数。

TIM_ClearITPendingBit(TIM5, TIM_IT_Update);TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE);TIM_Cmd(TIM5, ENABLE)。

定时器配置完成并使能后,计数器开始工作,当到达预设的计数值之后,产生中断信号。系统在进行相关配置后可以响应定时器产生的中断,中断配置函数为NVIC_Configuration()(见附录7)。函数首先将中断向量表首地址置于0x08000000:

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0000); 然后使能TIM5中断:

NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;最后将配置参数写入中断控制寄存器,完成配置: NVIC_Init(&NVIC_InitStructure)。

一旦中断产生,系统会对中断产生响应,暂停所有正在执行的低优先级任务且将任务信息和数据压入对应对战区,并进入中断服务函数TIM5_IRQHandler()(见附录8)中进行处理。

在中断服务函数中判断并清除了中断标志位,以便定时器下一次计数中断产生。函数中调用了LED_Spark()函数(见附录9),实现了LED的闪烁。

程序流程图如下:

硬件连接方式如下图所示:

实验

四、按键中断控制LED灯定时闪烁

4.1实验要求

综合实验一、二、三,利用STM32读取外部按键状态,按键按下一次产生一次外部中断在中断处理函数中使按键所对应的灯闪烁,闪烁间隔通过定时器定时控制。其中,SKEY1控制LED1以1S为间隔,闪烁3次,SKEY2控制LED2以2S为间隔闪烁3次,SKEY3控制LED3以3S为间隔,闪烁3次。

4.2原理分析

实验需要用到STM32的GPIO输入输出操作,GPIO外部中断和内部定时器中断。在以上三个实验中,对各个部分都已经进行过详尽的解释,这里不再赘述。此实验需要将以上实验做综合,并对时序进行调整。难点为,对GPIO外部中断和定时器内部中断的处理,即如何确定两种不同中断的优先级。

这里的使用的方法是,将所有按键外部中断置于中断分组2,即NVIC_PriorityGroup_2中。将所有按键中断抢占优先级置为0,即最高级别中断,响应优先级置分别置为1、2、3,相互区别。将定时器中断抢占优先级置为1,相应优先级社会中低于按键中断,使其可以被按键信号中断计时,并刷新LED闪烁状态。

4.3程序分析

这在程序初始化阶段,分别对LED、按键外部中断和定时器中断进行初始化。主函数如下:

int main(void){ /* LED初始化 */ LED_config();/* LED闪烁¸ */ Led_Turn_on_all();Delay(3000000);Led_Turn_off_all();Delay(3000000);Led_Turn_on_all();Delay(3000000);Led_Turn_off_all();Delay(3000000);Led_Turn_on_all();Delay(3000000);Led_Turn_off_all();/* 按键初始化 */ GPIO_KEY_Config();/* 按键外部中断初始化 */ KEY_EXIT_Init();/*外部中断向量初始化 */ InterruptConfig();/* 定时器5初始化 */ TIM5_Init();/* 定时器中断初始化 / NVIC_Configuration();/* 等待中断触发 */ while(1){ } } 初始化完成后,等待中断触发。一旦按键按下,触发外部中断,则进入外部中断服务函数,函数中将判断哪一个按键被按下,记录按下的按键,然后给定时器清零并开始计数,且清零外部中断标志位。

流水灯焊接实验报告模板7

一、概述

流水灯是一串按一定的规律像流水一样连续闪亮,流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。流水灯控制可用多种方法实现,但对现代可编程控制器而言,基于EDA技术的流水灯设计也是很普遍的。

二、设计目的

1、熟悉利用Quartus II 开发数字电路的基本流程和Quartus II 软件的相关操作。

2、掌握基本的设计思路,软件环境参数配置,仿真,管脚分配,利用JTAG/AS进行下载等基本操作。

3、了解VerilogHDL 语言设计或原理图设计方法。

4、通过本此设计,了解流水灯的工作原理,掌握其逻辑功能及设计方法。

三、设计内容

1、用VerilogHDL语言设计一个流水灯,输入0的时候led~led7,1Hz正向流水3次,然后全亮;然后2Hz逆向流水5次全亮;循环。输入1的时候led0~led7,0.5Hz奇数流水2次,全亮,1Hz偶数流水4次,全亮,然后循环。

2、用QuartusII 软件进行编译,仿真,下载到实验平台进行验证。

四、设计原理图

en为可调输入,输出为8位数据,为流水灯实验,试用8个LED指示灯来表示,具体引脚分配见下。

五、引脚分配情况

六、源程序代码

VerilogHDL 程序:

module LED(clk,led,en);

input clk;

input en;

output [7:0]led;// 输出端口定义为寄存器型

reg [7:0] led;

reg [8:0] state1;

reg [8:0] state2;

always @(posedge clk)// always语句,表示每当CLK的上升沿到来时,完成begin-end之间语句的操作

if(!en)

begin state2 = 0;

state1 = state1 + 1;

// one clk,one state

case(state1)

1,2: led <= 8’b00000001;//1-7 zhengxu,3bian

3,4: led <= 8’b00000010;

5,6: led <= 8’b00000100;

7,8: led <= 8’b00001000;

9,10: led <= 8’b00010000;

11,12: led <= 8’b00100000;

13,14: led <= 8’b01000000;

15,16: led <= 8’b10000000;

17,18: led <= 8’b00000001;

19,20: led <= 8’b00000010;

21,22: led <= 8’b00000100;

23,24: led <= 8’b00001000;

25,26: led <= 8’b00010000;

27,28: led <= 8’b00100000;

29,30: led <= 8’b01000000;

31,32: led <= 8’b10000000;

33,34: led <= 8’b00000001;

35,36: led <= 8’b00000010;

37,38: led <= 8’b00000100;

39,40: led <= 8’b00001000;

41,42: led <= 8’b00010000;

43,44: led <= 8’b00100000;

45,46: led <= 8’b01000000;

47,48: led <= 8’b10000000;

49: led <= 8’b11111111;//quanliang

50: led <= 8’b10000000;

51: led <= 8’b01000000;

52: led <= 8’b00100000;

53: led <= 8’b00010000;

54: led <= 8’b00001000;

55: led <= 8’b00000100;

56: led <= 8’b00000010;

57: led <= 8’b00000001;

58: led <= 8’b10000000;

59: led <= 8’b01000000;

60: led <= 8’b00100000;

61: led <= 8’b00010000;

62: led <= 8’b00001000;

63: led <= 8’b00000100;

64: led <= 8’b00000010;

65: led <= 8’b00000001;

66: led <= 8’b10000000;

67: led <= 8’b01000000;

68: led <= 8’b00100000;

69: led <= 8’b00010000;

70: led <= 8’b00001000;

71: led <= 8’b00000100;

72: led <= 8’b00000010;

73: led <= 8’b00000001;

74: led <= 8’b10000000;

75: led <= 8’b01000000;

76: led <= 8’b00100000;

77: led <= 8’b00010000;

78: led <= 8’b00001000;

79: led <= 8’b00000100;

80: led <= 8’b00000010;

81: led <= 8’b00000001;

82: led <= 8’b10000000;

83: led <= 8’b01000000;

84: led <= 8’b00100000;

85: led <= 8’b00010000;

86: led <= 8’b00001000;

87: led <= 8’b00000100;

88: led <= 8’b00000010;

89: led <= 8’b00000001;

90: led <= 8’b11111111;

91: begin led <= 8’b00000000;state1=0;end

default: state1 = 0;

endcase

end

else

begin state1 = 0;

state2 = state2 + 1;

// one clk,one state

case(state2)

1,2,3,4: led <= 8’b00000001;

5,6,7,8: led <= 8’b00000100;

9,10,11,12: led <= 8’b00010000;

13,14,15,16: led <= 8’b01000000;

17,18,19,20: led <= 8’b00000001;

21,22,23,24: led <= 8’b00000100;

25,26,27,28: led <= 8’b00010000;

29,30,31,32: led <= 8’b01000000;

33: led <= 8’b11111111;

34,35: led <= 8’b00000010;

36,37: led <= 8’b00001000;

38,39: led <= 8’b00100000;

40,41: led <= 8’b10000000;

42,43: led <= 8’b00000010;

44,45: led <= 8’b00001000;

46,47: led <= 8’b00100000;

48,49: led <= 8’b10000000;

50,51: led <= 8’b00000010;

52,53: led <= 8’b00001000;

54,55: led <= 8’b00100000;

56,57: led <= 8’b10000000;

58,59: led <= 8’b00000010;

60,61: led <= 8’b00001000;

62,63: led <= 8’b00100000;

64,65: led <= 8’b10000000;

66: led <= 8’b11111111;

67:begin led <= 8’b00000000;state2=0;end

default: state2 = 0;

// default,8’b11111110

endcase

end Endmodule

分频器部分:

module clk_div(clk_out,clk_in);

input clk_in;

output clk_out;

reg clk_out;

reg[25:0] counter;//50_000_000=1011_1110_1011_1100_0010_0000_00

parameter cnt=25_000_000;/// 50MHz is the sys clk,50_000_000=2FAF080

always @(posedge clk_in)

begin

counter<=counter+1;

if(counter==cnt/2-1)

begin

clk_out<=!clk_out;

counter<=0;

end

end endmodule 5

七、心得体会

通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。而安排课程设计的基本目的,是在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟和领悟力。尤其是观察、分析和解决问题的实际工作能力。它的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。这也是一次预演和准备毕业设计工作。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。课程设计促进了我系人才培养计划的完善和课程设置的调整。课程设计之后,我们普遍感到不仅实际动手说,这应该是个警示,在剩下的大学生活里,我应该好好珍惜,好好学习各方面的知识。

流水灯焊接实验报告模板8

1.实训目的: I.II.III.掌握单片机的硬件结构;

理解一个完整的单片机系统是由硬件和软件组成的。学习流水灯的基本原理。

2.实训内容: I.II.III.IV.在Proteus仿真软件平台上输入单片机硬件电路。

在keil软件仿真平台上输入源程序,并进行编译、生产机器码。在Proteus仿真软件平台上加载机器码,并进行仿真。下载程序到实验板的单片机,通电运行,试验其功能。

3.器件清单:

AT89C52: 1片 ; 晶振12MHHz:1个; 电容30pF:2个; 电容104pF:1个;

电阻10k:1个;

电阻270:8个; 发光二极管:8个; 4硬件电路:

5程序流程:

6.程序代码:

7.实验步骤:

I.在Proteus仿真软件中建立硬件电路,并保持;

II.在keil开发环境中编辑源程序,并保持;

III..在keil开发环境中编译源程序,生成hex文件;

IV.在Proteus仿真软件中选择单片机芯片,并加载hex文件; V.在Proteus进行仿真;

VI.如果仿真不符合要求,重复以上步骤。如果仿真符合要求,通过下载装置将程序下载到实验板单片机芯片中并观察;

VII.如果硬件不符合要求,检查电路,并重复以上步骤。如果符合要求,即实训结束; 8.产品照片

9.实训总结:通过这次实验我对单片机系统还有汇篇语言有了一定的认识和了解!也加深了对单片机的兴趣。通过这次实训争强了我的动手能力。对单片机的掌握也熟悉了!

流水灯焊接实验报告模板9

一、实验环境:Windows10 ,LabVIEW2011

二、实验目的:

实验要实现跑马灯的单个流水灯闪烁,两路同步闪烁,全体同步闪烁。

三、程序框图的设计:

1、单个流水灯闪烁:程序框图中,“1”表示断开,“0”表示闭合,在各状态中设置各灯相对应的状态。图1显示的是LED_1亮起,其他灯熄灭的状态,其余灯的状态以此类推。

2、双路同步闪烁:程序框图中,相隔的两个灯状态一致。图2 显示的是其中一个状态的程序框图,表示 LED_1和LED_3亮,LED_2和LED_4灭,其余状态以此类推。

3、

四、实验结果:

1、运行之后,流水灯间隔0.5s依次亮起;

2、运行之后,流水灯每0.5s相隔的两盏灯一起亮

3、运行之后,开始每0.5s相隔两个灯亮,之后每隔1sLED灯依次亮起

五、实验拓展:

1、使用了Labview自带的状态机

2、在实现流水灯单步变换的基础上,实现两种形态交替变换。

六、实验难点及解决办法:xxx

流水灯焊接实验报告模板10

 这周我们进行了单片机实训,一周中我们通过七个项目:

  1、P1口输入/输出

  2、继电器控制

  3、音频控制

  4、子程序设计

  5、字符碰头程序设计

  6、外部中断

  7、急救车与交通信号灯,练习编写了子程序、熟悉了人工会汇编方法、设计和调试方法。

  学习了P1口、I/O端口、外部中断技术的基本的使用方法及输入/输出端口控制方法。而且初步掌握了大型程序的调试方法。

  实训中首先对MCS―51单片机开发试验系统键盘监控操作、使用及配套的仿真软件的应用进行了熟悉和了解。该实验仪提供了许多基本实验电路和实验插孔,对于基本的实验只需要少量连线就可以进行,减少了繁琐的实验连线过程,以减轻工作量,突出实验的内涵,达到培养实际动手能力,加强对实验电路的理解。通过本实验仪器进一步了解了单片机存储器的组织结构、单片机片内片外数据存储器读写方法、工作寄存器的应用、单片机对简单编程及调试方法进一步的掌握了调试软件的操作方法和编程环境。

  编写并调试完成一个实验项目总概括起来有五大步骤:

  1、立项目;

  2、查找数据;

  3、画流程图;

  4、根据流程图进行编程;

  5、编完后进行修改、调试、编译等。

  最终要达到会写、会做、会说,编写开始几个项目的程序还比较顺利,到了编写LED灯碰头程序、字符碰头程序、急救车与交通灯呈程序时遇到了好多困难,本来还以为编程会很简单的,等到实际操作起来才知道它的`复杂性,没有想像中的那么得心应手,理解流程是有思维的前提。不过经过我们最后在全组人竭尽全力,老师的精心指导下,花费的时间与精力终于没有白费,效果渐渐地出现了。这是我们共同努力的结果,在享受我们成果之时,不得不感慨单片机的重要性与高难度性,所以为期一周的单片机课程设计没有浪费,我们从中学到了很多知识。,也让我们对单片机有了更深一步的了解。虽然最后结果是出来了,可这与老师的精心指导是分不开的。

  这次实训虽然其中会有些错误和失败,但总的来说是受益匪浅,在运用中发现问题,解决问题,就是最大的收获。专心做自己的事,是一种乐趣;互相交流,是大家一起进步的必要过程;上网查阅资料,是获得所需信息的有效途径。我想,这些练习和经验都将是我以后最宝贵的财富!

流水灯焊接实验报告模板11

实训项目(一) 流水灯 1. 实验目的通过此实验让用户进一步了解、熟悉和掌握CPLD/FPGA开发软件的使用方法及Ver-ilog HDL的编程方法;学习简单时序电路的设计和硬件测试.2. 实验内容本实验的内容是建立可用与控制LED流水灯的简单硬件电路,要求在SmartSOPC实验箱上实现LED1-LED8发光二极管流水灯显示.3. 实验原理(1) 在引脚上周期性地输出流水数据,如原来输出的数据是11111100则表示点亮LED1、LED2.流水一次后,输出数据应该为11111000,而此时则应点亮LED1~LED3三个LED发光二极管,这样就可以实现LED流水灯.为了观察方便,流水速率最好在2Hz左右.在QuickSOPC核心板上有一个48MHz的标准钟源,该时钟脉冲CLOCK与芯片的28脚相连.为了产生2Hz的时钟脉冲,在此调用了一个分频模块,通过修改分频系数来变改输出频率.当分频系数为24×10时,输出即为2Hz的频率信号.(2) int_div分频模块说明: int_div模块是一个占空比为50%的任意整数分频器.输入时钟为clock,输出时钟为clk_out.其中F_DIV为分频系数,分频系数范围为1~2N(n=F_DIV_WIDTH).若要改变分频系数,则改变参数F_DIV和F_DIV_WIDTH到相应范围即可.在本例中输入时钟频率为48MHz,要得到2Hz的信号,分频系数应为48×10/2=24×10.对于分频系数为24×10的数需要一个25位宽的计数器.在以后的实验中还会多次用到这个模块,用户可以分析它的基本原理.4. 实验步骤(1) 启动QUARTUSⅡ建立一个空白工程,然后命名为.(2) 新建VerilogHDL源程序文件ledwater.v,输入程序代码并保存,然后进行综合编译.若在编译过程中发现错误,则找出并更正错误,直到编译成功为止.(3) 从设计文件创建模块,由ledwater.v生成名为ledwater.bsf的模块符号文件.(4) 将光盘中EDA_component目录下的int_div.bsf和int_div.v拷贝到工程目录.(5) 新建图形设计文件命名为led_wter.bdf在空白处双击鼠标左键,在sym-bol对话框左上脚的的Iibraries中,分别将projet下的ledwater和int_div模块放在图形文件ed_wter.bdf中,加入输入、输出引脚,双击各引脚符号,进行引脚命名.将与ledwater模块led[7..0]连接的引脚命名为led[7..0],与int_div模块clock连接的引脚命名为clock. int_div模块的clk_out与ledwater模块的clk相连接.双击int_div的参数框,并修改参数,将F_DIV的值改为24000000, F_DIV_WIDTH的值改为25,单击“确定”按扭保存修改的文件的参数如果led_water.bdf中部能看到参数设置框,可在空白处右击鼠标,选择Show Parameter Assignments命令来显示参数设置框。(6) 选择目标器件并对相应的引脚进行锁定,正在这里所选择的器件为Altera公司Cyclone系列的EP 1C6Q240C8芯片,引脚锁定方法如表3.1所列。将未使用的引脚设置为三态输入(一定要设置,否则可能会损坏芯片)。 表3.1 引脚锁定方法 信号引脚 信号引脚1C61C12EDA1C61C12EDALed[0]505050led[5]474747led[1]535353led[6]484848led[2]545454led[7]494949led[3]555555clock282828led[4]176176176 (7) 将led_water.bdf设置为顶层实体。对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。(8) 最后将跳线短接帽跳接到smartSOPC实验箱上JP6的LED0~LED7,使LED1~LED8 分别与FPGAD的引脚50、53~55、176和47~49相连。将AlteraByteBlasterⅡ下载电缆的两端分别接到PC机的打印机并口和QuickSOPC核芯板上的JTAG下载口上,打开电源,执行下载命令,把程序下载到FPGA器件中,此时,即可在smartSOPC实验箱上看到流水灯。(9 更改分频模块(int_div)的分频系数,并重新编译下载,观察流水灯的变化。 5. 实验参考程序 程序清单3.2ledwater.v Module ledwater(led,clk); //模块名ledwaterOutput[7:0]led; //定义LED输出口Input clk; //定义时钟输入口Reg[8:0] led_r; //定义输出寄存器Assign led=led_r[7:0]; //寄存器输出always@(posedge clk) //在时钟上升沿触发进程beginled_r<=led_r<<1; //是,则输出左移一位if(led_r==9`d0) //循环完毕吗?led_r<=9`b11111111; //是,则重新赋初值endendmodule 6. 日积月累(1) 思考:如何实现左流水灯或其他花样流水呢?用户自己动手试试。(2) REG数据类型:由两大类数据类型,线网类型和寄存器类型。REG是最常见的寄存器类型,形式如下:REG[msb:lsb]reg1,reg2,…regN;其中,msb和lsb定义了范围,并且均匀为常数值表达式。范围定义是可以选的。如果没有定义范围,默认值为1位寄存器。 reg数据类型的默认初始值是不定值X,它可以赋正值,也可以赋负值。当一个reg类型数据是一个表达式中的操作数时,他的值被当作是无符号值,即正值(如意个4)为寄存器被赋值-1,则在表达式中进行运算时,其值被认为是+15)。 reg型只表示被定义的信号将用在always块内,理解这一点很重要。并不是说reg 型信号一定是寄存器或触发器的输出。虽然reg型信号常常是寄存器或触发器的输出,但并不一定总是这样,只有在时序逻辑中他对应的才是寄存器,而在组合逻辑中他则表达一个节点。(3)按照上述管工程进行编译,会出现“warning: found pins functioning as undefined clocks and/or memory enables Info: Assuming node ”clock” is an undefined clock”的警告,大概意思是指发现clock节点没有定义成时钟信号。消除这个警告的方法如下: ①选择assignments→timing settings命令,在弹出的对话框中的clockseteings选项区中选中settingsfor individual clock signals项。 ②对clocks进行设置,在弹出的对话框中单击按钮添加节点,按图中所示进行设置。图中requiredfmax 为系统需求的最大时钟频率,在这里填50HZ即可。 ③设置好之后连续单击OK按钮保存设置,最后再进行编译,原先的warning就会消除。以上的操作是将“clock”加入时钟域。如果“clock”不是一个时钟信号,可将设置属性改为“not a clock ”,也可以消除warning。

流水灯焊接实验报告模板12

单片机原理流水灯实验报告: 一、实验目的:进一步熟习keil仿真软件、proteus仿真软件的使用。认识并熟习单片机I/O口和LED灯的电路构造,学会建立简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。

二、实验原理:MCS-51系列单片机有四组8位并行I/O口,记作P0、P1、P2和P3。每组I/O口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。四组并行I/O端口即能够按字节操作,又能够按位操作。当系统没有扩展外面器件时,I/O端口用作双向输入输出口;当系统作外面扩展时,使用P0、P2口作系统地点和数据总线、P3口有第二功能,与MCS-51的内部功能器件配合使用。

流水灯焊接实验报告模板13

一、设计思路

1. 十个LED灯相继被点亮,形成流水灯。

2. 要做双面印制电路板,电路元件要兼顾贴片式的和通孔的。(为了增加一定的组装难度,也为了让学生发现它的不完美,从而进行改进)

3.可以一块电路板单独使用,也可以级联起来多个一起使用。

4.不需要程序设计,只用硬件电路实现。(适用于职校二年级的学生,还没有学到程序设计,也为后面的继续学习打下伏笔)

二、电路原理图

由NE555、CD4017和三极管控制的流水灯电路原理图如下图所示,该电路图由专业老师带领兴趣小组的同学进行设计,用Protel DXP 2004 软件画出来的。

三、电路工作原理

1.CD4017的用途和引脚功能

1)CD4017的用途

CD4017集成电路是十进制计数/时序译码器,又称十进制计数/脉冲分频器。它是4000系列CMOS数字集成电路中应用最广泛的电路之一,其结构简单,造价低廉,性能稳定可靠,工艺成熟,使用方便。目前世界各大通用数字集成电路厂家都生产4017,在国外的.产品典型型号为CD4017,在我国,早期产品的型号为C217、C187、CC4017等。

2)CD4017C管脚功能

CMOS CD4017采用标准的双列直插式16脚塑封,如下图。

其引脚功能如下:①脚(Y5):第5输出端;②脚(Y1):第1输出端,③脚(Y0):第0输出端,电路清零时,该端为高电平;④脚(Y2):第2输出端;⑤脚(Y6):第6输出端;⑥脚(Y7):第7输出瑞;⑦脚(Y3):第3输出端;⑧脚(Vss):电源负端;⑨脚(Y8):第8输出端,⑩脚(Y4):第4输出端; 11脚(Y9):第9输出端,12脚(Qco):级联进位输出瑞,每输入10个时钟脉冲,就可得一个进位输出脉冲。因此,进位输出信号可作为下一级计数器的时钟信号,13脚(EN):时钟输入端,脉冲下降沿有效;l4脚(CP):时钟输入端,脉冲上升沿有效;(15)脚:清零输入端,在“R”端加高电平或正脉冲时,CD407计数器中各计数单元输出低电平“0”,在译码器中只有对应“0”状态的输出端YO为高电平,16脚(VDD):电源正端,3―18V直流电压。

CP端在输入时钟脉冲的上升沿计数,时钟允许端EN为0时允许时钟脉冲输入,为“1”时,禁止时钟脉冲输入。在输入时钟脉冲的作用下,Q0―Q9的十个输出端依次为高电平。 R为复位端, 当R=1时, 计数器清零,Q0为1,其余Q1―Q9均为0。CO为进位输出端,CD4017计满10个数后,C0端输出一个正的进位脉冲。

2.NE555引脚功能

NE555是一种应用特别广泛作用很大的集成电路,属于小规模集成电路,在很多电子产品中都有应用。NE555的作用是用内部的定时器来构成时基电路,给其他的电路提供时序脉冲。NE555时基电路有两种封装形式有,一是DIP双列直插8脚封装,另一种是sop-8小型(smd)封装形式。

Pin 1 (接地) -地线(或共同接地) ,通常被连接到电路共同接地点。

Pin 2 (触发点) -这个脚位是触发NE555使其启动它的时间周期。触发信号上缘电压须大于2/3 VCC,下缘须低于1/3 VCC 。

Pin 3 (输出) -当时间周期开始555的输出脚位,移至比电源电压少1.7伏的高电位。周期的结束输出回到O伏左右的低电位。于高电位时的最大输出电流大约200 mA 。

Pin 4 (重置) – 一个低逻辑电位送至这个脚位时会重置定时器和使输出回到一个低电位。它通常被接到正电源或忽略不用。

Pin 5 (控制) -这个接脚准许由外部电压改变触发和闸限电压。当计时器经营在稳定或振荡的运作方式下,这输入能用来改变或调整输出频率。

Pin 6 (重置i定) – Pin 6重置锁定并使输出呈低态。当这个接脚的电压从1/3 VCC电压以下移至2/3 VCC以上时启动这个动作。

Pin 7 (放电) -这个接脚和主要的输出接脚有相同的电流输出能力,当输出为ON时为LOW,对地为低阻抗,当输出为OFF时为HIGH,对地为高阻抗。

Pin 8 (VDD) -这是555个计时器IC的正电源电压端。供应电压的范围是+4.5伏特(最小值)至+16伏特(最大值)。

3.电路工作原理

本流水灯电路由振荡电路、译码电路和光源电路三部分组成。本文选用的脉冲发生器是由NE555与R21、R22、W1及电容器C2组成的多谐振荡器组成。主要是为灯光流动控制器提供流动控制的脉冲,灯光的流动速度可以通过电位器W1进行调节。由于W1的阻值较大,所以有较大的速度调节范围。

灯光流动控制器由一个十进制计数脉冲分配器CD4017和若干电阻组成。CD4017的CP端受脉冲发生器输出脉冲的控制,其输出端(Q0~Q9)将输入脉冲按输入顺序依次分配。输出控制的脉冲,其输出控制脉冲的速度由脉冲发生器输出的脉冲频率决定。10个电阻与CD4017的10个输出端Q0~Q9相连,当Q0~Q9依次输出控制脉冲时10个发光二极管按照接通回路的顺序依次发光,形成流动发光状态,即实现正向流水和逆向流水的功能。电源电路所采用的电源为6V。

四、PCB板图

用Protel DXP 2004 软件设计的双面PCB板图,正面是十个发光二极管,其余元器件都在反面。发光二极管、电容器、电位器采用通孔的,其余元器件都采用贴片式的。

五、元器件清单

六、电路的组装与调试

1.电路的组装方法和步骤

1)按照电路图明细表的型号及规格对所有的元器件进行编号,将所有元器件按先小后大、先低后高、先一般后特殊的顺序依据图示方向装接到件1(印制板)对应位置上,静电敏感器件最后要在防静电工作台上进行操作装接(图中IC1、IC2为静电敏感器件)。

2)贴焊电阻器R1–R22。

3)贴焊贴片三极管VT1-VT10。

4)将电容器C1-C2、电位器W1、插座J1、发光二极管VD1-VD10元器件的引线浸锡。

5)电容器C1、C2引线腿成型。

6)插焊电容C1-C2、电位器W1、插座J1元器件,插装时应注意电位器中心头方向,并将电位器W1、插座J1紧贴印制板放正、放平。

7)在防静电工作区台上贴焊IC1、IC2静电敏感器件,按图示方向贴装后,采取对角焊接原则,即先焊接一个引脚,调整器件使之所有的引脚与印制板上所对应焊盘对齐后,再焊接另一个引脚,然后再逐个焊接,

8)将VD1-VD10发光二极管插焊在印制板的背面,插装时将二极管短引线腿插入印制板标志圆缺的一侧,并确保发光二极管高度一致。

9)严格按照图纸技术要求施工。

10)所有元器件焊接位置应确保正确,焊点光滑、平整、牢固。

2.电路调试与故障排除

本电路无需多少调试,只要检查电路有无插错元器件,检查元器件的极性有无接错,电路连接是否正确,焊接是否良好,无虚焊等缺陷,然后接通电源+6V, 观察灯闪是否按照从第1组到第10组灯顺序依次点亮成流水状即可。如有问题,先用万用表电压档测量IC (CD4017)的(14)脚的时钟信号是否正常。如正常,则是CD4017及其后面的电路问题,需检查元器件是否插错,电路连接是否正确,焊接是否到位等。如不正常,则是该振荡器没有产生振荡,说明IC(555)及其电路有问题,需检查相应元器件及其电路。

七、成品图片展示

这是学生完成的作品,95%以上的学生都能一次性组装调试成功,有个别学生的有点小问题,经过修复,最后也都调试成功,同学们对这次实训项目都很满意。

八、总结

通过这次教学项目,锻炼了学生综合运用所学知识,发现,提出,分析和解决实际问题的能力。这次课设在老师的指导下以及各个小组人员的共同努力下,顺利地完成,这次项目,不仅提高了学生的动手能力,更培养了团队精神,让学生在独立思考解决问题的同时,又相互配合,顺利完成项目。

同时很多同学也提出了改进意见:

(1)所有元器件都用贴片式的

(2)用不同颜色的发光二极管

(3)用5伏电压,带USB接口

(4)印制板的尺寸和形状进行改变

经过同学们的实验,有些方面已经实现。

流水灯焊接实验报告模板14

以真实情境为牵引,在对声控LED流水灯的观察和分析过程中,引导学生初步认识电子控制系统,对常用二极管、三极管、电解电容等电子元器件及其原理有初步认识,理解电子控制系统的主要特点、使用条件、控制中的输入和输出情况。能理解不同元器件的特点、原理,正确识读并判断极性,能够在掌握规范焊接技术的基础上选择、检测所需元器件,实现实际装置的正确安装、调试和使用。

在元器件焊接和实际装置组装的过程中,能够根据不同元件大小、高低情况安排好焊接顺序,能够在实际安装完成后进行测试和必要的修改调整。认识常见电子元器件的符号,能识读并绘制简单电路图,能够初步理解声控LED流水灯电路图。通过声控LED流水灯的组装,初步理解电子控制技术相关原理,正确选择、检测和安装相关电子元器件。

核心知识

1.理解控制的涵义及其在生产和生活中的应用。

2.分析典型案例,了解手动控制、自动控制,熟悉简单的开环控制系统和闭环控制系统的基本组成和简单工作过程。

3.了解简单的被控制对象的基本特性,能确定被控制量、控制量,画出控制系统的方框图,并形成初步的控制设计方案。

4.安装简单的电子控制装置,掌握识读电子电路图的基本方法,辨别和检测常用电子元器件。说明电子电路焊接技术的发展趋势,熟悉常见焊接工具及辅助材料的特点,掌握一种焊接方法。

核心能力点

1.感知生产和生活中电子控制产品应用的广泛性,形成对电子控制技术应用价值的认识,理解电子控制技术对人类和社会生活的影响。

2.对控制的概念、分类以及控制框图中的要素有比较深入的认知。

3.通过小组合作的形式完成设计作品,协作解决遇到的问题,动手设计搭建模型,并通过编程完成作品。

核心素养

信息意识

以真实情境为牵引,了解声控LED流水灯运行情况,通过不同的闪烁情况表达不同的信息。 

计算思维

能从问题出发,运用makeblock可视化编程完成软件设计。

数字化学习与创新

利用互联网搜索引擎,去寻找问题的解决方案,优化设计内容,创造性地完善作品的最终物化效果。

信息社会责任

在分析和实现电子控制系统的过程中,渗透技术人文思想,理解技术与生活、社会的密切关系,培养严谨务实、吃苦耐劳的劳动品质,形成基本的质量意识、规范意识和家国意识。

精选项目以更好地服务教学内容是高效课堂互动的前提。在项目选择中需要以内容要求为目标,确保项目来源符合学生认知和能力水平,贴近学生生活,聚焦真问题、真实践。在项目应用中,让项目成果可观可评,便于课堂内交流和展示,能够为课堂高效互动提供有力支持。在评价实施中,让项目难度可调,既能够保证学生整体参与度,又可以给予不同层次学生适合的学习挑战,为各种评价(互动)提供了广阔空间。完成项目的过程中,需要运用结构、系统和控制等学科知识、技能,对提升学生学科核心素养形成有力支撑。应用发展性评价策略,通过学生实践中的表现性评价、形成性评价、终结性评价实现基于精选项目的课堂高效互动。

流水灯焊接实验报告模板15

1 概述

随着科学技术水平的不断向前提高以及社会经济的不断向前开展,人们越来越 意识到广告宣传的重要性,越来越多的丰富多彩、新颖夺目的 LED 广告宣传牌充 满在城市的公共场所中,为灯红酒绿的城市增加了炫目多姿的色彩。这些 LED 广 告宣传牌动态显示的背后,那么是以流水灯的原理为根底,以单片机为控制核心, 按照广告商的宣传需求,通过炫目的多彩和新颖的方式来吸引人们的眼球来完成广 告宣传。基于单片机的流水灯的设计,主要是以单片机为控制核心,通过自身的数 据输入输出端口完成与流水灯显示电路的数据联通,通过内部的程序运行来实现对 流水灯显示电路的动态控制,进而实现显示电流的循环亮灭的操作。所以对于基于 单片机的流水灯系统的深入研究与学习对于学习单片机控制系统以及 LED 广告宣 传系统的工作机制进来说具有非常重要的现实意义。

2 基于单片机的流水灯的系统电路

流水灯的显示电路就是多个二极管通过一端公共连接而构成的显示电路,并将 另一端分别与单片机的多个数据输入输出端口进行连接,当单片机向这些端口发送 相应的数据时,根据二极管的工作特性,从而实现对其的亮灭控制。当然,单片机 工作还需要复位电路和晶振电路配合单片机芯片构成单片机工作的最小系统,从而 满足单片机正常工作的根本条件。如图 1 所示,为基于单片机的流水灯控制系统 硬件电路图,该硬件电路以 AT89C51 为根本的控制核心,实现对 8 为二极管流水 灯显示电路的亮灭控制。

该控制系统是以 AT89C51 为系统的控制单片机,它是美国 ATMEL 公司生产 的高性能的 CMO 8 位处理器,同时配备了丰富的硬件资源,有 128 字节的 RAM 供用户使用,并提供 2 个 16 为定时器/计数器完成定时和计数的工作以及 32 根数 据输入输出端口来单片机与外部电路的数据连通的.工作。

8 位二极管构成的流水灯显示电路是用共阳极的连接方法来构成的显示电路的。 常见的 LED 显示灯电路中的二极管连接方法有两种,一种是共阳极连接,一种是 共阴极连接,它们是根据显示电路中二极管公共连接的方式来决定的。共阳极接法 就是将构成 LED 显示电路的二极管的阳极接在一起构成公共端,共阴极接法就是 将 LED 显示电路中的二极管的阴极接在一起构成公共端。对于共阳极接法的显示 电路来说,如果在该端实施低电压〔零电压〕,对于共阴极接法的显示电路来说, 如果在该端实施高电压,那么无论在另外一段如何控制电压都不能使该显示电路亮 灭,从而实现了通过对该公共端的电压的改变对整个 LED 显示电路的进行控制。 当公共端施加了使能电压后,通过对该显示电路中的某个二极管进行控制从而实现 了对显示电路的二极管亮灭控制。图 1 中所示的流水灯显示电路为共阳极接法的 LED 显示电路,通过施加 Vcc 电压,可以是 LED 显示电路中的所有二级管一直处 在使能状态,从而配合的单片机控制完成流水灯的设计。

3 基于单片机的流水灯的流程控制

流水灯就是按照一定的顺序和规那么,按照人们的意愿有序地亮灭,通过人的 视觉误差从而形成流水状的状态。基于单片机的流水灯系统设计,以图 1 为根本 的硬件电路,根据人们的意愿来编写程序代码,通过单片机定时向 P1 端口发送控 制信号数据,从而对流水灯显示电路的二极管亮灭的控制,实现流水灯的效果。

由于本文中采取的是流水灯显示电路采用的是共阳极的接法,所以在针对一个 二极管亮灭的控制情况下,主要是是向该端口发送低电压数据即可使该二极管发亮, 依次类推,即可实现流水灯的现象。但是值得注意的是,由于人类研究对于视觉具 有暂留的特性,如果紧邻的两个二极管的亮灭交替时间间隔太少,在人眼观察下就 会是持续亮的状态,达不到流水灯的效果,所以设计的时间间隔要满足一定的要求。 对于流水灯的实现上有很多方法,其中循环移位法是相比照拟简单的控制方法,即 对 8 位二极管的亮灭信号控制字进行循环移位来实现流水灯的方法。

以紧邻两个二极管亮灭时间间隔为 0.5 为例,对基于单片机的流水灯系统的控 制流程进行伪代码设计如下:

a,对单片机的定时器/计数器进行初始化,包括定时器/计数器的选择,工作 方式选择等初始化工作。

b,设定二极管亮灭控制变量 V_number,并赋值为 0 某 FE〔该值是对高 7 位 的二极管的阴极设定为高电压,对最后一位的二极管的阴极设定为低电压,从而实 现最后一个二极管亮,其他二极管灭的初始状态〕。

c,将 V_number 赋值到 P1 端口。

d,对定时器/计数器进行初始值设定〔定时 0.5〕并开始计时知道结束。

e,对 V_number 进行循环移位操作并将结果重新赋值给 V_number。

f,跳到步骤 c

根据上述流程,即可实现对 P1 端口输出控制数据的循环变化,实现共阳极的 二极管显示电路的流水灯现象。

4 总结

基于单片机的流水灯系统的设计,主要是以 51 单片机为控制核心,配备 8 位 共阳极接法的二极管显示电路,通过定时器/计数器的定时以及对连接 8 位二级管 显示电路的 P1 端口进行循环移位赋值,从而实现对二极管显示电路的亮灭自动控 制,实现流水灯现象。

以上就是“流水灯焊接实验报告模板”的相关模板内容,如果有需要做该实验的朋友们,就可以从这些模板中寻找对着自己有用的实验过程和方式,以便让自己的实验进展得顺利,如果小编今天分享的内容对大家有帮助,请多关注本站。

本内容由qingfan收集整理,不代表本站观点,如果侵犯您的权利,请联系删除(点这里联系),如若转载,请注明出处:https://wenku.puchedu.cn/20387.html

(0)
qingfanqingfan

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注