文档库 最新最全的文档下载
当前位置:文档库 › 多种方式控制流水灯

多种方式控制流水灯

多种方式控制流水灯
多种方式控制流水灯

//1/位运算来控制流水灯

/* #include

void delay(void)

{

unsigned char i,j;

for(i=0;i<250;i++)

for(j=0;j<250;j++)

;

}

void main(void)

{

int i;

while(1)

{

P3=0xff;

delay();

for(i=0;i<8;i++)

{

P3=P3<<1;

delay();

}

}

} */

//2/ 用指针做函数参数来控制流水灯#include

void delay(void)

{

unsigned int i;

for(i=0;i<20000;i++)

//for(j=0;j<200;j++)

;

}

void liushui(unsigned char *p)

{

unsigned char i;

while(1)

{

for(i=0;i<8;i++)

{

P3=*(p+i);

delay();

}

}

}

void main(void)

{

unsigned char code Tab[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

unsigned char *pointer;

pointer=Tab;

liushui(pointer);

}

//3/用左移函数(_crol_())来控制流水灯:

/* #include

#include

sbit led=P3^0;

void delay(void)

{

unsigned char i,j;

for(i=0;i<200;i++)

for(j=0;j<200;j++)

;

}

void main(void)

{

P3=0xfe;

delay();

while(1)

{

P3=_crol_(P3,1);

delay();

}

} */

//4/运用条件编译控制流水灯

/* #include

#include

#define MAX 100

void delay(void)

{

unsigned char i,j;

for(i=0;i<200;i++)

for(j=0;j<200;j++)

;

}

void main()

#if MAX>80

{

P3=0xfe;

while(1)

{

P3=_crol_(P3,1);

delay();

}

}

#else

{

P3=0xf0;

delay();

P3=0x0f;

delay();

}

#endif

}

*/

//5/文件包含控制流水灯

/* #include void delay(void)

{

unsigned char i,j;

for(i=0;i<200;i++)

for(j=0;j<200;j++)

;

}

void main(void)

{

while(1)

{

P3_0=0;

delay();

P3_0=1;

delay();

P3_1=0;

delay();

P3_1=1;

delay();

P3_2=0;

delay();

P3_2=1;

delay();

P3_3=0;

delay();

P3_3=1;

delay();

P3_4=0;

delay();

P3_4=1;

delay();

P3_5=0;

delay();

P3_5=1;

delay();

P3_6=0;

delay();

P3_6=1;

delay();

P3_7=0;

delay();

P3_7=1;

delay();

}

}

*/

//6.用定时器T0查询方式控制p3口8位流水灯

/* #include

#include

void delay(void)

{

unsigned char i,j;

for(i=0;i<200;i++)

for(j=0;j<200;j++)

;

}

void main(void)

{

int i=0;

P3=0xfe;

TH0=(65336-46083)/256;

TL0=(65336-46083)%256;

TR0=1;

while(1)

{

while(TF0==0)

;

TF0=0;

P3=_crol_(P3,1);

delay();

i++;

TH0=(65336-46083)/256;

TL0=(65336-46083)%256;

if(i==8)

P3=0xfe;

}

}

*/

//7.用计数器查询方式,高四位以0.1s周期闪烁,地四位以0.5s周期闪烁/* #include

sbit led1=P3^0;

sbit led2=P3^1;

sbit led3=P3^2;

sbit led4=P3^3;

sbit led5=P3^4;

sbit led6=P3^5;

sbit led7=P3^6;

sbit led8=P3^7;

void main(void)

{

int i=0,j=0;

TMOD=0X01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

led1=led2=led3=led4=1;

led5=led6=led7=led8=1;

while(1)

{

while(TF0==0)

;

i++;

j++;

if(i==1)

{

led1=~led1;

led2=~led2;

led3=~led3;

led4=~led4;

i=0;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

}

if(j==5)

{

led5=~led5;

led6=~led6;

led7=~led7;

led8=~led8;

j=0;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

}

}

}

*/

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

案例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 {

流水灯设计报告

流水灯设计报告 一、实验目的 通过本实验教学,学习数字电路综合应用(将单元电路组成系统电路的方法),掌握简单数字系统设计方法。通过查阅手册和文献资料,培养独立分析和解决实际问题的能力。掌握示波器、信号发生器、频率计、万用电表等常用电子仪器设备的使用。获得数字电路综合应用能力。 二、实验内容 用D 触发器和译码器设计一个8位可循环的流水灯,用仿真软件进行仿真,最后根据电路图在万能板上焊接出来。 三、实验原理 1.D 触发器 D 触发器的状态方程为:Q n+1=D 。其状态的更新发生在CP 脉冲的边沿,74LS74(CC4013)、74LS175(CC4042)等均为上升沿触发,故又称之为上升沿触发器的边沿触发器,触发器的状态只取决于时针到来前D 端的状态。D 触发器应用很广,可用做数字信号的寄存,移位寄存,分频和波形发生器等,图A 为74LS74外引线排列,图B 为D 触发器逻辑符号。 2.译码器 74LS138 为3 线-8 线译码器,共有 54LS138和 74LS138 两种线路结构型式 工作原理: ① 当一个选通端(E1)为高电平,另两个选通端((/E2))和/(E3))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。比如:A2A1A0=110时,则Y6输出端输出低电平信号。 图A 74LS74外引线排列 图B D 触发器逻辑符号

表1 74LS138逻辑功能表 ② 利用 E1、E2和E3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。 ③ 若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。 ④ 可用在8086的译码电路中,扩展内存。 引脚功能: A0∽A2:地址输入端 STA (E1):选通端 /STB (/E2)、/STC (/E3):选通端(低电平有效) /Y0∽/Y7:输出端(低电平有效) VCC :电源正 GND :地 A0∽A2对应Y0——Y7;A0,A1,A2以二进制形式输入,然后转换成十进制,对应相应Y 的序号输出低电平,其他均为高电平。 如图C 所示为74LS138译码器的引脚排列图。功能表如表1所示 四、实验结果 图C 74LS138的引脚排列图

利用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的内部电路与工作原理

按键控制单片机改变流水灯速度

按键控制单片机改变流水灯速度 /*程序效果:有三个按键,按下其中任意一个流水灯的速度改变 */#includereg52.h //52 系列单片机的头文件#define uchar unsigned char//宏定义 #define uint unsigned intuchar count=40,flag=0; //定义刚开始的流水灯的速度,后 一个为标志变量void main(){uchar i=0;//定义局部变量EA=1; //打开总 中断ET0=1; //打开定时器TR0=1; //启动定时器TH0=(65536-50000) /256; //装初值TL0=(65536-50000)%256; P2=0xfe; //点亮第一个数码管, 为下次循环做准备while(1){ if(flag) //flag 被置位{ flag=0;//清零,为下次做准备P2=~P2; //取反P2=1; //左移一位P2=~P2; //取反i++; if(i==8) //移到第八个数码管,则从新装初值{ i=0; P2=0xfe; } } P0=0xf0; //赋初值if((P00xf0)!=0xf0) //判断是否有按键按下{ if(P0==0x70) //按下第一个按键count=60; //给count 从新赋值 if(P0==0xb0) count=20; if(P0==0xd0) count=10;} }}void time0() interrupt 1 //定时器0{static uchar cnt; //定义静态变量TH0=(65536-50000)/256;TL0=(65536-50000)%256; cnt++; //计数if(cnt==count){ cnt=0; //清零flag=1; //置标志位}} tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

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

左右来回循环的流水灯 设计要求 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; }

