学习目标:3周了解并掌握51单片机
学习内容:静态数码管显示1314
最终实现的效果如图所示。
在开始写程序之前,先了解单个数码管是如何点亮的。数码管的引脚分布如下图所示,1234567分别对应abcdefg,你可能觉得从图上来看并不是对应的,但在内部的电路中,其实是按照顺序排列的。
—
想显示一个数字就用一个数码管,那么想显示4个数字就要用4个数码管。如何将4个数码管放在一起呢?其实很简单,只需要将各个引脚连在一个公端即可。
那么已经知道数码管是如何连接的,如何实现想要的数字呢?如下方的代码所示,采用最底层的逻辑,想要哪一段亮灭就给哪一段高低电平。在后续的学习中会有更加方便快捷的方法,只需要几行代码就能实现静态显示,动态显示,倒计时等等。但是初学者还是要明白最基础的逻辑,这样在后续的学习中才能更加得心应手。
#include <REGX52.H>
void delay(int i)
{
while(1)
{
i--;
}
}
void main()
{
while(1)
{
P1_0=0;P1_1=0;P1_2=0;P1_3=0;//关闭电源
P0_0=0;P0_1=0;P0_2=0;P0_3=0;P0_4=0;P0_5=0;P0_6=0;P0_7=0;//关闭显示
P1_0=1;P1_1=0;P1_2=0;P1_3=0;//开启P10电源
P0_0=0;P0_1=1;P0_2=1;P0_3=0;P0_4=0;P0_5=1;P0_6=1;P0_7=0;//显示4
Delay1ms();
P1_0=0;P1_1=0;P1_2=0;P1_3=0;//关闭电源
P0_0=0;P0_1=0;P0_2=0;P0_3=0;P0_4=0;P0_5=0;P0_6=0;P0_7=0;//关闭显示
P1_0=0;P1_1=1;P1_2=0;P1_3=0;//开启电源
P0_0=0;P0_1=1;P0_2=1;P0_3=0;P0_4=0;P0_5=0;P0_6=0;P0_7=0;//显示1
Delay1ms();
P1_0=0;P1_1=0;P1_2=0;P1_3=0;//关闭电源
P0_0=0;P0_1=0;P0_2=0;P0_3=0;P0_4=0;P0_5=0;P0_6=0;P0_7=0;//关闭显示
P1_0=0;P1_1=0;P1_2=1;P1_3=0;//开启电源
P0_0=1;P0_1=1;P0_2=1;P0_3=1;P0_4=0;P0_5=0;P0_6=1;P0_7=0;//显示3
Delay1ms();
P1_0=0;P1_1=0;P1_2=0;P1_3=0;//关闭电源
P0_0=0;P0_1=0;P0_2=0;P0_3=0;P0_4=0;P0_5=0;P0_6=0;P0_7=0;//关闭显示
P1_0=0;P1_1=0;P1_2=0;P1_3=1;//开启电源
P0_0=0;P0_1=1;P0_2=1;P0_3=0;P0_4=0;P0_5=0;P0_6=0;P0_7=0;//显示1
Delay1ms();
}
}