基于51单片机的流水灯

合集下载

(完整版)51单片机流水灯程序

(完整版)51单片机流水灯程序

1.第一个发光管以间隔200ms 闪烁。

2.8 个发光管由上至下间隔1s 流动,其中每个管亮500ms, 灭500ms 。

3.8 个发光管来回流动,第个管亮100ms 。

4.用8 个发光管演示出8 位二进制数累加过程。

5.8 个发光管间隔200ms 由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms 间隔全部闪烁 5 次。

重复此过程。

6.间隔300ms 第一次一个管亮流动一次,第二次两个管亮流动,依次到8 个管亮,然后重复整个过程。

7.间隔300ms 先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8 个全部闪烁 3 次;关闭发光管,程序停止。

1#include<reg52.h>#define uint unsigned intsbit led 仁P"0;void delay();void main(){while(1){led1=0;delay();led1=1;delay();}}void delay(){uint x,y;for(x=200;x>0;x--) for(y=100;y>0;y--);}#include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char sbit p P1A0; uchar a;void delay(); void main() {a=0xfe;P1=a;while(1){ a=_crol_(a,1); delay();P1=a; delay();}}void delay(){uint b; for(b=55000;b>0;b--);}3#include<reg52.h>#include <intrins.h>#define uint unsigned int #define uchar unsigned char void delay() {uint x,y; for(x=100;x>0;x--) for(y=110;y>0;y--);}void main() {uchar a,i;while(1)a=0xfe; for(i=0;i<8;i++){P1=a; delay(100); a=_crol_(a,1);}a=0x7f; for(i=0;i<8;i++){P1=a; delay(100); a=_cror_(a,1);4#include<reg52.h>#include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(uint a) { uint x,y; for(x=a;x>0;x--) for(y=110;y>0;y--);}void main() {uchar b;while(1){b++;P1=~b; delay(200);5#include<reg52.h>#include <intrins.h> #define uint unsigned int #define uchar unsigned char void main() { uchar a,i,j;while(1){ for(j=0;j<2;j++){a=0xfe; for(i=0;i<8;i++){P1=a;delay(200); a=_crol_(a,1);}a=0x7f; for(i=0;i<8;i++){P1=a; delay(200); a=_cror_(a,1);}}P1=0xff; for(j=0;j<10;j++) {delay(300);P1=~P1;}}}void delay(){uint x,y; for(x=200;x>0;x--) for(y=110;y>0;y--); 6 #include<reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(){uint x,y; for(x=300;x>0;x--) for(y=110;y>0;y--);} void main(){uchar a,i,j; while(1) {a=0xfe; for(j=0;j<8;j++) { for(i=0;i<8-j;i++) {P1=a; delay(200); a=_crol_(a,1);} a=_crol_(a,j); P1=0xff; a=a<<1;}} }7#include<reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(uint z){uint x,y; for(x=z;x>0;x--)for(y=110;y>0;y--);}void main(){uchar a,i,j;for(j=0;j<3;j++){P1=0x55;delay(300);P1=0xaa; delay(300);}for(j=0;j<3;j++){a=0xfe;for(i=0;i<8;i++){P1=a;delay(300); a=_crol_(a,1);}}P1=0xff; for(j=0;j<3;j++){P1=0x7e;delay(300);P1=0xbd; delay(300);P1=0xdb; delay(300);P1=0xe7; delay(300);}P1=0xff;for(j=0;j<3;j++){P1=0xe7;delay(300);P1=0xdb;delay(300);P1=0xbd;delay(300);P1=0x7e;delay(300);}P1=0xff; for(j=0;j<6;j++) {P1=~P1; delay(300);}P1=0xff;while(1);}。

基于51单片机的流水灯设计

基于51单片机的流水灯设计

基于51单片机的流水灯设计51单片机是一种常用的微控制器,它具有高性价比、易于编程和广泛的应用范围。

流水灯是一种常见的电子灯光装置,它通过类似于瀑布般的效果,逐个点亮一系列的灯。

本文将介绍基于51单片机的流水灯的设计。

流水灯的设计过程可以分为硬件设计和软件设计两个步骤。

硬件设计:在硬件设计方面,我们需要准备以下器件和材料:1.51单片机开发板2.杜邦线3.LED灯4.电阻接下来,根据流水灯的设计思路,将多个LED灯连接在一起,形成一个线性的灯带。

为了控制LED灯的亮灭,我们需要使用51单片机的GPIO 口来提供高低电平信号。

通过改变GPIO口的输出信号,我们可以实现各个LED灯的顺序点亮和熄灭。