电子科技大学 数字逻辑课程设计——流水灯的实现

数字逻辑课程设计 ——流水灯的设计 1问题概述: 设计一个可以循环移动的流水灯,灯总数为8盏,具体要求如下: 1、5亮,其余灭,右移三次后全灭 4、8亮,其余灭,左移三次后全灭 4、5亮,其余灭,各向两边移三次后全灭 1、8亮,其余灭,各向中间移三次后全灭 所要求的彩灯电路在某电路板上完成,该电路板能够提供48MHz标准时钟信号,附带有8个共阳的LED管可作为彩灯使用。 2问题分析 本装置可以看作一个具有20个状态的无输入、8个输出的Moore型时钟同步状态机,每一个状态对应依次出现的每一种亮灯情况,用5位状态编码表示。这里构造一个模20的计数器来循环产生这20种状态。同时对于输入的48MHz的标准时钟信号,需要将其转化为1HZ的信号,此处同样用计数器来实现分频功能。8个输出分别控制LED的发光情况。这里使用5-32的译码器实现输出函数的构造。电路框图如下: 这里使用一个5位的状态编码Q4Q3Q2Q1Q0,表示20个状态。8位的输出函数F7F6F5F4F3F2F1F0分别表示由左至右每一个灯的通断情况。由于本题中LED灯采用共阳极连接方式,所以当Fn为低电平时,对应的LED灯发光。 本电路状态图如下:

