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

合集下载

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

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

单片机跑马灯(流水灯)控制实验报告实验目的:本实验旨在通过使用单片机对LED灯进行控制,实现跑马灯(流水灯)的效果,同时熟悉单片机编程和IO口的使用。

实验器材:1)STC89C52单片机2)最基本的LED灯3)面包板4)若干跳线实验过程:1.硬件连接:将单片机的P2口与面包板上的相应位置连接,再将LED灯接入面包板中。

2.编写程序:按照题目要求编写所需程序。

3.单片机烧录:将程序烧录进单片机中,即可实现跑马灯效果。

程序详解:1. 由于LED灯是呈现亮灭效果,我们要编写程序来控制LED的亮灭状态。

2. 在程序中,我们通过P2口控制LED灯的亮灭状态。

例如,若要让LED1亮,我们就将P2口的第一个引脚设置为低电平(0),此时LED1就会发光。

同样地,若要LED2,LED3等依次点亮,则需要将P2口的第二个、第三个引脚设置为低电平,依此类推即可。

3. 接下来,我们要实现每个LED灯的亮灭时间间隔,并实现跑马灯的效果。

4. 在本实验中,我们采用了计时器中断的方式来实现灯光的控制,即在定时器中断函数中对P2口进行控制,这样可以方便地控制灯亮灭时间和亮度。

通过改变定时器中断的时间,可以改变LED灯的亮灭时间;通过改变P2口的控制顺序,可以实现跑马灯效果。

5. 整个程序比较简单,具体的代码实现可以参考以下程序:#include <REG52.H>#include <intrins.h>#define uint unsigned int #define uchar unsigned char void Delay1ms(uchar _ms); void InitTimer0();sbit led1=P2^0;sbit led2=P2^1;sbit led3=P2^3;sbit led4=P2^4;sbit led5=P2^5;sbit led6=P2^6;sbit led7=P2^7;void InitTimer0(){TMOD=0x01;TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1;}void Timer0() interrupt 1 {static uint i;TH0=(65536-50000)/256; TL0=(65536-50000)%256;i++;if(i%2==0){led1=~led1;}if(i%4==0){led2=~led2;}if(i%6==0){led3=~led3;}if(i%8==0){led4=~led4;}if(i%10==0){led5=~led5;}if(i%12==0){led6=~led6;}if(i%14==0){led7=~led7;}}void Delay1ms(uchar _ms){uchar i;while(_ms--){i=130;while(i--);}}实验总结:通过本次实验,我们掌握了单片机控制跑马灯(流水灯)的方法,对单片机编程和IO 口的使用有了更深入的了解。

单片机流水灯实验原理

单片机流水灯实验原理

单片机流水灯实验原理
单片机流水灯实验原理:
流水灯是一种基本的电子实验,通过使用单片机控制多个
LED 灯的亮灭来实现灯光在各个灯珠之间流动的效果。

流水
灯实验原理如下:
1. 硬件连接:将多个 LED 灯和适当的电流限制电阻连接到单
片机的不同输出引脚上。

每个 LED 灯的阴极与电流限制电阻
连接到负极(GND),而阳极连接到单片机的 IO 引脚。

需要
注意的是,单片机的 IO 引脚的输出电压应该能够点亮 LED 灯。

2. 软件设计:使用单片机的 GPIO(通用输入输出)功能,设
置相应的输出引脚作为流水灯的控制引脚。

通过对这些引脚进行高低电平控制,实现不同 LED 灯的点亮和熄灭。

3. 流水灯效果:为了实现流水灯的效果,我们将需要在不同的时间间隔内控制不同的 LED 灯点亮。

可以使用一个循环来实
现这种效果,循环中通过更新和改变控制引脚的电平状态来控制流水灯的亮灭顺序。

4. 控制顺序:通过改变控制引脚的电平状态的顺序,可以改变流水灯的流动顺序。

可以通过在循环中使用延迟函数来控制灯的变换速度,或者使用计数器等其他方法来实现更复杂的流水灯效果。

通过以上原理,我们可以实现单片机流水灯实验并观察到灯光在不同的 LED 灯之间流动的效果。

综合实验一——按键控制流水灯实验(查询方式)

综合实验一——按键控制流水灯实验(查询方式)

