花样流水灯设计

合集下载

DSP实验一:花样流水灯设计

DSP实验一:花样流水灯设计

由于采用 CCS5.5 版本导入工程后编译存在很多错误 (包括路径修 改、软件安装缺少驱动等问题) ,捣鼓了半天也搞不好,于是果断放 弃 CCS5.5,安装 CCS8.0 集成开发环境,以正确快速进行实验。 如一个工程前,首先,从 CCS8.0 中的 Resource Explorer 找 到 F28335 例程。
将其导入到 CCS8.0 里面,然后修改里面的 MAIN 函数。如图
可以看出,工程名为“Example_2833xGpioToggle”的主函数包含在 C 文件“example_LEDKey”中。 添加自己的源程序代码, 即可编译成功。
模式*开始 延时控制开始
GPIO 单口控制
7组
延时控制子函数
高 速
中 速
低 速
键扫描 返回
返回
键扫描:采用线键盘(采用矩阵扫描的意义不大) SW1-SW2-SW3 控制流水灯模式,SW4-SW5-SW6 控制流水灯速度。 四、源代码: (注:函数 DELAY_US()为 F28335 官方库函数,表示延时**微秒) A、宏定义、全局变量及子函数声明
// 本例使用下面的GPIO配置 Gpio_select(); // 步骤 3. 清除所有中断初始化中断向量表: // 禁止CPU全局中断 DINT; // 初始化PIE控制寄存器到他们的默认状态. // 这个默认状态就是禁止PIE中断及清除所有PIE中断标志 // 这个函数放在DSP2833x_PieCtrl.c源文件里 InitPieCtrl(); // 禁止CPU中断和清除所有CPU中断标志 IER = 0x0000; IFR = 0x0000; //初始化PIE中断向量表,并使其指向中断服务子程序(ISR) // 这些中断服务子程序被放在了DSP280x_DefaultIsr.c源文件中 // 这个函数放在了DSP2833x_PieVect.c源文件里面. InitPieVectTable();

花样流水的灯课程设计

花样流水的灯课程设计

花样流水的灯课程设计一、课程目标知识目标:1. 让学生理解并掌握“花样流水”灯的制作原理,包括电路连接、灯光控制等方面的基础知识。

2. 使学生了解“花样流水”灯在生活中的应用,提高对物理知识在实际应用中的认识。

技能目标:1. 培养学生动手操作能力,能够独立完成“花样流水”灯的制作。

2. 提高学生团队协作能力,学会在小组合作中共同解决问题,完成作品。

情感态度价值观目标:1. 培养学生对科学的兴趣和好奇心,激发他们探索未知世界的热情。

2. 引导学生关注生活中的科技创新,培养创新精神和实践能力。

3. 培养学生节能环保意识,让他们认识到科技发展应与环境保护相结合。

课程性质:本课程为实践性课程,结合物理知识,以学生动手制作为主,注重培养学生的实践能力和创新能力。

学生特点:六年级学生具有较强的动手操作能力和好奇心,对新鲜事物感兴趣,具备一定的团队合作意识。

教学要求:教师应引导学生主动探究,注重启发式教学,让学生在动手实践中掌握知识,提高能力。

同时,关注学生的情感态度价值观培养,使他们在课程学习中得到全面发展。

在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容本课程依据课程目标,选择以下教学内容:1. 电路基础知识:介绍电路的组成、电路图的识别、电路连接方式等,为学生制作“花样流水”灯奠定基础。

(对应教材章节:第二章 电路基础)2. 传感器原理:讲解传感器的工作原理、种类及其在“花样流水”灯中的应用。

(对应教材章节:第五章 传感器)3. 灯光控制技术:学习灯光亮度、颜色及动态效果的控制系统,使学生能够设计出独特的“花样流水”灯效果。

(对应教材章节:第七章 光电控制系统)4. 实践操作:指导学生动手制作“花样流水”灯,包括电路搭建、灯光调试等环节。

教学内容安排如下:第一课时:电路基础知识学习,了解“花样流水”灯的制作原理。

第二课时:学习传感器原理,探讨其在“花样流水”灯中的应用。

第三课时:学习灯光控制技术,掌握灯光效果的调整方法。

eda花样流水灯的课程设计

eda花样流水灯的课程设计

eda花样流水灯的课程设计一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握花样流水灯的设计原理;2. 学生能描述流水灯电路的工作原理,了解相关电子元件的功能和连接方式;3. 学生掌握C语言编程基础,能编写简单的程序控制流水灯的显示效果。

技能目标:1. 学生能运用所学知识,设计出具有创意的花样流水灯电路;2. 学生通过实践操作,提高焊接和电路调试的能力;3. 学生通过团队协作,学会沟通和解决问题,提高项目实践能力。

情感态度价值观目标:1. 学生对电子设计产生兴趣,培养创新意识和探索精神;2. 学生认识到科技发展对社会进步的重要性,增强社会责任感和使命感;3. 学生在团队协作中,学会尊重他人、分享成果,培养良好的团队合作精神。

分析课程性质、学生特点和教学要求:本课程为电子技术与应用的实践课程,适用于初中或高中年级学生。

学生在之前的学习中已经掌握了基本的电路知识和C语言编程基础。

课程注重实践操作,鼓励学生创新设计,培养学生的动手能力和团队协作能力。

课程目标具体、可衡量,旨在让学生通过实践,掌握EDA技术的基本应用,提高电子设计能力,同时注重培养学生的情感态度价值观,为今后的学习和发展奠定基础。

二、教学内容本课程教学内容主要包括以下三个方面:1. 电子设计自动化(EDA)基础理论- 了解EDA的基本概念、发展历程和应用领域;- 学习流水灯的设计原理和电路组成;- 掌握相关电子元件的功能、符号和连接方式。

2. 流水灯电路设计与编程- 学习流水灯电路的设计方法,分析不同显示效果的实现原理;- 掌握C语言编程基础,编写控制流水灯的程序;- 结合教材相关章节,实践操作,调试电路。

3. 团队协作与项目实践- 分组进行项目设计,明确分工,培养团队协作能力;- 制定项目进度计划,按计划完成电路设计、编程、调试和展示;- 教师指导,学生互评,总结项目实施过程中的经验教训。

教学内容安排和进度:第一周:EDA基础理论学习和流水灯设计原理了解;第二周:学习C语言编程基础,编写简单的流水灯程序;第三周:分组项目实践,进行电路设计和调试;第四周:项目总结与展示,交流学习心得。

单片机实训报告——花样流水灯的制作

单片机实训报告——花样流水灯的制作

单片机实训报告——花样流水灯的制作班级:电气一班学号:110101127姓名:李亚龙一、花样流水灯的设计方案流水灯实际上就是一个带有八个发光二级管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。