本电路的转移/输出表如下: 现针对每一部分设计具体电路 3设计方案 3.11/48MHz分频电路 对于48MHz的信号,一秒钟内有4.8*10^7个周期,而所需1Hz信号,每秒只有一个周期。使输入信号每经过2.4*10^7个周期,输出信号翻转一次方向,便可获得所需的1Hz信号。可以构造一个模4.8*10^7的计数器用于计数,并使计数器输出的最高位在一秒之内恰好变化一次,且占空比为50%,故采用7片74x163进行级联。计数范围为:0110100100011100101000000000-1001011011100011010111111111。这样恰好可以保证最高

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

附件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)

按键控制流水灯设计报告

按键控制流水灯设计报告 一、项目名称: 按键控制流水灯 二、目的: 通过对按键控制发光二极管项目的改变,设计出自己的方案,来加深对硬件技术的理解,同时锻炼关于硬件的编程技术,掌握keil等软件的使用。 三、硬件原理: 数码管与发光二极管硬件电路图: 芯片引脚电路图:

按键与导航按键:

四、软件原理: 变量Key1,Key2,Key3分别代表第一个、第二个、第三个按键,值为零时表示按下了该按键。那么可以写出一个判断条件,当这三个变量的值分别为1 时,就分别调用三个不同的函数,三个函数分别表示LED灯的三种不同的闪亮方式。 五、软件流程:

首先判断哪一个变量的值为1,即哪一个按键被按下,然后就调用相应的函数。 六、关键代码: void main() { Init(); P0=0x00; while(1){ //其他两个key通过中断实现 // if(Key3==0) // { // G_count=0; // while(G_count!=200);//延时10ms // while(!Key3)//等待直到释放按键 // { // P0=0x33; // } // } if(Key1==0)fun2(); if(Key2==0)fun3(); if(Key3==0)fun4();

} } 七、操作说明: 当把软件下载到电路板以后,给它插上电源,然后按下不同的按键,可以观察到LED灯亮。 八、存在的问题: 原先的main()函数中只有KEY3,并没有Key1和Key2,所以暂时不清楚如何感应到按键一和按键二什么时候按下。 九、后续设计计划: 可以设计更炫酷的亮灯方式。

