当前位置:文档之家› 四、实现8个LED流水灯

四、实现8个LED流水灯

四、实现8个LED流水灯
四、实现8个LED流水灯

/***************项目名称:实现8个LED流水灯***************/ #include //引用S52单片机头文件

/***************定义8个LED引脚***************************/ sbit LED1=P1^0; //定义一个LED的引脚

sbit LED2=P1^1; //定义另一个LED的引脚

sbit LED3=P1^2;

sbit LED4=P1^3;

sbit LED5=P1^4;

sbit LED6=P1^5;

sbit LED7=P1^6;

sbit LED8=P1^7;

void Delay(void); //子函数的声明,后面要加分号。

void main() //主程序main函数

{

while(1) //在主程序中设置死循环"while(1)"

{

LED1=0; //P1.0口输出低电平,使LED1灯亮

Delay(); //延时字函数的调用

LED1=1; //P1.0口输出高电平,使LED1灯灭

LED2=0; //P1.1口输出低电平,使LED2灯亮

Delay(); //延时字函数的调用

LED2=1; //P1.1口输出高电平,使LED2灯灭

LED3=0; //P1.2口输出低电平,使LED3灯亮

Delay(); //延时字函数的调用

LED3=1; //P1.2口输出高电平,使LED3灯灭

LED4=0; //P1.3口输出低电平,使LED4灯亮

Delay(); //延时字函数的调用

LED4=1; //P1.3口输出高电平,使LED4灯灭

LED5=0; //P1.4口输出低电平,使LED5灯亮

Delay(); //延时字函数的调用

LED5=1; //P1.4口输出高电平,使LED5灯灭

LED6=0; //P1.5口输出低电平,使LED6灯亮

Delay(); //延时字函数的调用

LED6=1; //P1.5口输出高电平,使LED6灯灭

LED7=0; //P1.6口输出低电平,使LED7灯亮

Delay(); //延时字函数的调用

LED7=1; //P1.6口输出高电平,使LED7灯灭

LED8=0; //P1.7口输出低电平,使LED8灯亮

Delay(); //延时字函数的调用

LED8=1; //P1.7口输出高电平,使LED8灯灭}

}

void Delay(void) //子函数的建立,延时一段时间的子函数

{

unsigned int i=50000; //声明一个int型的变量,即"int"的范围为0~65536 while(--i); //延时一段时间

}

花样流水灯实验报告

黄淮学院信息工程学院 单片机原理及应用课程设计性实验报告

五、硬件电路设计 根据设计任务,首先进行系统硬件的设计。其硬件原理图由LED显示电路和单片机最小系统组成,如图所示,其中包括时钟电路采用部时钟方式,复位电路采用上电自动复位。由于单片机的I/O口的高电平驱动能力只有微安级,而灌电流可以达到3毫安以上,因此采用低电平驱动。P1、P2、P3分别控制8个led灯。 六、软件程序设计 1、软件设计思路 如果通过上图所示电路图完成实验要求,通过数组,分别同时控P0、P1、P2分别控制8个led灯,从而协调控制24个灯实现花样流水灯效果。 开始 编写数组 主循环 逐个点亮 24灯同时闪烁 逐个熄灭

P3=table1[i]; delayms(500); } shan();//全部闪烁 for(i=0;i<8;i++)//逐个熄灭{ P3=table2[i]; delayms(500); } for(i=0;i<8;i++) { P1=table3[i]; delayms(500); } for(i=0;i<8;i++) { P0=table2[i]; delayms(500); } } } void delayms (uintt) { uint x,y; for(x=t; x>0;x--) for(y=50;y>0;y--); } 七、软硬件仿真调试分析 1、仿真调试结果

图片 1 逐个点亮图片 2 24灯闪烁 图片 3 逐个熄灭 2、性能测试及结果分析 通过仿真结果发现通过上述系统可以实现实验要求,24个灯逐个点亮,24个灯全亮后,24个灯一起闪烁,闪烁5次后,然后24个灯逐个熄灭。由此证明系统满足实验要求。 八、项目总结 在本次花样流水灯试验中,使用循环程序、数组语句实现了实验要求,设计过程中遇到了很多的问题,但经过努力,最终设计出了合理的解决方案。通过此次实验,对多个led灯的控制能力进一步得到提升。 九、项目设计报告成绩 实验报告成绩: 指导教师签字: 年月日

