1.了解单个数码管,两种接法,第一种是共阴极,第二种是共阳极。共阴极的时候,eg想让LED7亮,底端为1——显示数据(表示阳极通),上端3或8给0——接地(表示阴极通)。
下面8位为段码。
2.查看购买的51单片机数码管工作原理图,我所购的51单片机为共阴极连接,74HC245为双向数据缓冲器,dir高电平表示输出数据到LED,dir低表示从LED读数据。
3.138原理图
C是高位,B是中间位,A是低位,所以是
C B A Y
1 1 1 Y7有效(Y7给0)
4.总结
用138调码器选择哪个灯亮,选择P2口;选择P0口输出什么数据。
5.写代码
#include <REGX52.H>
void display(unsigned char loc,num)
{
unsigned char arr[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
switch(loc)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=arr[num];
}
void main()
{
display(6,6);
while(1)
{}
}
6.stc烧录
7.实现结果