搜档网
当前位置:搜档网 › 任务一 流水灯控制

任务一 流水灯控制

任务一 流水灯控制
任务一 流水灯控制

项目二让单片机起舞

LED模块按照图2-5连接起来,单片机控制的流水灯的躯干就搭好了。

控制要求:实现8只LED全亮全灭闪烁。

方案一:设计思路如图2-6所示。

参考程序如下:

指令注释:MOV 内部RAM数据传送指令

LJMP 跳转指令

请在keil平台输入以上程序并通过编译,最后下载到主模块的单片机中。观察控制效果,

指令注释:LCALL 子程序调用指令

DJNZ 自减1不为零跳转指令

完成程序编写与调试,功能实现!

按照活动二中高度程序的步骤运行参考程序三,观察LED移动闪烁效果,体会“RL A 调试程序,从现象中说明“RL A”的作用是

的方式;

八路流水灯控制系统

1前言 在“模拟电子技术基础”与“数字电子技术基础”课程中,通常只介绍单元电路的设计、集成芯片的特性、功能等,而一个实用的电子系统通常是由多个单元电路组成的。因此,进行电子系统设计时,既要考虑系统总体电路的设计,还要考虑系统各部分电路的选择、设计及它们之间的相互连接。由于各种通用和专用的模拟、数字集成电路的大量涌现,所以在电子系统的方案框图确定后,除少数电子电路的参数需要设计计算外,大部分只需根据电子系统框图各部分要求正确选用模拟和数字集成电路的芯片。 常用电子系统设计通常包括:选择总体方案框图、单元电路设计与选择、电子元器件的选择、单元电路之间的连接、对电子系统进行电路搭试、对方案及单元电路参数进行修改、绘制总体电路,最后写出设计报告。 复杂的设计课题,通常需要对设计要求进行认真分析和研究,通过收集和查阅资料,在已学模拟和数字电子技术课程理论的基础上进行构思,从而提出实现设计要求的可能方案,并画出相应的框图。实现同一个设计要求的方案不止一个,这时就应对每一个设计方案的可行性及它们的优缺点进行比较,找出一个较为合理的设计方案。对于关键部分电路的可行性应在原理上要可行,而后需进行电路搭试,成功后才能确定电路的总体方案框图。电子课程设计是对以前学科知识的综合,检验我们掌握电子学科理论知识的程度,也是学科教学中十分重要的环节。通过把理论与实践相结合,提高理论水平,锻炼实践动手能力。同时,对于我们对电子学科的学习兴趣也是有极大的激发作用,让同学们在自己动手制作的过程中找到乐趣,加深对学科知识的理解及消化,为以后的学习和工作打下良好的基础。

在当今的社会里,彩灯已经成为我们生活的一部分,能给我们带来视觉上的享受还能美化我们的生活。三花样彩灯控制器主要是通过电路产生有规律变化的脉冲信号来实现彩灯的各种变化。它的主要器件是寄存器。现如今寄存器是数字系统常见的重要部件,在计算机中广泛用于存放中间数据。本次实验由于触发器具有记忆的功能,将移位寄存器设计成彩灯控制电路。由于电路本身实用,如果再通过计算机仿真,可以直观地看到循环彩灯控制效果。如果稍微改动控制电路,就可以改变电路的不同工作状态,控制彩灯变幻出不同的闪烁效果。 通过这次设计培养了我们严肃认真的工作态度和科学作风,为今后从事电路设计和研制电子产品打下初步基础,检验我们的理论实践能力,动手能力,动脑能力,分析和理解问题的能力,增强了大家对电子方面的学习兴趣及自学能力,知道了自己在哪一方面不足,为今后的学习提供了方向,使大家有质的提高。 1.1设计背景 以前过节的时候,班上开晚会,同学们都想用彩灯烘托一下节日气氛。通过两年来对专业课程的理论学习和实践,我们越发对彩灯设计产生了浓厚的兴趣。借这次学校安排我们的课程设计,我们决定亲手设计彩灯控制系统的程序,将理论与实践相结合,把自己在学校里面学过的东西应用于实际,不断深化自己在这方面的理解,并提高应用能力,使自己所学更有意义。 1.2实施计划 首先在图书馆查询资料,在网上收集相关论文,设计出彩灯控制系统的原理总图和单元电路图,再编写仿真软件,调试模块和软件,运行成功后做出电路板,加载程序,最后做出课程设计报告书。

双单片机控制流水灯(精)

