2015-11-05 20:17:36 rl529014 阅读数 9055
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

功能:让8个LED灯顺序点亮,然后在逆向点亮;

代码如下:

#include<reg52.h>

#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint z);

main()
{  
uchar aa;   
uint count=0;
while(1)
{
aa=0xfe;
P0=aa;
delay(100);
while(1)
{
aa=_crol_(aa,1);//aa左移一位,
P0=aa;
delay(1000);

        count++;

if(count>=7)        //判断8个LED灯是否已被全部点亮一次
{
for(;count>0;)//逆向点亮8个LED灯
{
aa=_cror_(aa,1);//aa右移一位
P0=aa;
delay(1000);//调用延时程序,延时1S;
count--;
}
break;
}
 
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);

}

贴出一张图片:


2019-07-25 16:16:18 qq_36931762 阅读数 369
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

51单片机心形灯——实现按键控制流水编程

其他心形灯类型编码请看我的其他博文~
实现按键K1实现从左向右流水,按键K2实现从右往左流水,按键K3实现暂停流水,按键K4实现继续流水
注意:本代码存在小小BUG即按键K1以后可以按键K3和K4控制流水,不能按K2中断K1流水操作来实现K2从右向左流水。按键K2对于K1也同理!
心形灯效果图 如果是静态效果请刷新页面哦
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
心形灯原理图
在这里插入图片描述

#include "reg52.h"
sbit k1 = P3^2;
sbit k2 = P3^3;
sbit k3 = P3^4;
sbit k4 = P3^5;

unsigned char code table[]={0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};
unsigned char code table1[]={0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe};

void Delay(unsigned int xms){
	unsigned int i, j;
	for(i=xms;i>0;i--){
		for(j=110;j>0;j--);
	}
}
unsigned int flag=0;
void checkflag(){
	if(k3==0){
		flag=1;
	}
	while(flag==1){
		if(k4==0){
			flag=0;
		}	
	}
}

void main(){
	unsigned char i;
	
	while(1){
		if(k1==0){
			P3=0;
			Delay(1000);
			
			checkflag();
			
			P3=0xff;
			
			checkflag();
			
			for(i=0;i<8;i++){
				P0 = table[i];
				Delay(1000);
				checkflag();
			}
			P0=0xff;
			checkflag();
			
			for(i=0;i<8;i++){
				P2 = table1[i];
				Delay(1000);
				checkflag();
			}
			P2=0xff;
			checkflag();
		}
		if(k2==0){
			for(i=0;i<8;i++){
				P2 = table[i];
				Delay(1000);
				checkflag();
			}
			P2=0xff;
			checkflag();
			for(i=0;i<8;i++){
				P0 = table1[i];
				Delay(1000);
				checkflag();
			}
			P0=0xff;
			checkflag();
			P3=0;
			Delay(1000);
			checkflag();
			P3=0xff;
			checkflag();
		}
		if(k4==0){
			P3=0;
			Delay(1000);
			
			checkflag();
			
			P3=0xff;
			
			checkflag();
			
			for(i=0;i<8;i++){
				P0 = table[i];
				Delay(1000);
				checkflag();
			}
			P0=0xff;
			checkflag();
			
			for(i=0;i<8;i++){
				P2 = table1[i];
				Delay(1000);
				checkflag();
			}
			P2=0xff;
			checkflag();
		}
	}
}

可能存在我心形灯效果图与代码放错不匹配的情况,如果你按照我的代码装载运行效果与我效果图不一样请评论告诉我!我找一下改一下,如果我后期把相应的效果视频删了,那么就emmmmm意会~意会~我觉得你很聪明肯定懂我的意思hiahia

2019-12-21 15:03:29 weixin_46063794 阅读数 46
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

51单片机怎么在定时器流水灯里加按键控制程序


怎么让key1按下去向左流水而key2按下去向右流水?


已经定义好key
↓↓↓↓↓↓↓↓↓↓↓↓↓↓

sbit key1=P3^2;
sbit key2=P3^3;


void time0init1() interrupt 1
{
static u16 i=0,n;
i++;
if(i == 5000)
{
LED=~(0x01<<n);
if(++n==8)n=0;
i=0;
}
TH0=0xfc;
TL0=0x18;
}

2019-07-25 16:01:20 qq_36931762 阅读数 339
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

51单片机心形灯——实现从左到右顺时针流水编程

其他心形灯类型编码请看我的其他博文~
心形灯效果图如果是静态效果请刷新页面哦
在这里插入图片描述
心形灯原理图
在这里插入图片描述

#include <reg51.h>
#include <intrins.h>

unsigned char code table[]={0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};
unsigned char code table1[]={0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe};

void Delay(unsigned int i){
	unsigned char j;
	for(;i>0;i--){
		for(j=110;j>0;j--);
	}
}

void main(){
	unsigned char i;
	while(1){
		//D17
		P3=0;
		Delay(1000);
		P3=0xff;
		
		for(i=0;i<8;i++){
			P0 = table[i];
			Delay(1000);
		}
		P0=0xff;
		for(i=0;i<8;i++){
			P2 = table1[i];
			Delay(1000);
		}
		P2=0xff;
	}
}

可能存在我心形灯效果图与代码放错不匹配的情况,如果你按照我的代码装载运行效果与我效果图不一样请评论告诉我!我找一下改一下,如果我后期把相应的效果视频删了,那么就emmmmm意会~意会~我觉得你很聪明肯定懂我的意思hiahia

2018-05-26 11:04:16 nanfeibuyi 阅读数 3788
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

单片机 流水灯

一、简述

    通过Proteus仿真单片机最小系统+流水灯的显示电路。用Keil编写相应执行文件。

    源码、仿真电路图打包:链接:https://pan.baidu.com/s/1ZetoHZGz-jebnAd_BQGAUg 密码:h8jc

二、效果

三、工程结构

1、Keil编程

2、仿真电路图

四、源文件

LiuShui.c文件

#include<reg51.h>

//void Delay1ms(unsigned int count) //软延时count毫秒
//{
//	unsigned int i,j;
//	for(i=0;i<count;i++)
//	for(j=0;j<120;j++);
//}

void Delay1ms(unsigned int count)//延时count*50ms
{
	unsigned int i;
	TMOD=0x01;			   //选用定时器0且工作在方式1
	TH0=0x3c;			  //设置初值0x3cb0
	TL0=0xb0;
	TR0=1;      //开启定时器
	for(i=0;i<count;i++) //循环count次,每次定时50ms,总共count*50ms
	{	
		while(TF0!=1);// 每次定时50ms (溢出时才会跳出循环)
		TH0=0x3c;	 //重置初值0x3cb0
		TL0=0xb0;
		TF0=0;		   //软置溢出位
	} 
	TR0=0;      //关闭定时器
}

void main()
{
	unsigned char LEDIndex = 0;	  //指示第几个灯
	bit LEDDirection = 1; //控制流水灯依次亮灭的方向

	while(1)			  
	{
		if(LEDDirection)			//正方向,灯由上往下亮灭
			P1 = ~(0x01<<LEDIndex);	  //P1寄存器控制P1并口	 电压为0时灯亮,先将要亮灯的某一位置1,其余置0,然后取反,就变为只有指定位为0,然后移位实现其他位置0
		else
			P1 = ~(0x80>>LEDIndex);	
		if(LEDIndex==7)
			LEDDirection = !LEDDirection;	//到了最后一盏灯,改变灯的亮灭方向
		LEDIndex = (LEDIndex+1)%8;	 //	  每次加一,%8保证 LEDIndex	取值在0~7之间
		Delay1ms(2); //延时100ms
	}
}

 

五、代码说明

 

    选用单片机的P1端口8只引脚作为输出脚,1只引脚控制1只LED灯。设置P1_0脚为低电平,使得第1只LED灯点亮,并延时一点时间,然后设置P1_0脚为高电平,熄灭第1只LED,以此同理控制其余7只引脚。比如:

11111110   P1_0脚为低电平,使得第1只LED灯点亮

11111101   P1_1脚为低电平,使得第2只LED灯点亮

11111011   P1_2脚为低电平,使得第3只LED灯点亮

11110111   P1_3脚为低电平,使得第4只LED灯点亮

11101111   P1_4脚为低电平,使得第5只LED灯点亮

11011111   P1_5脚为低电平,使得第6只LED灯点亮

10111111   P1_6脚为低电平,使得第7只LED灯点亮

01111111   P1_7脚为低电平,使得第8只LED灯点亮

P1寄存器有8位,分别控制对应的8个引脚。

正方向:从第1只LED等--》第8只LED灯

我们可设置初值为11111110,然后每左移1位,得到下一个流水灯的设置值

而这个初值可以用 00000001的取反来表示即 11111110=~(00000001)=~(0x01)

反方向:从第8只LED等--》第1只LED灯    ~(0x80)=~(10000000)=01111111

六、工程建立

1、编写执行程序

(1)新建Project  (默认操作即可)

(2)选择cpu型号

(3)设置Project  属性

(4)新建C文件,编写相应代码

(5)将C文件添加到工程

(6)编译生成hex文件

2、仿真电路

选择hex文件

元件旋转翻转:

快速添加标签(P1_0,P1_1,P1_2...),点击“LBL"标签,然后按"a"

 

=================================回复 weixin_44582500 这位兄弟=============

搜索相关元件:

51单片机上设置流水灯程序

博文 来自: qq_45400902
没有更多推荐了,返回首页