单片机花样流水灯设计实验报告

**大学 物理学院 单片机花样流水灯设计实验 课题:花样流水灯设计 班级: 物理 *** 姓名: *** 学号: ……………

当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。 制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。本设计介绍一种简单实用的单片机花样流水灯设计与制作,采用基于MS-51的单片机AT89C51和发光二极管、晶振、复位、电源等电路以及必要的软件组成的以AT89C51为核心,辅以简单的数码管等设备和必要的电路,设计了一款简易的流水灯电路板,并编写简单的程序,使其能够自动工作。 本设计用AT89C51单片机为核心自制一款简易的花样流水灯,并介绍了其软件编程仿真及电路焊接实现,在实践中体验单片机的自动控制功能。该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。 关键字:AT89C51 单片机流水灯数码管

1. 单片机及其发展概况 单片机又称为单片微计算机,其特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。单片机作为一种高集成度微型计算机,已经广泛应用于工业自动化控制、智能仪器仪表、通信设备、汽车电子与航空航天电子系统、智能家居电器等各个领域。 2. Protues仿真软件简介 Protues以其数量众多的元件数据库、标准化的仿真仪器、直观的捕获界面、简洁明了的操作、强大的分析测试、可信的测试结果, 为电子工程设计节约研发时间,节省了工程设计费用。利用Protues软件设计一款通过数码管显示计数时间的流水灯电路及Keil C软件编程后,再将两者关联则可以简单快速的进行仿真。 【实验设计目标】 设计要求以发光二极管作为发光器件,用单片机自动控制,对8个LED 灯设计至少3种流水灯显示方式,每隔20秒变换一次显示花样,计时通过一个二位七段数码管显示。

用单片机控制的LED流水灯设计(电路、程序全部给出)

1.引言 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本文笔者用AT89C51单片机自制了一款简易的流水灯,重点介绍了其软件编程方法,以期给单片机初学者以启发,更快地成为单片机领域的优秀人才。 2.硬件组成 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATM EL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz 工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。其具体硬件组成如图1所示。 图1 流水灯硬件原理图 从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要

用单片机控制的LED流水灯设计(电路、程序全部给出)讲课教案

用单片机控制的L E D 流水灯设计(电路、程序全部给出)

1.引言 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本文笔者用AT89C51单片机自制了一款简易的流水灯,重点介绍了其软件编程方法,以期给单片机初学者以启发,更快地成为单片机领域的优秀人才。 2.硬件组成 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATM EL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。其具体硬件组成如图1所示。 图1 流水灯硬件原理图 从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,

51单片机 流水灯 ~ 花样灯 程序

单片机为89c52 晶振为11.0592, /***此程序为流水灯*** / #include #include #define uchar unsigned char //宏定义 #define uint unsigned int uchar led; void delay(uint z) //延时子函数体 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() { led=0xfe; //赋初值 while(1) { P1=led; //点亮第一个小灯 delay(100); //延时100毫秒 led=_crol_(led,1); 将led的变量左移给下一位} }

/*8个发光管间隔200ms由上至下,返回再由上至下,一个个往下亮,后全亮由下至上,返回再由下至上,一个个往下亮,后全亮 再重复2次, 然后全部熄灭再以500ms间隔 全部闪烁3次。重复此过程*/ #include #include #define uchar unsigned char #define uint unsigned int uchar led; uint i,j; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() { while(1) { for(j=0;j<2;j++) { led=0xfe; //赋初值 for(i=0;i<8;i++) { P1=led; //点亮第一个小灯 delay(200); //延时200毫秒 led=_crol_(led,1); //将led变量循环左移给下一位 } led=0xfe; //赋初值 for(i=0;i<8;i++) { P1=led; //点亮第一个小灯 delay(200); //延时200毫秒 led<<=1; //左移给下一位 } led=0x7f; //赋初值

花样流水灯设计

