哪位大神帮我看看代码出了什么问题
2022-11-09 06:13:21 点击:
上一篇:[开关电源]直流DCDC驱动一个电机,求推荐开关管型号
想做一个按键控制四位数码管 按键按一下 数码管循环显示数字 再按一下数码管归零 哪位大神帮我看看代码出了什么问题 为什么总是没有数字循环显示?
int a=3;
int b=4;
int c=5;
int d=6;
int e=7;
int f=8;
int g=9;
int d1=13;
int d2=12;
int d3=11;
int d4=10;
//第四位数码管数字
int _4_num=0;
//第三位数码管数字
int _3_num=0;
//第二位数码管数字
int _2_num=0;
//第一位数码管数字
int _1_num=0;
//总的秒数,初始值为0
int total=0;
//判断按钮是否按下过
_Bool isButton=false;
//判断是否开始计时
_Bool isStart=false;
int k[10][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(9600);
//初始化引脚xxxx
for(int i=3;i<=10;i++){
pinMode(i,OUTPUT);
}
pinMode(d1,OUTPUT);
pinMode(d2,OUTPUT);
pinMode(d3,OUTPUT);
pinMode(d4,OUTPUT);
//初始条件下默认显示为0
disShuMaG(total);
//2号引脚设为中断事件触发引脚
//当产生高电平时触发
//按钮接5v
attachInterrupt(0, onChanged, CHANGE);
}
void loop() {
//初始条件下第一次按开始计时
//再次按下暂停
//当已经暂停,再次按下后重新开始计时
IF(isStart && isButton==false){
//进行递增显示数字
disShuMaG(total++);
}
Serial.println(total);
}
//这是显示函数,
//函数传入一个int类型的数,是要显示的数
//第二个int类型表示表示要显示的数码管
void display(int num, int index){
for(int i=0;i<8;i++){
digitalWrite(index, HIGH);
digitalWrite(3+i, k[num]);
}
digitalWrite(index, LOW);
}
//将总的函数转化为对应四个数码管上显示的数字
//函数传入一个int类型的数,是要显示的数
void disShuMaG(int total){
_1_num=total/1000; //第一个数码管要显示的数字
_2_num=total%1000/100; //第二个数码管要显示的数字
_3_num=total%100/10; //第三个数码管要显示的数字
_4_num=total%10; //第四个数码管要显示的数字
//进行数字显示
for(int i=0;i<25;i++){
// disPlay(_1_num, d1);
// delay(1000);
// disPlay(_2_num, d2);
// delay(1000);
disPlay(_3_num, d3);
delay(1000);
disPlay(_4_num, d4);
delay(1000);
}
}
//中断函数
void onChanged(){
Serial.println("onChanged");
//开始计时
if(isStart==false && isButton==false){
isStart=true;
return;
}
//暂停
if(isStart==true && isButton ==false){
isButton=true;
return;
}
//重新开始
if(isStart==true && isButton==true){
isStart=false;
isButton=false;
total=0;
return;
}
}
想做一个按键控制四位数码管 按键按一下 数码管循环显示数字 再按一下数码管归零 哪位大神帮我看看代码出了什么问题 为什么总是没有数字循环显示?
int a=3;
int b=4;
int c=5;
int d=6;
int e=7;
int f=8;
int g=9;
int d1=13;
int d2=12;
int d3=11;
int d4=10;
//第四位数码管数字
int _4_num=0;
//第三位数码管数字
int _3_num=0;
//第二位数码管数字
int _2_num=0;
//第一位数码管数字
int _1_num=0;
//总的秒数,初始值为0
int total=0;
//判断按钮是否按下过
_Bool isButton=false;
//判断是否开始计时
_Bool isStart=false;
int k[10][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(9600);
//初始化引脚xxxx
for(int i=3;i<=10;i++){
pinMode(i,OUTPUT);
}
pinMode(d1,OUTPUT);
pinMode(d2,OUTPUT);
pinMode(d3,OUTPUT);
pinMode(d4,OUTPUT);
//初始条件下默认显示为0
disShuMaG(total);
//2号引脚设为中断事件触发引脚
//当产生高电平时触发
//按钮接5v
attachInterrupt(0, onChanged, CHANGE);
}
void loop() {
//初始条件下第一次按开始计时
//再次按下暂停
//当已经暂停,再次按下后重新开始计时
IF(isStart && isButton==false){
//进行递增显示数字
disShuMaG(total++);
}
Serial.println(total);
}
//这是显示函数,
//函数传入一个int类型的数,是要显示的数
//第二个int类型表示表示要显示的数码管
void display(int num, int index){
for(int i=0;i<8;i++){
digitalWrite(index, HIGH);
digitalWrite(3+i, k[num]);
}
digitalWrite(index, LOW);
}
//将总的函数转化为对应四个数码管上显示的数字
//函数传入一个int类型的数,是要显示的数
void disShuMaG(int total){
_1_num=total/1000; //第一个数码管要显示的数字
_2_num=total%1000/100; //第二个数码管要显示的数字
_3_num=total%100/10; //第三个数码管要显示的数字
_4_num=total%10; //第四个数码管要显示的数字
//进行数字显示
for(int i=0;i<25;i++){
// disPlay(_1_num, d1);
// delay(1000);
// disPlay(_2_num, d2);
// delay(1000);
disPlay(_3_num, d3);
delay(1000);
disPlay(_4_num, d4);
delay(1000);
}
}
//中断函数
void onChanged(){
Serial.println("onChanged");
//开始计时
if(isStart==false && isButton==false){
isStart=true;
return;
}
//暂停
if(isStart==true && isButton ==false){
isButton=true;
return;
}
//重新开始
if(isStart==true && isButton==true){
isStart=false;
isButton=false;
total=0;
return;
}
}
没有人回答吗????
如果我没说错,你这个程序是复制别人的吧?
数码管的共阴共阳问题判断了吗?共阴共阳在接线上也存在些许差别
一点一点开 自己写就好了