(proteus仿真经典电路)P0口移位方式实现流水灯控制
光控流水灯实验报告

光控流水灯实验报告LED流水灯实验报告LED流水灯的设计报告课程名称:LED流水灯设计学院:大数据与信息工程学院专业:姓名:学号:年级:任课教师:一、实验的背景和意义单片机全称叫单片微型计算机,是一种集成在电路芯片,是采用大规模集成电路技术把CPU随机存储器RAM、只读存储器ROM、多种输入输出口、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的应用。
大致可以分为以下几个范畴: 1、在智能仪器仪表上的应用,例如精确的测量设备;2、在工业控制中的应用,例如用单片机可以构成形式多样的控制系统,与计算机互联网构成二级控制系统等;3、在家用电器中的应用,可以从手机、电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话、集群移动通信、无线电话对讲机等;4、在医用设备中的应用,例如医用呼叫机、各种分析仪、超声诊断设备及病床呼叫系统等等;5在各种大型电器中的模块化作用,如音乐集成单片机,看是简单的功能,微缩在电子芯片中,就需要复杂的类似于计算机的原理。
本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发计算器设计做了详细的分析和研究。
本系统就是充分利用了8051芯片的I/O引脚。
系统已采用MCS—51系列单片机为中心器件来设计LED流水灯系统,实现LED左循环显示,并实现循环的速度可调。
二、设计目的1.学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。
2.掌握汇编语言程序和C语言程序设计方法。
3.培养实践技能,提高分析和解决实际问题的能力。
三、设计任务及要求1.用个发光二极管作为显示电路2.实现LED动态显示3.能连续循环显示四、设计思路LED流水灯实际上是一个带有八个放光二极管的单片机最小应用系统,即为由晶振LED灯、电阻、电容器、电源等电路和必要的软件组成的单个单片机。
3-流水灯控制实验需打印

实验三、流水灯控制实验一、实验目的1.掌握keilc51软件与protues软件联合硬仿的调试方法。
2.掌握如何应用程序与查表等方法实现流水灯效果。
3.掌握按键去抖原理及处理方法。
二、实验仪器与设备1、微机一台2、keilc51开发环境,protues软件。
三、实验内容1.用protues设计一流水灯控制电路。
利用P1口控制8个发光二极管L1—L8。
P3.3口接一按键K1。
参考电路下面给出。
其中74LS240为八反相三态缓冲器/线驱动器。
2.用中断或查询方式编写程序,每按一次K1键,演示不同的流水效果。
若用KEY表示按键的次数,则其对应流水效果如下:1.KEY=0:L1—L8全亮;2.KEY=1:L1—L8先全灭,然后自右向左单管点亮,如此循环;3.KEY=2:L1—L8先全灭,然后自右向左依次点亮,如此循环;4.KEY=4:L1—L8先全亮,然后自右向左依次熄灭,如此循环;5.KEY=5:自行设计效果;以上移位及闪烁时间均设置为0.3秒,按动5次按键后,再按键时,流水灯效果从头开始循环。
四、实验原理及步骤1.用protues设计流水灯控制电路;2.在keilc51中编写流水灯控制程序,编译通过后,与protues联调;3.按动K1键,观察是否达到演示效果;4.利用终端和查询两种方式编写程序,比较二者的区别;五、电路设计及调试:(1)实验电路(2).程序设计及调试#include<reg51.h>#define uint unsigned int#define uchar unsigned charuchar i,m=0xfe,n=0xfe,p=0x7f,temp=0; void delay(uint c ){uchar i,j;for(i=0;i<125;i++)for(j=0;j<c;j++);}void main(){IT1=1;EX1=1;EA=1;while(1){if(temp==0){P1=0x00;}if(temp==1){P1=0xff;for(i=0;i<8;i++){m=((m<<1)|(m>>7));P1=m;delay(200);}}if(temp==2){P1=0xff;delay(200);P1=0xfe;for(i=0;i<8;i++){P1=n<<i;delay(200);}}if(temp==3){P1=0x00;delay(200);for(i=0;i<8;i++){P1=(p>>i);delay(200);}}if(temp==4){P1=0xff;delay(200);P1=P1;delay(200);}if(temp==5){P1=0xf0;delay(200);P1=P1;delay(200);}}}void int_1() interrupt 2{EA=0;delay(5);EA=1;temp++;if(temp>=6){temp=0;}}(3)实验调试中遇到的问题:为什么要按键去抖?按键如果不去抖,按键抖动会引起一次按键被误读多次,程序执行效果变乱,导致程序执行没有次序。
程序简单花样齐全的流水灯

