单片机实验流水灯实验报告
实验三流水灯实验(io口和定时器实验)

实验三流水灯实验(I/O口和定时器实验)一、实验目的1.学会单片机I/O口的使用方法和定时器的使用方法;2.掌握延时子程序的编程方法、内部中断服务子程序的编程方法;3.学会使用I/O口控制LED灯的应用程序设计。
二、实验内容1.控制单片机P1口输出,使LED1~LED8右循环轮流点亮(即右流水),间隔时间为100毫秒。
2.控制单片机P1口输出,使LED1~LED8左循环轮流点亮(即左流水),间隔时间为100毫秒。
3.使用K1开关控制上面LED灯的两种循环状态交替进行;4. 用定时器使P1口输出周期为100ms的方波,使LED闪烁。
5.使用定时器定时,使LED灯的两种循环状态自动交替,每一种状态持续1.6秒钟(选作)。
三、实验方法和步骤1.硬件电路设计使用实验仪上的E1、E5和E7模块电路,把E1区的JP1(单片机的P1口)和E5区的8针接口L1~L8(LED的驱动芯片74HC245的输入端)连接起来,P1口就可以控制LED 灯了。
当P1口上输出低电平“0”时,LED灯亮,反之,LED灯灭。
E7区的K1开关可以接单片机P3.0口,用P3.0口读取K1开关的控制信号,根据K1开关的状态(置“1”还是置“0”),来决定LED进行左流水还是右流水。
综上,画出实验电路原理图。
2.程序设计实验1和实验2程序流程图如图3-1实验3程序流程图如图3-2所示。
图3-1 实验1,2程序流程图图3-2 实验3程序流程图实验4程序流程图如图3-3,3-4所示。
实验5程序流程图如图3-5,3-6所示。
图3-5 实验5主程序流程图图3-6 定时器中断服务子程序流程图图3-4 定时器中断服务子程序流程图图3-3 实验4主程序流程图编程要点:(1)Pl,P3口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。
例如:MOV P1,A; P1口做输出MOV P1,#0FFHMOV A,P1;P1口做输入SETB P3.0MOV C,P3.1;从P3.1口读入数据(2)每个端口对应着一个寄存器,例:P1→90H(P1寄存器地址);P3→B0H(P3寄存器地址);寄存器的每一位对应着一个引脚,例:B0H.0→P3.0(3)对寄存器写入“0”、“1”,对应的外部引脚则输出“低电平”、“高电平”。
实训报告单片机流水灯

一、实验目的1. 熟悉单片机的基本原理和组成,掌握51单片机的编程方法。
2. 理解单片机I/O口的使用,学会利用单片机控制LED灯的流水灯效果。
3. 提高动手实践能力,培养团队协作精神。
二、实验环境1. 实验设备:51单片机开发板、LED灯、面包板、电源、连接线等。
2. 实验软件:Proteus仿真软件、Keil uVision5集成开发环境。
三、实验原理流水灯实验是单片机入门级实验之一,通过控制单片机的I/O口输出高低电平,使LED灯依次点亮,形成流水灯效果。
实验中,利用单片机的定时器产生定时中断,每隔一定时间改变I/O口的输出状态,实现LED灯的流水灯效果。
四、实验步骤1. 打开Proteus软件,新建一个工程项目,添加51单片机开发板和LED灯等元件,绘制电路图。
2. 打开Keil uVision5,新建一个C51工程项目,选择对应的单片机型号。
3. 编写程序:(1)初始化I/O口:将P0口设置为输出模式,将P1口设置为输出模式。
(2)设置定时器:选择合适的定时器,设置定时时间,使其产生定时中断。
(3)编写中断服务程序:在中断服务程序中,改变I/O口的输出状态,实现LED灯的流水灯效果。
(4)编写主程序:在主程序中,启动定时器,进入中断服务程序。
4. 编译程序,生成HEX文件。
5. 将生成的HEX文件导入Proteus软件,运行仿真实验。
6. 观察实验现象,检查LED灯的流水灯效果是否正常。
五、实验结果与分析1. 实验现象:在Proteus软件中,LED灯依次点亮,形成流水灯效果。
2. 实验分析:通过设置定时器,每隔一定时间改变I/O口的输出状态,实现LED 灯的流水灯效果。
实验过程中,可以调整定时器的定时时间,改变流水灯的速度。
六、实验总结1. 本实验使我们对单片机的基本原理和组成有了更深入的了解。
2. 通过编写程序,掌握了51单片机的编程方法,提高了编程能力。
3. 实验过程中,我们学会了利用单片机控制LED灯,实现了流水灯效果。
51单片机流水灯实验报告