案例8 双单片机通信控制流水灯 用串行工作方式进行单片机之间的通信,电路图如下图所示。两个89S51单片机通过串行口进行通信,设置U1使用的晶振频率是11.0592MHz,U2使用的晶振频率是22.1184MHz,U1的RXD接U2的TXD,U1的TXD接U2的RXD,U2接8个发光二极管,要求由U1向U2发送数据,使8个发光二极管按从左到右逐一点亮的流水灯效果。 MCS-51单片机之间的串行异步通信 1.串行口的编程串行口需初始化后,才能完成数据的输入、输出。其初始化过程如下: (1)按选定串行口的工作方式设定SCON的SM0、SM1两位二进制编码。 (2)对于工作方式2或3,应根据需要在TB8中写入待发送的第9位数据(地址为1,数据为0)。 (3)若选定的工作方式不是方式0,还需设定接收/发送的波特率。 (4)设定SMOD的状态,以控制波特率是否加倍。 (5)若选定工作方式1或3,则应对定时器T1进行初始化以设定其溢出率。 2.案例分析由于串行口通信时传输的“0”或者“1”是通过相对于“地”的

电压区分的,因此使用串行口通信时,必须将双方的“地”线相连以使其具有相同的电压参考点。需要注意的是,异步通信时两个单片机的串行口波特率必须是一样的。由于U1使用的晶振频率是11.0592MHz,U2使用的晶振频率是22.1184MHz,因此二者的串行口初始化程序不完全一样。假设使用240bit/s的波特率,使用串行工作方式1,Tl使用自动装载的方式2,则Ul的TH1应初始化为136,U2的TH1应初始化为16。 对应的程序完成如下功能:Ul和U2进行双工串行通信,Ul给U2循环发送流水灯控制字,U2收到控制字后送到P0口,点亮相应发光二极管,双方都用中断方式进行收发。 (1)单片机U1的源程序 #include unsigned char sdata=0xfe; void isr_uart(); void main() { TMOD=0X20; TH1=136; TL1=136; SCON=0x40; PCON=0; TR1=1; EA=1;ES=1; SBUF=sdata; while(1); } void isr_uart() interrupt 4 {

利用8255A芯片实现流水灯闪烁设计

目录 摘要 (2) 第1章利用8255A芯片实现流水灯闪烁设计的概述 (2) 第2章三种方案的论述与最终方案的确定 (2) 2.1第一种方案的论述 (2) 2.2第二种方案的论述 (5) 2.3第三种方案(最终方案)的论证 (10) 第3章测试结果及体会心得 (13) 第4章致谢 (14) 第5章参考文献 (14) 附录1 方案一Proteus仿真电路效果图 (15) 附录2 方案一源程序代码 (16) 附录3 方案二Proteus仿真电路效果图 (18) 附录4 方案二源程序代码 (19) 附录5 方案三(最终方案)Proteus仿真电路效果图 (20) 附录6 方案三(最终方案)源程序代码 (21)

摘要: 8255A是一种通用的可编程并行I/O接口芯片(Programmable Peripherial Interface),它是为Inter系列微处理器设计的配套电路,也可用于其它微处理器系统中。通过对它进行编程,芯片可工作于不同的工作方式。此次课程设计的目的就是利用端口和8255协同工作来实现LED显示功能,对8255A芯片进行编程使流水灯左移或右移,通过延时程序使流水灯进行顺序点亮。通过这次课程设计掌握8255A的功能特点、工作原理以及显示器接口的基本原理与方法技术。 关键词: 8086芯片AT89C51单片机8255A芯片LED流水灯 第1章利用8255A芯片实现流水灯闪烁设计的概述 流水灯在日常的生活中有着广泛的应用,例如,许多楼面上的彩灯广告就是应用了流水灯设计。此次的课程设计的题目是利用了端口和8255A协同工作来实现LED显示功能,编写程序,使用8255的A口和B口均为输出,接8个或16个发光二极管,实现流水灯的显示效果。在实验中8255A的A和B两个端口不能同时赋值,从而我们可以用通用寄存器BX对所需要赋值的数据进行存储,因为BX可以分从高8位寄存器BH和低8位寄存器BL两部分进行独立的操作,我们用寄存器BH对A口进行赋值,用寄存器BL对B口进行赋值,通过延时一段时间再对BH 和BL进行移位和输出,实现了流水灯的效果。 第2章三种方案的论述与最终方案的确定 2.1第一种方案的论述 第一种方案,我们使用了8086CPU芯片与8255A芯片一起实现了流水灯闪烁的设计,同时还使用了地址锁存器74LS373芯片。74ls373是常用的地址锁存器芯片,它是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片。在方案一中,当8086CPU的引脚ALE(地址锁存允许信号,输出,高电平有效,用作地址锁存器74LS373的锁存控制信号)处于下降沿时将8086CPU输出的地址信息进行锁存,以定义8255A的工作方式。下面先对74LS373芯片进行简介: 1.地址锁存器74LS373的内部电路与工作原理

