蓝桥杯3·LED模块化编程

蓝桥杯3·LED模块化编程,第1张

蓝桥杯3·LED模块化编程 LED模块化编程思路:

创建一个 LED显示子函数

创建一个关闭外设子函数

LED从下往上数;电路采用M74HC573M1R锁存器对单片机P0口的输出信号进行缓冲,并增强信号驱动能力进而驱动LED发光,其中U6的锁存输入Y4C=Y4+WR=Y4·WR,Y4是译码器输入P27~P25为100时的有效输出。

# include "bsp_init.h"  //调用初始化的头文件
# include "bsp_led.h" 
#include "delay.h"

void main()
{
    unsigned char i,j; //为循环变量做准备 
    
    Cls_Peripheral();     //关闭外设

    
    while(1)
    {
        for (i = 0; i < 9 ; i++) //控制亮度等级
         {
             for(j=0;j<50;j++) //控制当前亮度等级的循环次数
             { 
                 Led_Disp(0xFF); //全亮
                 Dlay(i+1); 
                 Led_Disp(0x00); //全灭
                 Dlay(9-i);
             }
         }
     }
 }

 

# include "bsp_led.h"      //相当于bsp_init.h的替代  

//函数名:LED显示函数
//入口参数:要显示数值的十六进制数据。从右往左,例如:OXAA:1010 1010 按照L8~L1的顺序
//返回值:无
//函数功能:按照入口参数顺序将LED点亮,1为亮,0为灭。

  //P2一共八个端子,高位在前低位在后(P27 P26……P20)“&”:与 “|”:或
  //对于LED来说只有右边是1,左边是0的情况才会亮,接通了Y4口。P27~P25清零,再定位Y4C
    
void Led_Disp(unsighed char ucLed)      //在.c中每个函数写好之后,在.h中定义
{
    
  P0=~ucLed     //    将输入数据取反,做好数据准备
  P2=P2 & 0x1F | 0x80  //选通Y4,也就是LED的锁存器,将数据全部透传过去
  P2&=0x1F //使得任何一个锁存器都不打开
}

 # include "STC15F2K60S2.H" 
//函数名:LED显示函数
//入口参数:要显示数值的十六进制数据。从右往左,例如:OXAA:1010 1010 按照L8~L1的顺序
//返回值:无
//函数功能:按照入口参数顺序将LED点亮,1为亮,0为灭。
void Led_Disp(unsighed char ucLed)      //在.c中每个函数写好之后,在.h中定义

关闭外设函数放在bsp_init.c中(bsp_init.h相当于bsp_init.c的说明书,在.c中调用.h)

#include "bsp_init.h"      //相当于bsp_init.h的替代  

//函数名:关闭外设的初始化函数
//入口参数:无
//返回值:无
//函数功能:将LED、蜂鸣器、继电器全部关闭

  //P2一共八个端子,高位在前低位在后(P27 P26……P20)“&”:与 “|”:或
  //对于LED来说只有右边是1,左边是0的情况才会亮,接通了Y4口。P27~P25清零,再定位Y4C
    
void Cls_Peripheral(void)      //在.c中每个函数写好之后,在.h中定义
{
    
  P0=0xFF      //    P0全部为1,准备将LED全部熄灭,数据准备。
  P2=P2 & 0x1F | 0x80  //选通Y4,也就是LED的锁存器,将数据全部透传过去,使LED真实关闭。
  
  P2&=0x1F //使得任何一个锁存器都不打开
    
  P0=0x00      //    P0全部为1,准备将外设全部关闭,数据准备。
  P2=P2 & 0x1F | 0xA0  //选通Y5,也就是外设的锁存器,将数据全部透传过去,使外设真实关闭。
  P2&=0x1F //使得任何一个锁存器都不打开
    

 

# include "STC15F2K60S2.H" 
//函数名:关闭外设的初始化函数
//入口参数:无
//返回值:无
//函数功能:将LED、蜂鸣器、继电器全部关闭
void Cls_Peripheral(void) 

#include "delay.h"

//函数名:延时毫秒函数
//入口参数:延时的数值,2个字节,16位,0---65535
//返回值:无
//函数功能:延时一定的毫秒数据
void Delay(unsighed int num)
{
    unsigned int  i;
    while (num-)
    for (i=0;i<628;i++)
}

//函数名:延时毫秒函数
//入口参数:延时的数值,2个字节,16位,0---65535
//返回值:无
//函数功能:延时一定的毫秒数据
void Delay(unsighed int num) 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5711015.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存