软件设计:在软件设计方面,我们需要使用到汇编或C语言来编写控制程序。

以下是一个简单的流水灯程序的伪代码:```1.初始化51单片机的GPIO口方向,设置为输出模式2. 定义一个存储灯光模式的数组,比如`light_pattern[] = {0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01}`3.定义一个循环计数器`i`4.进入无限循环5. 通过将`light_pattern[i]`的值写入GPIO口,控制LED灯的亮灭6.延时一定时间(比如几百毫秒)7.更新循环计数器`i`8.如果`i`超过了数组的长度,将其重置为09.结束循环```在程序中,我们可以通过循环计数器`i`来依次点亮和熄灭LED灯。

通过不断更新`i`的值,我们可以实现灯光模式的循环播放。

总结:。

基于51单片机流水灯毕业设计

基于51单片机流水灯毕业设计

基于51单片机的流水灯毕业设计方案:一、引言流水灯是一种常见的电子设计项目,适合初学者练习和毕业设计。

通过使用51单片机和少量外围元件,可以实现一个简单而有趣的流水灯效果。

本文将介绍基于51单片机的流水灯设计方案,包括硬件连接、软件程序设计和效果展示等内容。

二、硬件设计1. 材料准备:51单片机(如STC89C52)、LED灯若干(建议4-8个)、电阻、面包板、连线等。

2. 连接方式:将LED灯按顺序连接到51单片机的IO口,每个LED 灯通过一个电阻连接到IO口,确保电流限制。

3. 电源供应:连接电源至电路板,保证正常工作电压和电流。

三、软件设计1. 编程环境:使用Keil C51等集成开发环境进行程序编写。

2. 程序设计:设计一个循环移位的程序,控制51单片机的IO口依次点亮LED灯,形成流水灯效果。

3. 定时控制:通过定时器中断或延时函数控制LED灯的亮灭时间,实现流水灯的效果。

四、效果展示1. 烧录程序:将编写好的程序烧录到51单片机中。

2. 调试测试:连接电路并通电,观察LED灯按顺序点亮并流动的效果。

3. 优化改进:根据实际效果调整程序和硬件设计,优化流水灯的效果和稳定性。

五、注意事项1. 电路连接:确保电路连接正确,避免短路或接反现象。

2. 程序设计:合理设计程序逻辑,确保LED灯的流水效果符合预期。

3. 调试测试:在调试过程中注意观察LED灯的亮暗情况,及时发现问题并进行调整。

六、总结基于51单片机的流水灯设计是一个适合初学者和毕业设计的简单而有趣的项目,通过设计和实现可以提升对单片机编程和电路连接的理解和技能。

希望通过本文的介绍,读者能够顺利完成基于51单片机的流水灯毕业设计,并在实践中不断提升自己的电子设计能力。

《单片机原理及应用》基于51单片机实验箱的流水灯设计

《单片机原理及应用》基于51单片机实验箱的流水灯设计

《单片机原理及应用》基于51单片机实验箱的流水灯设计一、实验目的和要求1.掌握单片机基本资源使用。

2.掌握单片机电路原理图。

3.掌握单片机C语言软件开发以及试验箱使用。

二、实验内容和原理实验内容:1.绘制程序流程图并编写C语言程序2.在实验箱中进行测试,最后提交实验报告三、主要仪器设备Keil4软件、C51单片机实验箱。

四、操作方法与实验步骤4.1 题目要求使用单片机实验箱实现流水灯功能。

4.2 系统设计思路主程序中实现流水灯功能,时间单位采用500ms信号,作为实现流水灯的发光二极管和单片机的P1相连。

4.2 C程序编制(包含详细的文字和程序流程图)#include<intrins.h>#include<reg52.h>#define uchar unsiged char#define uint unsigned intvoid mDelay(uint Delay){int i;for(;Delay>0;Delay--)for(i=0;i<110;i++);}void main(){unsigned char a,i;While(1){a=0x01;for(i=0;i<8;i++){a=-crol-(a,1)P2=amDelay(500);}}4.3 测试分析(包含文字和图像叙述)在KeilC51软件软件中编写好程序并调试好后,连接单片机实验箱,实验结果如下:实验箱上连接的八个灯,每个灯间隔500ms的时间一个接一个的循环闪烁。

五、讨论和心得(不少于100字)通过此次实验,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,试验过程还是比较繁琐,但是还是完成了这次试验,使我对于理解单片机的基本原理更加深刻,将所学知识运用到实践中,在实践中发现问题,强化理论知识。