单片机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) {

用单片机控制的LED流水灯设计(电路、程序全部给出)讲课教案

用单片机控制的L E D 流水灯设计(电路、程序全部给出)

1.引言 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本文笔者用AT89C51单片机自制了一款简易的流水灯,重点介绍了其软件编程方法,以期给单片机初学者以启发,更快地成为单片机领域的优秀人才。 2.硬件组成 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATM EL公司生产的低电压、高性能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。因此,

流水灯电路的制作

流水灯电路的制作 一、概述: 随着电子技术的快速发展尤其是数字技术的突飞猛进,多功能流水灯凭着简易,高效,稳定等特点得到普遍的应用。在各种娱乐场所、店铺门面装饰、家居装潢、城市墙壁更是随处可见,与此同时,还有一些城市采用不同的流水灯打造属于自己的城市文明,塑造自己的城市魅力。目前,多功能流水灯的种类已有数十种,如家居装饰灯、店铺招牌灯等等。所以,多功能流水灯的设计具有相当的代表性。 多功能流水灯,就是要具有一定的变化各种图案的功能,主要考察了数字电路中一些编码译码、计数器原理,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板上组装并焊接。 要求:①元器件布局整齐、美观,同类型元器件高度一致;

花样流水灯设计

单片机课程设计 2014年 6月 15日 课 程 单片机课程设计 题 目 花样流水灯 院 系 电气工程及其自动化系 专业班级 1112班 学生姓名 温亿锋 学生学号 201111631227 指导教师 张瑛

一丶任务 设计一款以AT89C51单片机作为主控核心,按键控制电路、流水灯显示电路以及单片机最小系统等模块组成的核心主控制电路。 二丶设计要求 通过发光二极管显示不同的花样(至少有六种花样),并且可以通过按键来控制流水灯的速度。 三丶设计方案 本方案主要是通过对基于单片机的多控制、多闪烁方式的LED流水灯循环系统的设计,来达到本设计的要求。其硬件构成框图如下图所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED 发光二极管和5V直流电源组成。 单片机流水灯循环控制系统硬件框图 此设计方案中单片机的P1口接5路按键控制电路,实现流水灯花型的切换功能;单片机的P3.7引脚接上一个按钮开关以实现对流水灯闪烁频率的控制,即实现了快慢两种节拍实现花型的变换;单片机上的P2口接八路LED发光二极管组成流水灯电路,显示流水灯循环情况。 四丶系统硬件设计 4.1 直流稳压电源电路

对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源电路的稳定可靠是系统平稳运行的前提和基础。电子设备除用电池供电外,还采用市电(交流电网)供电。通过变压、整流、滤波和稳压后,得到稳定的直流电。直流稳压电源是电子设备的重要组成部分。本项目直流稳压电源为+5V。 直流稳压电源的制作一般有3种制作形式,分别是分立元件构成的稳压电源、线性集成稳压电源和开关稳压电源。下图为稳压电源采用的是三端集成稳压器7805构成的正5V直流电源。 三端固定式集成稳压电源电路图 AT89C51单片机的工作电压范围:4.0V---5.5V,所以通常给单片机外接5V 直流电源。此处用3节1.5V的干电池供电。 4.2 单片机最小系统 要使单片机工作起来,最基本的电路的构成由单片机、时钟电路、复位电路等组成,单片机最小系统如图所示。 时钟电路:本系统采用单片机内部方式产生时钟信号,用于外接一个12MHz 石英晶体振荡器和2个30pF微调电容,构成稳定的的自激振荡器,其发出的脉冲直接送入内部的时钟电路。 复位电路:确定单片机工作的起始状态,完成单片机的启动过程。单片机系统的复位方式有上电自动复位和手动按键复位。本设计采用手动按键复位,该复位方式同样具有上电自动复位功能。

最新五种编程方式实现流水灯的单片机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)采用555定时器接成的多谐振荡器。 555定时器是多用途的数字—模拟混合集成电路,利用它能极方便的构成施密特触发器,单稳态触发器和多谐振荡器,使用灵活,方便。555定时器在波形产生和交换,测量与控制中应用广泛成熟准确。 (2)采用三极管多谐振荡器 三极管多谐振荡器是一种矩形脉冲产生电路,这种电路不需外加触发信号,便能产生一定频率和一定宽度的矩形脉冲,常用作脉冲信号源。由于矩形波中含有丰富的多次谐波,故称为多谐振荡器。多谐振荡器工作时,电路的输出在高、低电平间不停地翻转,没有稳定的状态,所以又称为无稳态触发器。 (3)方案比较 555定时器接成的多谐振荡器产生的时钟信号驱动能力较强,555通过改变R和C的参数就可以改变振荡频率,电路参数容易确定,使用简单,信号稳定,调试方便,而三极管多谐振荡器,不易调试,输出信号驱动能力不强且信号不够稳定,故选用555定时器接成的多谐振荡器作为系统的时钟源。

2流水灯驱动电路设计 本次项目中使用1片4位同步二进制计数器74LS161,其Q0,Q1,Q2脚输出三位二进制顺序脉冲000-001-010-011-100-101-110-111,时钟源为555定时器的输出方波。 与Q0,Q1,Q2相连接的是一片38译码器74LS138的A0,A1,A2引脚,Y0—Y7依次输出负脉冲。其是引脚输入脉冲为时钟源为555定时器的输出方波经一片74LS14反相器反相后的时钟脉冲,其74LS138真值表如下: 8个LED以共阳接法分别接于Y0—Y7,依次点亮,其亮灭频率由555定时器产生的时钟频率为准。 二参数计算 555定时器外接电阻计算

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

#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是从低功耗模式唤醒

流水灯控制实验报告及程序