单片机控制左右来回循环的流水灯

左右来回循环的流水灯 设计要求 8个发光二极管LED0~LED7经限流电阻分别接至P1口的P1.0~P1.7引脚上,阳极共同接高电平。编程实现制作左右来回循环的节日彩灯,显示规律如下图所示。 题37图节日彩灯的花样显示的规律 为了使显示效果更加绚丽多彩,P1端口8个引脚分别接有不同颜色的发光二极管。具体如题37表所示。 题37表P1口8个引脚的不同颜色的发光二极管 使用C51编流水灯程序以及设计相应的硬件电路十分简单,且有多种方法。本方案力求程序最简化最清晰原则,用NS图(盒图)表示算法如下:

程序中设置中间变量temp用来给P1口赋值,命令_crol_和_cror_用于使temp左移或右移,例如当temp=11111110B时,执行_crol_(temp,1)之后temp=11111101,应用此两条语句必须把头文件包含进来。 全部代码如下: #include #include unsigned char temp; //定义字符变量temp,temp左移或右移并给连接LED的P1口赋值 int a; //定义延迟函数delay() void delay(void); void main() { temp=0xfe; //给temp赋初值 P1=temp; //temp赋值给P1口,第一个LED(红色)点亮 while(1) //主程序,括号中的程序将一直循环 { for(a=0;a<7;a++) //左移部分,LED从左到右依次点亮 { temp=_crol_(temp,1); //_crol_语句控制变量temp左移 delay(); //每个灯点亮之后延迟一会在点下一个灯 P1=temp; }

单片机流水灯实验报告

流水灯实习报告 一、实验原理 单片机通过P0口连接锁存器74ls273,P0同时作为低八位地址,实验板内P2口连接74ls138,任意一个输出连接74ls273片选,再将74ls273接八个LED 灯,通过软件控制对74ls273送入显示数据就可以按要求显示了。 二、硬件原理图 三、实验程序 ORG 00H AJMP START ORG 001BH AJMP INT ORG 0100H START: MOV SP,#60H MOV TMOD,#10H MOV TL1,#00H MOV TH1,#4CH MOV R0,#00H MOV R1,#20 SETB TR1 SETB ET1 SETB EA

INT: PUSH ACC PUSH PSW PUSH DPL PUSH DPH CLR TR1 MOV TL1,#B0H MOV TH1,#3CH SETB TR1 DJNZ R1,EXIT MOV R1,#20 MOV DPTR,#DATA MOV A,R0 MOVC A,@A+DPTR MOV DPTR,#8000H Movx @DPTR,A INC R0 ANL 00,#07H EXIT: POP DPH

POP PSW POP ACC RETI DATA: DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,0H END 四、实验功能 以实验机上74LS273做输出口,接八只发光二极管,编写程序,使开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去. 五、实验总结 通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。而安排课程设计的基本目的,是在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟和领悟力。 尤其是观察、分析和解决问题的实际工作能力。它的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。这也是一次预演和准备毕业设计工作。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。课程设计促进了我

多功能多路流水灯控制电路的设计仿真与制作

附件1: 学号:0121209310130 课程设计 题目多功能多路流水灯控制电路的设 计仿真与制作 学院信息工程学院 专业电子信息工程 班级电信1201 姓名鲁玲 指导教师孟哲 2014 年 6 月20 日

课程设计任务书 学生姓名:鲁玲专业班级:电信1201 指导教师:孟哲工作单位:信息工程学院 题目: 多功能多路流水灯控制电路的设计仿真与制作 初始条件: 集成译码器、计数器、555定时器、移位寄存器、LED和必要的门电路或其他器件。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具 体要求) 1、课程设计工作量:1周内完成对数字频率计的设计、仿真、装配与调试。 2、技术要求: 错误!未找到引用源。设计一个具有16路(或矩阵)LED不同显示方式或显示图形的控制电路。 错误!未找到引用源。不同显示方式的控制可以是自动结合按键手控等。 ③确定设计方案,按功能模块的划分选择元、器件和中小规模集成电路,设计分 电路,画出总体电路原理图,阐述基本原理。 3、查阅至少5篇参考文献。按《武汉理工大学课程设计工作规范》要求撰写设计报告 书。全文用A4纸打印,图纸应符合绘图规范。 时间安排: 1)第1-2天,查阅相关资料,学习设计原理。 2)第3-4天,方案选择和电路设计仿真。 3)第4-5天,电路调试和设计说明书撰写。 4)第6天,上交课程设计成果及报告,同时进行答辩。 指导教师签名:年月日

