单片机编辑库一之延时与led灯

初衷简介

鉴于目前网上各种单片机资料横飞,能够下载到的资料也错中复杂,由此,我为自己创建了一个属于自己的单片机资料库,未来我将陆续上传一些自己编写好的单片机程序以及传感器资料到这里,与有需要的小伙伴一起分享,同时也可以将自己的代码存于云间,方便自己查看。
我将从最基础51单片机开始做起,能做仿真的我也将会尽量上传仿真文件。目前我会的单片机系统有stc89C51,STM32,ESP8266的相关系列,关于这些有不懂的问题伙伴们可以在评论区发表,我们一起进行探讨与进步。

51起步,思路简介

我将从51单片机开始进行程序上传,我会将每一个所用到的模块或传感器的程序打包到一个文件夹内,方便大家使用与下载,我例程中的方式有点类似于stm32程序的编写,需要导入文件夹,如果你们习惯使用全部文件在一个文件夹的方式,请大家自行拖拽文件内的头文件。
我采用的程序管理方式
我是用到的编程软件为keil5,同时后面我将使用proteus对能够进行仿真的程序进行仿真,有需要的可以点击链接进行下载
keil5软件下载链接,提取码 4h3r
keil5注册机,可到2032年,提取码 fz3j
proteus下载链接,提取码 5zj6

51必备基础程序库之延时程序

这里我先上传一个51单片机中经常需要用到的延时程序,建议大家每次进行51程序编写的时候都先加入这个库。

延时程序代码如下:

头文件 delay.h

#ifndef _DELAY_H
#define _DELAY_H

#include "reg52.h"


void delay_100us(unsigned int x);   //延时x*100us
void delay_ms(unsigned int x);   //延时 x ms

#endif


主程序 delay.c

#include "delay.h"


void delay_100us(unsigned int x)   //延时x*100us
{
    
    
    unsigned char a,b;
	for(x;x>0;x--)
    for(b=1;b>0;b--)
        for(a=43;a>0;a--);
}


void delay_ms(unsigned int x)   //延时 x ms
{
    
    
	for(x;x>0;x--)
    delay_100us(10);
}


下面开始我们的主题内容

例程一:点亮led

led程序

关于led所需要的驱动程序如下,需要的可自行复制
led.h

#ifndef _LED_H
#define _LED_H

#include "reg52.h"

sbit led1=P0^0;

void led_on();//点亮led灯
void led_off();//熄灭led灯

void led_init();//初始化LED系统

#endif


led.c

#include "led.h"

/*
	led的点亮和熄灭需要根据具体的电路决定,如果led的正极接的
单片机的引脚,那么就是“1”点亮,“0”熄灭;在本系统中,led的
负极接的单片机的引脚,所以是“0”点亮,“1”熄灭。
*/
void led_on()//点亮led灯
{
    
    
	led1=0;
}

void led_off()//熄灭led灯
{
    
    
	led1=1;
}

void led_init()//初始化LED系统
{
    
    
	led_off();//先将led灯关闭
}

主程序:main.c

程序实现的功能为使接在P0.0引脚上的led灯每0.5秒进行一次翻转

#include "reg52.h"
#include "led.h"
#include "delay.h"

void turn_back()//使led灯的状态翻转
{
    
    
	led_on();//点亮led灯
	delay_ms(500);//延时500ms=0.5s
	led_off();//熄灭led灯
	delay_ms(500);
}

void main()
{
    
    
	led_init();//初始化LED系统
	
	while(1)
	{
    
    
		turn_back();
	}
}


程序框架选择

在这里插入图片描述
在这里插入图片描述

proteus仿真演示

在这里插入图片描述
在这里插入图片描述

程序下载:

程序传送门

猜你喜欢

转载自blog.csdn.net/chaoshen1234/article/details/114329439