概要
数码管的使用
技术解释
涉及到原理图部分
dp,g,f,e,d,c,b,a
三八译码器是利用三个管脚控制八个管脚以便于选择位选
技术细节
第一种:
#include <REGX52.H>
void Nixie(unsigned char location,Number);
//这是一个数字数组
unsigned char NixieTable[] = {0X3F,0X06,0X5B,0X4F,0X66,0X6D,
0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71,0X00};
void main(){
while(1)
{
Nixie(1,1);
}
}
//这是一个位选函数
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;
default:
break;
}
P0=NixieTable[Number];
}
第二种效果```
![在这里插入图片描述](https://img-blog.csdnimg.cn/1e4a2ed0fcdc403a8cb99e46a0987ced.jpeg)
```c
#include <REGX52.H>
#include "DelayXms.H"
void Nixie(unsigned char location,Number);
//ÕâÊÇÒ»¸öÊý×ÖÊý×Ö
unsigned char NixieTable[] = {0X3F,0X06,0X5B,0X4F,0X66,0X6D,
0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71,0X00};
void main(){
421
while(1)
{
Nixie(1,1);
Nixie(2,3);
Nixie(3,5);
Nixie(4,7);
Nixie(8,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;
default:
break;
}
P0=NixieTable[Number];
//ÒÔÏÂÁ½¾äÊÇÏûÓ°
DelayXms(1);
P0=0X00;
}
第二类方法
#include <REGX52.H>
#include "DelayXms.H"
void Nixie(unsigned char location,Number);
unsigned char code NixieTable[] = {
0X3F, //0
0X06, //1
0X5B, //2
0X4F, //3
0X66, //4
0X6D, //5
0X7D, //6
0X07, //7
0X7F, //8
0X6F, //9
0X77, //A
0X7C, //B
0X39, //C
0X5E, //D
0X79, //E
0X71, //F
0X00};//¿Õ
void main(){
unsigned char i;
while(1)
{
for(i=0;i<16;i++)
{
Nixie(1,i);
DelayXms(500);
}
}
}
//位选函数
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;
default:
break;
}
P0=NixieTable[Number];
//消影
DelayXms(1);
//这一句要注释掉 P0=0X00;
}