系主任(或责任教师)签名:年月日

前言 (2) 1 设计方案 (3) 1.1 设计意义 (3) 1.2 设计目的 (3) 1.3 原理图及工作原理 (3) 2 电路板焊接技术介绍 (4) 2.1 焊接操作要领 (4) 2.2 注意事项 (5) 2.3.焊接调试 (6) 3 电路板的安装与制作 (6) 3.1 确定电路板整体布线图 (6) 3.2 555振荡电路 (6) 3.3 74LS191计数部分 (7) 3.4 74LS138译码电路和LED显示部分 (7) 3.5 5V直流稳压电源电路 (7) 4 电路板的调试 (8) 4.1 调试方法和步骤 (8) 4.2 出现的问题及处理方法 (8) 5 电路实拍图 (10) 6 总结及心得体会 (12) 7 元件清单 (13) 8 参考文献 (14) 附件 (15)

(完整word版)51单片机流水灯

51单片机的流水灯控制 班级:100712 姓名:全建冲 学号:10071047

一、设计要求 用51单片机设计一个流水灯的控制方案,要求采用定时器定时,利用中断法控制流水灯的亮灭,画出电路图和程序流程图,写出程序代码以及代码注释。 二、电路原理图 原理图分析: 本原理图采用STC89S52单片机控制8个LED灯,其中8个LED灯的负极接单片机的P1端口,正极通过1KΩ排阻连接到电源上。原理图中还给出了晶振与复位端,以保证控制器的稳定工作。

三、程序流程图

四、程序代码及注解 1.非中断定时器控制 #include #include//包含了_crol_函数的头文件 #define uchar unsigned char #define uint unsigned int uint i=0; uchar a=0xfe; void main() { TMOD=0x01;//设置工作方式为定时器0,16位手动重装初值 TH0=(65536-46080)/256;//50毫秒定时赋初值 TL0=(65536-46080)%256; TR0=1;//启动定时器0 while(1) { If(TF==1)//读溢出标志位 { TH0=(65536-46080)/256;//重新赋初值 TL0=(65536-46080)%256;

i++; if(i==10)//500毫秒定时 { i=0; P1=a;//P1端口赋值 a=_crol_(a,1);//循环左移 } TF=0;//清除定时器溢出标志 } } } 程序分析:本程序采用非中断定时器法控制流水灯,核心语句在于读取标志位TF位,TF为定时器溢出标志位,溢出时硬件自动置一,所以循环读取标志位以判断定时器是否溢出,而每次溢出需要手动清零,否则定时器无法再次溢出,利用标志i读取10次即可达到500毫秒的定时。另外需要注意的是单片机晶振为11.0592MHz,所以计时一个数的时间为12/11.0592=1.085us,故定时50毫秒的计数为50000/1.085=46080。 2.中断定时器控制 #include

单片机c语言编程控制流水灯

说了这么多了,相信你也看了很多资料了,手头应该也有必备的工具了吧!(不要忘了上面讲过几个条件的哦)。那个单片机究竟有什么 功能和作用呢?先不要着急!接下来让我们点亮一个LED(搞电子的应该知道LED是什么吧^_^) 我们在单片机最小系统上接个LED,看我们能否点亮它!对了,上面也有好几次提到过单片机最小系统了,所谓单片机最小系统就是在单片机 上接上最少的外围电路元件让单片机工作。一般只须连接晶体、VCC、GND、RST即可,一般情况下,AT89C51的31脚须接高电平。 #include //头文件定义。或用#include其具体的区别在于:后者定义了更多的地址空间。 //在Keil安装文件夹中,找到相应的文件,比较一下便知! sbit P1_0 = P1 ^ 0; //定义管脚 void main (void) { while(1) { P1_0 = 0;//低电平有效,如果把LED反过来接那么就是高电平有效 } } 就那么简单,我们就把接在单片机P1_0上的LED点亮了,当然LED是低电平,才能点亮。因为我们把LED的正通过电阻接至VCC。 P1_0 = 0; 类似与C语言中的赋值语句,即把0 赋给单片机的P1_0引脚,让它输出相应的电平。那么这样就能达到了我们预先的要求了。 while(1)语句只是让单片机工作在死循环状态,即一直输出低电平。如果我们要试着点亮其他的LED,也类似上述语句。这里就不再讲了。 点亮了几个LED后,是不是让我们联想到了繁华的街区上流动的彩灯。我们是不是也可以让几个LED依次按顺序亮呢?答案是肯定的!其 实显示的原理很简单,就是让一个LED灭后,另一个立即亮,依次轮流下去。假设我们有8个LED分别接在P1口的8个引脚上。硬件连接,在 P1_1--P1_7上再接7个LED即可。例程如下: #include sbit P1_0 = P1 ^ 0; sbit P1_1 = P1 ^ 1; sbit P1_2 = P1 ^ 2; sbit P1_3 = P1 ^ 3; sbit P1_4 = P1 ^ 4; sbit P1_5 = P1 ^ 5; sbit P1_6 = P1 ^ 6; sbit P1_7 = P1 ^ 7; void Delay(unsigned char a) { unsigned char i; while( --a != 0) {