北京科技大学微型计算机原理实验报告学院:____自动化学院________________专业、年级:_自动化1101_ ______________ 姓名:__廖文骏_ ________________学号:_ 20111002124 ____________ 指导教师:___ _____王粉花____________2013年12 月综合实验一按键控制流水灯实验(查询方式)实验学时:2学时一、实验目的1.掌握ATmega16 I/O口操作相关寄存器2.掌握CodeVision AVR软件的使用3. 复习C语言,总结单片机C语言的特点二、实验内容1. 设计一个简单控制程序,功能是8个LED逐一循环发光0.5s,构成“流水灯”。

2. 用两个按键K1和K2控制流水灯(中断方式):(1)当按下K1时,流水灯从左向右流动;(2)当按下K2时,流水灯从右向左流动。

三、实验所用仪表及设备硬件:PC机一台、AVR_StudyV1.1实验板软件:CodeVision AVR集成开发软件、SLISP下载软件四、实验原理ATmega16芯片有PORTA、PORTB、PORTC、PORTD(简称PA、PB、PC、PD)4组8位,共32路通用I/O接口,分别对应于芯片上32根I/O引脚。

所有这些I/O口都是双(有的为3)功能复用的。

其中第一功能均作为数字通用I/O接口使用,而复用功能则分别用于中断、时钟/计数器、USRAT、I2C和SPI串行通信、模拟比较、捕捉等应用。

这些I/O口同外围电路的有机组合,构成各式各样的单片机嵌入式系统的前向、后向通道接口,人机交互接口和数据通信接口,形成和实现了千变万化的应用。

每组I/O口配备三个8位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=A\B\C\D)。

I/O口的工作方式和表现特征由这3个I/O口寄存器控制。

AVR通用I/O端口的引脚配置情况:I/O口引脚配置表表中的PUD为寄存器SFIOR中的一位,它的作用相当AVR全部I/O口内部上拉电阻的总开关。

按键AD转换 控制流水灯 但是反应慢