竭诚为您提供优质文档/双击可除51单片机流水灯实验报告篇一:51单片机流水灯实验报告51单片机流水灯试验一、实验目的1.了解51单片机的引脚结构。
2.根据所学汇编语言编写代码实现LeD灯的流水功能。
3.利用开发板下载hex文件后验证功能。
二、实验器材个人电脑,80c51单片机,开发板三、实验原理单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LeD灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的p2端口,对8个LeD灯进行控制,要实现逐个亮灯即将p2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。
使用rl或rra实现位的转换。
A寄存器的位经过rra之后转换如下所示:然后将A寄存器转换一次便送给p2即moVp2,A便将转换后的数送到了p2口,不断循环下去,便实现了逐位置一操作。
四、实验电路图五、通过仿真实验正确性代码如下:oRg0moVA,#00000001bLoop:moVp2,ARLAAcALLDeLAYsJmpLoopDeLAY:moVR1,#255DeL2:moVR2,#250DeL1:DJnZR2,DeL1DJnZR1,DeL2ReTend实验结果:六、实验总结这次试验我通过proteus仿真实现对流水灯功能的实现。
受益匪浅,对80c51的功能和结构有了深层次的了解,我深刻的明白,要想完全了解c51还有一定距离,但我会一如既往的同困难作斗争。
在实验中,我遇到了不少困难,比如不知道怎么将程序写进单片机中,写好程序的却总出错,不知道什么原因,原来没有生成hex文件。
这些错误令我明白以后在试验中要步步细心,避免出错。
篇二:实验(:51单片机流水灯实验报告)一51单片机流水灯实验实验报告“流水灯”实验报告一、实验目的1.了解单片机I/o口的工作原理。
2.掌握51单片机的汇编指令。
3.熟悉汇编程序开发,调试以及仿真环境。
二、实验内容通过汇编指令对单片机I/o进行编程(本实验使用p0口),以控制八个发光二极管以一定顺序亮灭。
单片机流水灯实验报告

单片机流水灯实验报告:实验一:用C51实现流水灯实验实验要求:完成亮流水,即LED从低位流向高位流动,每次流动一位,且每次只亮一个LED灯,其它LED灭。
实验原理:单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口,对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。
使用r1或rr a实现位的转换。
实验内容:通过仿真来实现实验电路图代码如下;for(x=0;x<8;x++){P0=num[x];delay();}for(x=6;x>0;x--){P0=num[x];delay();}P0=0xfe;实验结果:实验程序:#include<REG51.H>void delay();//延时函数声明void main()//主函数{unsigned charx,num[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};while(1){for(x=0;x<8;x++){P0=num[x];delay();}for(x=6;x>0;x--){P0=num[x];delay();}P0=0xfe;}}void delay()//延时函数,无符号字符型变量i为形式参数{unsigned int j,k;//定义无符号字符型变量j和kfor(k=0;k<500;k++)//双重for循环语句实现软件延时for(j=0;j<100;j++);}实验总结:这次试验通过仿真实验软件实现流水灯实验,充分学会了keil 软件和Proteus电路仿真的联合调试,为后期的实验做足了功课。
也认识到仿真实用性。
单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
51单片机流水灯实验报告

51单片机流水灯实验报告一、实验目的1.熟悉51单片机的硬件资源2.掌握51单片机的I/O口编程3.掌握51单片机的定时器/计数器编程二、实验原理流水灯是一种简单的电子设计,通过依次点亮和熄灭多个LED灯来形成流水灯的效果。
本实验使用的是51单片机,它有40个I/O口和3个定时器/计数器,可以方便地实现流水灯的效果。
三、实验器材1.51单片机开发板B数据线3.LED灯若干4.面包板5.连线材料(公对公、公对母杜邦线)四、实验过程1.准备工作:a.将51单片机开发板和LED灯连接起来,将LED灯依次插在面包板上,并与51单片机的I/O口相连接。
b.连接电脑与51开发板,使用USB数据线将它们连接起来。
2.编写程序:a. 打开Keil开发环境,新建一个工程。
b.在C代码文件中编写流水灯的控制程序,并引用51单片机的头文件和IO口控制相关的函数。
代码示例:```c#include <reg51.h>sbit LED1 = P1^0;sbit LED2 = P1^1;sbit LED3 = P1^2;sbit LED4 = P1^3;sbit LED5 = P1^4;void delay(unsigned int t)while(t--)for(unsigned int i = 0; i < 125; i++);}void maiwhile(1)LED1=0;//点亮LED1delay(1000); // 延时LED1=1;//熄灭LED1LED2=0;//点亮LED2delay(1000); // 延时LED2=1;//熄灭LED2LED3=0;//点亮LED3delay(1000); // 延时LED3=1;//熄灭LED3LED4=0;//点亮LED4delay(1000); // 延时LED4=1;//熄灭LED4LED5=0;//点亮LED5delay(1000); // 延时LED5=1;//熄灭LED5}}```3.烧录程序:a.将开发板上的烧录开关调整为“USB”模式。
单片机流水灯实验报告