流水灯电路的制作

流水灯电路的制作 一、概述: 随着电子技术的快速发展尤其是数字技术的突飞猛进,多功能流水灯凭着简易,高效,稳定等特点得到普遍的应用。在各种娱乐场所、店铺门面装饰、家居装潢、城市墙壁更是随处可见,与此同时,还有一些城市采用不同的流水灯打造属于自己的城市文明,塑造自己的城市魅力。目前,多功能流水灯的种类已有数十种,如家居装饰灯、店铺招牌灯等等。所以,多功能流水灯的设计具有相当的代表性。 多功能流水灯,就是要具有一定的变化各种图案的功能,主要考察了数字电路中一些编码译码、计数器原理,555定时器构成时基电路,给其他的电路提供时序脉冲,制作过程中需要了解相关芯片(NE555、CD4017)的具体功能,引脚图,真值表,认真布局,在连接过程中更要细致耐心。 二、电路原理图 三、电路工作原理 多功能流水灯原理电路图如上图所示。原理电路图由振荡电路、译码电路和光源电路三部分组成。本文选用的脉冲发生器是由NE555与R2、R3及C1组成的多谐振荡器组成。主要是为灯光流动控制器提供流动控制的脉冲,灯光的流动速度可以通过电位器R3进行调节。由于R3的阻值较大,所以有较大的速度调节范围。灯光流动控制器由一个十进制计数脉冲分配器CD4017和若干电阻组成。 CD4017的CP端受脉冲发生器输出脉冲的控制,其输出端(Q0~Q9)将输入脉冲按输入顺序依次分配。输出控制的脉冲,其输出控制脉冲的速度由脉冲发生器输出的脉冲频率决定。10

个电阻与CD4017的10个输出端Q0~Q9相连,当Q0~Q9依次输出控制脉冲时10个发光二极管按照接通回路的顺序依次发光,形成流动发光状态,即实现正向流水和逆向流水的功能。电源电路所采用的电源为。 四、板的设计 五、元器件清单 六、电路的组装与调试 1、电路的组装方法和步骤 (1)筛选元器件。对所有购置的元器件进行检测,注意它们的型号、规格、极性,应该保质量。 (2)按草图在PCB板上组装并焊接。 要求:①元器件布局整齐、美观,同类型元器件高度一致;

基于51单片机的流水灯控制

按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。 其具体硬件组成如图1所示。 图1 流水灯硬件原理图 从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的

视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。 3.软件编程 单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。下面我们以最简单的流水灯控制功能即实现8个LED灯的循环点亮,来介绍实现流水灯控制的几种软件编程方法。 3.1位控法 这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,从而来控制相应LED灯的亮灭。程序如下:ORG 0000H ;单片机上电后从0000H地址执行 AJMP START ;跳转到主程序存放地址处 ORG 0030H ;设置主程序开始地址 START:MOV SP,#60H ;设置堆栈起始地址为60H CLR P1.0 ;P1.0输出低电平,使LED1点亮 ACALL DELAY ;调用延时子程序 SETB P1.0 ;P1.0输出高电平,使LED1熄灭

最新五种编程方式实现流水灯的单片机c程序讲课教案

