/2023年04月25日 11:09:45
c51数组
c51子函数
数码管段码表
/静态数码管显示
#include <REGX52.H>
unsigned char NiXieTable[] ={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00}; //显示的数字分别对应的P0端口的值
void NiXie(unsigned char Location,Number)
{
switch(Location)
{
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 = NiXieTable[Number];
}
void main()
{
NiXie (2,3);
while(1)
{
}
}
/动态数码管显示
#include <REGX52.H>
unsigned char NiXieTable[] ={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00,};
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void NiXie(unsigned char Location,Number)
{
switch(Location)
{
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 = NiXieTable[Number];
Delay(1);
P0 = 0x00; //这两条指令的目的是为了消影
/*
消影
位选 段选 位选 段选 位选
数据串位的问题
*/
}
void main()
{
while(1)
{
NiXie (1,1);
// Delay(20);
NiXie (2,2);
// Delay(20);
NiXie (3,3);
}
}