/*
//设置段选线针脚
int ssd[]={33,25,17,26,27,16,4,0};
//设置位选线针脚
int dig[]={32,18,5,19};
//共阴数码管数组二维数组
int lz[][8]={
{0,0,0,0,0,0,1,1},//0
{1,0,0,1,1,1,1,1},//1
{0,0,1,0,0,1,0,1},//2
{0,0,0,0,1,1,0,1},//3
{1,0,0,1,1,0,0,1},//4
{0,1,0,0,1,0,0,1},//5
{0,1,0,0,0,0,0,1},//6
{0,0,0,1,1,1,1,1},//7
{0,0,0,0,0,0,0,1},//8
{0,0,0,0,1,0,0,1}//9
};
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
//初始化
clear();
}
void loop() {
// put your main code here, to run repeatedly:
// delay(10); // this speeds up the simulation
/*display(2,4);
display(1,8);
//按顺序在对应位置显示0-9
for(int i=0;i<4;i++){
for(int j=0;j<10;j++){
display(i,j);
delay(250);
}//
dis(9876);
}
//四位数码管显示函数
void dis(int number){
//把输入的数字转化为4位数组
if(number<10000){
//获取每一位对应数组
//定义格式化数组
int arra[4];
//使用数组循环获取数组元素
for (int i=0;i<4;i++){
arra[i]=number%10;
number/=10;
}
for(int i=0;i<4;i++){
display(i,arra[i]);
delay(5);
}
}
}
//设置初始化位置与变量函数
void display(int ws,int sz){
clear();
digitalWrite(dig[ws], HIGH);
for(int i=0;i<8;i++)
{
digitalWrite(ssd[i],lz[sz][i]);
}
}
//设置清屏函数
void clear(){
for(int i=0;i<8;i++)
{
pinMode(ssd[i], OUTPUT);
digitalWrite(ssd[i],HIGH);
}
for(int i=0;i<4;i++){
pinMode(dig[i], OUTPUT);
digitalWrite(dig[i], LOW);
}
}
*/
//数码管计数器
int ssd[]={33,25,17,26,27,16,4,0};
// a b c d e f g h
uint8_t ssd_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
// 0 1 2 3 4 5 6 7 8 9
int d[]={32,18,5,19};
int count=0;
//上电初始化
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
for(int i=0;i<8;i++)
{
pinMode(ssd[i], OUTPUT);
digitalWrite(ssd[i], HIGH);
}
for(int i=0;i<4;i++){
pinMode(d[i], OUTPUT);
}
}
void loop() {
// put your main code here, to run repeatedly:
display(0,count/1%10);
display(1,count/10%10);
display(2,count/100%10);
display(3,count/1000%10);
delay(100);
count++;
}
void display(int ws,int sz){
for(int i=0;i<8;i++)
{
digitalWrite(ssd[i], HIGH);
}
/*for(int i=0;i<4;i++)
{
digitalWrite(d[i], HIGH);
delay(500);
}
for(int i=1;i<4;i++)
{
digitalWrite(d[i], HIGH);
delay(500);
}*/
switch(ws){
case 3:
digitalWrite(d[0], HIGH);
digitalWrite(d[1], LOW);
digitalWrite(d[2], LOW);
digitalWrite(d[3], LOW);
break;
case 2:
digitalWrite(d[0], LOW);
digitalWrite(d[1], HIGH);
digitalWrite(d[2], LOW);
digitalWrite(d[3], LOW);
break;
case 1:
digitalWrite(d[0], LOW);
digitalWrite(d[1], LOW);
digitalWrite(d[2], HIGH);
digitalWrite(d[3], LOW);
break;
case 0:
digitalWrite(d[0], LOW);
digitalWrite(d[1], LOW);
digitalWrite(d[2], LOW);
digitalWrite(d[3], HIGH);
break;
}
for(int i=0;i<8;i++)
{
if(((ssd_code[sz]>>i)&0x01)==0)
{
digitalWrite(ssd[i], LOW);
}
else
{
digitalWrite(ssd[i], HIGH);
}
}
// delay(1000); // this speeds up the simulation
}