课程名称:单片机原理及应用实验项目名称(二):定时计数器的应用—按钮控制LED灯四、实验目的和要求1.掌握单片机基本资源使用。

51单片机爱心流水灯原理及制作

51单片机爱心流水灯原理及制作

51单片机爱心流水灯原理及制作一、引言爱心流水灯是一种常见的电子制作项目,它使用51单片机控制LED灯的亮灭顺序,形成一个流动的爱心图案。

本文将详细介绍51单片机爱心流水灯的原理及制作过程。

二、原理介绍1. 51单片机51单片机是一种非常常见的单片机,具有广泛的应用领域。

它具有强大的计算能力和丰富的外设接口,非常适合用于控制LED灯的亮灭。

2. LED灯LED灯是一种半导体发光二极管,具有低功耗、长寿命和高亮度等特点。

在爱心流水灯中,我们使用红色的LED灯来形成爱心图案。

3. 流水灯原理流水灯是一种常见的电子灯光效果,通过控制LED灯的亮灭顺序,形成一个流动的效果。

在爱心流水灯中,我们将多个LED灯按照特定的顺序亮灭,形成一个流动的爱心图案。

4. 原理图以下是51单片机爱心流水灯的原理图:(在此处插入原理图)三、制作材料准备在开始制作爱心流水灯之前,我们需要准备以下材料:1. 51单片机开发板2. LED灯(红色)3. 电阻4. 面包板5. 连接线6. 电源四、制作步骤1. 连接电路首先,将51单片机开发板和面包板连接起来。

然后,根据原理图连接LED灯、电阻和51单片机的引脚。

确保连接正确且稳固。

2. 编写程序使用C语言编写51单片机的程序。

程序的主要功能是控制LED灯的亮灭顺序,形成一个流动的爱心图案。

以下是一个简单的示例程序:(在此处插入示例程序)3. 烧录程序将编写好的程序烧录到51单片机中。

可以使用专业的烧录工具,也可以使用通用的USB转串口模块进行烧录。

4. 测试将电源接入电路,打开电源开关,观察LED灯的亮灭情况。

如果一切正常,LED灯将按照程序中设定的顺序亮灭,形成一个流动的爱心图案。

五、注意事项在制作爱心流水灯时,需要注意以下几点:1. 连接线的接触要牢固,确保电路的稳定性。

2. 程序的编写要准确无误,确保LED灯按照预期的顺序亮灭。

3. 使用适当的电阻限流,以保护LED灯和51单片机。

基于51单片机的流水灯实训报告

基于51单片机的流水灯实训报告
3、还有就是焊接的时候切记不能拿着电烙铁和别人激动的聊天,不能拿着电烙铁对人或事物指指点点,以免伤到别人和自己或烧坏公共财物等。
4、焊接完了,还要对电烙铁进行保护措施——在电烙铁的笔头抹上一层锡,防止笔头被氧化!
周二
1、上午跟下午都是进行实物焊接。看着电脑上面的仿真电路图来一步步焊接,还要在脑海里边想象这样子焊接能否做到不用飞线,到最后又能让人看起来一目了然,清晰明了的感觉!不会看起来很混乱的联想图!所以,焊接是一个很考验人的耐性跟思维能力的功夫!在单片机的P0端口,接数码管的时候,要接上一个排阻来保护电路,因为在单片机内部除了P0端口,其它端口都有接内部电阻,所以,一定要在P0端口外接一个排阻来保护电路!
周五
我都在努力着完成最后一步工作,把程序下载到单片机中,刚开始的时候,经常出现CPU跟MCU握手失败,程序无法载入单片机中。我努力想到底哪里出错了,后来在一个同学的帮忙下,终于找到了出现问题的地方,就是数码管的1脚还没有与单片机的21脚焊接上。经过一会的补救,终于完成了!
总程序:
#include<reg51.h>
后来,老师就教我们編数码管的程序,然后结合流水灯的程序,通过修改后,仿真到模拟电路中看流水灯的走动和数码管的显示是否按你设想的结果一致,如果不一致,就要请教老师和同学。
最后,老师教给我们一个作业——写实训报告,后来我们都在埋头苦干中。
周四
由于部门的辩论赛活动,我不得不请假,所以就没有来参加实训!听同学们说老师叫我们自己动手把之前没完成的工作继续去完成!主要还是編程序和写实训报告。
uchar wei[2]={0xfe,0xfd};
bit start=0;
bit turnflag=0;
uchar num=0;

基于51单片机的花样流水灯设计

基于51单片机的花样流水灯设计