利用单片机实现五种花样流水灯1.硬件电路图设计本文仿真软件采用Proteus和Keil C51。
其中Keil Proteus可以仿真、分析(SPICE)各种模拟器件和集成电路,C51可完成程序的编译链接和仿真调试,并能生成hex文件。
通过Keil C51与Proteus的联调便可实现仿真实验。
硬件电路采用单片机最小系统(晶振电路+复位电路),利用P0口作为数据输出端口。
由于P0口是一个8位漏极开路的的双向I/O口,必需外接上拉电阻才能有高电平输出。
当单片机输出高电平时对应的LED灯熄灭,当输出低电平时则点亮。
2.C语言程序程序定义了五个数组分别对应五种不同的花样流水灯方式,其中每个数组中的每个元素控制P0口的壮态,从而控制每个LED灯的壮态。
另外,程序将流水灯每个壮态的间隙时间进行了宏定义,这使得修改每个壮态的保持时间十分方便。
#include<reg51.h> //包含单片机头文件#define uint unsigned int#define uchar unsigned char#define DataPort P0 //定义P0为数据输出端口#define TIME 30 //设定流水灯每个状态的间隙时间/************us级延时程序*************/void Delayus2x(uint n){while(--n);}/***********ms级延时程序*************/void Delayms(uint n){while(--n){Delayus2x(245);Delayus2x(245);}}/********************五个数组分别对应五种不同的流水灯******************/uchar DB1[15]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; uchar DB2[15]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe}; uchar DB3[15]={0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7}; ucharDB4[36]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7e,0x7d,0x7b,0x77,0x6f,0x5f,0x3f,0x3e, 0x3d,0x3b,0x37,0x2f,0x1f,0x1e,0x1d,0x1b,0x17,0x0f,0x0e,0x0d,0x0b,0x07,0x06,0x05,0x03,0x02,0x01,0x00};ucharDB5[36]={0x80,0x40,0xc0,0xa0,0x60,0xe0,0xd0,0xb0,0x70,0xf0,0xe8,0xd8,0xb8,0x78,0xf8, 0xf4,0xec,0xdc,0xbc,0x7c,0xfc,0xfa,0xf6,0xee,0xde,0xbe,0x7e,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};/****************************主函数***************************************/void main(void){uint i=0;while(1) //死循环,流水灯依次在五种方式中循环{DataPort=0xff; //灯全灭Delayms(TIME);for(i=0;i<15;i++){DataPort=DB1[i];Delayms(TIME);}//第一种方式for(i=0;i<15;i++){DataPort=DB2[i];Delayms(TIME);}//第二种方式DataPort=0xff;Delayms(TIME);for(i=0;i<15;i++){DataPort=DB3[i];Delayms(TIME);}//第三种方式DataPort=0xff;Delayms(TIME);for(i=0;i<36;i++){DataPort=DB4[i];Delayms(TIME);}//第四种方式DataPort=0x00;Delayms(TIME);for(i=0;i<36;i++){DataPort=DB5[i];Delayms(TIME);}//第五种方式}}3.软件仿真图3.1第一种3.2 第二种3.3 第三种3.4(略)3.5(略)。
项目单片机流水灯控制器设计

