找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1238|回复: 0
打印 上一主题 下一主题
收起左侧

Arduino数码管显示程序 从-9到-1到-0.9到-0.1到0到20,其中遇到质数闪烁三次

[复制链接]
跳转到指定楼层
楼主
在四位数码管上显示从-9到-1到-0.9到-0.1到0到20,其中遇到质数闪烁三次


源程序如下:
  1. #include "SevSeg.h"

  2. SevSeg sevseg;

  3. byte numDigits = 4;     // 4位数码管
  4. byte digitPins[] = {2, 3, 4, 5};  //数码管公共极连接Arduino的引脚
  5. byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13};// 数码管a,b,c,d,e,f,g,h对应引脚
  6. bool resistorsOnSegments = false; // 'false' 表示电阻连在数字引脚上
  7. byte hardwareConfig = COMMON_ANODE; // 共阳极数码管
  8. bool updateWithDelays = false; // Default 'false' is Recommended
  9. bool leadingZeros = false; // 无前导零
  10. bool disableDecPoint = false; //小数点

  11. void setup() {                     
  12.   //初始化数码管
  13.   sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments,
  14.   updateWithDelays, leadingZeros, disableDecPoint);//添加参数
  15.   sevseg.setBrightness(6);
  16. }

  17. void loop() {
  18.   for(int i=-9;i<0;i++){                       //显示-9到-1
  19.     sevseg.setNumber(i);     // 设置要显示的数据,
  20.     for(int j=0;j<32000;j++){
  21.       sevseg.refreshDisplay();  // 必须重新运行刷新数码管显示
  22.     }
  23.   }
  24.   for(int i=-9;i<0;i++){                      //显示-0.9到-0.1
  25.     sevseg.setNumber(i,1);  // 第二个参数表示小数点的位置
  26.     for(int j=0;j<32000;j++){
  27.       sevseg.refreshDisplay();
  28.     }
  29.   }
  30.   for(int i=0;i<=20;i++){                    //显示0到20
  31.     if(isprime(i)){
  32.       for(int k=0;k<3;k++){                  //闪烁显示质数
  33.         sevseg.setNumber(i);
  34.         for(int j=0;j<32000;j++){
  35.           sevseg.refreshDisplay();
  36.         }
  37.         sevseg.blank();
  38.         for(int j=0;j<32000;j++){
  39.           sevseg.refreshDisplay();
  40.         }
  41.       }
  42.     }
  43.     else{
  44.       sevseg.setNumber(i);               //正常显示其他数
  45.       for(int j=0;j<32000;j++){
  46.         sevseg.refreshDisplay();
  47.       }
  48.     }
  49.   }
  50.   sevseg.refreshDisplay();
  51. }

  52. bool isprime(int n){                     //判断质数
  53.   int prime[]={2,3,5,7,11,13,17,19};
  54.   bool a = false;
  55.   for(int i=0;i<8;i++){
  56.     if(prime[i]==n){
  57.       a = true;
  58.       break;
  59.     }
  60.   }
  61.   return a;
  62. }

复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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