摘要摘要计算机技术的飞速发展和提高,把我们带入了崭新的时代,现在,计算机的应用已经深入到千家万户。

单片微型计算机是制作在一块集成电路芯片上的计算机,简称单片机。

单片机在现在社会有着广泛的应用,小到人们的日常电子用品,大到航天飞机、宇宙飞船,上面都有单片机的广泛应用。

单片机具有体积小、功能强大、低功耗、应用广泛等特点。

以AT公司的芯片AT89C51 单片机来实现流水灯的设计。

本系统由单片机控制,I/O口接LED的负极,而LED的正极则直接与5V电源相连。

通过I/O口输出的低电平点亮LED灯。

因此可以通过控制单片机的I/O口的电平高低以达到控制LED,从而实现不同花样的流水灯的目的。

关键词:LED,单片机,高低电平变化ABSTRACTThe rapid development of computer technology and improving, bring us to the new era, now, the application of computer has been deep into the thousands. Single chip microcomputer is made on an integrated circuit chip computer, hereinafter referred to as single chip microcomputer. SCM has been widely used in the present society, small to People's Daily electronic products, big to aerospace aircraft, spacecraft, above has the wide application of single-chip microcomputer. SCM has small volume, powerful function, low power consumption, wide application, etc. AT the company's chip AT89C51 single-chip microcomputer to realize the water lamp design. This system controlled by single chip microcomputer, I/O ports connect the LED the cathode, and LED the anode is directly connected to 5V power supply. Through the I/O port output low level light leds. So you can single chip microcomputer control through the I/O ports to control LED, the level of high and low so as to realize the purpose of the different pattern of flowing water light.Key words:LED , MCU ,High and Low output leve目录第1章引言 (1)1.1 研究背景及意义 (1)1.2 国内外研究现状以及本系统的重点问题 (1)1.3 本文章节安排 (2)第2章系统设计方案论证 (3)2.1 控制器模块方案论证 (3)2.2 键盘模块方案 (4)2.3 电源模块方案 (4)第3章系统硬件设计方案 (5)3.1 系统设计框图 (5)3.2 硬件电路设计 (5)3.2.1 电源电路 (5)3.2.2 单片机89C52最小系统 (6)3.2.3 按键电路 (13)3.3.4 LED灯电路 (13)第4章程序设计及软件仿真 (15)4.1 软件设计框图 (15)4.2 软件开发平台选择 (15)4.3 软件系统功能模块 (16)4.3.1 初始化模块 (16)4.3.2 延时函数 (17)4.3.3 定时器控制模块 (17)4.3.4 键盘扫描模式 (17)4.3.5 LED灯输出控制模块 (18)4.4 程序调试仿真 (19)4.4.1 仿真平台介绍 (19)4.4.2 仿真测试 (19)第5章硬件调试 (21)5.1 硬件设计 (21)5.2 硬件调试 (21)5.2.1 下载功能调试 (21)5.2.2 LED电路测试 (21)5.2.3 模式选择功能调试 (22)5.2.4 速度加减功能调试 (22)5.2.5 复位电路调试 (22)5.2.6 稳定性测试 (22)总结 (23)致谢 (25)参考文献 (26)附录 (27)附录一:原理图 (27)附录二:硬件实物 (28)附录三:程序代码 (29)第1章引言第1章引言1.1 研究背景及意义现如今,随着集成化芯片的飞速发展,分立元件或数字逻辑电路正逐步被集成电路所取代,而单片机作为一种集成电路,其价格低廉,且可靠性强、控制简单但控制方法多样。

基于51单片机的流水灯设计

基于51单片机的流水灯设计

基于51单⽚机的流⽔灯设计基于51单⽚机的流⽔灯设计⼀.基本功能利⽤AT89c51作为主控器组成⼀个LED流⽔灯系统,实现8个LED 灯的左、右循环显⽰。

⼆.硬件设计图1.总设计图1.单⽚机最⼩系统1.1选⽤AT89C51的引脚功能图2. AT89C51XTAL1:单芯⽚系统时钟的反向放⼤器输⼊端。

XTAL2:系统时钟的反向放⼤器输出端,⼀般在设计上只要在XTAL1和XTAL2上接上⼀只⽯英震荡晶体系统就可以⼯作了,此外可以在两引脚与地之间加⼊20PF的⼩电容,可以使系统更稳定,避免噪⾳⼲扰⽽死机。

RESET:重置引脚,⾼电平动作,当要对晶体重置时,只要对此引脚电平提升⾄⾼电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态。

