九层妖塔 起于垒土
【蓝桥杯】—{模块}—{显示部分:LED&数码管&蜂鸣器&继电器}
一、开发板初始化
1、
//----------------------------------开发板初始化--------------------------//
void All_Init(void)
{
P2|=0X80;
P2&=0X9F; //开LED的573
P0=0XFF; //关LED
P2|=0XA0;
P2&=0XBF; //开蜂鸣器继电器的573
P0=0X00; //关蜂鸣器,继电器
P2|=0XC0;
P2&=0XDF; //开数码管位选573
P0=0XFF; //选中所有数码管
P2|=0XE0;
P2&=0XFF; //开数码管段选573
P0=0XFF; //关闭数码管
P2&=0X1F; //138模拟使能端
}
2、
//----------------------------------开发板初始化--------------------------//
void All_Init(void)
{
P2|=0X80;
P2&=0X9F; //开LED的573
P0=0XFF; //关LED
P2&=0X1F; //138模拟使能端
P0=0X00;
P2|=0XA0;
P2&=0XBF; //开蜂鸣器继电器的573
P0=0X00; //关蜂鸣器,继电器
P2&=0X1F; //138模拟使能端
P0=0XFF;
P2|=0XC0;
P2&=0XDF; //开数码管位选573
P0=0XFF; //选中所有数码管
P2|=0XE0;
P2&=0XFF; //开数码管段选573
P0=0XFF; //关闭数码管
P2&=0X1F; //138模拟使能端
}
二、8 个LED 指示灯
•原理图:
•IO口高低位与十六进制(二进制)数高低位的对应关系:
•程序:
P2|=0X80;
P2&=0X9F; //开LED的573
•Template:
•Template1:流水灯,左移实现
//1s流水灯——左移
#include<STC15F2K60S2.H>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar num_LED;
void Delay1000ms(); //@11.0592MHz
void All_Init(void); //开发板初始化
//-------------------------------------主程序---------------------------//
void main(void)
{
All_Init(); //开发板初始化
P2|=0X80;
P2&=0X9F; //开LED的573
while(1)
{
for(num_LED=0;num_LED<8;num_LED++)
{
P0=~(0X01<<num_LED);
Delay1000ms();
}
}
}
//---------------------------------------延时1s--------------------------//
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 43;
j = 6;
k = 203;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
//----------------------------------开发板初始化--------------------------//
void All_Init(void)
{
P2|=0X80;
P2&=0X9F; //开LED的573
P0=0XFF; //关LED
P2|=0XA0;
P2&=0XBF; //开蜂鸣器继电器的573
P0=0X00; //关蜂鸣器,继电器
P2|=0XC0;
P2&=0XDF; //开数码管位选573
P0=0XFF; //选中所有数码管
P2|=0XE0;
P2&=0XFF; //开数码管段选573
P0=0XFF; //关闭数码管
P2&=0X1F; //138模拟使能端
}