52单片机心形流水灯程序

合集下载

用单片机设计流水灯的方法和程序编写

用单片机设计流水灯的方法和程序编写

用单片机设计流水灯的方法和程序编写-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIANS51增强型单片机实验板上有8个高亮度发光二极管(见图1所示),可以用来做单片机流水灯、跑马灯。

等实验,电路原理图见下图3。

图3单片机流水灯设计方法从原理图可以看出,如果我们想让接在口的LED1亮起来,那么我们只要把口的电平变为低电平就可以了;相反,如果要接在口的LED1熄灭,就要把口的电平变为高电平就可以;同理,接在~口的其他7个LED的点亮和熄灭方法方法同LED1。

因此,要实现流水灯功能,我们只要将LED2~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。

实现8个LED流水灯程序用中文表示为:低、延时、高、低、延时、高、低、延时、高、低、延时、高、低、延时、高、低、延时、高、低、延时、高、低、延时、高、返回到开始、程序结束。

从上面中文表示看来实现单片机流水灯很简单,但是我们不能说你变低,它就变低了。

因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”机器代码。

我们又怎样来使单片机按我们的意思去工作呢为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。

今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,然后交给单片机去执行。

这里的“程序语言”目前主要有汇编语言和C语言两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。

前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。

现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。

在上面主程序中用到了五条汇编语言指令:CLR、ACALL、SETB、LJMP、EN D。

CLR:是将其后面指定的位清为0,程序中使对应端口输出低电平ACALL:是子程序调用指令,程序中调用了DELAY延时子程序SETB:是将其后面指定的位置成1,程序中使对应端口输出高电平AJMP:是无条件跳转指令,意思是:跳转到指定的标号处继续运行END:是程序结束的伪指令,意思是告诉编译器,程序到此结束。

C51实验程序(流水灯、矩阵键盘、动态显示、串行口、1602液晶)