一、原理图设计的目的: 利用AT89C51,通过控制按键来实现六种流水灯花样的转换,实现花样流水灯的设计,同时通过外部中断0,来控制流水灯的速度。 二、各器件的功能作用: 1、AT89C51 AT89C51有40个引脚,每个引脚都有其功能。本次设计中,利用P0口当输出口,输出低电平来驱动发光二极管点亮。利用P1.0~P1.5六个引脚,通过按键接地,然后采用扫描的方式,判断哪个引脚所接按键按下,从而来控制六种流水灯的花样。利用P3.2引脚外接按键接地,通过控制按键来减慢流水灯的速度,利用P3.3引脚外接按键接地,通过控制按键来提高流水灯的速度。利用P3.7输出低电平,导通三极管Q1,从而给八个发光二极管的阳极加高电平,一旦P0口输出低电平就可以驱动发光二极管。 2、八个发光二极管: 通过八个发光二极管来实现流水灯的变化,用低电平驱动发光二级管亮,同时,用高电平使其熄灭 。 3、按键

通过P1.0-P1.5外接的按键来实现流水灯各种花样的变化,当按键按下时,驱动一种流水灯花样的闪烁。同时,利用按键来提供外部中断,当按下按键时,产生一个外部中断,向CPU申请中断,CPU 响应其中断,因此可以用按键来实现提高流水灯闪烁的速度。 通过在RST口处加上一个按钮手动复位电路,利用复位按钮可以使运行中的流水灯复位到初始的状态。 4、排阻 因为P0口作为输出口时需要外接上拉电阻 三、设计原理图:

四、程序如下: #include //51系列单片机定义文件#define uchar unsigned char //定义无符号字符#define uint unsigned int //定义无符号整数 void delay(uint);//声明延时函数 void main(void) { uint i; uchar temp; TCON=0x05; IE=0x85; PX1=1; PX0=0; while(1) { temp=0x01; for(i=0;i<8;i++) //8个流水灯逐个闪动 {

基于51单片机的各种花样的流水灯c51程序

基于51单片机的各种花样的流水灯c51程序/*----------------------------------------------- 功能:流水灯对称移动闪烁(双闪烁) ------------------------------------------------*/ #include #define uint unsigned int void delay(uint); main() { uint comp1=0xfe; uint comp2=0x80; P1=0x7e; delay(30000); while(1) { P1=0xff; comp1<<=1; comp1|=0x01; comp2>>=1; P1&=comp1; P1^=comp2; delay(30000); if(P1==0xe7) { comp1<<=1; comp1|=0x01; comp2>>=1; } if(comp1==0x7f) { comp1=0xfe; comp2=0x80; } } } void delay(uint cnt) { while(cnt--); } /*----------------------------------------------------------------- 只循环一次,而没有一直循环下去,出错地方在: 通过添加一条测试语句:

if(comp1==0x7f) { comp1=0xfe; comp2=0x80; P1=0x00; delay(30000); } 发现if语句没有被执行,自然继续左右移动: 1111 1111&1111 1111^0000 0000==11111 1111 所以看起来是执行了一次while中的代码。 具体为什么不行,还不清楚…… 更正下列代码后,能够实现功能。 if(P1==0x7e) { comp1=0xfe; comp2=0x80; } 或者: if(comp2==0x01) { comp1=0xfe; comp2=0x80; } --------------------------------------------------------------*/ ********************************************* /*----------------------------------------------- 功能:流水灯(单向单闪烁) ------------------------------------------------*/ #include #define uint unsigned int void delay(uint); main() { //uint fre=0x03; //uint comp1=0xfe,comp2=0x80; P1=0xfe; while(1) { /*------------------------------------------------------------------ 模块1:循环单向闪烁,只有一个灯亮灭 执行3次,转入下一种闪烁 --------------------------------------------------------------------*/ while(1) { delay(30000);

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 #define uint unsigned int sbit led1=P1^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--); } 2

#include #include #define uint unsigned int #define uchar unsigned char sbit p1=P1^0; 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 #include #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)

用单片机控制的LED流水灯

用单片机控制的LED流水灯 设计报告 专业:电子信息工程(自动化方向) 班级:09级 姓名:

1.引言 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本文用A T89C51单片机自制了一款简易的流水灯,重点介绍了其软件编程方法。 2.硬件组成 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。A T89C51单片机是美国A TMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz 工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。 其具体硬件组成如图1所示。 图1 流水灯硬件原理图