五种编程方式实现流水灯的单片机C程序 //功能:采用顺序结构实现的流水灯控制程序 /*此方式中采用的是字操作(也称为总线操作)*/ #include void delay(unsigned char i); //延时函数声明 void main() //主函数 { while(1) { P1 = 0xfe; //点亮第1个发光二极管,0.000389s delay(200); //延时 P1 = 0xfd; //点亮第2个发光二极管,0.155403s,0.1558 delay(200); //延时 P1 = 0xfb; //点亮第3个发光二极管 delay(200); //延时 P1 = 0xf7; //点亮第4个发光二极管 delay(200); //延时 P1 = 0xef; //点亮第5个发光二极管 delay(200); //延时 P1 = 0xdf; //点亮第6个发光二极管 delay(200); //延时 P1 = 0xbf; //点亮第7个发光二极管 delay(200); //延时 P1 = 0x7f; //点亮第8个发光二极管 delay(200); //延时 } } //函数名:delay //函数功能:实现软件延时 //形式参数:unsigned char i; // i控制空循环的外循环次数,共循环i*255次 //返回值:无 void delay(unsigned char i) //延时函数,无符号字符型变量i为形式参数{ unsigned char j, k; //定义无符号字符型变量j和k for(k = 0; k < i; k++) //双重for循环语句实现软件延时 for(j = 0; j < 255; j++); } //功能:采用循环结构实现的流水灯控制程序 //此方式中采用的移位,按位取反等操作是位操作 #include //包含头文件REG51.H void delay(unsigned char i); //延时函数声明 void main() //主函数

嵌入式系统流水灯,按键,定时器实验报告

嵌入式系统应用 实验报告 姓名: 学号: 学院: 专业: 班级: 指导教师:

实验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实验结果

利用电位器改变流水灯速度控制程序

#include #include #include #include unsigned int x; unsigned int y; unsigned int mode = 1; unsigned int AD_value; main() { bit key_mode1 = 1; bit key_mode2 = 1; PORT_INI(); CLK_ICKR|=0x01; //开启内部HSI while(!(CLK_ICKR&0x02));//HSI准备就绪 CLK_SWR=0xe1; //HSI为主时钟源 CLK_CKDIVR=0x00; _asm("rim");//开总中断 TIM1_CR1 = 0b10000100; TIM1_PSCRH = 0x00; //定时时间0.6S TIM1_PSCRL = 1; //20分频 TIM1_ARRH = 0xEA; TIM1_ARRL = 0x60;//自动重装载寄存器 TIM1_IER|=0X01; //中断使能寄存器 TIM1_CNTRH = 0X00; TIM1_CNTRL = 0X00; TIM1_EGR |=0X01; //软件产生更新事件,让预分频立即有效。TIM1_SR1 = 0; //状态寄存器 TIM1_CR1 |=0X01; //TIM1_RCR=0; ADC_CR1 = 0x00; //分频系数为4 单次转换模式 ADC_CR2 = 0x00; //非外部触发数据右对齐 ADC_CSR = 0x05; //禁止转换结束中断设置转换通道ADC_CR1 |= 0x01; //第一次写1是从低功耗模式唤醒

多变流水灯控制电路.doc

(1)电路结构与特点 多变流水灯控制电路如图2S所示。图中的多谐振荡器由非门U5;A、U5:B及R1、R2、C1组成,其振荡频率为2H2。三极管开关电路由R3、v1组成,它并联在R2(决定频率的元件之一)的两端。当v1饱和时,相当于R2两端并联一电阻,多谐振荡器的频率将 变为原来的3倍。多谐振荡器产生的方波由两路输出,其中b4日1u5:A输出的一路输入U4的12级串行二进制计数分频器。该计数分频器将输入端信号输出,分频作用于v1。在U4的13脚输出的一个方波的前半段,其输出电平为“o”,v1截止,振荡器频率保持2H2;在后半段v1饱和,使振荡频率变为6Hz。非门U5:B输出至U1的BCD可预置数同步可逆计数器。其4、12、13、3脚为BCD码数据预置端,6、11、14、2脚为BCD码数据输出端。9脚为清零端,当其为高电平时,输出的数据为咖零数。l脚为置数允许端,当其为 高电平而9脚为低电平时,输出的数据与4、12、13、3脚预置数相同。I o脚为加、减计数

