51微控制器的初瞭解(11)
靜態數碼管顯示數字
1、數字編碼(段碼)的獲取
要顯示的數字 數碼管的LED 段碼二進位制 十六進位制
0 abcdef 11000000 0xc0
1 bc 11111001 0xf9
2 abedg 10100100 0xa4
3 abcdgh 10110000 0xb0
4 bcfg 10011001 0x99
5 acdfg 10010010 0x92
6 acdefg 10000010 0x82
7 abc 11111000 0xf8
8 abcdefg 10000000 0x80
9 abcdfg 10010000 0x90
A abcefg 10001000 0x88
b cdefg 10000011 0x83
C adef 11000110 0xc6
d bcdeg 10100001 0xa1
E adefg 10000110 0x86
F aefg 10001110 0x8c
結論:(1)、不同數碼管數字編碼表完全可能不同
(2)、同一個數碼管接線方式不同編碼表可能完全不同
(3)、硬體確定後可通過除錯的方法來實驗確定編碼表
2、讓數碼管依次顯示0到f
#include <reg51.h>
void delay(void)
{
unsigned char i,j,k;
for(i=0;i<100;i++)
for(j=0;j<100;j++)
for(k=0;k<20;k++);
}
void main(void)
{
unsigned char va1[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8c};
unsigned char i=0;
while(1)
{
for(i=0;i<16;i++)
{
P0=va1[i];
delay();
}
}
}