流水灯实验报告

时间:2019-05-12 02:20:22下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《流水灯实验报告》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《流水灯实验报告》。

第一篇:流水灯实验报告

单片机流水灯实验

一、任务

让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灯灭。

第二篇:流水灯实验报告(范文)

单片机流水灯试验

一、实验目的:

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文件。这些错误令我明白以后在试验中要步步细心,避免出错。

第三篇:多功能流水灯实验报告

课程设计报告

设计课题:

多功能流水灯

专业班级:

学生姓名:

指导教师:

设计时间:

题目 多功能流水灯

一、课程设计目的

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教程

第四篇:嵌入式系统 流水灯、按键、定时器实验报告

嵌入式系统应用

实验报告

名: 学

号: 学

院: 专

业: 班

级: 指导教师:

实验

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){ } } 初始化完成后,等待中断触发。一旦按键按下,触发外部中断,则进入外部中断服务函数,函数中将判断哪一个按键被按下,记录按下的按键,然后给定时器清零并开始计数,且清零外部中断标志位。

第五篇:单片机流水灯课程设计

单片机原理及系统课程设计报告

基于AT89C51单片机的流水灯 引言

1.1 课题简介

单片机全称叫单片微型计算机(Single Chip Microcomputer),是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:在智能仪器仪表上的应用,例如精密的测量设备;在工业控制中的应用,用单片机可以构成形式多样的控制系统、数据采集系统,例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等;在家用电器中的应用可从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。单片机在医用设备领域中的应用,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等;在各种大型电器中的模块化应用,如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。

本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。本系统就是充分利用了8051芯片的I/O引脚。系统以采用MCS-51系列单片机Intel8051为中心器件来设计LED流水灯系统,实现8个LED霓虹灯的左、右循环显示,并实现循环的速度可调。

1.2 设计目的

(1)学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。

单片机原理及系统课程设计报告

(2)掌握汇编语言程序设计方法。

(3)培养实践技能,提高分析和解决实际问题的能力。

1.3 设计任务及要求

(1)彩灯用8个发光二极管代替。

(2)电路具有控制彩灯点亮右移、左移、全亮及全灭等功能。(3)彩灯两点移动时间间隔为0.5秒。总体设计思路

2.1设计思路

本课题使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。

如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。同样的道理,可以让8个灯左移点亮,全亮、全灭。

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

2.2 系统结构框图

系统机构框图如图1所示。

开关输入AT89C51单片机图1 系统结构框图

流水灯样式 2.3 系统程序流程图

系统程序总流程图如图2所示。

单片机原理及系统课程设计报告

开始读入四个开关的状态否判断开关状态灯左移点亮灯右移点亮灯全亮灯全灭灯流动运行或全亮全灭结束

图2 系统框图 设计步骤

3.1硬件设计

硬件系统是指构成微机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电

单片机原理及系统课程设计报告

路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。本设计选用以AT89S51单片机为主控单元。显示部分:8个LED灯循环亮灭。

3.2单片机时钟电路

时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。

在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。此电路采用12MHz的石英晶体。时钟电路如图3所示。

图3 时钟电路图

3.3复位电路

电阻的作用是用于上电复位的,VCC以上电,由于电容两端电压不能突变,所以RST上为高电平,然后电容放电,RST就为低电平了,还可以用手动复位,此电路应用自动复位。复位电路如图4所示。

图4 复位电路图

3.4控制电路

控制电路用于控制工作电路的工作情况,根据要求来控制电路,本电路的控制电路用来控制流水灯的工作情况,当按下1、2、3、4各个开关时,电路具有左移、右移、全亮、全没的功能,具体的控制电路如图5所示。

单片机原理及系统课程设计报告

图5 开关电路图

3.5工作电路

(1)工作电路就是根据总的电路的指令,来反应工作情况。本电路的流水灯电路具体的如图6所示。

图6 流水灯电路图

单片机原理及系统课程设计报告

(2)根据各个模块的功能及他们的信号传输,连接电路如图7所示。

图7 整体电路图 软件设计

4.1设计要求

本系统的功能就时实现流水灯的循环点亮,主要有四个功能,第一,按下第一个按钮,彩灯向上点亮循环,按下第二个,彩灯向下循环点亮,按下第三个,彩灯全灭,按下第四个,彩灯全亮。彩灯用8个发光二极管代替。电路具有的控制彩灯点亮右移、左移、全亮及全灭的功能用按键切换彩灯状态,彩灯两点移动时间间隔为0.5秒。

4.2源程序见附录Ⅰ

单片机原理及系统课程设计报告 软件调试

软件调试一般分为以下四个阶段:

1、编写程序并查错;

2、在汇编语言的编译系统中编译源程序

3、对程序进行编译连接,并及时发现程序中存在的错误;

4、改正错误。

在软件调试过程中,对出现的错误进行了认真的分析和修改,多次调试成功后,能够很好的达到既定的设计效果。

此系统可以改进为可以通过对开关的调节来控制流水灯电路具有控制彩灯点亮右移、左移、全亮及全灭等功。心得体会

经过一段时间的努力,我们顺利的完成了这次单片机课设。这是一个磨练意志的过程。从课题的选择开始,计算器的设计、硬件和软件系统的设计、到最后的Proteus软件仿真完成,这其中经历了很多困难,但是更重要的是在这个过程中我得到了很大的锻炼。一方面通过C51单片机等一些器件的设计让我学习和掌握了单片机技术的基础知识和技术要点,也使以前学的很多知识都得到了运用;另一方面在用Proteus软件画电路图时,然后再转换成一维的WORD中进行编辑,这个过程中让我掌握了计算机辅助的设计技术。当然,这是一个需要不断的尝试,不断的校核,不断的修改,最后完成一个合理的设计的过程。需要的是细心和耐心。在很大程度上培养了我拼搏的工作精神。使我受益匪浅,更加明确了自己专业的方向。

