1.静态数码管显示
数组+函数
#include<regx52.h>
void Delay(unsigned int xms);//带参延时函数ms
/*静态数码管
P0:表示数码管的abcdefg dp
P2.234表示位选 P2=1110 0011是第0号数码管
*/
unsigned char NixieTable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0-9
/* 函数功能:指定数码管位置显示指定数字
参数:Location 第几个数码管
参数:Number 显示数字
Ex:Nixie(2,9)在第二个数码管显示数字9 */
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()
{
while(1)
{
Nixie(2,9);
Delay(5);
Nixie(1,9);
Delay(5);
}
}
void Delay(unsigned int xms)//带参延时函数ms
{
unsigned char i, j;
while(xms--){
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
2.动态数码管显示
#include<regx52.h>
void Delay(unsigned int xms);//带参延时函数ms
void Nixie(unsigned char Location,Number);
/*动态数码管
P0:表示数码管的abcdefg dp
P2.234表示位选 P2=1110 0011是第0号数码管
*/
unsigned char NixieTable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0-9
void main()
{
while(1)
{
Nixie(1,1);
Nixie(2,2);
Nixie(3,3);
Nixie(4,4);
Nixie(5,5);
Nixie(6,6);
Nixie(7,7);
Nixie(8,8);
}
}
void Delay(unsigned int xms)//带参延时函数ms
{
unsigned char i, j;
while(xms--){
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
/* 函数功能:指定数码管位置显示指定数字
参数:Location 第几个数码管
参数:Number 显示数字
Ex:Nixie(2,9)在第二个数码管显示数字9 */
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;
}
3.模块化编程