实验三流水灯控制实验 姓名专业通信工程学号成绩 一、实验目的 1.掌握Keil C51 软件与protues软件联合仿真调试的方法; 2.掌握如何使用程序与查表等方法实现流水效果; 3.掌握按键去抖原理及处理方法。 二、实验仪器与设备 1. 微机1台 2. Keil C51集成开发环境 3. Proteus仿真软件 三、实验内容 1.用Proteus设计一流水灯控制电路。利用P1口控制8个发光二级管L1—L8。P3.3口接一按 键K1。参考电路如下图所示。其中74LS240为八反响三态缓冲器/线驱动器。 2.用中断或查询方式编写程序,每按动一次K1键,演示不同的流水效果。若用KEY表示按键的 次数,则其对应的流水效果如下: ① KEY=0: L1-L8全亮; ② KEY=1: L1-L8先全灭,然后自右向左单管点亮,如此循环; ③ KEY=2: L1-L8先全灭,然后自右向左依次点亮,如此循环; ④ KEY=3: L1-L8先全亮,然后自左向右依次熄灭,如此循环; ⑤ KEY=4: L1-L8先全灭,然后整体闪烁,如此循环; ⑥ KEY=5:自行设计效果。 以上移位及闪烁时间间隔均设置为0.3秒,按动5次按键后,再按键时,流水效果从头开始循环。 四、实验原理 1.按键去抖原理:通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号 波形如下图所示。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为5~10ms。按键抖动会引起一次按键被误读多次。为了确保CPU对键的一次闭合仅做一次处理,必须去除按键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按键的抖动,可用硬件或软件两种方法消除。常用软件方法去抖动,即检测到按键闭合后执行一个5~10ms延时程序;让前沿抖动消失后,再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有按键按下。当检测到按键释放后,也要给5~10ms的延时,待后延抖动消失后,才能转入该键的处理程序。 2.74LS240:八反相三态缓冲器/线驱动器 引脚排列图:

流水灯电路图和程序

流水灯电路图和程序 #include #include #define uchar unsigned char #define uint unsigned int uchar code led[]={0xfe,0xfb,0xfd ,0xf7,0xef,0xbf,0xdf,0x7f}; delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } main( ) { uint i; while(1) { P2=led[]; delay(500); _crol_(led,1); } } 用arm7做一个流水灯的设计。 悬赏分:100 - 解决时间:2009-9-3 20:03 试设计一个闪烁流水灯控制器,该控制器可以控制8个灯顺序亮灭,当按钮K按下1次后,每次顺序点亮一个灯。而且每个点亮的灯在闪烁3次后,才能灭,周而复始,直到按钮K 二次按下。(用状态机设计)

要用PROTEL99画好电路图。还要写好程序。画图的也只能发到我的邮箱里面吧。邮箱:。谢谢各位。 提问者:woxinruozai - 五级 最佳答案 从原理图可以看出,如果我们想让接在P1.0口的LED1亮起来,那么我们只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平就可以;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭方法方法同LED1。因此,要实现流水灯功能,我们只要将LED2~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。 实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高、P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。 从上面中文表示看来实现单片机流水灯很简单,但是我们不能说P1.0你变低,它就变低了。因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”机器代码。我们又怎样来使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,然后交给单片机去执行。这里的“程序语言”目前主要有汇编语言和C语言两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。 实现8个LED流水灯汇编语言源程序liu01.asm ;----- 主程序开始----- START: CLR P1.0 ;P1.0输出低电平,使LED1点亮 ACALL DELAY ;调用延时子程序 SETB P1.0 ;P1.0输出高电平,使LED1熄灭 CLR P1.1 ;P1.1输出低电平,使LED2点亮 ACALL DELAY ;调用延时子程序 SETB P1.1 ;P1.1输出高电平,使LED2熄灭 CLR P1.2 ;P1.2输出低电平,使LED3点亮 ACALL DELAY ;调用延时子程序 SETB P1.2 ;P1.2输出高电平,使LED3熄灭 CLR P1.3 ;P1.3输出低电平,使LED4点亮 ACALL DELAY ;调用延时子程序 SETB P1.3 ;P1.3输出高电平,使LED4熄灭 CLR P1.4 ;P1.4输出低电平,使LED5点亮 ACALL DELAY ;调用延时子程序

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

高级流水灯--水滴效果(渐变带拖尾效果)实现和讲解 简介 学习嵌入式第一个例子通常都是控制一个LED亮灭,然后是花样繁多的流水灯,但不管灯的花样如何变化,单个LED的亮度没有变化,只有亮、灭两个状态,本章我们实现如何控制LED的亮度。 1 什么是PWM 脉冲宽度调制(Pulse Width Modulation,简称PWM),是利用微处理器的数字输出来对模拟电路进行控制的一种技术。 在本章的应用中可以认为PWM就是一种方波。比如图1: https://www.wendangku.net/doc/e02997050.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.wendangku.net/doc/e02997050.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;