按键AD转换 控制流水灯 但是反应慢
}
int AD_value;
void Delay(unsigned int a)
{
unsigned char i;
while( --a != 0)
{
for(i = 0; i <10; i++);
}
}
void main()
{
TRISE=0;
TRISB=0x0100;//由于我用的是AN8作为转换口,而0表示输出。这里端口复用,那么第8位就必须是1,是输入用,其他倒是不影响
Delay(9400);
TB4=1;
Delay(9400);
TB5=0;
Delay(9400);
TB5=1;
Delay(9400);
LATE=0x013f;//红灯全亮
Delay(14800);
TE8=0;
Delay(9400);
TE8=1;
Delay(9400);
TB3=0;
Delay(9400);
TB3=1;
Delay(9400);
TB4=0;
Delay(9400);
TE4=1;
Delay(9400);
TE4=0;
Delay(9400);
TE5=1;
Delay(9400);
TE5=0;
Delay(9400);
TE1=0;
Delay(9400);
TE2=1;
Delay(9400);
TE2=0;
Delay(9400);
TE3=1;
Delay(9400);
TE3=0;

键控双向流水灯

键控双向流水灯

个低电平,触发外部中断0,运行外部中断0服务程序,把 方向标志位清零;按下P3.3处连接的按键,会触发外部中 断1,运行外部中断1服务程序,把方向标志位置1。当主 程序中执行到 JB FX,K1这条指令时,会根据FX的值是0还 是1,选择不同的流向,去执行RL A 或者执行RR A,使 彩灯出现不同的移动方向。 如果一直按下一只按键,会发现流水灯的运行速度 明显变慢,这是因为这段程序外部中断是采用了电平触发, 当执行完中断服务程序,回到主程序时,外部中断触发信 号仍然存在,所以在执行了一条主程序指令以后,又去执 行中断服务程序,如此反复,使执行主程序的速度大大降 低。 为了解决这个问题,可以采用下降沿触发外部中断。 按下按键会产生一个下降沿,CPU响应中断,执行完中断 服务程序程序以后,只要不再次按下按键,就不会再有下 降沿出现,不会再次响应中断,避免了上述问题。
一.电路原理图 电路原理图
二、中断的基本概念
1.中断 当中央处理器CPU正在处理某事件时,与 它并行工作的外围部件或者外部设备由于工作 的需要或者出现故障,请求CPU迅速去处理, CPU暂停当前工作,转去处理所发生的事件, 处理结束之后,再回到被打断的地方继续原来 的工作。这样的过程称为中断。如图8-2所示。 2.中断源 能够产生中断请求的条件称为中断源。 中断源可以来自单片机的外部和内部。在不同 种类的单片机中,中断源的数量一般并不相同。 MCS-51单片机有5个中断源
INT0:CLR FX ;外中断0服务程序,方向标志位清0 RETI ;中断返回 INT1:SETB FX;外中断1服务程序,方向标志位置1 RETI ;中断返回 DELAY MOV R7,#0FFH DELAY:MOV R7,#0FFH;延时子程序 L1: MOV R6,#0FFH DJNZ R6,$ DJNZ R7,L1 RET END ;程序结束

[知识]按键控制数码管和流水灯设计报告实验报告

[知识]按键控制数码管和流水灯设计报告实验报告

摘要000单片机自20世纪70年代以来,以其极高的性价比,以及方便小巧受到人们极大的重视和关注。

本设计选用msp430f249芯片作为控制芯片,来实现矩阵键盘对LED数码管显示的控制。

通过单片机的内部控制实现对硬件电路的设计,从而实现对4*4矩阵键盘的检测识别。

用单片机的P3口连接4×4矩阵键盘,并以单片机的P3.0-P3.3口作键盘输入的列线,以单片机的P3.4-P3.7口作为键盘输入的行线,然后用P0.0-P0.7作输出线,通过上拉电阻在显示器上显示不同的字符“0-F”。

在硬件电路的基础上加上软件程序的控制来实现本设计。

其工作过程为:先判断是否有键按下,如果没有键按下,则继续检测整个程序,如果有键按下,则识别是哪一个键按下,最后通过LED数码管显示该按键所对应的序号。

000关键字:单片机、流水灯、数码管、控制系统SCM since the nineteen seventies, with its high price, and a convenient compact attention and great concern. Thisdesign uses msp430f249 chip as the control chip, to realize the control of the LED digital tube display matrix keyboard. Through the internal control single chip to realize the hardware design of the circuit, so as to re alize the detection and recognition of 4*4 matrix keyboard. 4 * 4 matrix keyboard connected with the MCU P3 port, and the MCU P3.0 P3.3 port for a keyboard input, MCU P3.4P3.7 port as the lines of keyboard input, and then use theP0.0 P0.7 as the output line, by a pull-up resistor display different characters "0F on display". Control with software programs based on the hardware circuit to realize the design. The working process is: first to determine whether a key is pressed, if no key is pressed, it will continue to test the whole procedure, if a key is pressed, the000 Keywords: SCM, water lights, digital tubes, control system000键盘控制流水灯和数码管实验报告00目录000一设计的目的 (200)二任务描述及方案设计 (300)1. 任务描述 (300)2. 方案设计 (300)三硬件设计方案 (30)001. Msp430f149单片机的功能说明 (30)2. 显示器功能 (40)3. 复位电路 (40)4. 按键的部分 (40)5. 74HC573的特点 (4)0006. 流水灯和数码管电路原理图 (40)007. 元器件清单 (40)四程序设计方案 (50)001. 用IAR Embedded W orkbench软件编程序 (5)002. 仿真电路图 (60)五实物实验 (70)001. 实物图 (7)002. 测试结果与分析 (700)六结论 (11)000八参考文献 (16)000一、设计目的0001、进一步巩固和加深学生所学一门或几门相关专业课理论知识,培养学生设计、计算、绘画、计算机应用、文献查阅、报告撰写等基本技能;0002、培养学生实践动手能力及独立分析和解决工程实践问题能力;003、培养学生的团队协作精神、创新意思、严肃认真的治学态度和严谨求实的工作作风。

四个按键控制的四个流水灯的速度

四个按键控制的四个流水灯的速度

四个按键控制的四个流水灯的速度#define uchar unsigned char //定义一下方便使用#define uint unsigned int#define ulong unsigned long#include //包括一个52 标准内核的头文件sbit K1= P3;sb it K2= P3 ;sbit K3= P3;sb it K4= P3;bit ldelay=0; //长定时溢出标记,预置是0uchar speed=90; //设置一个变量保存默认的跑马灯的移动速度char code dx516[3] _at_ 0x003b;//这是为了仿真设置的//4 个按键4 级变速的跑马灯试验void main(void)// 主程序{uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//预定的写入P1 的值uchar ledi; //用来指示显示顺序RCAP2H =0x10; //赋T2 的预置值0x1000,溢出30 次就是1 秒钟RCAP2L =0x00;TR2=1; //启动定时器ET2=1; //打开定时器2 中断EA=1; //打开总中断while(1) //主程序循环{if(ldelay) //发现有时间溢出标记,进入处理{ldelay=0; //清除标记P1=ledp[ledi];//读出一个值送到P1 口ledi++;//指向下一个if(ledi==4){ledi=0;//到了最后一个灯就换到第一个444444-}}if(!K1)speed=20; //检查到按键,设置对应的跑马速度if(!K2)speed=10;if(!K3)speed=5;if(!K4)speed=2;}}//定时器2 中断timer2() interrupt 5{static uchar t;TF2=0;t++;if((t==speed)||(t>90)) //比较一个变化的数值,以实现变化的时间溢出,同时限制了最慢速度为1 秒{t=0;ldelay=1;//每次长时间的溢出,就置一个标记,以便主程序处理}}tips:感谢大家的阅读,本文由我司收集整编。

按键控制流水灯系统

按键控制流水灯系统

按键控制流水灯系统设计摘要本设计旨在于通过所学知识,设计一个简单的按键控制流水灯系统,满足一些基本控制功能。

本设计选用80C51芯片作为核心硬件,组合74LS138译码芯片,4×4键盘,74LS273锁存芯片以及其他必要元器件实现对8个发光二极管和2个数码管显示屏的功能控制。

控制过程中用到了51单片机的定时/计数器和中断技术。

本次设计旨在于在理论学习单片机的基础上,通过实际系统的搭建,提高对所学知识的实际应用能力。

设计中,我们主要做了方案设计,电路搭建,程序编写,控制仿真,报告撰写等一系列工作。

方案设计说明设计要求:(1)利用按键控制流水灯的显示。

(2)利用3×3或者4×4键盘,控制数码管的显示。

(3)利用到定时/计数器。

(4)利用到中断技术。

设计功能:(1)按键0—7键为普通亮灭控制键,对应8个发光二极管,每个按键按一下,对应的灯亮,再按一次,对应的灯熄灭。

(2)按键8,12,13,14号键为功能控制键。

1)8键:按一下,8个灯逐个点亮,熄灭,循环左移三次。