2.3.2 绘制原理图
单片机流水灯控制器主要由单片机、复位 电路、振荡电路、流•水灯组成,所需元器件 清单如表2-14所示。在本项目中,我们采用 具有在线下载调试功能的STC89C51单片机 代替AT89C51单片机,加上串口通信模块, 利用STC-ISP进行程序下载。串口通信模块 主要有MAX232电平转换芯片和串口组成。
•
建立了工程之后,还需要对工程进行设置。主要内容包括软件设
置和硬件设置。其中,软件设置内容包括程序的编译、连接及仿真 调试的设置;硬件内容的设置主要包括仿真器的设置 。
3、编写源程序
2.2.1 程序设计
3、编写源程序 •
❖ 流水灯控制要求如下: ❖ (1)开始,8只发光二极管全亮; ❖ (2)延时1秒,按D1->D2->D3->D4->D5->D6->D7->D8顺序
十六进制是以字符0~9,A,B,C,D,E,F组成(十进 制的10对于十六进制的A,11对应B,12对应C,13对应D, 14对应E,15对应F),“逢十六进一,借一当十六”。与二 进制一样,十六进制也采用位置计数法,位权是以16为底的 幂,以后缀H或者前缀0X表示。例如13H、13h、0X13、 0x13都表示相同的十六进制数。
•图2-1 Proteus ISIS原理图设计流程
2.1.1 Proteus仿真电路设计
1)新建设计文件。 为了程序调测的方便,我们往往将同一个项目的相关设
计文件放到同一个文件夹里面,这样有利于项目的管理。 2)选择元器件
单片机流水灯控制器仿真电路主要包括单片机、复位电 路、时钟电路、LED灯电路组成 。 3)放置元器件
2.2.3 单片机C51语言基础认知
1、C51的数据类型、存储类型和作用域 在学习C语言的时候• 我们知道每一个变量
基于proteus软件设计流水灯系统单片机硬件电路

2020.13(1)上海电气技术51基于Proteus软件设计流水灯系统单片机硬件电路李航辽宁轨道交通职业学院电气工程系沈阳110023摘要:介绍了流水灯系统的控制要求•分析了所需的硬件资源。
基于Proteus软件,对时钟电路、复位电路、八位流水灯电路等流水灯系统的单片机硬件电路进行了设计。
所设计的硬件电路能够满足流水灯系统的控制要求。
关键词:流水灯;单片机;硬件电路;软件;设计中图分类号:TM762文献标志码:A文章编号:1674-540X(2020)01-051-04Abstract:The control requirements of the running water light system were introduced.and the required hardware resources were analyzed.Based on the Proteus software,the single-chip computer hardware circuit of running water light system such as clock circuit,reset circuit and eight-bit running water light circuit was designed.The designed hardware circuit can meet the control requirements of the running water light system.Key Words:Running Water Light;Single-chip Computer;Hardware Circuit;Software;Design1设计背景近些年来.作为嵌入式系统基础的单片机技术得到了飞速发展.受到人们的广泛青睐。
单片机产品在工业、军事、汽车、医疗、智能用品、家居等领域的普及程度已经远远超出人们的预期。
任务二单片机控制流水灯