从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED 灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。 3.软件编程 单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。下面我们以最简单的流水灯控制功能即实现8个LED灯的循环点亮,来介绍实现流水灯控制的几种软件编程方法。 3.1位控法 这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,从而来控制相应LED灯的亮灭。程序如下: ORG 0000H ;单片机上电后从0000H地址执行 AJMP START ;跳转到主程序存放地址处 ORG 0030H ;设置主程序开始地址 START:MOV SP,#60H ;设置堆栈起始地址为60H CLR P1.0 ;P1.0输出低电平,使LED1点亮 ACALL DELAY ;调用延时子程序 SETB P1.0 ;P1.0输出高电平,使LED1熄灭 CLR P1.1 ;P1.1输出低电平,使LED2点亮 ACALL DELAY ;调用延时子程序 SETB P1.1 ;P1.1输出高电平,使LED2熄灭 CLR P1.2 ;P1.2输出低电平,使LED3点亮 ACALL DELAY ;调用延时子程序

花样流水灯程序--汇编语言

ORG 0200H MOV A,#0FEH MOV R1,#10H LOOP1: MOV P1,A LCALL DL Y500 RL A DJNZ R1,LOOP1;L1-L8走 LCALL DL Y500 LCALL DL Y500 MOV R1,#15 LOOP2: MOV P1,A LCALL DL Y500 RL A DEC R1 CJNE R1,#07,LOOP2 RR A LOOP3: RR A MOV P1,A LCALL DL Y500 DJNZ R1,LOOP3;L1-L8,L8-L1走 LCALL DL Y500 LCALL DL Y500 MOV R1,#0FEH MOV R2,#15 LOOP4: RL A ANL A,R1 MOV P1,A LCALL DL Y500 DEC R2 CJNE R2,#07,LOOP4 MOV R1,#80H LOOP5: ORL A,R1 MOV P1,A RR A LCALL DL Y500 DJNZ R2,LOOP5;灯柱 LCALL DL Y500 LCALL DL Y500 RL A MOV R1,#07 LOOP6: RL A RL A MOV P1,A LCALL DL Y500

DEC R1 CJNE R1,#04,LOOP6 MOV A,#0FDH LOOP7: MOV P1,A LCALL DL Y500 RL A RL A DJNZ R1,LOOP7;1357 2468走 LCALL DL Y500 LCALL DL Y500 MOV A,#0FCH MOV R1,#08 LOOP8: MOV P1,A LCALL DL Y500 RL A RL A DJNZ R1,LOOP8;两位走马灯 LCALL DL Y500 LCALL DL Y500 MOV A,#0F0H MOV R1,#04 LOOP9: MOV P1,A LCALL DL Y500 SWAP A DJNZ R1,LOOP9;四位轮流显示 LCALL DL Y500 LCALL DL Y500 MOV A,#0FEH MOV R1,#16 LOOP10: MOV P1,A LCALL DL Y500 MOV P1,#0FFH LCALL DL Y500 MOV P1,A LCALL DL Y500 MOV P1,#0FFH LCALL DL Y500 RL A DJNZ R1,LOOP10;闪烁跑马灯 LCALL DL Y500 LCALL DL Y500 MOV R1,#04 LOOP11: MOV P1,#00H LCALL DL Y500

用arm7设计流水灯

用arm7设计流水灯 试设计一个闪烁流水灯控制器,该控制器可以控制8个灯顺序亮灭,当按钮K 按下1次后,每次顺序点亮一个灯。而且每个点亮的灯在闪烁3次后,才能灭,周而复始,直到按钮K二次按下。(用状态机设计)、 从原理图可以看出,如果我们想让接在P1.0口的LED1亮起来,那么我们只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平就可以;同理,接在P1.1~P1.7口的其他7 个LED的点亮和熄灭方法方法同LED1。因此,要实现流水灯功能,我们只要将LED2~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。 实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高、P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。 从上面中文表示看来实现单片机流水灯很简单,但是我们不能说P1.0你变低,它就变低了。因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”机器代码。我们又怎样来使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译”成单片机 所需的二进制代码,然后交给单片机去执行。这里的“程序语言”目前主要有汇编语言和C语言两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。 实现8个LED流水灯汇编语言源程序 liu01.asm ;----- 主程序开始 ----- START: CLR P1.0 ;P1.0输出低电平,使LED1点亮 ACALL DELAY ;调用延时子程序 SETB P1.0 ;P1.0输出高电平,使LED1熄灭 CLR P1.1 ;P1.1输出低电平,使LED2点亮 ACALL DELAY ;调用延时子程序 SETB P1.1 ;P1.1输出高电平,使LED2熄灭 CLR P1.2 ;P1.2输出低电平,使LED3点亮 ACALL DELAY ;调用延时子程序 SETB P1.2 ;P1.2输出高电平,使LED3熄灭 CLR P1.3 ;P1.3输出低电平,使LED4点亮