2)12键:按一下,灯全部点亮,闪烁20次,返回原来状态。

3)13键:按一下,从左至右,每次点亮一个灯并保持,至灯全部点亮,再逐个熄灭。

4)14键:左右两侧灯逐对向中间点亮,熄灭,当灯对相遇后,向相反方向进行,循环两次返回。

(3)数码管显示为两位,一号为按键显示(显示被按下的键号),二号为功能号显示(显示执行的功能,从0—4分别对应1—7号键,8号键,12号键,13号键,14号键的功能)功能实现方案:51单片机的P0口(P0.0—P0.7)为低位地址总线,兼做数据总线,连接74LS273锁存器,输出的数据通过其锁存。

单片机P1口(P1.0—P1.7)用作通用I/O口,与键盘连接,其中,高四位(P1.4—P1.7)接为列控制线,低四位(P1.0—P1.3)接行控制线。

单片机P2口(P2.0—P2.5)为高位地址线,接外部74LS138译码芯片。

用单片机实现流水灯的控制设计说明书

用单片机实现流水灯的控制设计说明书

用单片机实现流水灯的控制设计1.引言当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被智能控制系统所取代。

单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。

学习单片机的最有效方法就是理论与实践并重,本设计课题是流水灯的控制设计,流水灯是一串按一定的规律像流水一样连续闪亮。

流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。

2.硬件组成2.1 总体方案设计分析要求用8255的A口和B口做为输出,接16个发光二极管,从而实现16位流水灯的显示效果,基本的界限可如下图A所示,在C口的地两位接两个开关,实现两个扩展功能的控制。

i:基本流水灯显示电路A口和B口两个端口不能同时复制,从而在试验中可以用BX进行需要复制的数据的存储,因为BX可以分从BH BL两个部分进行独立的操作,在本次试验中用BH对A口进行赋值,用BL对B口进行赋值,通过演示一段时间再对BH BL进行移位和输出,实现流水灯的效果。

ii:正反方向选择把PC.0口接在开关上,编写程序对C端口的数据进行读取,并进行判断,使得当PC.0为高电平的时候则灯进行左移,同时B口与A口相反。

iii:快慢速度控制把PC.1口接在开关上,编写程序对C端口的数据进行读取,并进行判断,使得当PC.1为高电平的时候则延时的时间缩短,使得流水灯的流水速度加快,低电平的时候则进行延时的时间变长,使得流水灯的流水速度加快。

3硬件原理设计A该模块的WR.RD分别练到PC总线接口模块的XIOW和XIORB该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到PC总线接口模块的数据(D0~D7)、地址线(A0~A7)C 8255模块选通线CA连到PC总线接口模块的IOY3D 8255的PA0~PA7连到发光二极管的L1~L8;8255的PB0~PB7连到发光二极管的L9~L16E 8255的PC0 PC1分别练到开关 K0 K1F 软件流程框图及程序清单按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。