通过本次课设,我不仅学到了关于单片机技术方面的许多专业知识,同时也让我感觉到团队合作的重要性。其实如何有效和快速的找到资料也是课设给我的启发,利用好图书馆和网络,是资源的到最好的利用。与他人交流思想是取得成功的关键,在交流中,不仅强化了自己原有的知识体系,也扩展了自己的思维。课设是一个通过思考、发问、自己解惑并动手、提高的过程。我会在以后的学习中不断学习,积累经验,完善自己。

对于这次单片机课程设计不仅巩固了以前所学过的知识,而且学到了很多在书本上没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。同时在设计的过程中发现了自己的不足之处,例如对以前所学过的知识理解得不够深刻,掌握得不够牢固,学习了单片机汇编语言。

单片机原理及系统课程设计报告

参考文献

[1] 王思明,张金敏,苟军年等著.单片机原理及应用系统设计.北京:科学出版社,2012 [2] 谭浩强著.C程序设计(第四版).北京:清华大学出版社,2010 [3] 冯博琴,吴宁著.微型计算机原理与接口技术(第3版).北京:清华大学出版社,2011

单片机原理及系统课程设计报告

附 录Ⅰ

源程序:

START:

START1:

LOOP1:

CJNE:

SHOW1:

LOOP2:

SHOW2:

LOOP3:

LOOP4:

DELAY: D0: D1:

D2:

ORG 0000H

AJMP START

ORG 0030H

MOV SP,#60H

MOV DPTR,#TAB

JNB P0.0,LOOP1 JNB P0.1,LOOP2 JNB P0.2,LOOP3 JNB P0.3,LOOP4 AJMP START1

CLR A

MOVC A,@A+DPTR A,#11111111B,SHOW1 AJMP START

MOV P1,A

ACALL DELAY

INC DPTR

AJMP LOOP1

MOV A,#09H

MOVC A,@A+DPTR

CJNE A,#00000000B,SHOW2 AJMP START

MOV P1,A

ACALL DELAY

INC DPTR

AJMP LOOP2

MOV A,#08H

MOVC A,@A+DPTR MOV P1,A

AJMP START

MOV A,#11H

MOVC A,@A+DPTR MOV P1,A

AJMP START

MOV R0,#10

MOV R1,#200 MOV R2,#123 NOP DJNZ R2,D2 DJNZ R1,D1 DJNZ R0,D0

单片机原理及系统课程设计报告

RET TAB:

DB 11111110B DB 11111101B DB 11111011B DB 11110111B DB 11101111B DB 11011111B DB 10111111B DB 01111111B DB 11111111B DB 01111111B DB 10111111B DB 11011111B DB 11101111B DB 11110111B DB 11111011B DB 11111101B DB 11111110B DB 00000000B

END

下载流水灯实验报告word格式文档
下载流水灯实验报告.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    嵌入式实验1 流水灯实验

    河南机电高等专科学校《嵌入式系统开发》课程实验报告 系部: 电子通信工程系班级: 电信#### 姓名: ###### 学号: ## 实验一搭建实验环境 一.实验简介 搭建嵌入式系统开发环......

    流水灯实训总结

    流水灯实训总结 1. 实训目的: I. II. III. 掌握单片机的硬件结构; 理解一个完整的单片机系统是由硬件和软件组成的。 学习流水灯的基本原理。 2. 实训内容: I. II. III. IV. 在......

    EDA课程设计流水灯设计

    EDA课程实践报告 基于verilog的流水灯设计 学院:物理与电气工程学院 专业:11级电子信息工程 姓名:蒋美菊 学号:111102088 基于verilog的流水灯设计 一、摘要 随着EDA技术发展......

    单片机课程设计led流水灯设计报告(精)

    目 录 一、 前 言 „„„„„„„„„„„„„„„„„„„„„„„ (1 1.1课题简介 „„„„„„„„„„„„„„„„„„„„„„ (1 1.2设计目的 „„„„„„„„„„......

    微课教学设计--利用单片机控制流水灯

    微课教学设计--利用单片机控制流水灯 【教学背景】 单片机原理及应用是电子信息工程以及其他电类专业必修的一门重要专业课程。该课程以MCS-51系列单片机为例,讲述单片机的内......

    单片机流水灯程序设计集锦 输入您的搜索字词 提交搜索表单文库

    单片机流水灯程序设计集锦输入您的搜索字词提交搜索表单请输入关键字搜索Web这篇文章已经浏览了:233次这里本站向大家介绍单片机几款流水灯设计程序 51单片机流水灯C语言源程......

    流现代诗歌

    一场大雨降临在伦敦的街头人群被好心的双层巴士收留流浪乐队在弹奏电话亭旁逗留幻想电波中传来异国的问候没有地址的信要向哪里寄邮冰凉的邮筒却都欣然地接受高脚酒杯 新调......

    实验报告

    《体育测量与评价》实验报告模板 课程名称:体育测量与评价 实验名称:ISAK全套人体测量指标(共39项)测试 一、预习报告 1.实验目的 ①通过实验强化体格及身体成分测量的有关知......