单片机花样流水灯源代码

花样流水灯C语言程序代码 Lesso2.1: 第一个发光管以间隔200ms闪烁(这是最原始的程序没有用延迟子函数)。 #include sbit D1=P1^0; int a; void main() { while(1) { D1=0; a=25000; while(--a); D1=1; a=25000; while(--a); } } Lesson2.2: 8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。 #include #include #define uint unsigned int #define uchar unsigned char

void delay(uint); uchar temp; sbit beep=P2^3; void main() { temp=0xfe; while(1) { P1=temp; beep=0; delay(500); P1=0xff; beep=1; delay(500); temp=_crol_(temp,1); } } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }

Lesson2.3:8个发光管来回流动,第个管亮100ms,流动时让蜂鸣器发出“滴滴”声。 #include #include #define uint unsigned int #define uchar unsigned char void delay(uint); uchar temp; int i,j; sbit beep=P2^3; void main() { temp=0xfe; while(1) { for(i=7;i>0;i--) { beep=0; delay(100); beep=1; delay(100); beep=0; delay(100); beep=1; P1=temp;

STCC单片机花样流水灯C语言程序

花样流水灯程序 #include<> #define uint unsigned int #define uchar unsigned char uchar num; uchar code table[]={ 0xaa,~0xaa,0x7e,0xbd,0xdb, 0xe7,0xf3,0xf9,0xfc,0xfa, 0xf6,0xee,0xde,0xbe,0x7e, 0xbe,0xde,0xee,0xf6,0xfa, 0xfc,0xf0,0xc0,0x0,0x5f,0xaf,0xd7,0xeb,0xf5,0xfa,0xff}; void delayms(uint); void main() { while(1) { for(num=0;num<31;num++) { P2=table[num];

