单片机学习之项目1-流水灯2定时器
- 格式:ppt
- 大小:1.62 MB
- 文档页数:37
单片机流水灯实验原理
单片机流水灯实验原理是通过使用单片机控制LED灯的亮灭
顺序,实现像水流一样顺序逐个灯泡点亮或熄灭的效果。
具体的原理是首先定义一个存储变量来表示灯泡的状态,将其初始化为一个特定的值,然后通过循环不断地改变存储变量的值,从而改变LED灯的状态。
在流水灯实验中,使用的通常是移位寄存器方法。
首先将存储变量的最低位设置为1,表示第一个灯泡亮起。
然后通过向左
移位的方法不断改变存储变量的值,使得下一个灯泡依次点亮。
当存储变量的最高位被移动到最低位时,循环重新开始,实现灯泡的循环点亮。
为了使灯泡的点亮和熄灭速度可见,可以在每次改变存储变量的值之后,添加一个延时函数,控制灯泡亮灭的间隔时间,从而形成一个流动的效果。
通过编程控制灯泡的亮灭顺序和时间间隔,可以实现不同的流水灯效果,如单方向流水灯、双向流水灯、交替流水灯等。
这些效果的产生都是通过改变存储变量的值和控制亮灭时间来实现的。
单片机流水灯实验原理
单片机流水灯实验原理:
流水灯是一种基本的电子实验,通过使用单片机控制多个
LED 灯的亮灭来实现灯光在各个灯珠之间流动的效果。
流水
灯实验原理如下:
1. 硬件连接:将多个 LED 灯和适当的电流限制电阻连接到单
片机的不同输出引脚上。
每个 LED 灯的阴极与电流限制电阻
连接到负极(GND),而阳极连接到单片机的 IO 引脚。
需要
注意的是,单片机的 IO 引脚的输出电压应该能够点亮 LED 灯。
2. 软件设计:使用单片机的 GPIO(通用输入输出)功能,设
置相应的输出引脚作为流水灯的控制引脚。
通过对这些引脚进行高低电平控制,实现不同 LED 灯的点亮和熄灭。
3. 流水灯效果:为了实现流水灯的效果,我们将需要在不同的时间间隔内控制不同的 LED 灯点亮。
可以使用一个循环来实
现这种效果,循环中通过更新和改变控制引脚的电平状态来控制流水灯的亮灭顺序。
4. 控制顺序:通过改变控制引脚的电平状态的顺序,可以改变流水灯的流动顺序。
可以通过在循环中使用延迟函数来控制灯的变换速度,或者使用计数器等其他方法来实现更复杂的流水灯效果。
通过以上原理,我们可以实现单片机流水灯实验并观察到灯光在不同的 LED 灯之间流动的效果。
实验二定时器控制流水灯实验一、实验目的1、熟练掌握实验箱的使用方法和注意事项。
2、了解简单单片机应用系统的设计方法。
3、掌握定时/计数器中断的编程方法。
4、掌握Keil C51集成开发环境在硬件仿真条件下各参数的设置。
二、实验内容利用实验板上的八个LED做显示,利用中断法编写定时程序,控制单片机定时器进行定时,所定时间为1S。
三、实验器材PC机一台, 仿真器一台, 实验箱一台, 导线若干。
四、实验说明当AT89C51的P1口有低电平输出时,相应的发光二极管就会点亮。
应用这一原理我们可以容易的点亮一个LED,例如令P1口输出0111 1111时D1就会点亮。
若再把0111 1111向右循环一位,利用P1口输出,就会点亮D2。
通过定时器来保证每个LED灯点亮时间大约为1秒。
五、实验原理图单片机的P1口为准双向口,每一位均可独立定义为输入或输出,若要将P1口的某一位所对应的灯熄灭,则需要向该端口写“0”。
电路图如下:图3-1 接线图六、实验步骤1.按照实验一中的建立工程的步骤,建立本实验内容相应的工程;2.单片机的P1口接8个发光二极管L0~L7;3.运用调试工具,调试软件,观察现象;4.软件定时:即让机器执行一个程序段,这段程序本身没有具体的执行目的,只是为了磨时间。
执行这段程序所需要的时间就是延时时间。
这种程序前面已设计过。
这种方法定时占用CPU执行时间,降低了CPU利用率。
此次实验使用的是MCS-51系列单片机七、参考程序#include<reg51.h>#include<intrins.h>#define uint unsigned int; #define uchar unsigned char; uchar temp=0x01,num=0;void T0Int() interrupt 1 {TH0=19455/256;TL0=19455%256;num++;if(num==20){num=0;P1=_crol_(temp,1);temp=P1;}}void main(){EA=1;ET0=1;TMOD=0X01;TH0=19455/256;TL0=19455%256;TR0=1;while(1);}八、实验现象通过实验观察可以发现,当烧入正确程序并全速运行后,8个LED灯从左到右一次点亮,并且每个LED灯点亮时间大约为1秒,循环往复直至断电或者复位。
用单片机实现流水灯的控制设计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 软件流程框图及程序清单按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。
实验一流水灯实验一、实验目的1)简单I/O引脚的输出2)掌握软件延时编程方法3)简单按键输入捕获判断二、实验实现的功能1)开机是点亮12发光二极管,闪烁三下2)按照顺时针循环依次点亮发光二极管3)通过按键将发光二极管的显示改为顺逆时针方式三、系统硬件设计流水灯原理图四、系统软件设计演示程序五、实验过程中遇到的问题及解决方法1)每次循环无论正转还是反转程序,总先是先执行P1口的8位led灯。
原因:在利用KEIL自带的库函数中的_crol_和_cror_时,在正转和反转程序中应该调换顺序的,开始没注意到。
改正后显示正常。
2)在开始实验的时候实行的是一直循环的方式,利用按键嵌套。
后来发现不理想,每次按键按到三次以上后进入死循环。
解决方案:利用一个按键,显示一次。
并加入按键释放,防止误动作。
指导老师签字:日期:实验一程序:/******************************************************************** **************工程说明:本工程主要完成了一下功能:1,复位后演示所有功能2,灯闪烁三次3,流水灯正转4,流水灯反转函数说明:yanshi():演示程序dengss():闪烁程序right():正转程序left():反转程序scankey():按键扫描********************************************************************* **************/#ifndef _led_h#define _led_h#define uint unsigned int#define uchar unsigned charuchar i,j,a,b,c,d;uchar flag=0;//亮灯判断标志uchar aa,bb,cc,dd,ss;sbit H1=P3^6;sbit key1=P0^5;sbit key2=P0^6;sbit key3=P0^7;void delay(uint); //1ms延时void yanshi(void);//演示所有亮灯方式void dengss(void);//闪烁三次void left(void); //左循环亮灯void right(void);//右循环亮灯void scankey(); //按键扫描#endif#include"stc10.h"#include<intrins.h>#include<led.h> //包含各种变量定义及函数声明main(){yanshi();delay(2000); //两秒后进入可控大循环while(1){scankey();if(flag==0)right();if(flag==1)left();if(flag==2)dengss();}}void delay(uint x){uint i,j;for(i=110;i>0;i--)for(j=x;j>0;j--);}void yanshi(){dengss();right();left();P2=0XFF;P3=0XFF;}void dengss(){for(ss=3;ss>0;ss--){P2=0;P3=0xc3;delay(1000);P2=0xff;P3=0xff;delay(1000);}flag+=3;//退出小循环,只亮一次,增大按键扫描频率}void right(){aa=0xfe;for(a=8;a>0;a--){P2=aa;aa=_crol_(aa,1);delay(500);}bb=0xfb;P2=0xff;//熄灭循环后亮着的for(b=4;b>0;b--){P3=bb;bb=_crol_(bb,1);delay(500);}//D12保留发亮flag+=3;//退出小循环,只亮一次,增大按键扫描频率}void left(){cc=0xdf;for(c=4;c>0;c--){P3=cc;cc=_cror_(cc,1);delay(500);}P3=0xff;//熄灭D9dd=0x7f;for(d=8;d>0;d--){P2=dd;dd=_cror_(dd,1);delay(500);}//D1保留发亮flag+=3;//退出小循环,只亮一次,增大按键扫描频率}void scankey(){H1=0;if(key1==0){delay(10);if(key1==0){flag=0;while(!key1);//等待按键释放}}if(key2==0){delay(10);if(key2==0){flag=1;while(!key2);//等待按键释放}}if(key3==0){delay(10);if(key3==0){flag=2;while(!key3);//等待按键释放}}}实验二定时器或实时时钟实验一、实验目的1)数码管动态显示技术2)定时器的应用3)按键功能定义二、实验实现的功能1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。
单片机-流水灯的程序流水灯是学习单片机基础知识不可或缺的一个实验,通过流水灯的实现可以掌握单片机 I/O 口的使用、定时器中断的使用以及掌握基本的程序流程控制语句。
本文将介绍流水灯基本概念及实现步骤。
流水灯基本概念流水灯是由多个 LED 灯组成的,每个灯都有一个独立的控制信号,通过按照一定的模式控制信号的输出,就可以实现流水灯的效果。
在单片机中,可以通过将多个 I/O 口作为流水灯中的 LED 控制信号输入口,实现流水灯的效果。
流水灯程序实现步骤在单片机中实现流水灯的程序主要包括以下几个步骤:1.通过 I/O 口控制单片机的 GPIO 端口输出。
2.在控制 GPIO 端口输出时,需要注意端口的方向设置与输出方式的选择。
3.通过控制 GPIO 端口的输出,可以实现 LED 灯的亮灭控制。
4.在亮灭控制中,需要注意定时器中断的使用,以保证流水灯的优美效果。
5.在程序编写的同时,需要考虑到不同型号单片机 I/O 口和定时器的不同特性。
6.需要根据不同的实验要求和要达到的效果,编写相应的程序。
流水灯程序的实现步骤详解下面,将详细介绍流水灯程序的实现步骤:1.首先,需要定义 I/O 口与对应的 LED 灯的对应关系。
一般情况下,LED 灯是连接在单片机的某一 I/O 口上。
我们需要将 I/O 口与 LED 灯的对应关系进行定义,以便在编写程序时可以通过 I/O 口控制 LED 灯的亮灭。
2.接着,需要设置 I/O 口的方向和输出方式。
在单片机的 I/O 口中,默认输入方向,如果要将 I/O 口设置为输出方向,则需要通过软件设置 I/O 口相应的设置寄存器。
同时,需要设置输出方式为推挽输出或是开漏输出,并配置相应的电平。
3.设置定时器。
在流水灯程序中,需通过定时器中断控制 LED 灯的亮灭模式。
需要设置定时器的时钟源、预分频系数、计数值和比较值等参数,以实现不同的滚动速度和亮灭模式。
4.定义中断函数。
中断函数需要根据定时器的计时值进行 LED 灯亮灭的控制操作。