控制端,高电平为加计数,低电乎为减计数。5脚为进位输入端,无进位时,固定为低电乎。15脚为时钟脉冲输入端,脉冲上升沿有效。U1输出直接至U2的咖十进制译码器,将BcD码数据译为十进制码,从相应的十进制码数输出端输出。电路中Ul的4、12脚接高电乎,13、3脚接低电乎,故预置数为o011,即十进制数的3。u1的10脚由U4的输出端提供控制信号,当U1的15脚连续不断地输入时钟脉冲时,如果u1的10脚为高电平,则U1输出的比D码数据经U2译码,U2的3、14、2、15脚依次输出高电平。当U2的1 脚输出高电平时,经R5、C2稍加延时输入非门U5:D、U5lc整形,将经RC延时使前 沿变得较平滑的波形重新整形为方波,以避免ul同步计数器产生信号丢失。整形后的高 电乎至U1的9脚时,U2的3脚迅速变为高电乎输出。于是开始了3、14、2、15脚依次输出高电乎的重复过程。当u1的10脚为低电平时,计数器按逆向过程15、2、14、3脚顺序输出高电乎,原理同前所述。由u2输出的信号分成两路,其中一路输入u3四双向开关,其任一组开头在控制端为高电平时呈低阻通态,而在控制端为低电平时为高阻断态。由 U4的12、14脚输出端经V3、V4、R15组成“或”门电路,同时控制U3四组开关的通、断。 当开关通时,u2的一个输出端的高电乎可以使两个三极管饱和,而开关为断态时,此高电乎只能使一个三极管饱和。三极管由集电极反相输出,控制双向可控硅vsl—vs4的通、断,从而实现对彩灯的控制。 (2)无路件选择 在图23中,U1选用CD45lo,U2选用凹4028,U3选用CD4066,U4选用CD4040,

左右来回循环的流水灯实验报告

青 岛 科 技 大 学 微机原理与接口技术综合课程设计(报告) 题 目 __________________________________ 指导教师__________________________ 学生姓名__________________________ 学生学号__________________________ _______________________________院(部)____________________________专业________________ 班 ______年 ___月 ___日 直流电机控制综合实验 周艳平 宋雪英 01 信息科学技术学院 计算机科学与技术0961 2012 12 27

摘要 (2) 1、单片机概述 (2) 2、仿真软件介绍 (2) 3、需求分析 (2) 一、课程设计目的 (3) 二、课程设计要求 (3) 三、实验内容 (3) 1、设计任务与要求 (3) 2、系统分析 (3) 1).硬件电路设计(画出原理图、接线图) (4) 2)软件框图 (5) 3、用keil建项目流程 (7) 4、程序清单 (7) 4、系统调试 (9) 四、设计总结(结论) (10)

摘要 近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。而AT89C51就是其中一种,它是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。本课程设计介绍一种LED小灯控制系统的设计方法,以单片机作为主控核心,与按键、排阻、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。能够通过按键控制8个LED小灯从左到右依次点亮。 关键字:单片机、LED流水灯 1、单片机概述 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微 型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处 理器、存储器和I/O 接口电路等。因此,单片机只需要和适当的软件及外部设备相结合, 便可成为一个单片机控制系统。 单片机经过1、2、3、3 代的发展,目前单片机正朝着高性能和多品种方向发展,它 们的CPU 功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。 2、仿真软件介绍 (1).Keil uv3 运行Keil uv3 新建工程:菜单“Preject->New Preject”,保存为*.uv2,选择芯片型号,copy否 新建文件:菜单“File->New”,保存为*.c,编写程序 将源文件添加到工程:在左侧project workspace的source group1点右键选择addfile加入*.c 设置工程:点菜单栏上的,选Target,设晶振值;选Output,点create Hex file以生成少些文件;选Debug,选择软件仿真(simulator)或硬件仿真(Keil Monitor)方式。 编译链接:点菜单栏上的进行编译,或点菜单栏上的进行编译链接,或点菜单栏上的进行重新编译链接,或点菜单栏上的停止编译。 编译链接后生成*.hex文件,可烧写到单片机。 (2).Proteus 使用Proteus仿真 点击单片机,在Program Files处选择*.hex文件,OK,进行仿真 RESPACK--8 排阻,就是好多电阻连载一起,有一个公共端,1端为公共端接VCC(上拉)或地(下拉) 一般接在51单片机P0口,因P0口内没有上拉电阻,不能输出高电平,所以要接上拉电阻。 3、需求分析

51单片机LED流水灯拖尾效果

