4-江科大-数码管

目录

正文

image-20240417231234367

四位一体数码管

image-20240418215149316

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
静态数码管显示
*/
void main(){


P2_4 = 1;
P2_3 = 0;
P2_2 = 1;
P0 = 0x7d;

while(1){


}
}

封装:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*
@authro leoeric
@param location
@param number
@return null
@description
*/
unsigned char NixieTable[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void showNixieTube(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(){
showNixieTube(7,2);
while(1){

}
}

动态显示多位数码管

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
unsigned char NixieTable[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void showNixieTube(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){
showNixieTube(3,5);
showNixieTube(2,3);
showNixieTube(1,6);
showNixieTube(4,7);
}
}

问题

数码管消影问题:在快速切换时,数码管上一位数据会串到下一位数据

把段选清零

delay 1 毫秒,然后清零

1
2
DelayMs(1);
P0 = 0x00;

image-20240418223449543

TODO

多位显示数码管原理