实验目的:实现单片机流水 灯功能
实验结果:LED灯按照预设 顺序依次点亮,实现流水灯
效果
分析与讨论:实验结果与预 期相符,验证了单片机流水
灯功能的实现。
实验结果分析
实验目的:验证单片 机流水灯控制电路的
设计与实现
实验设备:单片机、 LED灯、电阻、电源
等
实验步骤:编写程序、 连接电路、运行程序、
观察现象
实验过程中,对实验结果 的分析不够全面,容易导 致实验结论不准确。
实验过程中,对实验数据 的记录不够详细,容易导 致实验数据丢失。
实验过程中,对实验设备 的维护不够重视,容易导 致实验设备损坏。
实验过程中,对实验环境 的控制不够严格,容易导 致实验结果不准确。
对未来实验的展望
创新实验方法:尝试新的实 验方法,提高实验效果
掌握流水灯电路 的搭建方法
学习单片机的编 程和调试方法
掌握流水灯电路 的调试方法
添加标题
添加标题
添加标题
添加标题
培养实践操作和问题解决能力
通过实验操作, 提高动手能力
学习单片机的基 本原理和编程方
法
培养发现问题、 分析问题和解 决问题的能力
提高团队合作和 沟通能力
02
实验设备
单片机开发板
添加标题 添加标题 添加标题 添加标题 添加标题 添加标题
编写流水灯程序
确定流水灯的 硬件连接方式
编写流水灯控 制程序
编译并下载程 序到单片机
调试程序,确 保流水灯正常 工作
0
0
0
0
1
2
3
4
烧录程序到单片机
准备烧录器:选择合适的烧录器,如USB烧录器 连接单片机:将烧录器连接到单片机的烧录接口 打开烧录软件:启动烧录软件,选择要烧录的程序文件 开始烧录:点击烧录按钮,开始烧录程序到单片机 检查烧录结果:烧录完成后,检查单片机的运行情况,确保程序正常运行
单片机流水灯实验报告

单片机流水灯实验报告方法一:通过位定义实现流水灯这种方法是最简单的方法,直接通过位定义的方法对LED灯进行操作。
不过这种方法虽然简单,不过需要做大量的重复工作,耗费大量时间,代码利用率不高。
方法二:通过数组方式实现流水灯这种方法相对于方法一来说可以节省大量时间,而且代码利用率高。
首先定义一个流水灯数组。
通过下图可以看到,数组第一个数据是16进制的0xfe,相对应的二进制是11111110。
由流水灯的硬件电路可知,LED灯的阴极接在单片机的P2口,LED灯的阳极接VCC,所以当单片机的P2口输出低电平时,相应的LED灯就会亮。
所以流水灯数组的第一个数据0xfe就是将P2.0口的LED灯点亮,数组第二个数据0xfd相应的二进制是11111101,相应的P2.1口LED就会亮,而由于P2.0口此时输出为高电平,所以对应的P2.0口LED灭。
由于是8盏LED灯,所以在main函数中使用for循环,循环8次,根据上述的分析,每一次循环都只有一盏LED灯亮,所以就达到了流水的效果。
方法三:通过移位函数方式实现流水灯循环移位函数_crol_()和_cror_()是左移和右移函数,该函数作用是将移出的高位补到低位。
注意使用移位函数时必须包含头文件intrins.h。
即#include<intrins.h>。
在主函数中先定义一个变量temp,将0xfe 赋给变量temp。
在while循环中,先将temp的值送到P2口,第一盏LED亮,然后使用循环左移函数将temp的值左移移位,最初值是11111110,执行左移函数之后,temp的值变为11111101,所以第一盏LED灯灭,第二盏LED亮,如此循环即可实现流水效果。
单片机实验报告流水灯双机通信交通灯定时时钟

实验一流水灯实验一、实验目的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 个发光二极管闪耀,达成准时器功能。