delayms(200); } P2=0x7f; delayms(40); P2=0x3f; delayms(80); P2=0x1f; delayms(130); P2=0x0f; delayms(190); P2=0x07; delayms(260); P2=0x03; delayms(240); P2=0x01; delayms(330); P2=0x00; delayms(430); for(num=0;num<31;num++) { P2=table[num]; delayms(100);

} P2=0x7f; delayms(40); P2=0x3f; delayms(50); P2=0x1f; delayms(70); P2=0x0f; delayms(100); P2=0x07; delayms(140); P2=0x03; delayms(190); P2=0x01; delayms(250); P2=0x00; delayms(320); } } void delayms(uint xms) { uint i,j;

单片机课程设计花样流水灯

河南理工学院 课程设计说明书 题目:花样流水灯设计 姓名: 院(系): 专业班级: 学号: 指导教师: 成绩: 时间:2016 年 4 月23 日至2016 年5月29日

河南理工学院 课程设计任务书 题目: 花样流水灯设计 专业、班级 学号姓名 主要内容、基本要求、主要参考资料等: 主要内容: 利用单片机控制16个发光二极管模拟的彩灯按照一定的规律点亮、熄灭、闪烁。 基本要求: 1.实现发光二极管的多样化显示; 2.利用proteus软件完成设计电路和仿真; 3.掌握相关芯片和电子元件的使用方法; 4.通过此次设计将单片机软硬件结合起来对程序进行编辑、校验,锻炼实践能力和理论联系实际的能力。 主要参考资料: [1]李全利,单片机原理及接口技术[M],高等教育出版社 [2]王文杰,单片机应用技术[M],冶金工业出版社 [3]朱清慧,PROTEUS教程—电子线路设计、制版与仿真[M],清华大学出版社 [4]单片机实验指导书,天煌教仪 [5]彭伟,单片机C语言程序设计实训100例[M],电子工业出版社 完成期限:2016.4.23-2016.5.29 指导教师签名: 课程负责人签名: 年月日

目录 绪论 (1) 1 课程设计的目的和要求 (2) 1.1 设计目的 (2) 1.2 设计要求 (2) 2 总体设计 (2) 2.1 硬件总体设计 (2) 2.1.1 设计思想 (2) 2.1.2 原件清单 (2) 2.1.3 模块分析 (2) 2.2软件总体设计................................................................................................. 错误!未定义书签。 3 硬件设计 (3) 3.1 AT89C51单片机的硬件结构 (3) 3.1.1主要特性 (4) 3.1.2主要引脚功能 (4) 3.1.3外部总线结构 (6) 3.1.4振荡器特性 (6) 3.1.5芯片擦除 (6) 3.2硬件电路设计 (7) 3.2.1震荡电路 (7) 3.2.2LED电路显示 (8) 3.2.3复位电路 (9) 4软件设计 (9) 4.1主程序设计 (9) 4.2子程序设计 (10) 4.3流水灯控制码程序设计 (10) 4.4程序流程图 (10) 5使用proteus软件调试仿真说明 (11) 5.1 Proteus的介绍 (11) 5.2 Proteus的特点 (11) 5.3 Proteus的使用方法 (11) 5.4电路原理图的设计方法 (12) 5.5仿真过程 (13) 6测试数据 (13) 7附录 (14) 7.1花样流水灯程序 (14) 7.2花样流水灯总线路图 (14) 结束语 (16) 参考文献 (16) I

花样流水灯课程设计

课程论文 花样流水灯的设计 课程单片机技术及系统设计 学生姓名 学号 所在学院 所在班级 任课教师 提交时间2014年5月25日至2014年5月30日

目录 一.前言 1.1 设计概述................................................................................ (2) 1.2设计主要功能 (2) 二.设计过程 2.1原理图中所使用的元器件功能 (3) 2.2程序在功能实现过程中的作用 (5) 三体会 3.1课程设计体会 (5) 四. 文献 4.1参考文献 (6) 五. 附录 5.1流水灯电路图 (7) 5.2流水灯程序 (7)

摘要:当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。 关键词:单片机控制系统流水灯 一.前言 1.1设计概述 整个系统工作由软件程序控制运行,根据需要,可以上电后系统经过初始化,进入用户设定模式状态。于AT89C51单片机的彩灯控制方案,实现对LED灯的控制。本方案以AT89C52单片机作为主控核心,与驱动等模块组成核心主控制模块。在主控模块上设有晶振电路和8个LED灯,根据需要编写若干种亮灯模式,根据各种亮灯时间的不同需要,在不同时刻输出灯亮或灯灭的控制信号 1.2设计主要功能 通过发光二极管显示不同的花样,并且可以通过按键来控制流水灯的速度通过学习单片机工作原理和各种工作方式及各管脚的功能,想通过P3 口的俩管脚P3.2和P3.3第二功能,即外部中断来使CPU 响应,达到控制流水灯的目的

程序简单花样齐全的流水灯

利用单片机实现五种花样流水灯 1.硬件电路图设计 本文仿真软件采用Proteus和Keil C51。其中Keil Proteus可以仿真、分析(SPICE)各种模拟器件和集成电路,C51可完成程序的编译链接和仿真调试,并能生成hex文件。通过Keil C51与Proteus的联调便可实现仿真实验。 硬件电路采用单片机最小系统(晶振电路+复位电路),利用P0口作为数据输出端口。由于P0口是一个8位漏极开路的的双向I/O口,必需外接上拉电阻才能有高电平输出。当单片机输出高电平时对应的LED灯熄灭,当输出低电平时则点亮。 2.C语言程序 程序定义了五个数组分别对应五种不同的花样流水灯方式,其中每个数组中的每个元素控制P0口的壮态,从而控制每个LED灯的壮态。另外,程序将流水灯每个壮态的间隙时间进行了宏定义,这使得修改每个壮态的保持时间十分方便。 #include //包含单片机头文件 #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];

实习报告流水灯

单片机流水彩灯设计 目录 1、方案设计说明 (2) (1)设计项目概述 (2) (2)设计项目功能及操作介绍 (2) (3)方案设计思路 (2) 2、硬件设计说明 (3) (1)电路图 (3) (2)I/O的分配 (3) (3)电路工作原理 (4) (4)主要器件介绍 (4) 3、软件设计说明 (5) (1)软件设计概述 (5) 1)设计思路 (5) 2)总体功能 (6) 3)程序流程图 (7) (2)程序总体结构及程序的执行与工作过程 (8) (3)重要程序段说明 (8) (4)程序清单 (9) 4、制作调试说明 (13) (1)制作调试过程及结果 (13) (2)所遇到的问题及解决方法 (13) 5、总结 (14) 1、方案设计说明 (1)设计项目概述

