蓝桥杯(1)——LED

版权声明:让结局不留遗憾,让过程更加完美。 https://blog.csdn.net/Xiaomo_haa/article/details/86495641

目录

1、新建工程

2、关闭蜂鸣器继电器等

3、点亮LED


1、新建工程

与51单片机开发时一样,建立一个工程文件。

这里建议可以吸取学习stm32时,原子哥的方式新建工程。

如上图所示,将工程文件和main.c放在USER文件夹中,然后编译所产生的文件均在OBJ文件夹中,其余外设单独创建C文件,并且在HARDWARE中新建文件夹单独存放,SYSTEM中存放sys.c,用于定义引脚以及一些系统程序。

这样一来,一切变得尽然有序。

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用或|

如下列代码所示:

void All_Init(void)
{
	P2 = (P2 & 0x1f) | 0x80;	//打开Y4C(LED)
	P0 = 0xff;			//关闭LED
	P2 = (P2 & 0x1f) | 0xe0;	//打开Y7C(数码管)
	P0 = 0xff;			//关闭数码管
	P2 = (P2 & 0x1f) | 0xa0;	//打开Y5C
	P0 = 0x00;			//关闭蜂鸣器、继电器
}

以上就是上电外设初始化的全部内容。

3、点亮LED

根据上述内容分析

点亮LED仅需再次打开Y4C,然后P0输入信号,使得LED点亮。

点亮L1

//点亮LED
void Led_illume(uchar dat)
{
	P2 = (P2 & 0x1f) | 0x80;	//打开Y4C(LED)
	P0 = dat;					//关闭LED
}

4、下载程序

下载程序时,需要勾选STC-ISP上几个选项

设置内部R/C震荡时钟

取消复位脚作为I/O口

猜你喜欢

转载自blog.csdn.net/Xiaomo_haa/article/details/86495641
今日推荐