键控流水灯的程序

键控流水灯的程序

键控流水灯的程序硬件电路描述如下:89S52 单片机的P1 口接有8 个LED,当某一端口输出为“0”时,相应的LED 点亮,P3.2、P3.3、P3.4、P3.5 分别接有四个按钮K1~K4,按下按钮时,相应引脚被接地。

现要求编写可键控的流水灯程序,当K1 按下时,开始流动,K2 按下时停止流动,全部灯灭,K3 使灯由上往下流动,K4 使灯由下往上流动。

下面首先给出程序,然后再进行分析。

例 2-1:键控流水灯的程序#include "reg51.h"#include "intrins.h"#define uchar unsigned charvoid mDelay(unsigned int DelayTime){ unsigned int j=0;for(;DelayTime>0;DelayTime--){ for(j=0;j<125;j++){;} }}uchar Key(){ uchar KeyV;uchar tmp;P3=P3|0x3c; //四个按键所接位置KeyV=P3;if((KeyV|0xc3)==0xff) //无键按下return(0);mDelay(10); //延时,去键抖KeyV=P3;if((KeyV|0xc3)==0xff)return(0);else{ for(;;){ tmp=P3;if((tmp|0xc3)==0xff) break;}return(KeyV);}}void main(){ unsigned char OutData=0xfe; bit UpDown=0;bit Start=0;uchar KValue;for(;;){ KValue=Key();switch (KValue){ case 0xfb: //P3.2=0,Start { Start=1;break; }case 0xf7: //P3.3=0,Stop{ Start=0;break; }case 0xef: //P3.4=0 Up{ UpDown=1;break; }case 0xdf: //P3.5=0 Down { UpDown=0;break; }}if(Start){ if(UpDown)OutData=_crol_(OutData,1); elseOutData=_cror_(OutData,1); P1=OutData; }elseP1=0xff; //否则灯全灭mDelay(1000);}}。

用四个独立按键控制流水灯的左移右移加速减速

用四个独立按键控制流水灯的左移右移加速减速

用四个独立按键控制流水灯的左移右移加速减速用四个独立按键控制流水灯的左移右移加速减速实现6个数码管的分时显示在一个数码管上实现0到9的循环显示2009-05-30 16:11:52| 分类:汇编程序| 标签:|字号大中小订阅;////////////////////////////////////////;程序编写人:汤军;编写时间2009年5月23日星期六;功能: 在一个数码管上实现0到9的循环显示;////////////////////////////////////////;/////////////自定义及初始化////////////BAOHU EQU 60HJISHU EQU R4ORG 0000HAJMP MAIN;////////////////主程序////////////////MAIN: CLR P2.2 ;开片选CLR P2.1CLR P2.0MOV BAOHU,#0 ;查表变量赋初值MOV R4,#10 ;循环次数MOV DPTR,#TAB2 ;表首地址赋数据指针LDD1: ACALL CABIAO ;调用查表子程序ACALL DISPLAY ;调用显示子程序ACALL CHULI ;调用处理子程序DJNZ R4,LDD1 ;判断是否显示到9AJMP MAIN ;循环;/////////////查表子程序///////////////;输入:BAOHU;输出:A;功能:取出段数据CABIAO: MOV A,BAOHUMOVC A,@A+DPTR ;查表RET ;返回;//////////////显示子程序//////////////;输入:A;输出:P0;功能:段数据送数码管显示DISPLAY: MOV P0,#0FFHMOV P0,A ;显示ACALL DELAY ;调用延时子程序RET ;返回;//////////////处理子程序//////////////;输入:BAOHU;输出:BAOHU;功能:显示下一个数值CHULI: MOV A,BAOHUINC A ;显示下一个数值MOV BAOHU,ARET;//////////////延时子程序//////////////;输入:无;输出:无;功能:延时一段时间,稳定数码管的显示DELAY: MOV R5,#06H DD: MOV R6,#0FFHDD2: MOV R7,#0FFHDJNZ R7,$DJNZ R6,DD2DJNZ R5,DDRET;//////////////TAB2段数据表//////////// TAB2: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H ;/////////////////结束/////////////////END。

用按键控制流水灯的例子