如果要让P0.0口的LED2亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的LED1熄灭,就要把P0.0口的电平变为高电平;同理,接在P0.0~P0.7口的其他7个LED的电亮和熄灭的方法同LED2。

因此,要实现流水灯功能我们只要将发光二极管LED2~LED9依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。

对8段LED数码管显示器的控制,包括“显示段”和“公共端”两个地方的控制。

其中显示段用来控制字符的形状,公共端用来控制若干个LED中的那一只被选中,前者称为“段选”,后者称为”位选”。

只有二者结合起来,才能在指定的LED上显示指定的字形。

显然,要显示某种字形就应该使此字形的相应字段点亮,按照dp、g、e、f、e、d、c、b、a的顺序,dp为最高位,a为最低位,引脚输入不同的8位二进制编码,可显示不同的数字或字符。

二、花样流水灯的硬件电路设计时钟电路是计算机的心脏,它控制着计算机的工作节奏,CPU 就是通过复杂的时序电路完成不同的指令功能的,89C52的时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路,产生时钟信号;另一种为外部方式,时钟信号由外部引入。

单片机有多种复位电路,本系统采用电平式复位与上电复位方式,如下图所示当上电时C1相当于短路时,使单片机复位,在正常工作时,按下复位键是单片机复位。

显示部分主要是由八个LED和四个七段数码管组成,八个LED 由限流电阻限流后接入89C52的P0口。

三、花样流水灯的软件设计#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit key3=P3^1;sbit key2=P3^2;sbit key1=P3^3;uchar code table[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}; uchar code moshi1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchar code moshi2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};uchar code moshi3[]={0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00};uchar code moshi4[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};uchar code moshi5[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};uchar code moshi6[]={0x7e,0x3c,0x18,0x00,0x81,0xc3,0xe7,0xff};uchar moshi,dingshi; //模式,定时uchar shijian,k1; //时间控制uchar num0,num;void delay(uint x) //延时程序{uchar i;while(x--);for(i=0;i<120;i++);}void keyscan() //键盘扫描{if(key1==0){delay(10);if(key1==0) //按键1,模式循环{moshi++;if(moshi==7)moshi=1;TR0=1;k1=1;while(!key1);}}if(key2==0) //按键2,时间调整{delay(10);if(key2==0){shijian++;if(shijian==15)shijian=15;while(!key2);}}if(key3==0) //按键3,时间复位{delay(10);if(key3==0){shijian--;if(shijian==1)shijian=1;while(!key3);}}}void display() //数码管显示{P1=table[moshi];P2=0xfe; //从左向右显示delay(2);P1=0XFF;P2=0XFF; //数码管不显示delay(2);P1=table[dingshi/10]; //十位显示P2=0xfd;delay(2);P1=table[dingshi%10]; //个位显示P2=0xfe;delay(2);}void liushuideng() //流水灯显示{switch(moshi) //模式选择{case 1:P0=moshi1[num];break;case 2:P0=moshi2[num];break;case 3:P0=moshi3[num];break;case 4:P0=moshi4[num];break;case 5:P0=moshi5[num];break;case 6:P0=moshi6[num];break;}}void disp() //显示器{num++;if(num==8){num=0;dingshi--;if(dingshi==0){dingshi=shijian;moshi++;if(moshi==7)moshi=1;}}}void init() //初始化{TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=0;shijian=5;dingshi=5;moshi=0;P3=P0=0xff;num=num0=0;}void main(){init();while(1){keyscan(); //键盘扫描display(); //数码管显示if(k1==1) //模式选择liushuideng(); //流水灯显示}}void t0_time() interrupt 1 //中断{TH0=(65536-50000)/256;TL0=(65536-50000)%256;num0++;if(num0==6){num0=0;disp();}}四、总结实训中我发现主要问题是在焊接电路板的时候有虚焊,导致电路接触不良,还有多焊导致电路板损坏或短路。

单片机花样流水灯设计

单片机花样流水灯设计
机 的基 础 。
1 . 1硬件 设 计
1 . 1 . 1 硬 件 说 明
按照 单片机 系统扩展与系统配置情况 ,单片机应用系统
可分 为最 小系统、 最小功耗系统 以及典型系统等。 8 9 C5 1 单片 机 是本次设计 运用 的主 要元件 ,流水灯控制设计是用单片机 最 小应用 系统 , 即为有L E D、 晶振、 复位 电路、 电源等 电路和软 件 组成的单个 单片机 。电路焊接 : 制造 电子产 品的重要手段 。 主要 涉及 到的硬件 有 A T 8 9 C 5 1 单片机、 L E D、 晶振、 电阻、 开 关、 电容 等 。 1 . 1 . 2 芯片介绍一 A T 8 9 C 5 1 ( 见图 1 )
×TAI 2

P 2
X ALl ! ; S
l O
到下 一盏 一盏 点亮 ; 第二 , 花型种类不少于五种 , 花型 自拟 ; 第
三, 分别用快慢两种节拍实现 花型交换 , 总清零开关控制 电路 的初 始状态 。 1 . 1 . 3引脚说明
图1 8 9 C 5 1 芯片引脚 图 引脚是单片机和外界进行通信的通道连接点,用户 只能 通过 引脚组建控制系统 。从应用的角度来看,引脚 的应用 是 单 片机应用 的一个重要基础 。因此熟悉引脚是学习应用 单片
PI .
、 √
VI 2 C
P1 . 1
P1. 2
P O
pO. 1
p1 . 3 pl
p1 P1 . 6 PI . 7
po . 2 pD . 3
po. 4 5 6
这样一来制成品只能按照固定的模式闪亮 ,不 能根据不 同场 合、 不 同时间段 的需要来调节亮灯 时间、 模 式等动态参数 。这

单品机花样流水灯程序设计外部中断触发方式结果分析

单品机花样流水灯程序设计外部中断触发方式结果分析

单品机花样流水灯程序设计外部中断触发方式结果分析```while (true) {// 更新灯光状态updateLightPattern();// 控制LED灯显示displayLightPattern();// 延时一段时间delay(someDelayTime);}```在上述伪代码中,`updateLightPattern()`函数用于更新灯光状态,`displayLightPattern()`函数用于控制LED灯显示,`delay()`函数用于延时一段时间。

2. 外部中断触发方式:外部中断可以是通过按下按钮、接收到特定信号等方式触发。

在单品机花样流水灯中,可以通过外部中断触发方式改变灯光的状态或执行其他操作。

