#include
#define LED1 9
#define LED2 10
#define LED3 11
#define LED4 12
#define SEG_a 2 //IO命名
#define SEG_b 3
#define SEG_c 4
#define SEG_d 5
#define SEG_e 6
#define SEG_f 7
#define SEG_g 8
#define Pot A0
byte i;
byte a;
byte b;
int PotBuffer = 0;
//数码管0-9数字码值
unsigned char table1[16][8] = //表格1,16行8列
{
// h g f e d c b a
{ 0, 0, 1, 1, 1, 1, 1, 1 } , //0
{ 0, 0, 0, 0, 0, 1, 1, 0 } , //1
{ 0, 1, 0, 1, 1, 0, 1, 1 } , //2
{ 0, 1, 0, 0, 1, 1, 1, 1 } , //3
{ 0, 1, 1, 0, 0, 1, 1, 0 } , //4
{ 0, 1, 1, 0, 1, 1, 0, 1 } , //5
{ 0, 1, 1, 1, 1, 1, 0, 1 } , //6
{ 0, 0, 0, 0, 0, 1, 1, 1 } , //7
{ 0, 1, 1, 1, 1, 1, 1, 1 } , //8
{ 0, 1, 1, 0, 1, 1, 1, 1 } , //9
{ 0, 1, 1, 1, 0, 1, 1, 1 } , //A
{ 0, 1, 1, 1, 1, 1, 0, 0 } ,
{ 0, 0, 1, 1, 1, 0, 0, 1 } ,
{ 0, 1, 0, 1, 1, 1, 1, 0 } ,
{ 0, 1, 1, 1, 1, 0, 0, 1 } ,
{ 0, 1, 1, 1, 0, 0, 0, 1 } //F
};
unsigned char table2[16][4] = //表格2,16行4列
{
// 8 4 2 1
{ 0, 0, 0, 0} , //0
{ 0, 0, 0, 1} , //1
{ 0, 0, 1, 0} , //2
{ 0, 0, 1, 1} , //3
{ 0, 1, 0, 0} , //4
{ 0, 1, 0, 1} , //5
{ 0, 1, 1, 0} , //6
{ 0, 1, 1, 1} , //7
{ 1, 0, 0, 0} , //8
{ 1, 0, 0, 1} , //9
{ 1, 0, 1, 0} , //A
{ 1, 0, 1, 1} , //B
{ 1, 1, 0, 0} , //C
{ 1, 1, 0, 1} , //D
{ 1, 1, 1, 0} , //E
{ 1, 1, 1, 1} //F
} ;
void setup()
{
pinMode(SEG_a,OUTPUT); //设置引脚为输出
pinMode(SEG_b,OUTPUT);
pinMode(SEG_c,OUTPUT);
pinMode(SEG_d,OUTPUT);
pinMode(SEG_e,OUTPUT);
pinMode(SEG_f,OUTPUT);
pinMode(SEG_g,OUTPUT);
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
pinMode(LED4,OUTPUT);
}
void loop()
{
PotBuffer = analogRead(Pot); //读取AD值
i = map(PotBuffer, 0, 1023, 0, 255);
a = i >> 4; //a=v右移4位(8位二进制数右移4位,左边填0,即取高4位的值)
b = i & 0b1111; //v和二进制数“00001111”进行“与”运算,即取低4位的值)
digitalWrite(SEG_a,table1[a][7]); //数码管段a的输出
digitalWrite(SEG_b,table1[a][6]);
digitalWrite(SEG_c,table1[a][5]);
digitalWrite(SEG_d,table1[a][4]);
digitalWrite(SEG_e,table1[a][3]);
digitalWrite(SEG_f,table1[a][2]);
digitalWrite(SEG_g,table1[a][1]); //数码管段g的输出
digitalWrite(LED4,table2[b][3]); // LED4(bit0)的输出
digitalWrite(LED3,table2[b][2]);
digitalWrite(LED2,table2[b][1]);
digitalWrite(LED1,table2[b][0]); // LED1(bit3)的输出
delay(50);
}