C51实验程序(流水灯、矩阵键盘、动态显示、串行口、1602液晶)
{RI=0;
switch(SBUF)//根据收到的数据决定模式
{ case 'A':LED1=~LED1,LED2=1;break;
case 'B':LED2=~LED2,LED1=1;break;
case 'C': LED1=~LED1,LED2=~LED2;break;
}
}
else
LED1=LED2=1;
TMOD=0x20;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
TI=0;
TR1=1;
while(1)
{ if(K1==0)
{ while(K1==0);
Operation_NO=(Operation_NO+1)%4; //计按键次数决定模式
}
switch(Operation_NO)
{ case 0:LED1=LED2=1;break;
{uchar t;
while(ms--)
{
for(t=0;t<120;t++);
}
}
void main()//主函数
{SCON=0x50;//以下为串行口初始化
TMOD=0x20;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
RI=0;
TR1=1;
LED1=LED2=1;
while(1)
{ if(RI)
DelayMS(10);
}}
#include<reg52.h>(LCD1602)
#define uint unsigned int
#define uchar unsigned char

51单片机流水灯左移 右移控制程序

51单片机流水灯左移 右移控制程序

51 单片机流水灯左移右移控制程序电路很简单8 位流水灯接在单片机的P1 口.如下是源代码://============================================================= //程序名:LLL22_4.C //程序功能:流水灯控制左移右移//============================================================== #include//头文件L_M(); //流水灯左移控制程序R_M();//流水灯右移控制程序//=============================================================== main() //主函数{ while(1) //无限循环{L_M(); //调用左移程序R_M(); //调用右移程序} } //========左移控制程序============================================== L_M() //左移主函数{ unsigned char i,temp,a,b; //声明无符号字符型变量A,TEMP I,B unsigned int s; //声明无符号整型变量S temp=0xfe; //左移初始值P1=temp; //P1 输出信号点亮发光管for( s=0;s>(8-i) ; //数据右移(8-I)位P1=a|b ; //逻辑或运算,并输出到P1 口for(s=0;s>i;b=temp<<(8-i); //数据右移(8-I)位P1=a|b; //逻辑或运算,并输出到P1 口for(s=0;s<30000;s++); //延时程序} }//=======================================================================tips:感谢大家的阅读,本文由我司收集整编。

流水灯电路图和程序

流水灯电路图和程序

流水灯电路图和程序#include <reg52.h>#include<instrins.h>#define uchar unsigned char#define uint unsigned intuchar code led[]={0xfe,0xfb,0xfd ,0xf7,0xef,0xbf,0xdf,0x7f};delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}main( ){uint i;while(1){P2=led[];delay(500);_crol_(led,1);}}用arm7做一个流水灯的设计。

悬赏分:100 - 解决时间:2009-9-3 20:03试设计一个闪烁流水灯控制器,该控制器可以控制8个灯顺序亮灭,当按钮K按下1次后,每次顺序点亮一个灯。

而且每个点亮的灯在闪烁3次后,才能灭,周而复始,直到按钮K 二次按下。

(用状态机设计)要用PROTEL99画好电路图。

还要写好程序。

画图的也只能发到我的邮箱里面吧。

邮箱:。

谢谢各位。

提问者:woxinruozai - 五级最佳答案从原理图可以看出,如果我们想让接在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高、返回到开始、程序结束。

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告引言单片机是一种集成电路,可以通过编程来控制不同的功能。

其中,流水灯是一个最简单的单片机实验项目,也是学习单片机的第一步。

本篇实验报告将详细介绍如何通过使用 AVR 单片机来实现一个流水灯的控制器。

实验原理流水灯的原理很简单,就是通过一个方向控制信号,以及一定的时间延时控制来逐步点亮和熄灭多个 LED 灯。

在本次实验中,我们将使用 AVR ATmega328P 单片机,它可以通过编程来实现流水灯的控制功能。

实验步骤1. 硬件准备将 ATmega328P 单片机插入到开发板中,并使用杜邦线将单片机的引脚连接到各个 LED 灯。

我们需要将一个引脚连接到方向控制信号,用于控制灯的点亮方向。

同时,我们还需要连接一个电位器,用于调节流水灯的速度。

2. 程序设计使用 Arduino 开发环境来编写 AVR 单片机的程序。

首先需要包含头文件 avr/io.h 和 util/delay.h,并定义输入输出引脚。

然后,我们需要定义一个名为“led” 的一个数组,来存储各个 LED 灯的输出状态。

同时,还需要定义一个变量“dir”,来表示流水灯的方向。

在程序主循环中,我们使用 for 循环来遍历各个 LED 灯。

同时,根据“dir”变量的不同,我们可以实现流水灯的正向和反向控制。

另外,我们还需要使用“_delay_ms()”函数来延时一定的时间,实现流水灯的闪烁效果。

3. 程序烧录使用 AVR ISP 编程器将编写好的程序烧录到单片机中。

在烧录过程中需要设置正确的程序和芯片类型,并选择正确的口线连接方式。

实验结果经过实际测试,我们成功地实现了一个流水灯控制器。

在调节电位器之后,灯的闪烁速度可以得到不同的调整。

同时,也可以通过改变方向控制信号来改变流水灯的运动方向。

结论通过本次实验可以学习到如何使用 AVR 单片机来实现一个简单的流水灯控制器。

通过编写程序、烧录编译等过程,可以加深对单片机的基础知识和理解。

流水灯C语言程序

流水灯C语言程序

流水灯C语言程序流水灯是一种常见的电子显示效果,通常用于展示灯光的流动效果。

在C语言中,我们可以通过控制单片机的IO口来实现流水灯的效果。

以下是一个标准格式的C语言程序,用于实现流水灯效果。

```c#include <stdio.h>#include <stdlib.h>#include <unistd.h>#define LED_COUNT 8 // 流水灯的数量#define DELAY_MS 500 // 每一个灯亮起的延迟时间(毫秒)int main() {int leds[LED_COUNT] = {0}; // 存储每一个灯的状态,0表示灭,1表示亮 int i, j;while (1) {// 灯往右挪移for (i = LED_COUNT - 1; i > 0; i--) {leds[i] = leds[i - 1];}leds[0] = 1;// 输出灯的状态for (i = 0; i < LED_COUNT; i++) {if (leds[i]) {printf("*"); // 亮的灯用*表示} else {printf(" "); // 灭的灯用空格表示}}printf("\n");// 延迟一段时间usleep(DELAY_MS * 1000);// 清空屏幕system("clear");}return 0;}```上述程序使用了C语言的基本语法和系统函数,实现了一个简单的流水灯效果。

程序中的`LED_COUNT`表示流水灯的数量,可以根据实际需求进行调整。

`DELAY_MS`表示每一个灯亮起的延迟时间,单位为毫秒。

在程序的主循环中,通过不断改变灯的状态和输出屏幕,实现了流水灯的效果。

首先,灯往右挪移,即将前一个灯的状态赋值给后一个灯,最后一个灯的状态设置为亮。

单片机实验2-LED流水灯实验实验

单片机实验2-LED流水灯实验实验

四、实验步骤: 实验步骤: 1. 实验原理图: 实验原理图:
1KΩ P1.0 P1.1 P1.2
VCC
MCU
P1.3 P1.4 P1.5 P1.6 P1.7 1KΩ
用导线把A2区的 接口与D1区的 用导线把 区的J61接口与 区的 区的 接口与 区的J52接口相连 接口相连
2. 编写程序思路: 编写程序思路: 用单片机P1口的 位输出控制8只 口的8位输出控制 用单片机 口的 位输出控制 只LED灯, 灯 每次点亮一只 LED,8只LED灯依次点亮, , 只 灯依次点亮, 灯依次点亮 点亮LED8之后同时点亮 个LED两秒时间, 之后同时点亮8个 两秒时间, 点亮 之后同时点亮 两秒时间 然后再依次点亮LED1~LED8,如此循环, 然后再依次点亮 ,如此循环, 即可形成流水灯。 即可形成流水灯。 •注意:因为人眼的视觉暂留时间为0.1s 注意:因为人眼的视觉暂留时间为 注意 (100ms),所以每个灯点亮的时间间隔应大于 所以每个灯点亮的时间间隔应大于 200ms。建议取 左右。 。建议取250ms左右。 左右
实验报告要求
1. 实验名称 2. 实验目的 3. 实验设备 4. 实验内容 5. 实验原理(图要画完整)及控制方法和过程的详细 实验原理(图要画完整) 说明。 说明。 6.实验编写的程序 实验编写的程序 7.实验结果 实验结果 8.心得和建议 心得和建议
实验报告不得抄袭
下次实验内容:手动扩展外部中断^INT0、 ^INT1。 下次实验内容 : 手动扩展外部中断 、 。 当 ^INT0产生中断时 , 使 LED 8盏灯流水显示 。 当 产生中断时, 盏灯流水显示。 产生中断时 盏灯流水显示 ^INT1产生中断时,使8盏LED停止流水显示。 产生中断时, 盏 停止流水显示。 产生中断时 停止流水显示 只数码管全亮; 注:当P1=00H时,8只数码管全亮; 时 只数码管全亮 全灭。 当P1=0FFH时,8只LDE全灭。 时 只 全灭 ^INT0:外接 外接SW1; 外接 ; ^INT1外接 外接SW2。 外接 。 设定外部中断边沿触发方式有效; 附:(1) 设定外部中断边沿触发方式有效; (2) 请设计一验证外部中断优先级。 请设计一验证外部中断优先级。

单片机实验流水灯报告

单片机实验流水灯报告
过程分析
本实验主要是采用延时程序来控制“流水”的功能,同时采用中断进行亮与暗闪烁的效果,使用C52的P0口进行对LED的控制。过程的主要分析如下:
#include<reg52.h>
#include<intrins.h>
unsigned int i=0;//定义变量i;
unsigned char data x=0xfe; //定义初值;
#include<intrins.h>
unsigned int i;
unsigned char data x=0xfe;
void main()
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
P0=x;
}
}
void time0() interrupt 1
1写完代码后单击project菜单再在下拉菜单中单击builttarget选项或者使用快捷键f7编译成功后再单击debug菜单在下拉菜单中单击startstopdebugsession或者使用快捷键ctrlf5点击run进行运行或者按f11进行单步运行
实验七LED流水灯程序
姓名
XXXX
学号
106032010128
void delay()//延时函数;
{
int a,j;
for(a=0;a<1000;a++)
{
for(j=0;j<100;j++)
;
}
}//主函数;
void main()
{
P0=x;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档