创建一个 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)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)