P3:端⼝3是具有内部提升电路的双向I/O端⼝,通过控制各个端⼝的⾼低电平了实现LED流⽔灯的控制。

1.2复位电路如图所⽰,当按下按键时,就能完成整个系统的复位,使得程序从新运⾏。

图3.复位电路1.3时钟电路时钟电路⽤于产⽣单⽚机⼯作所需要的时钟信号,单⽚机本⾝就是⼀个复杂的同步时序电路,为了保证同步⼯作⽅式的实现,电路应在唯⼀的时钟信号控制下严格地按时序进⾏⼯作。

在AT89C51芯⽚内部有⼀个⾼增益反相放⼤器,其输⼊端为芯⽚引脚X1,输出端为引脚X2,在芯⽚的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了⼀个稳定的⾃激振荡器。

此电路采⽤12MHz的⽯英晶体。

图4.时钟电路2.流⽔灯部分图5.流⽔灯电路三.软件设计3.1编程语⾔及编程软件的选择本设计选择C语⾔作为编程语⾔。

C语⾔虽然执⾏效率没有汇编语⾔⾼,但语⾔简洁,使⽤⽅便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计⾃由度⼤,有很好的可重⽤性,可移植性等特点。

⽽汇编语⾔使⽤起来并没有这么⽅便。

本设计选⽤了Keil作为编程软件,.Keil C51⽣成的⽬标代码效率⾮常之⾼,多数语句⽣成的汇编代码很紧凑,容易理解。

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

基于51单片机的流水灯
利用51单片机P0口实现8个LED(发光二极管)的流水灯控制。

可以使用Proteus软件进行仿真调试。

1 硬件设计
利用单片机的PO口控制8个LED,其电路如下图所示。

在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。

单击菜单命令“文件”→“新建设计”,选择DEFAULT模板,保存文件名为“LSD.DSN”。

在器件选择按钮中单击“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示
都可以不画,它们都是默认的。

在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER和GROUND放置电源和地。

放置好元件后,布好线。

左键双击各元件,设置相应元件参数,完成电路图的设计。

2 软件设计
流水灯又称为跑马灯,在函数中可以将P0口的八种不同状态做成一维数组,循环执行即可,如下所示。

当然也可以采用其它函授来实现,如左移一位<<1(或右移一位>>1),循环左移函授_crol_(或循环右移函授_cror_)等。

/****************************************************************** 流水灯
*******************************************************************/ #include "reg51.h"
const tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void delayms(unsigned int x) //延时
{
unsigned int j;
unsigned char k;
for(j=0;j<x;j++)
{
for(k=0;k<120;k++);
}
}
void main()
{
unsigned char k;
while(1)
{
for(k=1;k<8;k++)
{
P0=tab[k];
delayms(500);
}
}
}
打开Keil程序(本人使用的是Keil8.05中文版),执行菜单命令“工程”→“新建工程”创建“流水灯”项目,并选择单片机型号为AT89C51。

执行菜单命令“文件”→“新建”创建文件,输入C语言源程序,保存为“LSD.C”。

在Project Workspace窗口中右击源代码组1,选择“添加文件到组‘源代码组l’”将源程序“LSD.C”添加到项目中。

在Keil中执行执行菜单命令“工程”→“创建目标”,编译源程序。

如果编译成功,则在“Output Window”的“创建”窗口中显示没有错误,并创建了“LSD.HEX”文件。

3 仿真与调试
关于Proteus与Keil的联合仿真调试,可参见我以前所写的博文或其它参考资料。

启动Proteus的ISIS,并将其放在屏幕的右上角(可将原理图放大到合适大小);再启动Keil的μVision3,并将其放在屏幕的左下角。

在Keil中执行菜单命令“调试”→“启动/停止调试”,或直接单击图标
,进入Keil调试环境。

同时,在Proteus ISIS的窗口中可看出Proteus也进入了程序调试状态。

在Keil代码编辑窗口中设置相应断点,断点的设置方法:在需要设置断点语句前双击鼠标左键,可设置断点;再次双击,可取消该断点。

在Keil中按F5键运行程序。

首先,P0.O点亮D1发光二极管,等待500ms 后D1熄灭,同时P0.1点亮D2发光二极管,同样等待500ms后D2熄灭,P0.2点亮D3发光二极管……,当P0.7点亮D8发光二极管等待500ms熄灭后,PO.O 再次点亮D1发光二极管……如此循环。

或可以点击单步、运行到光标处、全速运行等快捷按钮来进行调试。

本人邮箱:txxyc104@,欢迎来信讨论.。

相关文档
最新文档