以下是一个示例的外部中断触发方式的伪代码:```void externalInterruptHandler() {// 处理外部中断触发// 更新灯光状态或执行其他操作updateLightPattern();}void setup() {// 初始化外部中断attachInterrupt(externalInterruptPin, externalInterruptHandler, INTERRUPT_MODE);}void loop() {// 控制LED灯显示displayLightPattern();// 延时一段时间delay(someDelayTime);}```在上述伪代码中,`externalInterruptHandler()`函数用于处理外部中断触发,`attachInterrupt()`函数用于将外部中断与特定的引脚和触发模式关联起来。

外部中断可在`setup()`函数中进行初始化,然后在`loop()`函数中进行循环执行。

3. 结果分析:通过上述程序设计和外部中断触发方式,单品机花样流水灯可以实现按照设定的规律进行灯光状态的变化,并且通过外部中断触发方式可以改变灯光的状态或执行其他操作。

心形花样流水灯设计报告

心形花样流水灯设计报告

心形花样流水灯设计报告
心形花样流水灯设计报告
心形花样流水灯是现有流水灯的一种经典改良版本,它采用16个灯作为原形,在跟随律动改变时,灯会形成一个心形的图案,从而形成艳丽夺目的画面。

该设计把流水灯的动感与闪烁的灯光有机地结合起来,带给观众一个难忘的视觉体验。

心形花样流水灯的实现原理主要基于按使灯在每个节点切换时都可以获取正确的额外信号,然后根据信号来控制灯的状态,从而实现每颗灯在固定节点可以达到设定的图案效果。

实现心形花样流水灯首先需要准备好必要的硬件,如灯、电源、封装等。

其中,灯是实现该图案花样的关键元素,合适的灯应该选择一直亮的灯,最好是采用柱面形状的灯放置;电源属于复杂的功能元件,而电源的输出功率是有限的,因此要选择规范型号的电源;灯装接容器也是必不可少的,以尽可能减少容器内部电阻增加此设计系统电源负载。

安装完必要的硬件之后,就可以编写控制程序实现心形花样的设计。

首先,程序需要实现的功能应该包括定时停档、定时启动、控制灯泡亮度等,这是该系统实现的最基本的功能,其次,控制程序设计的关键是要编写一段循环程序,使在每一节点可以实现按照心形花样拍摄计划设定的图案,最后,实现定时调节,达到改变速度以及心形持续不断等效果。

通过以上步骤,就可以实现心形花样流水灯的设计制作,从而实现不同场合的美观效果,更好的吸引更多的注意力,从而取得全新的效果。

花样流水灯课程设计论文

花样流水灯课程设计论文

花样流水灯课程设计论文一、教学目标本课程旨在通过花样流水灯的制作,让学生掌握基础的电子元件知识和简单的电路搭建技巧,培养学生的动手能力和创新能力,增强学生对科技的兴趣和好奇心。

在知识目标上,学生需要了解发光二极管的工作原理、颜色与波长的关系,以及串联和并联电路的基本概念。

在技能目标上,学生能够熟练使用电子元件进行电路搭建,并能够通过编程控制流水灯的效果。

在情感态度价值观目标上,学生能够体验到科技制作的乐趣,增强对科学的热爱和探索精神。

二、教学内容本课程的教学内容主要包括三个部分:电子元件知识、电路搭建技巧和编程控制。

在电子元件知识部分,学生将学习发光二极管的工作原理、颜色与波长的关系。

在电路搭建技巧部分,学生将学习如何使用发光二极管、电阻等元件进行串联和并联电路的搭建。

在编程控制部分,学生将学习如何使用编程语言控制流水灯的效果。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用讲授法、讨论法、案例分析法和实验法等多种教学方法。

在讲授法方面,教师将系统的讲解电子元件知识、电路搭建技巧和编程控制相关的内容。

在讨论法方面,教师将引导学生进行思考和讨论,提高学生的理解和应用能力。

在案例分析法方面,教师将分析一些典型的流水灯制作案例,帮助学生掌握制作技巧。

在实验法方面,学生将通过动手制作花样流水灯,提高实践能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备适当的教学资源。

教材方面,我们将使用《电子制作》等相关教材,为学生提供系统的基础知识。

参考书方面,我们将提供一些关于电子制作和编程的书籍,供学生自主学习。

多媒体资料方面,我们将制作一些教学视频和PPT,帮助学生更好的理解和掌握知识。

实验设备方面,我们将准备一些发光二极管、电阻等元件和编程设备,供学生进行实验和制作。

五、教学评估本课程的评估方式将包括平时表现、作业和考试三个部分,以保证评估的客观性和全面性。

平时表现部分,将根据学生在课堂上的参与度、提问和回答问题的表现等进行评估。

单片机课程设计花样流水灯2

单片机课程设计花样流水灯2

单⽚机课程设计花样流⽔灯2前⾔随着⼈们⽣活环境的不断改善和美化,在许多场合可以看到彩⾊霓虹灯不断变化闪烁。

LED灯由于其丰富的灯光⾊彩,低廉的造价以及控制简单等特点⽽得到了⼴泛的应⽤,⽤彩灯来装饰街道和城市建筑物已经成为⼀种时尚。

但⽬前市场上各式样的LED灯控制器⼤多数⽤全硬件电路实现,电路结构复杂、功能单⼀,这样⼀旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。

这种彩灯控制器结构往往有芯⽚过多、电路复杂、功率损耗⼤等缺点。

此外从功能效果上看,亮灯模式少⽽且样式单调,缺乏⽤户可操作性,影响亮灯效果。

因此有必要对现有的彩灯控制器进⾏改进。

流⽔灯是⼀串按⼀定的规律像流⽔⼀样连续闪亮。

流⽔灯控制是可编程控制器的⼀个应⽤,其控制思想在⼯业控制技术领域也同样适⽤。

流⽔灯控制可⽤多种⽅法实现,但对现代可编程控制器⽽⾔,利⽤移位寄存器实现最为便利。

通常⽤左移寄存器实现灯的单⽅向移动;⽤双向移位寄存器实现灯的双向移动。

本案例利⽤价格低廉的AT89C51系列单⽚机控制基⾊LED灯泡从⽽实现丰富的变化。

1、课程设计的⽬的和要求1.1 设计⽬的近年来随着科技的发展,单⽚机的应⽤正在不断⾛向深⼊,同时带动传统控制检测⽇新⽉异更新,在实时检测和⾃动控制的单⽚机应⽤系统中,单⽚机往往是作为⼀个核⼼部件来使⽤,单⽚机⽅⾯知识是不够的,还应根据具体硬件结构,以及针对具体应⽤对象点的软件结合,加以完善。

流⽔灯,可以更简单、⽅便的使⽤。

