蓝桥杯单片机设计与开发② ---- 模块初始化

1.新建工程

- 这里建议直接复制第一篇文章所讲的工程模板,减少平时创建工程的时间。
在这里插入图片描述

2.各模块初始化

首先,在我们拿到题目的时候都会让我们先关闭蜂鸣器,继电器等无关外设。

我们可以看原理图,LED、数码管、以及驱动芯片2003所控制的外设均由P25、P26、P27三个I/O口连接标号为U24的74LS138控制,74LS138译码之后经过一个标号为U25的74HC02或非门控制,74HC02的输出连接四个74LS573的输入使能端。或非门的一端连接标号为J13的排针,我在这里使用的是IO模式,所以就是或非门的一端接GND,为低电平。而74LS573的输入使能端为高有效。每个外设的数据输入为P0口控制。

所以关闭外设就是打开每一个外设的片选74LS573,使其输入使能端为高电平,然后写入无效数据。

根据74HC02的真值表:
在这里插入图片描述
74HC138的真值表:
在这里插入图片描述
所以打开每个74LS573就是74HC138的相应输出端输出低电平。

再看每个外设,LED是单片机给出低电平时点亮,数码管是共阳的,所以也是给出低电平点亮。由于2003是反向输出,所以蜂鸣器和继电器是单片机给出高电平工作。
注意:置0用与&,置1用或|

3.代码

sys.h 头文件

#ifndef __SYS_H__
#define __SYS_H__


//头文件包含
#include <STC15F2K60S2.H>
#include <intrins.h>

//管脚声明

//变量类型声明
typedef unsigned int uint;
typedef unsigned int u16;
typedef unsigned char uchar;
typedef unsigned char u8;


//外部变量声明

//函数声明
void ALL_Init();
void Operate_Delay(unsigned int ms);

#endif

sys.c

#include "sys.h"

/**
*@brief     外设初始化  
*@param[in] none
*@return    none
**/
void ALL_Init()
{
	P2 = (P2&0x1f)|0xa0;	//打开Y5C
	P0 = 0x00;				//关闭蜂鸣器&继电器
	P2 = (P2&0x1f)|0xe0;	//打开Y7C
	P0 = 0xff;				//关闭数码管
	P2 = (P2&0x1f)|0x80;	//打开Y4C
	P0 = 0xff;				//关闭LED
	P2 = P2&0x1f;			//关闭所用使能
}
/**
*@brief     延时函数
*@param[in] 延时多少ms(0~65535)
*@return    none
**/
void Operate_Delay(u16 ms)
{
	u16 i;
	for(ms;ms>0;ms--)
		for(i=921;i>0;i--);
}

main.c

#include "sys.h"

void main()
{
	ALL_Init();
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值