设为首页收藏本站QQ总群:42267254电源批发控制卡批发

南昌led显示屏|南昌led显示屏维修|南昌led显示屏论坛|南昌最权威的led显示屏论坛|南昌led显示屏生产厂家|南昌led显示屏批发|南昌led显示屏安装|南昌led显示屏旧屏改造|南昌led显示屏报价格|南昌led全彩显示屏|南昌全彩led显示屏|江西led全彩显示屏|江西全彩led显示屏|南昌led显示屏供应商|南昌led显示屏政府指定采购网|南昌最火的led显示屏网站|江西led显示屏|江西led显示屏维修|江西led显示屏生产厂家|江西led显示屏批发|江西led显示屏安装|江西led显示屏旧屏改造|江西led显示屏报价格|江西led全彩显示屏|江西led显示屏供应商|江西led显示屏政府指定采购网|江西最火的led显示屏网站

 找回密码
 立即注册
查看: 28|回复: 1

Arduino编程八段数码管实现随机数字显示

[复制链接]

214

主题

229

帖子

1099

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1099

最佳新人活跃会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2018-11-4 18:54:32 | 显示全部楼层 |阅读模式 |          |
生活圈制作


/*程序代码如下
*****************************************************
以下程序是实现八段数码管随机数字的出现!
*****************************************************
*/
void setup() {            //程序执行一次请放此代码段中
Serial.begin(9600);      //串口通讯打开,以便监测数据!
for (int i=3;i<=9;i++) //通过for循环给让pinMode把引脚定义为输出以便在程序中给引脚定义为高电平
      {
       pinMode(i,OUTPUT);   
      }
randomSeed(analogRead(A0));
//真正产生一个随机函数,每次产生的随机数都不一样。而不像random一样会重复产生

}

void loop() {
int  myNumber=getRandomNumber(0,10); //定义一个整形数值myNumber 并通过getRandomNumber去调用这个函数并
                                     //返回该函数的值给整形变量myNumber.且该函数带返回值.
displayRandomNumber(myNumber); //定义一个显示随机数的函数!将myNumber取得的数值通过函数                                                              //displayRandomNumber获取随机数
delay(200);                //设置延时0.2秒
void clearDisplay();    //定义一个清除显示的空函数,此函数用于清除前一次显示后的数字,                                                     //否则第一次出来的数字和第二次出现的数字都会被显示
delay(200);
}
int getRandomNumber(int minNumber,int maxNumber)  //定义一个有返回值的函数
{
int myRandomNumber;
myRandomNumber=random(minNumber,maxNumber);
Serial.println(myRandomNumber);                                             //通过串口监视器显示随机数
return myRandomNumber;
}
void clearDisplay()             //定义一个空的函数,用于清除上次显示的数字
{
for (int j=3;j<=9;j++)    //定义一个For循环,给所有的引脚一个低电平,也就是不供电使数码管全熄!
       {
       digitalWrite(j,LOW);
       }
}
void displayRandomNumber(int displayNumber)    //定义一个显示数字的函数
   {
    switch ( displayNumber)
            {
            case 1:
             digitalWrite(4,HIGH);
             digitalWrite(7,HIGH);
            break;
            case 2:
            digitalWrite(4,HIGH);
            digitalWrite(3,HIGH);
            digitalWrite(5,HIGH);
            digitalWrite(8,HIGH);
            digitalWrite(9,HIGH);
            break;
           case 3:
            digitalWrite(4,HIGH);
            digitalWrite(3,HIGH);
            digitalWrite(5,HIGH);
            digitalWrite(8,HIGH);
            digitalWrite(7,HIGH);
            break;
            case 4:
            digitalWrite(4,HIGH);
            digitalWrite(5,HIGH);
            digitalWrite(6,HIGH);
            digitalWrite(7,HIGH);
            break;
           case 5:
            digitalWrite(6,HIGH);
            digitalWrite(3,HIGH);
            digitalWrite(5,HIGH);
            digitalWrite(8,HIGH);
            digitalWrite(7,HIGH);
            break;
            case 6:
            digitalWrite(6,HIGH);
            digitalWrite(3,HIGH);
            digitalWrite(5,HIGH);
            digitalWrite(8,HIGH);
            digitalWrite(7,HIGH);
            digitalWrite(9,HIGH);
            break;
            case 7:
            digitalWrite(4,HIGH);
            digitalWrite(3,HIGH);
            digitalWrite(7,HIGH);
             break;
             case 8:
            digitalWrite(4,HIGH);
            digitalWrite(3,HIGH);
            digitalWrite(5,HIGH);
            digitalWrite(6,HIGH);
            digitalWrite(7,HIGH);
            digitalWrite(8,HIGH);
            digitalWrite(9,HIGH);
            break;
           case 9:
            digitalWrite(4,HIGH);
            digitalWrite(3,HIGH);
            digitalWrite(5,HIGH);
            digitalWrite(6,HIGH);
            digitalWrite(7,HIGH);
            digitalWrite(8,HIGH);
            break;
            case  0:
            digitalWrite(4,HIGH);
            digitalWrite(3,HIGH);
            digitalWrite(9,HIGH);
            digitalWrite(6,HIGH);
            digitalWrite(7,HIGH);
            digitalWrite(8,HIGH);
            break;
            default :
            digitalWrite(4,HIGH);
            digitalWrite(9,HIGH);
            digitalWrite(5,HIGH);
            digitalWrite(6,HIGH);
            digitalWrite(7,HIGH);
      
           }
   }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