通过本课程设计使学⽣进⼀步巩固单⽚机原理及应⽤的基本概念、基本理论,分析问题的基本⽅法,增强系统地运⽤已学的理论知识解决实际问题的能⼒和查阅资料的能⼒。

培养⼀定的⾃学能⼒和独⽴分析问题、解决问题的能⼒,能通过独⽴思考、查阅⼯具书、参考⽂献,寻找解决⽅案。

1.2 设计要求设计流⽔灯的基本要求:设计⼀个流⽔灯,应⽤AT89C51试验系统,电路开启后红、绿两种颜⾊的灯在时钟信号作⽤下按⼀定规律转换状态。

基于51单片机的花样流水灯设计

基于51单片机的花样流水灯设计

摘要摘要计算机技术的飞速发展和提高,把我们带入了崭新的时代,现在,计算机的应用已经深入到千家万户。

单片微型计算机是制作在一块集成电路芯片上的计算机,简称单片机。

单片机在现在社会有着广泛的应用,小到人们的日常电子用品,大到航天飞机、宇宙飞船,上面都有单片机的广泛应用。

单片机具有体积小、功能强大、低功耗、应用广泛等特点。

以AT公司的芯片AT89C51 单片机来实现流水灯的设计。

本系统由单片机控制,I/O口接LED的负极,而LED的正极则直接与5V电源相连。

通过I/O口输出的低电平点亮LED灯。

因此可以通过控制单片机的I/O口的电平高低以达到控制LED,从而实现不同花样的流水灯的目的。

关键词:LED,单片机,高低电平变化ABSTRACTThe rapid development of computer technology and improving, bring us to the new era, now, the application of computer has been deep into the thousands. Single chip microcomputer is made on an integrated circuit chip computer, hereinafter referred to as single chip microcomputer. SCM has been widely used in the present society, small to People's Daily electronic products, big to aerospace aircraft, spacecraft, above has the wide application of single-chip microcomputer. SCM has small volume, powerful function, low power consumption, wide application, etc. AT the company's chip AT89C51 single-chip microcomputer to realize the water lamp design. This system controlled by single chip microcomputer, I/O ports connect the LED the cathode, and LED the anode is directly connected to 5V power supply. Through the I/O port output low level light leds. So you can single chip microcomputer control through the I/O ports to control LED, the level of high and low so as to realize the purpose of the different pattern of flowing water light.Key words:LED , MCU ,High and Low output leve目录第1章引言 (1)1.1 研究背景及意义 (1)1.2 国内外研究现状以及本系统的重点问题 (1)1.3 本文章节安排 (2)第2章系统设计方案论证 (3)2.1 控制器模块方案论证 (3)2.2 键盘模块方案 (4)2.3 电源模块方案 (4)第3章系统硬件设计方案 (5)3.1 系统设计框图 (5)3.2 硬件电路设计 (5)3.2.1 电源电路 (5)3.2.2 单片机89C52最小系统 (6)3.2.3 按键电路 (13)3.3.4 LED灯电路 (13)第4章程序设计及软件仿真 (15)4.1 软件设计框图 (15)4.2 软件开发平台选择 (15)4.3 软件系统功能模块 (16)4.3.1 初始化模块 (16)4.3.2 延时函数 (17)4.3.3 定时器控制模块 (17)4.3.4 键盘扫描模式 (17)4.3.5 LED灯输出控制模块 (18)4.4 程序调试仿真 (19)4.4.1 仿真平台介绍 (19)4.4.2 仿真测试 (19)第5章硬件调试 (21)5.1 硬件设计 (21)5.2 硬件调试 (21)5.2.1 下载功能调试 (21)5.2.2 LED电路测试 (21)5.2.3 模式选择功能调试 (22)5.2.4 速度加减功能调试 (22)5.2.5 复位电路调试 (22)5.2.6 稳定性测试 (22)总结 (23)致谢 (25)参考文献 (26)附录 (27)附录一:原理图 (27)附录二:硬件实物 (28)附录三:程序代码 (29)第1章引言第1章引言1.1 研究背景及意义现如今,随着集成化芯片的飞速发展,分立元件或数字逻辑电路正逐步被集成电路所取代,而单片机作为一种集成电路,其价格低廉,且可靠性强、控制简单但控制方法多样。

实验3:花样流水灯实验

实验3:花样流水灯实验

实验三:花样流水灯实验一、实验目的1.熟悉LED的显示特点;2.了解单片机系统实现花样流水灯实验的硬件电路和软件编程技巧;3.熟悉基本汇编指令的灵活应用。

二、实验仪器、材料1.微型计算机(PⅣ以上)2.编程、汇编与模拟平台软件Keil uVision33.电子技术专业仿真软件protues运行平台4.单片机实训开发电路板三、实验内容和步骤1.2.//从左到右(或从右到左)流水循环显示实验ORG 0000HMOV A,#80H //MOV A,#01H ;从右到左LOOP:RL A //RR A ;从右到左MOV P1,AACALL DELAYSJMP LOOPDELAY:MOV R7,#0FFH ;延时1ms程序DELAY1:MOV R6,#0FFHDELAY2:DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND//从两端到中间、从中间到两端显示实验ORG 0000HLOOP:MOV P1,#81HACALL DELAYMOV P1,#42HACALL DELAYMOV P1,#24HACALL DELAYMOV P1,#18HACALL DELAYMOV P1,#24HACALL DELAYMOV P1,#42HACALL DELAYSJMP LOOPDELAY:MOV R7,#0FFH ;延时1ms程序DELAY1:MOV R6,#0FFHDELAY2:DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND//从左到右、从右到左流水显示实验1ORG 0000HMOV A,#80HMOV R0,#08HLOOP:RL AMOV P1,AACALL DELAYDJNZ R0,LOOPMOV R0,#07HLOOP1:RR AMOV P1,AACALL DELAYDJNZ R0,LOOP1MOV R0,#07HSJMP LOOPDELAY:MOV R7,#0FFH ;延时1ms程序DELAY1:MOV R6,#0FFHDELAY2:DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND//从左到右、从右到左流水显示实验2ORG 0000HMOV A,#01HLOOP:RL AMOV P1,AACALL DELAYCJNE A,#80H,LOOPLOOP1:RR AMOV P1,AACALL DELAYCJNE A,#01H,LOOP1SJMP LOOPDELAY:MOV R7,#0FFH ;延时1ms程序DELAY1:MOV R6,#0FFHDELAY2:DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND//从左到右、从右到左流水显示实验3ORG 0000HMOV A,#00HSETB CYLOOP:RLC AJC LOOP1MOV P1,AACALL DELAYSJMP LOOPLOOP1:RRC AJC LOOPMOV P1,AACALL DELAYSJMP LOOP1DELAY:MOV R7,#0FFH ;延时1ms程序DELAY1:MOV R6,#0FFHDELAY2:DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND//花样流水灯查表显示实验ORG 0000HSTART:MOV R0,#00HMOV P1,#00HLOOP:MOV A,R0ADD A,#0CHMOVC A,@A+PCCJNE A,#01H,XSH ;3SJMP START ;2XSH:MOV P1,A ;2ACALL DELAY ;2INC R0 ;1SJMP LOOP ;2ASCTAB:DB0FFH,00H,0FFH,00H,0FFH,00H,0FH,0F0H,0FH,0F0H,0FH,0F0H,0FH,0F0H,0CCH,55H,0AAH,55H,0AAH,55H,0AAH,55H DB81H,42H,24H,18H,24H,42H,81H,42H,24H,18H,24H,42H,81H,42H,24H,18H,24H,42H,81H,42H,24H,18H,24H,42H,81H DB03H,06H,0CH,18H,30H,60H,0C0H,60H,30H,18H,0CH,06H,03H,06H,0CH,18H,30H,60H,0C0H,60H,30H,18H,0CH,06H,03H,0 1HDELAY:MOV R7,#0FFH ;延时1ms程序DELAY1:MOV R6,#0FFHDELAY2:MOV R5,#02HDELAY3:DJNZ R5,DELAY3DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND。

