arduino实验第三代码


#include <avr/eeprom.h>
#define PinA 2 //中断0
#define led1 1
#define led2 3
#define led3 4
#define led4 5#define da 6
#define db 7
#define dc 8
#define dd 9
#define de 10
#define df 11
#define dg 12
#define dp 13long count ;unsigned long time = 0;

int data[11] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x80};// the setup routine runs once when you press reset:

void setup() {
pinMode(PinA,INPUT);// for(int i = 0; i < 4; i++)
//
attachInterrupt(0, runCount, FALLING); //设置触发,中断号0,即数字2口
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
for(int i=6; i < 14; i++){
pinMode(i, OUTPUT);
}
ledTest();
}
void runCount() //触发函数
{
if ((millis() - time) > 150) //防抖动处理
{
count ++;
//for(int i = 0; i < 4; i++) {
// dpointer++;
// }
}
time = millis();
}

//led test 初始测试

void ledTest(){
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);

for(int i=0; i < 11; i++){
ledOut(led1, i );
delay(200);
}
selecLed(led1);
ledOut(led1, 0 );
}
//select LED 选择对应的数码位
void selecLed(int led){
for(int i=1; i < 5; i++){
int t = i>1?i+1:1;
if( t == led){
digitalWrite(t, LOW);
}else {
digitalWrite(t, HIGH);
}}}

//led out 单个显示
void ledOut(int ledSelect, int td){
digitalWrite(ledSelect, LOW);
int set = 0x01;
for(int i=6; i<14; i++){
int dis =data[td] & set;
digitalWrite(i, dis);
set = set<<1;
}}

//led display
void ledDisplay(unsigned long d){
int d1 = d%10;
int d2 = (d/10)%10;
int d3= (d/100)%10;
int d4= d/1000;
if(d<10){
selecLed(led1);
ledOut(led1, d1);
}else if(d >=10 && d < 100){
selecLed(led1);
ledOut(led1, d1);
delay(10);
selecLed(led2);
ledOut(led2, d2);
delay(10);
}else if(d >=100 && d < 1000){
selecLed(led1);
ledOut(led1, d1);
delay(7);
selecLed(led2);
ledOut(led2, d2);
delay(8);
selecLed(led3);
ledOut(led3, d3);
delay(9);
}else if(d >=1000 && d < 10000){
selecLed(led1);
ledOut(led1, d1);
delay(5);
selecLed(led2);
ledOut(led2, d2);
delay(6);
selecLed(led3);
ledOut(led3, d3);
delay(7);
selecLed(led4);
ledOut(led4, d4);
delay(8);
}
}// the loop routine runs over and over again forever:

void loop() {
ledDisplay(count); //显示值
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值