本次设计的题目是单片机流水彩灯设计通过综合掌握单片机编程的基本思想,以及中断,定时程序的基本编写方法。利用单片机设计并制作流水彩灯。该流水彩灯设置用一个AT89S51单片机来控制12LED灯产生不同的发光效果。 (2)设计项目功能及操作介绍 其中两个按键 K1 和 K2,上电后,12 个 LED 灯全亮;两个按键一个用于控制“流水灯”的启动和停止,另一个用于选择“流水”的花样。其中流水灯花样有三种:1)单个LED灯顺次点亮。2)每两个LED灯顺次点亮然后再顺次返回。3)从两端每三个LED灯顺向中间次点亮。 (3)方案设计思路 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。流水灯实际上就是一个带有12个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。如果要让接在P0.0口的LED亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的LED熄灭,就要把P0.0口的电平变为高电平;同理,接在其他接口上LED灯的点亮和熄灭的方法也如此。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED12依次点亮、熄灭,12只LED灯便会一亮一暗的做流水灯了。在此我们还

单片机课程设计花样流水灯

郑州工业应用设计学院 课程设计说明书 题目:花样流水灯设计 姓名:李行 院(系):机电工程学院 专业班级:11级电气工程及其自动化四班 学号:1202120420 指导教师:杨坤漓宋东亚 成绩: 时间:2014 年12 月23 日至2014 年12 月29日

郑州工业应用设计学院 课程设计任务书 题目: 花样流水灯设计 专业、班级 12级电气工程及其自动化四班 学号 1202120420姓名李行 主要内容、基本要求、主要参考资料等: 主要内容: 利用单片机控制16个发光二极管模拟的彩灯按照一定的规律点亮、熄灭、闪烁。 基本要求: 1.实现发光二极管的多样化显示; 2.利用proteus软件完成设计电路和仿真; 3.掌握相关芯片和电子元件的使用方法; 4.通过此次设计将单片机软硬件结合起来对程序进行编辑、校验,锻炼实践能力和理论联系实际的能力。 主要参考资料: [1]李全利,单片机原理及接口技术[M],高等教育出版社 [2]王文杰,单片机应用技术[M],冶金工业出版社 [3]朱清慧,PROTEUS教程——电子线路设计、制版与仿真[M],清华大学出 版社 [4]单片机实验指导书,天煌教仪 [5]彭伟,单片机C语言程序设计实训100例[M],电子工业出版社 完成期限:2014.12.23-2014.12.29 指导教师签名: 课程负责人签名: 年月日

目录 绪论 (1) 1 课程设计的目的和要求 (2) 1.1 设计目的 (2) 1.2 设计要求 (2) 2 总体设计 (3) 2.1 硬件总体设计 (3) 2.1.1 设计思想 (3) 2.1.2 原件清单 (3) 2.1.3 模块分析 (3) 2.2软件总体设计 (4) 3 硬件设计 (5) 3.1 AT89C51单片机的硬件结构 (5) 3.1.1主要特性 (5) 3.1.2主要引脚功能 (6) 3.1.3外部总线结构 (7) 3.1.4振荡器特性 (8) 3.1.5芯片擦除 (8) 3.2硬件电路设计 (8) 3.2.1震荡电路 (8) 3.2.2LED电路显示 (10) 3.2.3复位电路 (10) 4软件设计 (12) 4.1主程序设计 (12) 4.2子程序设计 (13) 4.3流水灯控制码程序设计 (13) 4.4程序流程图 (14) 5使用proteus软件调试仿真说明 (15) 5.1 Proteus的介绍 (15) 5.2 Proteus的特点 (15) 5.3 Proteus的使用方法 (15) 5.4电路原理图的设计方法 (16) 5.5仿真过程 (17) 6测试数据 (19) 7附录 (20) 7.1花样流水灯程序 (20) 7.2花样流水灯总线路图 (21) 结束语 (23) 参考文献 (24) I

相关主题
文本预览
相关文档 最新文档