流水彩灯的设计18页PPT

流水彩灯的设计18页PPT

闪亮方式1(函数dis_mode1)
从另一个角度去描述流程(P0、P2) P0、P2都为高电平; P0端口最低位为低(11111110) ,P2为全高(11111111),等待一会; P0端口第二位为低(11111101) ,P2状态不变,等待一会; P0端口第三位为低(11111011) ,P2状态不变,等待一会; …… P0端口最高位为低(01111111) ,P2状态不变,等待一会; P0端口全部为高电平(11111111) ,P2端口最低位为低(11111110) ,等待一会; P0状态不变 ,P2端口第二位为低(11111101) ,等待一会; P0状态不变 ,P2端口第三位为低(11111011) ,等待一会; …… P0状态不变 ,P2端口最高位为低(01111111) ,等待一会; P0、P2都为高电平; 结束一次流程。
闪亮方式1(函数dis_mode1)
要求:从左上角第一个灯开始,每次亮一个灯,顺时针旋转。 设计步骤: 软件流程图设计(软件流程图就是用图形的方式绘制出软件的实际执行步骤和过程) 软件程序编写(按照软件流程图写出相应的语句)
软件流程图设计 使用文字语言描述流程: 先关闭所有灯,点亮左上角第一个灯(D1),等待一会; 关闭第一个灯(D1),点亮第二个灯(D2) ,等待一会; 关闭第二个灯(D2),点亮第三个灯(D3) ,等待一会; ……; ……; 关闭第十五个灯(D15),点亮第三个灯(D16) ,等待一会; 结束一次流程 画流程图 使用图形将上述流程画出来。 软件编写
软件设计
简单的程序设计可以很容易的整理出软件流程图(前一个项目),但是遇到复杂的程序设计,一张软件流程图是很难完全包含整个软件的执行过程(本次项目)。 针对于较复杂的软件设计,需要在设计之初对软件功能进行分析,整理出各个功能模块,然后对各功能模块进行分步设计,最终再将所有的功能模块进行综合设计。这就是常说的自下而上的软件设计方法。

单片机花样流水灯课程设计

单片机花样流水灯课程设计

单片机花样流水灯课程设计一、课程目标知识目标:1. 理解单片机的基本原理和功能,掌握单片机编程的基本语法;2. 学习并掌握流水灯的设计原理和实现方法;3. 了解花样流水灯的创意设计,能够运用所学知识进行简单的创新设计。

技能目标:1. 能够独立完成单片机的编程和调试,实现基本流水灯效果;2. 学会运用逻辑思维和问题解决能力,分析并解决流水灯编程过程中的问题;3. 提高团队协作能力,通过与同学合作完成更复杂的花样流水灯设计。

情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣和热情,激发创新精神;2. 培养学生面对困难时的积极态度,勇于尝试和解决问题的勇气;3. 增强学生的环保意识,让学生明白电子制作中的资源节约和环保重要性。

分析课程性质、学生特点和教学要求:本课程为单片机花样流水灯课程设计,适用于高年级学生。

学生已具备一定的单片机基础知识,具备初步编程能力。

课程性质为实践性、创新性和团队合作性。

在教学过程中,注重培养学生的实际操作能力和创新思维,同时强调团队协作能力的提升。

根据以上分析,课程目标分解为以下具体学习成果:1. 学生能够独立完成基本流水灯编程和调试;2. 学生能够分析并解决流水灯编程中的问题;3. 学生能够与团队成员合作,完成至少两种不同花样流水灯的设计与实现;4. 学生能够撰写实验报告,总结课程学习心得和创新体会。

二、教学内容根据课程目标,教学内容分为以下三个部分:1. 单片机基础知识回顾- 章节链接:课本第三章“单片机原理与编程基础”- 内容列举:单片机的基本结构、工作原理、I/O口编程。

2. 流水灯原理与编程实现- 章节链接:课本第四章“单片机实践与应用”- 内容安排:- 流水灯设计原理- 延时函数的使用- I/O口控制LED亮灭- 流水灯编程实现3. 花样流水灯设计与创新- 章节链接:课本第四章“单片机实践与应用”及附录“创意电子制作”- 内容安排:- 流水灯花样设计思路- 逻辑编程技巧- 创新设计方法- 团队合作与分工教学进度安排:1. 第一周:回顾单片机基础知识,完成I/O口编程训练;2. 第二周:学习流水灯原理,完成基本流水灯编程;3. 第三周:学习花样流水灯设计,进行创新实践;4. 第四周:团队协作,完成至少两种不同花样流水灯设计与实现;5. 第五周:撰写实验报告,总结课程学习。

心形花样LED流水灯(带程序)

心形花样LED流水灯(带程序)

心形花样LED 流水灯(带程序)1000146073713使用89C52做的,原理图如下:总共有32个LED灯,4个I/O全部用上了。

我在这里不加有LED保护电阻,用200的也可以晶振用12M的或11.0592M也行,C1,C2用30PF。