用按键控制流水灯的例子
main()
{while(1){P0=0xff;
while(!key1)aa();
while(!key2)bb();
while(!key3)cc();
while(!key4)dd();
}} �
int c[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; //逐盏点亮,逐盏灭掉数组
//************************************************************************************************************
{ int i=0,j=0,k=0,h=0;
loop:P0=0xff;
if(key4==0) //第一次判断是否有键按下
{for(i=0;i<30000;i++); //延时防抖动
if(key4==1) //判断按键是否弹起
while(1){P0=a[j];delay();j++;if(j==8)j=0; //左流水灯
这是我刚写的一个用按键控制流水灯的例子,很适合初学者的
/*硬件电路连接:流水灯接在P0口, 阳极接高电平,
阴极接P0口,4个按键分别接P3.4,P3.5, P3.6,P3.7 ,按下时是低电平 */
#include <regx51.h>
sbit key1=P3^4;
sbit key2=P3^5;
void bb() // 实现要求(2)的子程序(key2按下时实现计数功能,弹开时停止计数;)

单片机控制流水灯

单片机控制流水灯

程序框架设计
01
主程序框架
主程序是单片机程序的核心,负 责程序的启动、初始化、中断处 理等任务。
02
中断服务程序框架
03
功能模块框架
中断服务程序用于处理外部中断 事件,如按键按下、定时器溢出 等。
功能模块是实现特定功能的程序 块,如LED灯控制、定时器计数 等。
程序功能模块设计
LED灯控制模块
该模块负责控制LED灯的亮灭状态, 可以通过编程实现流水灯效果。
物联网技术的应用
未来,单片机可能会更多地应用于物联网领域, 与互联网结合,实现更广泛的控制和应用。
3
人工智能与单片机的结合
未来,人工智能技术可能会与单片机结合,实现 更智能的控制和应用。
THANKS
[ 感谢观看 ]
02
包括主程序和中断服务程序,主程序负责循环控制LED灯,中断
服务程序负责处理外部中断。
调试过程
03
通过串口调试工具或示波器等工具对程序进行调试,确保程序
正确运行。
实际运行效果展示
流水灯效果
通过单片机控制LED灯的亮灭,实现流水灯效果 。
速度控制
通过程序延时控制LED灯亮灭的时间间隔,实现 流水灯的速度变化。
硬件连接
将单片机与LED灯连接,通过GPIO口控制LED灯的亮灭。
控制逻辑
通过编写程序控制单片机GPIO口的输出,实现LED灯的顺序亮 灭,形成流水灯效果。
延时控制
通过程序延时控制LED灯亮灭的时间间隔,实现流水灯的速度变 化。
控制程序编写及调试
编程语言
01
使用C语言或汇编语言编写单片机程序。
程序结构
电源管理优化
采用高效的电源管理方案,降 低流水灯的能耗。

LED流水灯设计-单片机控制

LED流水灯设计-单片机控制

《微机应用系统设计与综合实验(实践)》课程设计实验报告实验课题LED霓虹灯设计姓名学号班级指导老师目录第一章设计概述 (3)1.1 设计任务 (3)1.2 设备器材 (3)第二章硬件设计方案 (3)2.1 设计思想 (3)2.2 硬件选择 (4)2.3 AT89C52单片机介绍 (4)2.4 硬件逻辑图 (7)2.5 设计连线 (8)2.6 仿真电路图 (8)第三章软件设计方案 (8)3.1 软件设计思想 (8)3.2 程序流程图 (9)第四章调试及运行结果 (10)第五章设计心得与体会 (10)参考资料 (11)源程序清单 (11)第一章设计概述1.1 设计任务设计内容:利用汇编语言(或C语言),实现8个单色LED灯的左、右循环显示,并实现循环的速度可调。

选用芯片: 8255 等注:由于实验室的没有提供8255芯片,所以改用单片机完成此实验,并且添加了调节灯明暗的功能,以实现明暗可调。

1.2 设备器材在本设计中,所用到的设备器材如下所示:(1)计算机一台;(2)唐都仪器实验箱一台;(3) AT89C52单片机一片;(4)导线若干。

第二章硬件设计方案2.1 设计思路本课题需要用按钮开关实现流水灯的左右循环显示、调速、控制亮度的功能。

可以选用五个开关来实现这些操作。

单片机正在软件运行下通过不断扫描开关状态,来将相关操作对应量送入单片机的输入端口,然后判断属于哪一类操作。

五个开关分别为K1,K2,K3,K4,K5,分别控制流水灯的调向、加速、减速、变亮、变暗。

在设计过程中,接开关的端口要全部保持高电平,当按下一个开关时,输入一个低电平,即为状态改变信号。

不能同时有两个端口同为高电平。

在设计中我主要负责了用云脉冲宽度调制(PWM)波控制LED灯的亮度环节,开始对PWM并不是很了解,通过请教同学和查阅相关资料,渐渐明白了其中的原理。

在主程序运行时通过中断方式调整其输出电压的占空比,从而改变灯泡的亮度。

原理是这样的,主程序的始终频率和中断的始终频率并不相同,大约是中断的一千倍,LED灯在移动时如果响应了中断,则在执行中断程序时,LED 灯近似看做没有移动,此时在中断程序中设计一个初值和一个上限,当计数到初值时置灯泡灭掉,在计数到上限之前小灯泡都是熄灭的,到达上限后回0,并置灯泡为亮,继续计数,在到设定的初值时置小灯泡为灭掉。

c51_1按键控制三种流水灯效果

c51_1按键控制三种流水灯效果

c51_1按键控制三种流水灯效果#includesbit KEY=P2^0;//延迟程序void delay(unsigned int i){unsigned int j;while(i--)for(j=600;j>0;j--);}//主程序void main(void){while(1){unsigned int countX,countY,i,j,a,b,x;KEY=1;//初始化为高电平delay(10);countX=0;//定义计数器1、判断长按短按countY=1000;//定义计数器2、判断是否双击if(KEY==0)//判断是否按下按键{delay(10);if(KEY==0)//确认是否按键{while(KEY==0)//当按键松开时退出循环{countX++;delay(1);}}//按键松开时,计数器2开始计数while(KEY&&countY){countY--;delay(1);}delay(10);if(countY==0)//如果是因为计数器2时间到跳出循环,说明在一定时间内按键没有第二次触发{delay(10);if(countX<200)//短按效果(按键时间小于0.2秒){//第一种流水灯效果while(1){KEY=1;a=0x80;for(i=0;i<8;i++)//流水灯循环右移{P0=~a;a>>=1;delay(200);if(KEY==0){return;}}if(KEY==0){return;}b=0x01;for(i=8;i>0;i--)//循环八次{b|=0x01;a=0x80;for(j=0;j{a|=b;P0=~a;a>>=1;if(KEY==0){return;}delay(200);}b<<=1;if(KEY==0){return;}}for(i=5;i>0;i--)//闪烁{P0=0xff; delay(200);P0=0x00; delay(200);if(KEY==0) {return;}}if(KEY==0) {return;}a=0x80;for(i=0;i<8;i++) {P0=a;a>>=1;delay(200);if(KEY==0) {return;}}b=0x01;for(i=8;i>0;i--) {b|=0x01;a=0x80;for(j=0;j<i;j++) {a|=b;P0=a;a>>=1;if(KEY==0) {return;}delay(200);}b<<=1;if(KEY==0) {return;}}for(i=5;i>0;i--) {if(KEY==0) {return;}P0=0x00; delay(200);P0=0xff; delay(200);}}}else //长按效果{//第二种流水灯效果x=100;while(1){KEY=1;a=0x80;for(i=0;i<8;i++) {P0=~a;a>>=1;delay(x);if(KEY==0){return ;}}a=0x01;if(KEY==0){return;}for(i=0;i<8;i++) {P0=~a;a<<=1;</i;j++)if(KEY==0){return;}delay(x);}x+=150; //控制流水灯循环速度if(x>500){x=100;}}}}if(countY!=0)//双击{delay(1000);while(1){delay(10);a=0xff;//a=0x80;一个灯亮P0=~a;if(KEY==0){return;}delay(300); if(KEY==0) { return;}delay(300); a=0x00;P0=~a;if(KEY==0) { return;}delay(300); if(KEY==0) { return;}delay(300); a=0xaa;P0=~a;if(KEY==0) { return;}delay(300); if(KEY==0) { return;}delay(300);a=0x55;P0=~a;if(KEY==0) { return;}delay(300); if(KEY==0) { return;}delay(300); a=0xf0;P0=~a;if(KEY==0) { return;}delay(300); if(KEY==0) { return;}delay(300); a=0x0f;P0=~a;if(KEY==0) { return;}delay(300); if(KEY==0) { return;}delay(300); a=0x3c;P0=~a;if(KEY==0) { return;}delay(300); if(KEY==0) { return;}delay(300); a=0xc3;P0=~a; delay(300); if(KEY==0) { return;}delay(300); if(KEY==0) { return;}}}//while(KEY==0); delay(10);KEY=1;}}}。

单片机课程设计—8个按键控制8个LED自动设定控制流水灯

单片机课程设计—8个按键控制8个LED自动设定控制流水灯

-1-江苏安全技术学院实习总结报告实习单位江苏安全技术职业学院实习起止时间 2019 年 11 月 17 日至 2019 年 12 月 11 日指导教师所在院(系) 电气工程系班 级 电梯技术 2 班学生姓名 艾孜提艾力·阿迪力·玉苏甫江学号20183102932019 年 12 月 16 日江苏安全技术职业学院-1-目录第 1 章 按键控制流水灯设计.................................................................................... 1 1.1 实习目的 ................................................................... 错误!未定义书签。

1.2 实习要求 ................................................................... 错误!未定义书签。

第 2 章 电路工作原理................................................................................................ 2 2.1 STC89C52 单片机工作原理 ....................................................................... 2 2.2 LED 工作原理.............................................................................................. 3 2.3 按键工作原理 .............................................................................................. 3 2.4 整体电路图 .................................................................................................. 5 2.5 本章小结 ..................................................................................................... 6第 3 章 C 程序设计.................................................................................................... 7 3.1 程序设计流程图 ......................................................................................... 7 3.2 实验结果 ...................................................................................................... 8 3.3 本章小结 ..................................................................................................... 9总结及体会................................................................................................................ 10 参考文献.................................................................................................................... 11 附录............................................................................................................................ 12-1--2-第1章 按键控制流水灯设计1.1 实习目的本次实习以 STC89C52 单片机为控制核心。

用单片机实现流水灯的控制设计

用单片机实现流水灯的控制设计

用单片机实现流水灯的控制设计1.引言当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被智能控制系统所取代。

单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。

学习单片机的最有效方法就是理论与实践并重,本设计课题是流水灯的控制设计,流水灯是一串按一定的规律像流水一样连续闪亮。

流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。

2.硬件组成2.1 总体方案设计分析要求用8255的A口和B口做为输出,接16个发光二极管,从而实现16位流水灯的显示效果,基本的界限可如下图A所示,在C口的地两位接两个开关,实现两个扩展功能的控制。

i:基本流水灯显示电路A口和B口两个端口不能同时复制,从而在试验中可以用BX进行需要复制的数据的存储,因为BX可以分从BH BL两个部分进行独立的操作,在本次试验中用BH对A口进行赋值,用BL对B口进行赋值,通过演示一段时间再对BH BL 进行移位和输出,实现流水灯的效果。

ii:正反方向选择把PC.0口接在开关上,编写程序对C端口的数据进行读取,并进行判断,使得当PC.0为高电平的时候则灯进行左移,同时B口与A口相反。

iii:快慢速度控制把PC.1口接在开关上,编写程序对C端口的数据进行读取,并进行判断,使得当PC.1为高电平的时候则延时的时间缩短,使得流水灯的流水速度加快,低电平的时候则进行延时的时间变长,使得流水灯的流水速度加快。

3硬件原理设计A该模块的WR.RD分别练到PC总线接口模块的XIOW和XIORB该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到PC总线接口模块的数据(D0~D7)、地址线(A0~A7)C 8255模块选通线CA连到PC总线接口模块的IOY3D 8255的PA0~PA7连到发光二极管的L1~L8;8255的PB0~PB7连到发光二极管的L9~L16E 8255的PC0 PC1分别练到开关K0 K1F 软件流程框图及程序清单按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。

基于单片机AT89C51控制的花样调速流水灯课题设计报告.

基于单片机AT89C51控制的花样调速流水灯课题设计报告.

宁波技师学院课程设计报告论文题目花样调速流水灯专业班级学生姓名学号指导教师宁波技师学院电气技术系2013 年9月目录第1章系统设计 (2)1.1 数码管显示方案 (2)1.2 按键输入方案 (1)第2章硬件电路设计 (2)2.1电路原理 (2)2.2系统工作流程 (2)第3章软件设计 (3)3.1系统资源分配 (4)3.2软件模块设计 (6)第四章调试¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨94.1 正常现象¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨104.2出现的故障¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨11第5章总结 (7)参考文献 (7)附录1硬件电路图 (8)附录2软件代码 (14)第1章系统设计1.1 数码管显示方案通常数码管显示有两种方式:动态显示和静态显示。

静态显示的优点是程序简单、显示亮度有保证、单片机CPU的开销小,节约CPU的工作时间。

但占用I/O口线多,每一个LED都要占用一个I/O口,硬件开销大,电路复杂。

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

按键控制单片机改变流水灯速度
/*程序效果:有三个按键,按下其中任意一个流水灯的速度改变
*/#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:感谢大家的阅读,本文由我司收集整编。

仅供参阅!。

相关文档
最新文档