蓝桥杯单片机初始化函数(原理、代码详解)

初始化函数的作用

        前面的很多章我们都有使用到初始化代码,在这里我们对初始化来进行一个详细的解释,首先我们要知道为什么要初始化。初始化顾名思义就是开始就要使用的代码,那是因为我们使用的单片机内部电路所决定的。如果没有写这初始化代码,打开单片机会发现继电器和蜂鸣器一直开启。为了避免这种情况所以我们要使用初始化代码。初始化程序是为了更好的控制模块的工作

        在学习LED灯、数码管、蜂鸣器、继电器的时候,不知道大家有没有发现,控制这些外设的都是P0口,为什么这些IO口不会冲突呢?例如:我们在控制第四个LED灯的亮灭时是P04不断的赋0和1,为什么继电器没有开关呢?那是因为有锁存器。当我们要使用那个模块时,就打开控制这个模块的锁存器,这样单片机的IO口就不会冲突了。

        大家会不会很疑惑为什么要这样设计,是不是很麻烦,每次使用的时候还要打开控制的锁存器。其实这样设计是有很大好处的,因为单片机的IO口资源非常的有限,这样做大大节省了IO的资源。

原理图

下面我们还看原理图,P0口是如何同时控制那么多模块的。这样设计我们只用了3个138译码器IO和8个P0端口,就实现了控制LED灯、数码管、蜂鸣器、继电器。

控制流程

 

1、通过P2口的P25、P26、P27来控制Y4、Y5、Y6、Y7

 

2、再通过或非门打开连接外设的573锁存器

 3、Y4打开LED 

4、Y5打开继电器、蜂鸣器

5、Y6打开数码管位选

6、 Y7打开数码管段选

代码详解

初始化函数的使用

//初始化函数的使用

#include <STC15F2K60S2.H>

void Allinit(void);
void Delayms(unsigned int ms);

void main(void)    
{
    Allinit();          //初始化函数
    while(1)
    {
        P2=0XA0;        
        P06=1;          //打开蜂鸣器
        Delayms(500);   //延时500ms
        P06=0;          //关闭蜂鸣器
        Delayms(500);   //延时500ms        
    }
}

void Allinit(void)  //初始化函数    
{
    P2=0X80;        //打开LED灯573锁存器
    P0=0XFF;        //关闭使用LED灯
    
    P2=0XA0;        //打开蜂鸣器、继电器573锁存器
    P0=0X00;        //关闭使用蜂鸣器、继电器   ULN2003芯片是反向放大电流的,所以置零是关闭状态
    
    P2=0XC0;        //打开数码管位选573锁存器
    P0=0XFF;        //关闭数码管位选
    P2=0XE0;        //打开数码管段选573锁存器
    P0=0XFF;        //关闭数码管段选
}

void Delayms(unsigned int ms)
{
    unsigned int i,j;
    for(i=0;i<ms;i++)
        for(j=845;j>0;j--);
}

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值