PCB图如下:作品效果录像:/programs/view/z0bjKg_3Cd4/程序是用C语言写的;如下:#include<reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charuchar code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; // 逐个点亮0~7 uchar code table1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; // 逐个点亮7~0 uchar code table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; // 逐个灭0~7 uchar code table3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; // 逐个灭7~0/***********************************************************/void delay(uint t); //延时void zg(uint t,uchar a);//两边逐个亮void qs(uint t,uchar a);//全部闪烁void zgxh(uint t,uchar a); // 逆时针逐个点亮//void zgxh1(uint t,uchar a); // 顺时针逐个点亮void djs(uint t,uchar a); //对角闪void lbzgm(uint t,uchar a);//两边逐个灭//void sszgm(uint t,uchar a); // 顺时针逐个灭void nszgm(uint t,uchar a); // 逆时针逐个灭void sztl(uint t,uchar a);//顺时逐个同步亮void nztl(uint t,uchar a);//逆时逐个同步亮void sztm(uint t,uchar a);//顺时逐个同步灭void nztm(uint t,uchar a);//逆时逐个同步灭void hwzjl(uint t,uchar a); //横往中间亮void hwzjm(uint t,uchar a); //横往中间灭//void swzjl(uint t,uchar a); //竖往中间亮//void swzjm(uint t,uchar a); //竖往中间灭void nzdl(uint t,uchar a); //逆时逐段亮void nzdgl(uint t,uchar a); //逆时逐段一个点亮void jgs(uint t,uchar a); //间隔闪/**********************************************************/void zg(uint t,uchar a)//两边逐个亮{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;P0=0x7f;delay(t);for(i=0;i<7;i++){P0=table1[i+1];P2=table1[i];delay(t);}P2=0x00;P1=0xfe;delay(t);for(i=0;i<7;i++){P1=table[i+1];P3=table1[i];delay(t);}P3=0x00;delay(t);}}void qs(uint t,uchar a) //全部闪烁{uchar j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;delay(t);P0=P1=P2=P3=0x00;delay(t);}}void zgxh(uint t,uchar a) // 逆时针逐个点亮{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for (i=0;i<8;i++){P0=table1[i];delay(t);}for(i=0;i<8;i++){P1=table[i];delay(t);for(i=0;i<8;i++){P3=table[i];delay(t);}for(i=0;i<8;i++){P2=table[i];delay(t);}}}void nszgm(uint t,uchar a) // 逆时针逐个灭{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0x00;for (i=0;i<8;i++){P0=table3[i];delay(t);}for (i=0;i<8;i++){P1=table2[i];delay(t);}for (i=0;i<8;i++){P3=table2[i];delay(t);}for (i=0;i<8;i++){P2=table2[i];delay(t);}}}/*void zgxh1(uint t,uchar a) // 顺时针逐个点亮{for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for (i=0;i<8;i++){P2=table1[i];delay(t);}for(i=0;i<8;i++){P3=table1[i];delay(t);}for(i=0;i<8;i++){P1=table1[i];delay(t);}for(i=0;i<8;i++){P0=table[i];delay(t);}}}*//*void sszgm(uint t,uchar a) // 顺时针逐个灭{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0x00;for (i=0;i<8;i++){P2=table3[i];delay(t);}for (i=0;i<8;i++){P3=table3[i];delay(t);}for (i=0;i<8;i++){P1=table3[i];delay(t);}for (i=0;i<8;i++){P0=table2[i];delay(t);}}}*/void djs(uint t,uchar a) //对角闪{uchar j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;P0=P3=0x00;delay(t);P0=P1=P2=P3=0xff;P1=P2=0x00;delay(t);}}void lbzgm(uint t,uchar a)//两边逐个灭{uchar i,j;for (j=0;j<a;j++){P0=P2=0x00;P3=0x01;delay(t);for(i=7;i>1;i--){P1=table[i-1];P3=table1[i-2];delay(t);}P1=0xfe;P3=0xff;delay(t);P1=0xff;P2=0x01;delay(t);for(i=7;i>1;i--){P0=table1[i-1];P2=table1[i-2];delay(t);}P0=0x7f;P2=0xff;delay(t);P0=0xff;delay(t);}}void sztl(uint t,uchar a)//顺时逐个同步亮{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table[i];P1=P2=P3=table1[i];delay(t);}}}void nztl(uint t,uchar a)//逆时逐个同步亮{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];P1=P2=P3=table[i];delay(t);}}}void sztm(uint t,uchar a)//顺时逐个同步灭{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table2[i];P1=P2=P3=table3[i];delay(t);}}}void nztm(uint t,uchar a)//逆时逐个同步灭{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table3[i];P1=P2=P3=table2[i];delay(t);}}}void hwzjl(uint t,uchar a) //横往中间亮{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table1[i];P3=table[i];delay(t);}}}void hwzjm(uint t,uchar a) //横往中间灭{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}/*void swzjl(uint t,uchar a) //竖往中间亮{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table[i];P3=table1[i];delay(t);}}}void swzjm(uint t,uchar a) //竖往中间灭{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table2[i];P3=table3[i];delay(t);}}}*/void nzdl(uint t,uchar a) //逆时逐段亮{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}void nzdgl(uint t,uchar a) //逆时逐段一个点亮{uchar i,j,k,l;for (j=0;j<a;j++){k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}void jgs(uint t,uchar a) //间隔闪{uchar j;for (j=0;j<a;j++){P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}}void main(){uchar i;while(1){zg(100,1); //两边逐个亮lbzgm(100,1); //两边逐个灭jgs(300,10);djs(100,20); //对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20); //对角闪for(i=0;i<3;i++){zg(100,1); //两边逐个亮lbzgm(100,1); //两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1); //顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1); //顺时逐个同步灭}djs(300,10); //对角闪nzdgl(300,10); //逆时逐段一个点亮jgs(300,10); //间隔闪for(i=0;i<3;i++){nszgm(100,1);}/*for(i=0;i<5;i++){zgxh1(100,1);sszgm(100,1);}*/nzdl(200,3); //逆时逐段亮jgs(50,100); //间隔闪/*///////////////////////////////////////////////////// P0=P1=P2=P3=0xff;for (i=0;i<8;i++){P0=table1[i];delay(200);}for (i=0;i<8;i++){P1=table[i];delay(200);}for(i=0;i<3;i++){P0=P1=0x00;delay(200);P0=P1=0xff;delay(200);}for (i=0;i<8;i++){P2=table1[i];delay(200);}for (i=0;i<8;i++){P3=table1[i];delay(200);}for(i=0;i<3;i++)P2=P3=0x00;delay(200);P2=P3=0xff;delay(200);}*///////////////////////////////////////////////////nzdgl(50,40); //逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}// djs(50,100); //对角闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1); //横往中间亮hwzjm(200,1); //横往中间灭}djs(300,10); //对角闪/* for(i=0;i<10;i++){swzjl(200,1); //竖往中间亮swzjm(200,1); //竖往中间灭}*/for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20); //对角闪zg(300,1);lbzgm(300,1);/*for(i=0;i<5;i++)zgxh1(100,1);sszgm(100,1);}*/for(i=0;i<5;i++){sztl(200,1); //顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1); //顺时逐个同步灭}djs(500,20); //对角闪djs(100,30); //对角闪djs(50,50); //对角闪// djs(10,100); //对角闪delay(1000);}}void delay(uint t){uint x,y;for (x=t;x>0;x--){for (y=120;y>0;y--);}}因为89C52的容量有限,所以还有几个方式注释掉了。

