(含代码)基于51最小系统的流水灯+焊接制作

 

目录

说明

一、工具介绍

二、原理图

三、成品图

四、代码分析

1.C语言实现LED灯点亮

2.实现流水效果

         3.实现各种花里胡哨的效果

总结


 

 

说明

使用51最小系统,可以实现对所定义的led灯进行控制,通过编程,进而达到所需显示效果。

一、工具介绍

焊接工具:电烙铁,焊锡丝,烙铁架,斜口钳。

其他零件:①洞洞板(9cmx15cm一张),②51最小系统(卡座一枚),③STC89C51/89C52系列芯片(一枚),④晶振(11.0592MHZ),⑤电解电容(1uf 25V,一枚),⑥复位按键,排针开关,⑦瓷片电容(30pf,两枚),⑧LED灯(十枚,可按需求增添),⑨电阻(220Ω十枚,10KΩ复位电阻一枚)。 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWFsaTIzODg=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWFsaTIzODg=,size_20,color_FFFFFF,t_70,g_se,x_16

二、原理图

复位电路:主要用于控制单片机的启动状态。在单片机系统运行过程中,受到外界干扰而出现程序出错或直接死机、停止运行的时候,通过复位操作,单片机内部的烧录代码就会重新执行。复位方式一般分为自动复位和按键复位,为了编程的简单化,采用外部按键复位的方式。

时钟电路:其实本质就是一个晶体振荡电路,提供一个方波信号让单片机进行工作,因此单片机的运行速度及处理能力都是由时钟电路决定。XTAL1为反相放大器的输入端,XTAL2为反向放大器的输出端。本次制作中外接的石英晶体振荡器具有11.0592MHZ的振荡频率。

输出电路:通过程序分别控制单片机的不同I/O孔为高电平,为LED灯提供电源。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWFsaTIzODg=,size_20,color_FFFFFF,t_70,g_se,x_16

 

三、成品图

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWFsaTIzODg=,size_20,color_FFFFFF,t_70,g_se,x_16

四、代码分析

1.C语言实现LED灯点亮

给LED灯定义管脚,通过高电平,低电平,控制LED灯的亮与灭

#include "reg52.h"

sbit LED1=P2^0;    //将P2^0定义为LED1的管脚

void main()
{
    LED1=0;    //LED1设置为低电平,此时灯被点亮
    while(1)
    {
        
    }        
}

2.实现流水效果

代码如下(示例):

#include "reg52.h"

//给十个LED灯定义管脚
sbit led0 = P0^7;
sbit led1 = P2^3;
sbit led2 = P2^0;
sbit led3 = P2^1;
sbit led4 = P2^5;
sbit led5 = P2^6;
sbit led6 = P0^6;
sbit led7 = P0^3;
sbit led8 = P0^1;
sbit led9 = P0^5;

//延迟函数
void delay(unsigned int z)
{
	unsigned int x,y;       //定义无符号的int型x,y
	for(x = z;x>0;x--)
		for(y=110;y>0;y--);
	
}

//主函数
void main()
{	
	led0 = 0;   //设置为低电平,此时灯点亮
	delay(200); //延迟200ms
	led0 = 1;   //设置为高电平,此时灯熄灭
	//实现led0~led10的闪烁
	led1 = 0;delay(200);led1 = 1;
	led2 = 0;delay(200);led2 = 1;
    led3 = 0;delay(200);led3 = 1;
	led4 = 0;delay(200);led4 = 1;
    led5 = 0;delay(200);led5 = 1;
	led6 = 0;delay(200);led6 = 1;
    led7 = 0;delay(200);led7 = 1;
	led8 = 0;delay(200);led8 = 1;
    led9 = 0;delay(200);led9 = 1;
}

 

3.实现各种花里胡哨的效果

类似原理,可实现逐个点亮→全部点亮→逐个熄灭的效果:

#include "reg52.h"

sbit led0 = P0^7;
sbit led1 = P2^3;
sbit led2 = P2^0;
sbit led3 = P2^1;
sbit led4 = P2^5;
sbit led5 = P2^6;
sbit led6 = P0^6;
sbit led7 = P0^3;
sbit led8 = P0^1;
sbit led9 = P0^5;

void delay(unsigned int z)
{
	unsigned int x,y;       
	for(x = z;x>0;x--)
		for(y=110;y>0;y--);
	
}


void main()
{	
	led0 = 0;  //亮 
	delay(200);//延迟200ms 
	led0 = 1;  //灭 
	led1 = 0;delay(200);led1 = 1;
	led2 = 0;delay(200);led2=1;led3=0;delay(200);led3=1;
	led4 = 0;delay(200);led4=1;led5=0;delay(200);led5=1;
	led6 = 0;delay(200);led6=1;led7=0;delay(200);led7=1;
	led8 = 0;delay(200);led8=1;led9=0;delay(200);led9=1;
	//全亮 
	led0 = 1;led1 = 1;led2 = 1;led3 =1;led4 = 1;led5 = 1;
	led6 = 1;led7 = 1;led8 = 1;led9 = 1;
	delay(1000); 
	//延迟熄灭 
	led0 = 0;delay(200);led1 = 0;delay(200);led2 = 0;delay(200);
	led3 =0;delay(200);led4 = 0;delay(200);led5 = 0;delay(200);
	led6 = 0;delay(200);led7 = 0;delay(200);led8 = 0;delay(200);led9 = 0;delay(200);
}

通过keil编译出可执行文件(.hex)并烧录到芯片,即可观察到预估效果。

总结

通过本次制作,加深对于C51管脚功能的理解,C语言的简单使用。

 

  • 16
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yali2388

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值