数字电路流水灯设计书

电子工程学院课外学分申请书题目:数字电路流水灯设计 班级:***** 姓名:****** 学号:***** 专业:自动化 实验室:开放实验室 设计时间:2013年3月10日——2013年6月30日审批意见:指导老师:*****

1.数字电路流水灯设计方案 1.1采用555定时器接成的多谐振荡器。 555定时器是多用途的数字—模拟混合集成电路,利用它能极方便的构成施密特触发器,单稳态触发器和多谐振荡器,使用灵活,方便。555定时器在波形产生和交换,测量与控制中应用广泛成熟准确 。 1.2 采用三极管多谐振荡器 三极管多谐振荡器是一种矩形脉冲产生电路,这种电路不需外加触发信号,便能产生一定频率和一定宽度的矩形脉冲,常用作脉冲信号源。由于矩形波中含有丰富的多次谐波,故称为多谐振荡器。多谐振荡器工作时,电路的输出在高、低电平间不停地翻转,没有稳定的状态,所以又称为无稳态触发器。 1.3方案比较 555定时器接成的多谐振荡器产生的时钟信号驱动能力较强,555通过改变R和C的参数就可以改变振荡频率,电路参数容易确定,使用简单,信号稳定,调试方便,而三极管多谐振荡器,不易调试,输出信号驱动能力不强且信号不够稳定,故选用555定时器接成的多谐振荡器作为系统的时钟源。 2.基本原理 本次项目中使用1片4位同步二进制计数器74LS161,其Q0,Q1,Q2脚输出三位二进制顺序脉冲000-001-010-011-100-101-110-111,时钟源为555定时器的输出方波。 与Q0,Q1,Q2相连接的是一片38译码器74LS138的A0,A1,A2引脚,Y0—Y7依次输出负脉冲。其是引脚输入脉冲为时钟源为555定时器的输出方波经一片74LS14反相器反相后的时钟脉冲,其74LS138真值表如下: 8个LED以共阳接法分别接于Y0—Y7,依次点亮,其亮灭频率由555定时器产生的时钟频率为准。 3 电路图

cc2530按键控制流水灯

cc2530按键控制流水灯 本次设计用LED1,LED2,LED3 灯及按键S1 为外设。采用P10、P11、P14 口为输出口,驱动LED1/LED2/LED3,P01 口为输入口,接受按键信号输入(高电平为按键信号)。 1.高性能 2.4G 射频模块Q2530RF Q2530RF是丘捷技基于TI公司第二代2.4GHz IEEE 802.15.4 / RF4CE/ZigBee的第二代片上系统解决方案CC2530 F256的全功能模块,集射频收发及MCU控制功能于一体。外围原件包含一颗32MHz晶振和一颗32.768KHz晶振及其他一些阻容器件。射频部分采用巴伦匹配和外置高增益SMA天线,接收灵敏度高,发送距离远,空旷环境最大传输距离可达400米。模块引出CC2530所有IO口,便于功能评估与二次开发。 2.多功能开发板Q2530EB 多功能扩展板Q2530EB 可支持多种射频主控模块(例如Q2530RF等),配置有串口液晶显示接口,USB供电接口,DC 5V电源接口,电池接口,RS232接口,DEBUG接口,五向按键及指示灯,红外遥控信号接收/发射等模块。 所有的外设均通过SPI总线/UART /DEBUG等接口与射频模块Q2530RF 相连,并完全受Q2530RF 控制和访问。 多功能仿真扩展板Q2530EB 采用三种电源供电方式:DC 5V供电、USB接口供电、电池供电,可在插座P5设置跳线选择,PIN1-PIN2 为电池供电,PIN2-PIN3 为外接直流电源或者USB接口供电。电源开关为P4。 Q2530EB 板卡背面的电池盒可放置3节5号干电池,输出电压3.4~4.5V,板载电源电路将其调整到+3.3V 稳定的直流电压输出供后级使用。当电池电压低于3.4V 时,应更换电池以保持模块正常工作。 Q2530EB 带有1个DC 5V的电源适配器接口P2和一个USB接口P1,输入电压经过稳压器降压为+3.3V输出供后极使用。

相关文档
相关文档 最新文档