单片机流水灯实验分析报告
单片机流水灯实验报告
流水灯实习报告一、实验原理单片机通过P0口连接锁存器74ls273,P0同时作为低八位地址,实验板内P2口连接74ls138,任意一个输出连接74ls273片选,再将74ls273接八个LED 灯,通过软件控制对74ls273送入显示数据就可以按要求显示了。
二、硬件原理图三、实验程序ORG 00HAJMP STARTORG 001BHAJMP INTORG 0100HSTART:MOV SP,#60HMOV TMOD,#10HMOV TL1,#00HMOV TH1,#4CHMOV R0,#00HMOV R1,#20SETB TR1SETB ET1SETB EAINT:PUSH ACCPUSH PSW PUSH DPLPUSH DPHCLR TR1MOV TL1,#B0H MOV TH1,#3CH SETB TR1DJNZ R1,EXIT MOV R1,#20 MOV DPTR,#DATA MOV A,R0 MOVC A,@A+DPTR MOV DPTR,#8000H Movx @DPTR,A INC R0ANL 00,#07H EXIT:POP DPHPOP PSWPOP ACCRETIDATA:DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,0HEND四、实验功能以实验机上74LS273做输出口,接八只发光二极管,编写程序,使开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去.五、实验总结通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。
而安排课程设计的基本目的,是在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟和领悟力。
尤其是观察、分析和解决问题的实际工作能力。
单片机流水灯实验总结
单片机流水灯实验总结引言:单片机流水灯实验是学习嵌入式系统和单片机基础的重要实践环节。
通过设计和搭建流水灯电路,我们可以深入理解单片机的工作机制和时序控制。
本文将总结我在流水灯实验中的心得体会,分享一些有关单片机流水灯设计的经验。
一、实验概述这个实验的目标是设计一个能够连续闪烁的流水灯电路,通过单片机的控制,实现一串灯按照固定的顺序不断亮灭的效果。
我们可以通过改变灯的亮灭时间和顺序,来获得不同的流水灯效果。
二、选材准备在进行单片机流水灯实验之前,我们需要准备一些基本的材料和工具。
首先,我们需要一块单片机开发板,最常用的是STC89C52系列的开发板,该开发板搭载了一颗51单片机。
此外,我们还需要准备串联的LED灯,该灯可以选择常见的5mm直径的LED灯,同时需要配备一定数量的适量电阻用于限流。
三、实验步骤1. 连接电路:首先,需要将电路图中的元件按照连接要求连接好,确保各个元件之间的连接无误且紧固可靠。
2. 编写程序:接下来,我们需要使用Keil等软件编写单片机的程序。
通过学习嵌入式C语言编程,我们可以控制单片机的输入输出,包括控制LED灯的亮灭。
3. 烧录程序:编写完程序后,需要借助烧录器将程序烧录到单片机中。
这样单片机才能按照我们设计的程序来控制灯的状态。
4. 调试与测试:当烧录完成后,可将单片机开发板上的电源与电源线连接,并打开开关,此时,流水灯便会开始闪烁。
通过观察流水灯的灯光变化,我们可以判断我们的程序是否正确。
四、实验心得通过进行单片机流水灯实验,我深刻体会到了嵌入式系统的编程和硬件设计的重要性。
在编写程序时,我们需要仔细思考流水灯的亮灭规律和顺序,以及每个灯亮灭的时间间隔。
这需要我们对嵌入式C语言的基本语法和单片机的时序控制有一定的理解。
另外,在实验过程中,我遇到了一些问题和挑战。
例如,如何控制灯的顺序和亮灭时间,如何调整程序的延时时间等。
在解决这些问题的过程中,通过查阅资料和与同学的讨论,我逐渐积累了解决问题的经验,并在实践中不断调试和优化程序。
单片机流水灯实验报告
单片机流水灯实验报告单片机流水灯实验报告引言:单片机是一种集成电路,具有微处理器、存储器和输入输出设备等功能,被广泛应用于各个领域。
流水灯是一种常见的实验项目,通过控制单片机的输出端口,使多个LED灯依次亮起,形成流动的效果。
本实验旨在通过搭建流水灯电路,了解单片机的基本原理和操作方法。
实验目的:1. 掌握单片机的基本工作原理;2. 学习使用单片机控制LED灯的亮灭;3. 熟悉流水灯电路的搭建和控制。
实验器材:1. 单片机开发板;2. LED灯若干;3. 连线电缆。
实验步骤:1. 将单片机开发板连接至电源,并接通电源开关;2. 将LED灯连接至单片机的输出端口,确保极性正确;3. 打开单片机开发板上的编程软件,编写流水灯控制程序;4. 将编写好的程序下载至单片机开发板;5. 按下开发板上的复位按钮,观察LED灯是否依次亮起。
实验结果:经过实验,我们成功搭建了单片机流水灯电路,并通过编写程序实现了流水灯的效果。
当按下复位按钮后,第一个LED灯亮起,随后依次是第二个、第三个……最后一个LED灯亮起,然后再从第一个开始循环。
整个过程形成了一个流动的效果。
实验分析:通过本次实验,我们深入了解了单片机的基本工作原理。
单片机通过控制输出端口的电平状态,来控制外部设备的亮灭。
在流水灯实验中,我们通过改变输出端口的状态,实现了LED灯的顺序亮灭。
同时,本次实验也让我们学会了使用单片机开发板上的编程软件。
通过编写程序,我们可以灵活控制单片机的输出端口,实现各种不同的功能。
在流水灯实验中,我们编写的程序控制了LED灯的亮灭顺序,形成了流动的效果。
实验总结:通过本次实验,我们不仅了解了单片机的基本原理和操作方法,还掌握了流水灯电路的搭建和控制。
单片机作为一种重要的集成电路,在各个领域都有广泛的应用。
通过学习和实践,我们可以进一步探索单片机的更多功能和应用。
在今后的学习和工作中,我们可以运用单片机的知识,设计和实现更加复杂和有趣的项目。
单片机流水灯实验总结800字(6篇)
单片机流水灯实验总结800字(6篇)关于单片机流水灯实验总结,精选6篇范文,字数为800字。
实验总结是指对某一阶段实验情况的总结,是对已经做过的实验所作的总结,也是对实践进行检验与评价工作的依据。
今天为大家整理了单片机流水灯实验总结,希望对大家有所帮助。
光阴似箭,日月如梭。
转眼,一个月的实习期就要过去了,回顾一个月的实习生活感受颇多。
我于xx年xx 月xx日开始到湖南农业大学金秋期间实习,作为一名刚踏出校门的大学生,我充满期待。
我实习的单位是湖南农业大学金秋期间的实习单位。
单片机流水灯实验总结(范文):1实验总结是指对某一阶段实验情况的总结,是对已经做过的实验所作的总结,也是对实践进行检验与评价工作的依据。
今天为大家整理了单片机流水灯实验总结,希望对大家有所帮助。
光阴似箭,日月如梭。
转眼,一个月的实习期就要过去了,回顾一个月的实习生活感受颇多。
我于xx年xx月xx日开始到湖南农业大学金秋期间实习,作为一名刚踏出校门的大学生,我充满期待。
我实习的单位是湖南农业大学金秋期间的实习单位。
我实习的单位是湖南农业大学金秋期间的实习单位,这是一家农业大学的单位,是由湖南省农业大学农业学院的教学与科研单位组成。
我实习的单位是湖南农业大学金秋期间的实习单位。
我实习的单位是湖南农业大学金秋期间的实习单位。
该单位的经济效益良好,在农业生产上也给我们提供了良好的服务,我们作为实习的负责人对他们表示衷心的感谢。
这次实习我主要是在生产部和机电部实习。
通过在机电部参观生产线上的各个岗位的工作,我熟悉和掌握了各个生产部的作业程序及原理和方法,对机电部各个岗位也有了深刻的了解和认识,这次实习不仅仅是对我们专业知识的扩展,同时也是我们的一次综合能力的培养,使我们不仅要能学好专业的知识,也要注意多方面的学习,比如,如何在生产部门的岗位上工作,这就要求我们在以后的学习中要注意知识的积累。
在实习期间我严格按照公司的要求和指导老师的要求,认真做好每日的日常工作,在工作中学习,在实践中提高自己的技术水平。
单片机流水灯实验报告
单片机流水灯实验报告:实验一:用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转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
流水灯实验报告
流水灯实验报告单片机流水灯实验一、任务让8个LED灯轮流亮起来,实现流水灯的功能。
二、思路让接在P0.0口的LED灯亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的LED灯熄灭,就要把P0.0口的电平变为高电平就可以了。
要实现流水灯功能,只要将8个LED灯依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。
我们应该注意一点,由于单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。
三、步骤1、用proteus画电路图。
如下图:2、用keil建工程。
1) 运行keil C51软件,点击Project菜单新建项目,选择为AT89C52的单片机型号。
然后单击File选择New新建程序文件,保存成 .c 文件,右击Source Group1添加入程序文件。
2) 用C语言编写程序代码如下:#includevoid delay (unsigned char tmp);code unsigned char tmpled[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};void main(void) {unsigned char i; while (1) {for(i=0;i<8;i++) { P0=tmpled[i]; delay(50); } } }void delay(unsigned char tmp) {unsigned char i,j; i=tmp; while(i) { i--; j=255; { j--; } } }3) 右击Target 1打开设置,Output菜单下勾选上create hex file。
4) 调试运行程序后,在proteus中双击单片机,添加hex文件,运行看到流水的的效果。
四、实验中遇到的问题。
1、用proteus仿真时候,发现错误:error variable not found parsing property resistance of RN1-Rnvalue expected for RN1-R(n=1~8)而且led灯亮度十分微弱。
单片机流水灯实验报告
单片机流水灯实验报告单片机流水灯实验报告一、实验目的本实验旨在通过单片机控制八个LED灯,实现流水灯效果。
通过本实验,我们希望达到以下目的:1.深入理解单片机的I/O端口的工作原理和使用方法。
2.掌握单片机定时器/计数器的工作原理和使用方法。
3.学会编写简单的单片机程序,实现特定的LED灯控制。
4.通过实践操作,提高单片机软硬件的综合应用能力。
二、实验设备1.单片机开发板2.电脑一台3.八个LED灯4.杜邦线若干5.电阻、电容等电子元件三、实验原理本实验采用AT89C51单片机作为主控芯片。
八个LED灯分别连接到P1端口的P1.0到P1.7。
通过编程控制P1端口的每一个引脚,实现对LED灯的亮灭控制。
使用定时器/计数器实现延时,达到流水灯效果。
四、实验步骤和内容1.搭建硬件电路将八个LED灯、一个上拉电阻以及相应的杜邦线连接至单片机开发板。
确保电源正确连接,并注意LED灯的长脚为正极,短脚为负极。
2.编写程序使用Keil C51编写程序,实现如下功能:点亮每个LED灯一定的时间,然后熄灭。
重复此过程,形成流水灯效果。
代码如下:#include <reg51.h> //包含51单片机的头文件#define LED P1 //定义LED为P1端口void delay(unsigned int time) //延时函数{unsigned int i,j;for(i=0;i<time;i++)for(j=0;j<1275;j++);}void main() //主函数{while(1) //程序一直循环执行{unsigned char i=0; //定义一个变量i,用于循环控制LED灯while(i<8) //循环点亮每个LED灯{LED=~(0x01<<i); //点亮第i个LED灯delay(50000); //延时50ms(50*1275us)i++; //变量i加1,控制下一个LED灯}}}3.编译程序将程序编译为二进制文件,生成HEX文件。
单片机流水灯实验报告
实验目的:实现单片机流水 灯功能
实验结果: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 个发光二极管闪耀,达成准时器功能。
单片机跑马灯(流水灯)控制实验报告
单片机实验报告姓名: 学号:一、 实验实现功能:1:计数器功能2:流水灯二、 具体操作:1、计数器功能数码管的动态显示。
每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。
2、流水灯当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms 。
三、 程序流程图开始 定时器T0 设置初值,启动定时器,打开中断复位 Key2按下 中断关闭 计数器模式 计数器加1 Key3按下 流水灯模式 数码管显示数字加1 跑马灯点亮间隔50ms Key1按下中断打开四、程序#include <reg51.h>typedef unsigned char uint8;typedef unsigned int uint16; //类型定义sbit P2_1 = P2^1;sbit P2_2 = P2^2;sbit P2_3 = P2^3;sbit P2_4 = P2^4; //位声明四个数码管开关sbit Key2 = P3^2;sbit Key3 = P3^3; //位声明2个按键K2和K3sbit Ledk = P2^0 ; //LED 开关void delay(uint16 i); //延时函数声明void refresh (); // 数码管刷新函数声明void liushuideng(); //流水灯函数声明uint8 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数码管的真值表uint8 out[4] = {0}; // 数组变量uint16 counter=0; //用作计数器的变量uint16 Time_counter=0; //用作定时器的变量void main() //主函数{TMOD = 0x01; //定时器0,工作方式一TH0 = 0xFC;TL0 = 0x18; //定时器初值使每次循环为1msTR0 = 0; //定时器0开始作ET0 = 0; // 定时器中断关EA = 0; // 关中断while(1) //计数器模式{Ledk =1 ; //led开关关out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位if (!Key2) //计数器加1{++counter; //自加out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位while(!Key2) //等待键盘抬起refresh(); //刷新数码管}refresh(); //刷新数码管if (!Key3) // 进入跑马灯模式liushuideng();}} //主函数结束/*******************延时*************/void delay(uint16 i){uint8 j; // 定义局部变量for(i;i>0;i--) //循环i*240 次for(j=240;j>0;j--);}/************数码管刷新******************/void refresh (){uint8 j;for (j=0;j<4;j++) //四次循环刷新数码管{switch(j){case 0: P2_1=1;P2_2=1;P2_3=1;P2_4=0;break;case 1: P2_1=1;P2_2=1;P2_3=0;P2_4=1;break;case 2: P2_1=1;P2_2=0;P2_3=1;P2_4=1;break;case 3: P2_1=0;P2_2=1;P2_3=1;P2_4=1;break;//每次循环只选中一个数码管default:break;}P0 = out[j]; // 位选,给数码管送值delay (20); //延时消抖}}/*************定时器的中断服务函数**************/void Timer0_Overflow() interrupt 1 //定时器0溢出中断,这个语句1ms执行一次{TH0 = 0xFC;TL0 = 0x18; //每1ms重新赋定时器初值Time_counter++; //计数,看经过了几个1ms}/***********************流水灯子函数****************************/ void liushuideng(){uint8 j = 0 ; //定义局部变量P0 = 0xff; // 小灯全关TR0 = 1; //定时器1开始计时EA = 1; //中断开放ET0 = 1; //定时器0中断开while(1){Ledk = 0 ; //打开LED开关P2 = P2|0x1E; //关掉数码管if(50 == Time_counter) //50个毫秒{P0=~(1<<j++); //控制小灯Time_counter = 0; //清零开始下一次循环定时}if (8==j) //移完8次再重新移{j=0;}}}。
单片机流水灯实验总结
篇一:单片机实验报告——流水灯电子信息工程学系实验报告课程名称:单片机原理及接口实验项目名称:实验2 流水灯实验时间: 2011-10-21 班级:电信092 姓名:蔡松亮学号: 910706247一、实验目的:进一步熟悉keil 仿真软件、proteus仿真软件的使用。
了解并熟悉单片机i/o口和led灯的电路结构,学会构建简单的流水灯电路。
掌握c51中单片机i/o口的编程方法和使用i/o口进行输入输出的注意事项。
二、实验原理:mcs-51系列单片机有四组8位并行i/o口,记作p0、p1、p2和p3。
每组i/o口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。
四组并行i/o端口即可以按字节操作,又可以按位操作。
当系统没有扩展外部器件时,i/o端口用作双向输入输出口;当系统作外部扩展时,使用p0、p2口作系统地址和数据总线、p3口有第二功能,与mcs-51的内部功能器件配合使用。
以p1口为例,内部结构如下图所示:图 p1口的位结构作输出时:输出0时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出1,下面的场效应管导通,输出引脚成低电平。
输出1时,下面的场效应管截止,上面的上拉电阻使输出为1。
作输入时:p1端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下,引脚电平出现在内部总线上。
i/o口的注意事项,如果单片机内部有程序存贮器,不需要扩展外部存贮器和i/o接口,单片机的四个口均可作i/o口使用;四个口在作输入口使用时,均应先对其写“1”,以避免误读;p0口作i/o口使用时应外接10k的上拉电阻,其它口则可不必;p2可某几根线作地址使用时,剩下的线不能作i/o口线使用;p3口的某些口线作第二功能时,剩下的口线可以单独作i/o口线使用。
三、实验环境:硬件:pc机,基本配置cpu pii以上,内存2g 软件:keil 2, proteus 7.5四、实验内容及过程:1、用proteus画流水灯电路图流程:1)、运行proteus仿真软件,单击pick from libraries,打开搜索元器件窗口,如图 1 所示:图 1 打开搜索元器件窗口2)、搜索添加元器件,如图2 所示:图2 搜索添加元器件窗口3)、添加元器件,修改元器件的参数,绘制流水灯原理图,元器件参数为c1=c2=20pf、c3=10uf;r1=r2=r3=r4=r5=r6=r7=r8=470欧姆、r9=10k欧姆;晶振=12m;vcc=5v。
单片机流水灯实验程序实验报告
单片机流水灯实验程序实验报告实验题目:流水灯实验2(利用查表方式)一、实验目的:1、学习利用查表的方式,使发光二极管(L1—L8)做舞台灯光效果的变化。
2、学习实用程序的编程规则。
二、实验仪器设备计算机一台、单片机在线系统一套(AY—MPU89S51E)三、实验电路:同实验一电路。
四、实验内容:灯光效果按如下规律显示:00111100,10000001,11000011,11100111,11111111,11100111,11000011,10000001,00000000,00011000,00111100,01111110 11111111,00000000,10101010,10101010,11001100,10000000,11000000,11100000,11110000,11111000,11111100 11111110,11111111,11111110,11111100,11111000,11110000 11100000,11000000,10000000,00000000。
扩展:自行设计花色效果表。
五、实验步骤:1、画出程序流程图。
3、程序输入到编程软件Keilc51中。
3、编译下载程序到系统实验板上的单片机中。
4、分析调试记录的内容和结果,找出程序中可能出错的地方,然后修改程序,继续调试、记录、分析,直到调试成功。
实验电路:U11939XTAL1P0.0/AD038P0.1/AD137P0.2/AD21836XTAL2P0.3/AD335P0.4/AD434 P0.5/AD533P0.6/AD6932RSTP0.7/AD721P2.0/A822P2.1/A923P2.2/A102924PSENP2.3 /A113025ALEP2.4/A123126EAP2.5/A1327P2.6/A1428P2.7/A15110P1.0/T2P3.0/RXD2 11P1.1/T2EXP3.1/TXD312P1.2P3.2/INT0413P1.3P3.3/INT1514P1.4P3.4/T0615P1.5 P3.5/T1716P1.6P3.6/WR817P1.7P3.7/RDAT89C52程序流程图:开始(21H) 00HDPTR #TAB,(A) (21H)(A) @A+DPTR显示灯亮(A) (21H)+1N Y(A)=33?程序代码:ORG 0000HLJMP STARTORG 0100HSTART:MOV P1,#0FFHMOV 21H,#00HLOOP:MOV DPTR,#TABMOV A,21HMOVC A,@A+DPTRCPL AMOV P1,ALCALL DELAYINC 21HMOV A,21HCJNE A,#33,LOOPMOV 21H,#00HLJMP LOOPTAB: DB00111100,10000001,11000011,11100111,11111111,11100111,11000011,10000001 DB00000000,00011000,00111100,01111110,11111111,00000000,10101010,10101010 DB11001100,10000000,11000000,11100000,11110000,11111000,11111100,11111110 DB11111111,11111110,11111100,11111000,11110000,11100000,11000000,10000000, 00000000DELAY: MOV R5,#03HD0:MOV R6,#0FFHD1:MOV R7,#0FFHDJNZ R7,$DJNZ R6,D1DJNZ R5,D0RETEND程序运行正确,写入单片机后,二极管按照上述数值亮灭,展现灯光舞台效果。
单片机流水灯实验报告
单片机流水灯实验报告姓名:学号:班级:一、项目背景当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。
制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。
本设计为一种简单实用的单片机花样流水灯设计与制作方案。
二、项目整体方案设计根据时钟信号的脉冲输入,我们以改变每个LED点亮状态的保持的时间来改变LED的变换间隔时间,根据LED的循环点亮和时间间隔的改变设计成为一个直观的LED花样流水灯自动循环系统,由此思路我们就可以很容易的着手流水灯控制程序的设计。
三、硬件设计四、软件设计include <REGX51.H>#define uint unsigned int#define uchar unsigned charconst tab[]={Oxfe,Oxfd,Oxfb,Oxef,Oxdf,Oxbf,Ox7f,Oxbf, Oxdf,Oxef,Oxf7,Oxfb,Oxfd,Oxfe,Oxff,Oxaa,0x55,0xaa,0x55,0xaa ,Ox55,Oxff,Oxf0,OxOf,Oxf0,OxOf,Oxff,Ox33,Oxcc,0x33,Oxcc,Ox33,Oxcc ,Oxff}void Delay1ms(unsigned int count)unsigned int ij;for(i=O;i<count;i++)for(j=O;j120;j++);main (void)uchar i;while(1)for(i=O;i<35;i++)P1=tab[i];Delay1ms(500);}五、实验结果六、项目总结通过这次实验设计,锻炼我们综合运用知识,提出问题,分析问题,及解决问题的能力。
我感慨颇多,在着手设计的这段日子里,我又学到了很多东西。
特别是理论联系实际。
单片机流水灯实验报告
一、实验目的初步认识单片机实验如何进行操作,明确单片机和计算机的关系学习利用C语言进行编程,在流水灯基础上进一步进行改进设计出独立按键。
二、实验原理使用C语言写出流水灯独立按键的代码并将其转换成单片机可执行和二进制代码即机器语言,将单片机各部分连接好,并将其连接到计算机主机上,通过STC-ISP软件使单片机执行转化好的二进制代码,进而设计出独立按键。
实验原理图:三、实验要求用按键控制流水灯的流动方向、流速、闪烁方式等四、实验内容及步骤1.连接试验相关模块连线。
1.#include <reg52.h>2.sbit k1=P1^0;3.sbit k2=P1^1;4.sbit k3=P1^2;5.unsigned char direction=0x00;6.unsigned char speed=0x00;7.int speedvalue=10000;8.unsigned char led=0x01;9.void delay(int t)10.{11.while(t)12.t--;13.}14.void main()15.{16.while(1)17.{18.if(k1==0)19.{20.direction=~direction;21.}22.if(k2==0)23.{24.delay(1000);25.speedvalue+=5000;26.if(speedvalue==60000)27.{28.speedvalue=10000;29.}30.while (!k2);31.}32.if(k3==0)33.{34.delay(1000);35.speedvalue-=5000;36.if(speedvalue==0)37.{38.speedvalue=30000;39.}40.while(!k3);41.}42.if(direction==0x00)43.{44.led=led<<1;45.if(led==0x00)46.{47.led=0x01;48.}49.}50.else51.{52.led=led>>1;53.if(led==0x00)54.{55.led=0x80;56.}57.}58.P0=led;59.delay(speedvalue);60.}61.}编译通过之后,我们需要输出hex文件,也就是单片机可执行的二进制文件。
单片机流水灯实验报告
实物展示:
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根保通据护过生高管产中线工资敷艺料设高试技中卷术资配0料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高高与中中带资资负料料荷试试下卷卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并中3试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
流水灯单片机实验报告
流水灯单片机实验报告流水灯单片机实验报告引言:单片机是一种集成电路芯片,具有微处理器的功能。
它广泛应用于各个领域,包括家电、电子产品、汽车等。
在本次实验中,我们将使用单片机实现一个简单的流水灯效果,通过这个实验,我们可以深入了解单片机的原理和应用。
实验目的:1. 了解单片机的基本原理和工作方式;2. 掌握单片机的编程方法和流程;3. 实现流水灯效果,并通过调整参数改变灯光的亮度和频率。
实验器材:1. 单片机开发板;2. LED灯若干;3. 连接线。
实验步骤:1. 连接电路:将LED灯与单片机开发板相连,确保连接正确无误。
2. 编写程序:使用C语言编写单片机程序,实现流水灯效果。
3. 烧录程序:将编写好的程序通过编程器烧录到单片机中。
4. 调试程序:将烧录好的单片机插入开发板,启动电源,观察LED灯的亮灭情况。
5. 调整参数:根据需要,可以通过修改程序中的参数来改变流水灯的亮度和频率。
实验结果:经过调试和调整参数,我们成功实现了流水灯效果。
LED灯在单片机的控制下,按照一定的顺序依次亮起和熄灭,形成了流水灯的效果。
通过修改程序中的参数,我们还可以调整灯光的亮度和频率,使得流水灯的效果更加丰富多样。
实验分析:通过这个实验,我们深入了解了单片机的原理和应用。
单片机作为一种集成电路芯片,具有微处理器的功能,可以通过编程来实现各种各样的功能。
在流水灯实验中,我们通过编写程序,控制LED灯的亮灭,实现了流水灯的效果。
通过调整参数,我们还可以改变灯光的亮度和频率,使得流水灯的效果更加丰富多样。
结论:本次实验通过使用单片机实现了流水灯效果,深入了解了单片机的原理和应用。
通过编写程序和调整参数,我们成功控制了LED灯的亮灭,实现了流水灯的效果。
这个实验不仅提高了我们对单片机的理解和应用能力,还培养了我们的动手能力和解决问题的能力。
希望通过这个实验,我们能够更好地掌握单片机的原理和应用,为今后的学习和工作打下坚实的基础。
单片机实验流水灯报告
7、反复编译和调试程序,直到无错误为止(程序能实现相应的功能);
8、使用ISIS软件进行仿真或单片机实验箱或是单片机开发板来进行程序功能的验证,即能实现“流水”的功能。
过程分析
本实验主要是采用延时程序来控制“流水”的功能,同时采用中断进行亮与暗闪烁的效果,使用C52的P0口进行对LED的控制。过程的主要分析如下:
#include<reg52.h>
#include<intrins.h>
unsigned int i=0;//定义变量i;
unsigned char data x=0xfe; //定义初值;
}
TH0=(65536-50000)/256;//赋初值;
TL0=(65536-50000)%256;
EA=1;//开CPU中断;
ET0=1;//开T0中断;
TR0=1;//开始计数;
}
void timer0() interrupt 1 //中断函数;
{
int k=0;
for(;k<=3;k++)
{ P0=0;
{
i++;
if(i==20)
{
i=0;
P0=_crol_(x,1);
}
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
附录
源程序代码:
#include<reg52.h>
#include<intrins.h>
unsigned int i=0;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机流水灯实验报告
————————————————————————————————作者:————————————————————————————————日期:
51单片机流水灯试验
一、实验目的
1.了解51单片机的引脚结构。
2.根据所学汇编语言编写代码实现LED灯的流水功能。
3.利用开发板下载hex文件后验证功能。
二、实验器材
个人电脑,80c51单片机,开发板
三、实验原理
单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口,对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。
使用rl或rr a实现位的转换。
A寄存器的位经过rr a之后转换如下所示:
A0A1A2A3A4A5A6A7
然后将A寄存器转换一次便送给P2即MOV P2,A便将转换后的数送到了P2口,不断循环下去,便实现了逐位置一操作。
四、 实验电路图 a11
a22
3
a3
4a4b1b2b3b45678GND
0a11
a22
3
a34
a4P2.4P2.5P2.6P2.75678a11
a22
3
a34
a4P2.0P2.1P2.2P2.35678Vcc10+5
v
80C51
五、 通过仿真实验正确性
代码如下:ORG 0 MOV A,#00000001B LOOP:MOV P2,A RL A
ACALL DELAY SJMP LOOP
DELAY:MOV R1,#255 DEL2:MOV R2,#250 DEL1:DJNZ R2,DEL1
DJNZ R1,DEL2
RET
End
实验结果:
六、实验参考程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
sbit P00=P0^0;
sbit P01=P0^1;
void delay(uchar t)
{
uchar i,j;
for(i=0;i<t;i++)
for(j=0;j<110;j++);
}
void main()
{
uchar i;
while(1)
{
P00=1;
delay(2000);
P00=0;
for(i=0;i<8;i++)
{
P1=table[i];
P2=table[i];
delay(2000);
}
P01=1;
delay(2000);
P01=0;
}
}
实物展示:
(1)单片机最小系统板
(2)自己焊制的集成最小系统板
(3)自己制作的心形流水灯实验板
(4)系统板与实验板的连接展示
七.实验总结:
这次试验我通过Proteus仿真实现对流水灯功能的实现。
受益匪浅,对80c51的功能和结构有了深层次的了解,我深刻的明白,要想完全了解c51还有一定距离,但我会一如既往的同困难作斗争。
在实验中,我遇到了不少困难,比如不知道怎么将程序写进单片机中,写好程序的却总出错,不知道什么原因,原来没有生成hex文件。
这些错误令我明白以后在试验中要步步细心,避免出错。