花样流水灯设计

花样流水灯设计

一、原理图设计的目的:利用AT89C51,通过控制按键来实现六种流水灯把戏的转换,实现把戏流水灯的设计,同时通过外部中断0,来控制流水灯的速度。

二、各器件的功能作用:1、AT89C51AT89C51有40个引脚,每个引脚都有其功能。

本次设计中,利用P0口当输出口,输出低电平来驱动发光二极管点亮。

利用P1.0~P1.5六个引脚,通过按键接地,然后采用扫描的方式,判断哪个引脚所接按键按下,从而来控制六种流水灯的把戏。

利用P3.2引脚外接按键接地,通过控制按键来减慢流水灯的速度,利用P3.3引脚外接按键接地,通过控制按键来提高流水灯的速度。

利用P3.7输出低电平,导通三极管Q1,从而给八个发光二极管的阳极加高电平,一旦P0口输出低电平就可以驱动发光二极管。

2、八个发光二极管:通过八个发光二极管来实现流水灯的变化,用低电平驱动发光二级管亮,同时,用高电平使其熄灭。

3、按键通过P1.0-P1.5外接的按键来实现流水灯各种把戏的变化,当按键按下时,驱动一种流水灯把戏的闪烁。

同时,利用按键来提供外部中断,当按下按键时,产生一个外部中断,向CPU申请中断,CPU响应其中断,因此可以用按键来实现提高流水灯闪烁的速度。

通过在RST口处加上一个按钮手动复位电路,利用复位按钮可以使运行中的流水灯复位到初始的状态。

4、排阻因为P0口作为输出口时需要外接上拉电阻三、设计原理图:四、程序如下:#include<reg51.h> //51系列单片机定义文件#define uchar unsigned char //定义无符号字符#define uint unsigned int //定义无符号整数void delay(uint);//声明延时函数void main(void){uint i;uchar temp;TCON=0*05;IE=0*85;P*1=1;P*0=0;while(1){temp=0*01;for(i=0;i<8;i++) //8个流水灯逐个闪动{P0=temp;delay(100);//调用延时函数temp<<=1;}temp=0*80;for(i=0;i<8;i++) //8个流水灯反向逐个闪动{P0=temp;delay(150);//调用延时函数temp>>=1;}temp=0*FE;for(i=0;i<8;i++) //8个流水灯依次全部点亮{P0=temp;delay(150); //调用延时函数temp<<=1;}temp=0*7F;for(i=0;i<8;i++) //8个流水灯依次反向全部点亮 {P0=temp;delay(150); //调用延时函数temp>>=1;}temp=0*03;for(i=0;i<4;i++) //两个流水灯顺序点亮{P0=temp;delay(150);temp<<=2;}temp=0*30;for(i=0;i<3;i++) //两个流水灯反向点亮{P0=temp;delay(150);temp>>=2;}temp=0*07;for(i=0;i<3;i++) //3个{P0=temp;delay(150);temp<<=3;}temp=0*e0;for(i=0;i<3;i++) //3流水灯反向点亮{P0=temp;delay(150);temp>>=3;}temp=0*0f;for(i=0;i<3;i++) //4ge{P0=temp;delay(150);temp<<=4;}temp=0*f0;for(i=0;i<3;i++) //4流水灯反向点亮{P0=temp;delay(150);temp>>=4;}}}void int0() interrupt 0{uint i;uchar temp;while(1){temp=0*01;for(i=0;i<8;i++) //8个流水灯逐个闪动{P0=temp;delay(800);//调用延时函数temp<<=1;}temp=0*80;for(i=0;i<8;i++) //8个流水灯反向逐个闪动{P0=temp;delay(800);//调用延时函数temp>>=1;}temp=0*FE;for(i=0;i<8;i++) //8个流水灯依次全部点亮{P0=temp;delay(800); //调用延时函数temp<<=1;}temp=0*7F;for(i=0;i<8;i++) //8个流水灯依次反向全部点亮 {P0=temp;delay(800); //调用延时函数temp>>=1;}temp=0*03;for(i=0;i<4;i++) //两个流水灯顺序点亮{P0=temp;delay(800);temp<<=2;}temp=0*30;for(i=0;i<3;i++) //两个流水灯反向点亮{P0=temp;delay(800);temp>>=2;}temp=0*07;for(i=0;i<3;i++) //3个流水灯顺序点亮{P0=temp;delay(800);temp<<=3;}temp=0*e0;for(i=0;i<3;i++) //3个流水灯反向点亮{P0=temp;delay(800);temp>>=3;}}temp=0*0f;for(i=0;i<3;i++) //4个流水灯顺序点亮{P0=temp;delay(800);temp<<=4;}temp=0*f0;for(i=0;i<3;i++) //4流水灯反向点亮{P0=temp;delay(800);temp>>=4;}}void delay(uint t) //定义延时函数 {register uint bt;for(;t;t--)for(bt=0;bt<255;bt++);}。

心形花样流水灯PPT

