蓝桥杯51单片机练习(国信长天比赛用)
文章目录
- 代码实现
- 头文件
- 固定模板
- 延时函数
- HC138译码器和或非门
- 流水灯
- 闪烁次数(假设闪烁5次)
- 从左向右依次亮
- 从左向右依次灭
- 总代码
代码实现
头文件
#include <REGX52.H>
固定模板
void main()
{
while(1)
{
}
}
延时函数
void Delay(unsigned char t)
{
while(t–);
while(t–);
}
HC138译码器和或非门
sbit HC138_A=P2^5;
sbit HC138_B=P2^6;
sbit HC138_C=P2^7;
//在编程中,sbit 是 Special Bit 的缩写,主要用于嵌入式系统编程,尤其是在使用 8051 单片机时。它用于定义和访问单片机中的单个位,通常用于控制寄存器或 I/O 端口的特定位。访问寄存器的特定位:8051 单片机的寄存器通常以 8 位形式存在,sbit 允许直接操作其中的某一位。控制 IO 端口:通过 sbit 可以方便地控制 IO 端口的某一位,实现输入输出操作。
流水灯
void LED()
{
unsigned char i;
sbit HC138_A=0;
sbit HC138_B=0;
sbit HC138_C=1;
P0=0x00;
Delay();
Delay();
P0=0xff;
Delay();
Delay();
}
闪烁次数(假设闪烁5次)
for(i=0;i<5;i++)
{
P0=0x00;
Delay();
Delay();
P0=0xff;
Delay();
Delay();
}
从左向右依次亮
for(i=1;i<=8;i++)
{
P0=0x00<<i; //右移
Delay();
Delay();;
}
从左向右依次灭
for(i=1;i<=8;i++)
{
P0=~(0x00<<); 取反
Delay();
Delay();;
}
总代码
#include <REGX52.H>
sbit HC138_A=P2^5;
sbit HC138_B=P2^6;
sbit HC138_C=P2^7;
void Delay(unsigned int t) //延时函数
{
while(t–);
while(t–);
}
void LED() //跑流水灯
{
unsigned char i;
HC138_C=1;
HC138_B=0;
HC138_A=0;
for( i=0;i<4;i++) //亮灭循环
{
P0=0x00;
Delay(60000);
Delay(60000);
P0=0xff;
Delay(60000);
Delay(60000);
}
for(i=1;i<=8;i++) //依次亮
{
P0=0xff<<i;
Delay(60000);
Delay(60000);
}
for(i=1;i<=8;i++) //依次灭
{
P0=~(0xff<<i);
Delay(60000);
Delay(60000);
}
}
void main()
{
while(1)
{
LED();
}
}