回复

使用道具 举报

214

主题

229

帖子

1099

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1099

最佳新人活跃会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

 楼主| 发表于 前天 22:48 | 显示全部楼层
//方法2
//通过数组数据来显示0-9
#include <Arduino.h>
#define cddiy_a 2
#define cddiy_b 3
#define cddiy_c 4
#define cddiy_d 5
#define cddiy_e 6
#define cddiy_f 7
#define cddiy_g 8
#define cddiy_h 9     //io命名

//数码管0-9数字对应码值
int cddiy[10][8]=
  {
  {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
};



void setup() {
  Serial.begin(9600);
pinMode(cddiy_a,OUTPUT);  //设置引脚为输出
  pinMode(cddiy_b,OUTPUT);
  pinMode(cddiy_c,OUTPUT);
  pinMode(cddiy_d,OUTPUT);
  pinMode(cddiy_e,OUTPUT);
  pinMode(cddiy_f,OUTPUT);
  pinMode(cddiy_g,OUTPUT);
  pinMode(cddiy_h,OUTPUT);
  randomSeed(analogRead(A0));  //产生随机数种子

}

void loop() {
         for (int k=1;k<=5;k++) //这个for循环也只是测试一下j的值,一次显示五个随机数字
         {
          int j=getRandomNumber(0,10);
         
         digitalWrite(cddiy_a,cddiy[j][7]); //设置引脚的电平高或低
         digitalWrite(cddiy_b,cddiy[j][6]);
         digitalWrite(cddiy_c,cddiy[j][5]);
         digitalWrite(cddiy_d,cddiy[j][4]);
         digitalWrite(cddiy_e,cddiy[j][3]);
         digitalWrite(cddiy_f,cddiy[j][2]);
         digitalWrite(cddiy_g,cddiy[j][1]);
         digitalWrite(cddiy_h,cddiy[j][0]);
         Serial.print("随机数是:    ");
         Serial.println(j);         delay(200);
         }
         delay(1000);
         clearDisplay() ; //清除前一次显示
         delay(1000);
         }
int getRandomNumber(int minNumber,int maxNumber) //定义一个随机函数让loop中的j产生随机数
{
int myrandomNumber=random(minNumber,maxNumber);
return myrandomNumber;
}
void clearDisplay()
{
  
  for(int w=2;w<=9;w++)
  {    digitalWrite(w,LOW); //2-9脚变低电平 也即清除显示
    }
  
   }


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于我们|申请友链|Archiver|手机版|小黑屋|南昌led显示屏|南昌led显示屏维修|南昌led显示屏论坛|南昌led显示屏生产厂家|南昌led显示屏批发|南昌led显示屏安装|南昌led显示屏旧屏改造|南昌led显示屏报价格|南昌led全彩显示屏|南昌全彩led显示屏|江西led全彩显示屏|江西全彩led显示屏|南昌led显示屏供应商|南昌led显示屏政府指定采购网|南昌最火的led显示屏网站|江西led显示屏|江西led显示屏维修|江西led显示屏生产厂家|江西led显示屏批发|江西led显示屏安装|江西led显示屏旧屏改造|江西led显示屏报价格|江西led全彩显示屏|江西led显示屏供应商|江西led显示屏政府指定采购网|江西最火的led显示屏网站  |网站地图 |人工智能  

GMT+8, 2018-11-14 23:39 , Processed in 0.438822 second(s), 34 queries .


 

快速回复 返回顶部 返回列表