心形花样流水灯PPT
点亮,全亮、全灭。 在此还应注意一点,由于人眼的视觉 暂留效应以及单片机执行每条指令的时间很短,在控制二极 管亮灭的时候应该延时一段时间,否则就看不到“流水”效 果了。
2021/3/11
2
硬件
1:STC89C51的最小化系统
2021/3/11
3
流程图
2021/3/11
4
原理图
2021/3/11
系统设计方案
实现不同方式点亮32个LED流水灯(左循环、奇偶亮、右循 环、全灭全亮等等)本流水灯实际上就是一个带有三十二个 LED灯的单片机最小应用系统,即为由 LED灯、晶振、复位、 电源等电路和必要的软件组成的单个单片机。
2021/3/11
1
理论分析
如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的 电平变为低电平就可以了;相反,如果要接在P1.0口的 LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在 其他口的31个LED的点亮和熄灭的方法同LED1。因此,要实 现流水灯功能,我们只要将发光二极管LED1~LED32依次点 亮、熄灭,32只LED灯便会一亮一暗的做流水灯了。同样的 道理,可以32个灯左移
void delay(void)
{
unsigned char m,n;
for(m=0;m<flag;m++)
for(n=0;n<250;n++)
2021/3/11
7
调试结果
1、软件:程序需要实现流水灯各种不同方式的亮灭。
2、硬件:需要我们自己连接电路,焊接电路板,更要做到 将软硬件相互结合,这一部分对我们的手工能力有更高的要 求。
5
仿真图
2021/3/11

单片机花样流水灯设计实验报告

单片机花样流水灯设计实验报告

**大学物理学院单片机花样流水灯设计实验课题:花样流水灯设计班级: 物理***姓名: ***学号: ……………【摘要】当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。

制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。

本设计介绍一种简单实用的单片机花样流水灯设计与制作,采用基于MS-51的单片机AT89C51和发光二极管、晶振、复位、电源等电路以及必要的软件组成的以AT89C51为核心,辅以简单的数码管等设备和必要的电路,设计了一款简易的流水灯电路板,并编写简单的程序,使其能够自动工作。

本设计用AT89C51单片机为核心自制一款简易的花样流水灯,并介绍了其软件编程仿真及电路焊接实现,在实践中体验单片机的自动控制功能。

该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。

关键字:AT89C51 单片机流水灯数码管【概述】1. 单片机及其发展概况单片机又称为单片微计算机,其特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。

单片机作为一种高集成度微型计算机,已经广泛应用于工业自动化控制、智能仪器仪表、通信设备、汽车电子与航空航天电子系统、智能家居电器等各个领域。

2. Protues仿真软件简介Protues以其数量众多的元件数据库、标准化的仿真仪器、直观的捕获界面、简洁明了的操作、强大的分析测试、可信的测试结果, 为电子工程设计节约研发时间,节省了工程设计费用。

利用Protues软件设计一款通过数码管显示计数时间的流水灯电路及Keil C软件编程后,再将两者关联则可以简单快速的进行仿真。

【实验设计目标】设计要求以发光二极管作为发光器件,用单片机自动控制,对8个LED灯设计至少3种流水灯显示方式,每隔20秒变换一次显示花样,计时通过一个二位七段数码管显示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、原理图设计的目的:
利用AT89C51,通过控制按键来实现六种流水灯花样的转换,实现花样流水灯的设计,同时通过外部中断0,来控制流水灯的速度。

二、各器件的功能作用:
1、AT89C51
AT89C51有40个引脚,每个引脚都有其功能。

本次设计中,利用P0口当输出口,输出低电平来驱动发光二极管点亮。

利用P1.0~P1.5六个引脚,通过按键接地,然后采用扫描的方式,判断哪个引脚所接按键按下,从而来控制六种流水灯的花样。

利用P3.2引脚外接按键接地,通过控制按键来减慢流水灯的速度,利用P3.3引脚外接按键接地,通过控制按键来提高流水灯的速度。

利用P3.7输出低电平,导通三极管Q1,从而给八个发光二极管的阳极加高电平,一旦P0口输出低电平就可以驱动发光二极管。

2、八个发光二极管:
通过八个发光二极管来实现流水灯的变化,用低电平驱动发光二级管亮,同时,用高电平使其熄灭。

3、按键
通过P1.0-P1.5外接的按键来实现流水灯各种花样的变化,当按键按下时,驱动一种流水灯花样的闪烁。

同时,利用按键来提供外部
中断,当按下按键时,产生一个外部中断,向CPU申请中断,CPU 响应其中断,因此可以用按键来实现提高流水灯闪烁的速度。

通过在RST口处加上一个按钮手动复位电路,利用复位按钮可以使运行中的流水灯复位到初始的状态。

4、排阻
因为P0口作为输出口时需要外接上拉电阻
三、设计原理图:
四、程序如下:
#include<reg51.h> //51系列单片机定义文件
#define uchar unsigned char //定义无符号字符
#define uint unsigned int //定义无符号整数
void delay(uint);//声明延时函数
void main(void)
{
uint i;
uchar temp;
TCON=0x05;
IE=0x85;
PX1=1;
PX0=0;
while(1)
{
temp=0x01;
for(i=0;i<8;i++) //8个流水灯逐个闪动
{
P0=temp;
delay(100);//调用延时函数
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++) //8个流水灯反向逐个闪动
{
P0=temp;
delay(150);//调用延时函数
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++) //8个流水灯依次全部点亮
{
P0=temp;
delay(150); //调用延时函数
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++) //8个流水灯依次反向全部点亮{
P0=temp;
delay(150); //调用延时函数
temp>>=1;
}
temp=0x03;
for(i=0;i<4;i++) //两个流水灯顺序点亮
P0=temp;
delay(150);
temp<<=2;
}
temp=0x30;
for(i=0;i<3;i++) //两个流水灯反向点亮{
P0=temp;
delay(150);
temp>>=2;
}
temp=0x07;
for(i=0;i<3;i++) //3个
{
P0=temp;
delay(150);
temp<<=3;
}
temp=0xe0;
for(i=0;i<3;i++) //3流水灯反向点亮{
P0=temp;
delay(150);
temp>>=3;
}
temp=0x0f;
for(i=0;i<3;i++) //4ge
{
P0=temp;
delay(150);
temp<<=4;
}
temp=0xf0;
for(i=0;i<3;i++) //4流水灯反向点亮{
P0=temp;
delay(150);
temp>>=4;
}
}
void int0() interrupt 0
{
uint i;
uchar temp;
while(1)
{
temp=0x01;
for(i=0;i<8;i++) //8个流水灯逐个闪动
{
P0=temp;
delay(800);//调用延时函数
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++) //8个流水灯反向逐个闪动
{
P0=temp;
delay(800);//调用延时函数
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++) //8个流水灯依次全部点亮
{
P0=temp;
delay(800); //调用延时函数
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++) //8个流水灯依次反向全部点亮{
P0=temp;
delay(800); //调用延时函数
temp>>=1;
}
temp=0x03;
for(i=0;i<4;i++) //两个流水灯顺序点亮
{
P0=temp;
delay(800);
temp<<=2;
}
temp=0x30;
for(i=0;i<3;i++) //两个流水灯反向点亮{
P0=temp;
delay(800);
temp>>=2;
}
temp=0x07;
for(i=0;i<3;i++) //3个流水灯顺序点亮{
P0=temp;
delay(800);
temp<<=3;
}
temp=0xe0;
for(i=0;i<3;i++) //3个流水灯反向点亮{
P0=temp;
delay(800);
temp>>=3;
}
}
temp=0x0f;
for(i=0;i<3;i++) //4个流水灯顺序点亮{
P0=temp;
delay(800);
temp<<=4;
}
temp=0xf0;
for(i=0;i<3;i++) //4流水灯反向点亮{
P0=temp;
delay(800);
temp>>=4;
}
}
void delay(uint t) //定义延时函数
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++); }。

相关文档
最新文档