5E 5D
5C
5B
2AH 57
56
55
54
53
29H 4F
4E 4D
4C
4B
28H 47
46
45
44
43
27H 3F
3E 3D
3C
3B
26H 37
36
35
34
33
25H 2F
2E 2D
2C
2B
24H 27
26
25
24
23
23H 1F
1E 1D
1C
1B
22H 17
16
15
14
13
21H 0F
0E 0D
数据类型决定: 1. 数据占内存字节数 2. 数据取值范围
空类型void
3. 其上可进行的操作
定义类型typedef
2.1.3 C51的数据类型
1.字符型(char)
▪ (1)字符型常量
• 字符常量是用单引号括起来的一个字符,如’a’, ’$’,’1’,’A’等都是字符常量。注意,字符 型常量区分大小写,因此’a’和’A’是不同的字符 常量。不可以显示的控制字符,可以在该字符前面 加一个“\”组成转义字符,也就是把“\”后面的字 符转变成另外的意义。
4. 指针型
▪ 指针类型的表示方法是在指针符号“*”前 面冠以数据类型符号
▪ 例如:
• char *pa;
//定义pa为字符型指针
• unsigned int *pb; //定义pb为无符号整形指 针
• float *pf; //定义pf为浮点型指针
5. 位变量(bit)
▪ 位变量的长度是1位(bit),位变量和前面介绍的字 符型变量是可以直接被8051单片机处理的。
流水灯实验报告
流水灯实验报告实验目的1.了解单片机I/O口的工作原理。
2.掌握51单片机的汇编指令。
3.熟悉汇编程序开发,调试以及仿真环境。
一、实验内容通过汇编指令对单片机I/O进行编程(本实验使用P0口),以控制八个发光二极管以一定顺序亮灭。
(即流水灯效果)二、实验原理通过更改P0口8位的高低电平,分别控制8个发光二极管的亮灭。
具体的亮灭情况如下表:要实现“流水灯”效果,也就是需要将P0口的输出值发生以下变化:FE→FD→FB→F7→EF→DF→BF→7F→BF→DF→EF→F7→FB→FD→FE→......可以使用一个循环,不断对数据进行移位运算实现。
这里的移位指令采用RL和RR,即不带进位的位移运算指令。
如果使用带进位的位移运算指令(RLC和RRC),则需要定期把CY置0,否则会出现同时亮起两个发光二极管的情况。
三、实验过程1.在仿真系统中绘制好单片机的电路图2.编写汇编程序,程序如下:ORG 0000HDelay: MOV R0,#0FFHSJMP StartDelay1: MOV R1,#0FFHStart: MOV A, Delay2: NOP#0FEHMOV P0, A DJNZ R1,Delay2 CLR P2.7 DJNZ R0,Delay1 CLR P3.7 RETMove: MOV R2, #7H ENDMOV R3, #7HRMove: RL AMOV P0, ACALL DelayDJNZ R2,RMoveLMove: RR AMOV P0, ACALL DelayDJNZ R3,LMoveSJMP Move四、实验结果为了便于实验结果的描述,下面分别把P0.0, P0.1…, P0.7对应的发光二极管编号为1, 2, …, 8号二极管。
在仿真系统中,先从1号二极管下面是在仿真系统中的实验结果:1.只有1号二极管点亮2.只有2号二极管点亮3.只有3号二极管点亮4.只有4号二极管点亮5.只有5号二极管点亮6.只有6号二极管点亮7.只有7号二极管点亮8.只有8号二极管点亮实验的结果:二极管的发光状态从1→2→3→4→5→6→7→8→7→…→1→2;如此往复循环。
单片机流水灯实验报告
单片机流水灯实验报告电子信息工程学系实验报告课程名称:单片机原理及接口实验项目名称:实验2 流水灯实验时间: xx-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。
proteus控制led灯闪烁的简单电路及程序
proteus控制led灯闪烁的简单电路及程序LED灯作为电子元件中广泛应用的一种,通过闪烁可以提供一种视觉提示。
在这篇文章中,我们将介绍如何使用Proteus软件设计一个简单的电路,并编写程序控制LED灯的闪烁效果。
本文将分为以下几个部分展开讨论。
1. 硬件设计在Proteus软件中,我们首先需要设计电路图。
请先插入一个微处理器芯片,例如Arduino UNO,然后将LED灯连接到芯片的一个数字引脚上。
确保LED的正极连接到数字引脚,负极连接到芯片的地线上。
为了实现闪烁效果,可以连接一个电阻到LED的负极,然后将另一端连接到芯片的VCC引脚。
2. 软件编程在设计了硬件电路后,我们需要编写控制LED闪烁的程序。
在Proteus软件中,可以使用Arduino IDE来完成这一任务。
以下是一个简单的C代码示例:```cvoid setup() {pinMode(2, OUTPUT); // 选择使用的数字引脚}void loop() {digitalWrite(2, HIGH); // LED灯亮起delay(1000); // 延时1秒digitalWrite(2, LOW); // LED灯熄灭delay(1000); // 延时1秒}```代码中的`setup`函数用于设置程序运行时的初始状态,其中`pinMode`函数用于配置数字引脚为输出模式。
`loop`函数则是程序的主要循环,其中`digitalWrite`函数用于控制LED灯的亮灭状态,`delay`函数用于给LED保持亮灭状态的时间间隔。
3. 仿真验证完成软件编程后,我们需要在Proteus中进行电路仿真验证。
打开Proteus软件,将设计好的电路图和编写好的程序导入到仿真环境中。
然后点击开始仿真按钮,程序将开始运行,并控制LED灯按照设定的时间间隔闪烁。
通过仿真验证,我们可以判断程序的逻辑是否正确,同时可以观察LED灯的正常工作情况。
实训报告单片机流水灯
一、实验目的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灯,实现了流水灯效果。