高级流水灯--水滴效果(渐变带拖尾效果)实现和讲解 简介 学习嵌入式第一个例子通常都是控制一个LED亮灭,然后是花样繁多的流水灯,但不管灯的花样如何变化,单个LED的亮度没有变化,只有亮、灭两个状态,本章我们实现如何控制LED的亮度。 1 什么是PWM 脉冲宽度调制(Pulse Width Modulation,简称PWM),是利用微处理器的数字输出来对模拟电路进行控制的一种技术。 在本章的应用中可以认为PWM就是一种方波。比如图1: https://www.sodocs.net/doc/0a4375992.html,/bbs_upload782111/files_48/ourdev_701979FVHE6E.png (原文件名:120611_0.png) 图1 方波 是周期为10ms,占空比为60%的PWM。 占空比:高电平在一个周期之内所占的时间比率。 2 硬件设计 在例说51单片机的第三章,我们讲过如何控制开发板上LED的亮灭。首先译码器输出端LEDS6为低,T10导通,给8个LED供电,然后通过缓冲器8个输出端BD0~BD7的控制LED的亮灭(低亮高灭)。https://www.sodocs.net/doc/0a4375992.html,/bbs_upload782111/files_48/ourdev_701980ZDAXQ9.png (原文件名:120611_1.png) 图2 LED硬件连接 如果BD口输出高低不断变化,则LED会闪烁;如果这种高低电平变化非常快,由于人的视觉暂留现象,LED就会出现不同的亮度。 3 软件设计 3.1 PWM能否控制亮度 下面我们就用实践验证PWM是否能够控制LED的亮度,测试代码如下: 程序清单L1:验证PWM能否控制LED的亮度 1 #include 2 #include "my_type.h" 3 #include "hw_config.h" 4 5 6 void main(void) 7 { 8 u8 i = 0; 9 10 //使能独立LED的供电,即LEDS6输出低电平 11 LEDEN = 0; 12 ADDR0 = 0; 13 ADDR1 = 1; 14 ADDR2 = 1; 15 ADDR3 = 1;

流水灯控制论文

湄洲湾职业技术学院七彩心形流水灯说明书 系别: 班级:专业: 姓名:学号: 导师姓名职称:实验师

2016年11月20日 目录 1.前言............................................ 错误!未定义书签。 2.系统设计技术参数要求............................. 错误!未定义书签。 3.系统设计......................................... 错误!未定义书签。 3.1 系统设计总体框图........................... 错误!未定义书签。 3.2 各模块原理说明............................. 错误!未定义书签。 3.3 系统总原理图说明........................... 错误!未定义书签。 3.4 系统印刷电路板的制作图..................... 错误!未定义书签。 3.5 系统的操作说明............................. 错误!未定义书签。 3.6系统操作注意事项........................... 错误!未定义书签。 系统设计参考文件............................... 错误!未定义书签。 致谢词......................................... 错误!未定义书签。 附录........................................... 错误!未定义书签。

单片机跑马灯(流水灯)控制实验报告

单片机实验报告 姓名: 学号: 一、 实验实现功能: 1:计数器功能 2:流水灯 二、 具体操作: 1、计数器功能 数码管的动态显示。每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。 2、流水灯 当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms 。 三、 程序流程图 开始 定时器T0 设置初值,启动定时器, 打开中断 复位 Key2按下 中断关闭 计数器模式 计数器加1 Key3按下 流水灯模式 数码管显示数字加1 跑马灯点亮间隔50ms Key1按下中断打开

四、程序 #include typedef unsigned char uint8; typedef unsigned int uint16; //类型定义 sbit P2_1 = P2^1; sbit P2_2 = P2^2; sbit P2_3 = P2^3; sbit P2_4 = P2^4; //位声明四个数码管开关 sbit Key2 = P3^2; sbit Key3 = P3^3; //位声明2个按键K2和K3 sbit Ledk = P2^0 ; //LED 开关 void delay(uint16 i); //延时函数声明 void refresh (); // 数码管刷新函数声明 void liushuideng(); //流水灯函数声明 uint8 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //数码管的真值表 uint8 out[4] = {0}; // 数组变量 uint16 counter=0; //用作计数器的变量 uint16 Time_counter=0; //用作定时器的变量 void main() //主函数 { TMOD = 0x01; //定时器0,工作方式一 TH0 = 0xFC; TL0 = 0x18; //定时器初值使每次循环为1ms TR0 = 0; //定时器0开始作 ET0 = 0; // 定时器中断关 EA = 0; // 关中断 while(1) //计数器模式 { Ledk =1 ; //led开关关 out[0]=number[counter%10]; //取个位 out[1]=number[counter%100/10]; //十位 out[2]=number[counter%1000/100]; //百位 out[3]=number[counter/1000]; //千位 if (!Key2) //计数器加1 { ++counter; //自加 out[0]=number[counter%10]; //取个位 out[1]=number[counter%100/10]; //十位 out[2]=number[counter%1000/100]; //百位 out[3]=number[counter/1000]; //千位

相关主题