Arduino-Proteus仿真05-分立式数码管循环显示0~9

设计者:STCode(公众号同名)

前言:

Proteus是英国Labcenter公司开发的电路分析与实物仿真及印制电路板设计软件,它可以仿真、分析各种模拟电路和集成电路,其提供了大量模拟与数字元器件及外部设备,以及各种虚拟仪器(如电压表、电流表、示波器、逻辑分析仪、信号发生器等),特别是它具有对单片机及其外围电路组成的综合系统交互仿真功能,
目前,Proteus仿真系统支持的主流单片机有ARM7(LPC21xx)、8051/52、AVR、PIC 10/12/16/18/24、MSP430、CotexM0/M3、HC11等,其支持的开发环境有Keil u Vision2/3/4、MPLAB、Atmel Studio等。

提示:

Proteus仿真Arduino中,关于所需硬件获取、软件编译、HEX文件获取、代码导入等问题请参考文章:Arduino-Proteus仿真01-LED灯闪烁

1) 描述

数码管可以分为共阳数码管和共阴数码管两种,本例中使用的是共阳数码管,因此将公共端接到Arduino的+5V上。单个数码管中有7颗led,当显示数字“8”的时候将点亮所有7颗led。仿真电路中,单只共阳数码管的名称为 “7SEG-COM-AN-GREEN”,7SEG代表7段,COM-AN代表的是共阳,GREEN表示led颜色为绿色;共阴数码管组件的名称为“7SEG-COM-CAT -GREEN”。

2) 元器件选择

·ATMEGA328P
·7SEG-COM-AN-GREEN
·RX8
·LED-YELLOW
·RES(220O欧姆)

在元件模式中点击P选项,在元件库中搜索所需的元件名称,双击后便可添加到元件清单中。

3) 电路连接

从电路连接图上可以看到,单只数码管的公共端连接到VCC,其余7个引脚,先连接到330欧姆的排阻上,再分别接到Arduino的引脚上,分别连接0~6号IO口。

这里说明一下,单只共阳数码管的段码标号如下图。其中abcdefg分别对应接到了Arduino的0~6,如果想让数码管显示1,只需要将b、c两个led引脚拉低即可,其他位均拉高电平,用2进制表示为11111001,对应的16进制数据为0xF9,

大家可以打开自己电脑的计算器,转换为程序员模式,看看二进制数据与16进制数据的转换。

4) 程序设计

5)    const uint8_t CA_SEGCODE[] =
6)       { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
7)   int i,j;
8)   //用数组指定7段数码管所连接的引脚
9)   int ledPins[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
10)
11)  void setup()
12)  {13)  for(int i=0;i<8;i++)
14)  pinMode(ledPins[i],OUTPUT);
15)  }
16)
17)  void loop()
18)  {19)      for(i=0;i<10;i++)
20)      {21)          for(j=0;j<7;j++)
22)          {23)              if((CA_SEGCODE[i] >> j) & 0x01 == 1)
24)              digitalWrite(ledPins[j],HIGH);
25)              else
26)              digitalWrite(ledPins[j],LOW);
27)          }
28)          delay(1000);
29)      }
30)  }
31)

程序说明:

源程序中先定义一个数组,用来存放显示0-9的数据;
之后定义led引脚数组,方便之后对其进行引脚的模式设置和操作对应引脚的电平
if((CA_SEGCODE[i] >> j) & 0x01 == 1)
digitalWrite(ledPins[j],HIGH);
else
digitalWrite(ledPins[j],LOW);
通过数据的移位并与0x01进行与操作,当比较的位的数据为1,则拉高对应的引脚,因此该led不亮,当比较的位的数据为0,则拉低对应引脚的电平,led亮起。

5) 软件操作

程序编写完成后点击Arduino IDE编译器的文件—首选项,将编译选项勾选上。点击好以后进行编译,编译完成后复制HEX文件所在的路径,复制完成后返回Proteus软件,双击Arduino控制板,在Program File处粘贴HEX文件的路径。点击确定以后即可进行仿真,点击Proteus软件下方运行仿真按钮,可以看到仿真的效果。

更多教程和作品请关注公众号“STCode”获取~

Arduino-Proteus仿真05-分立式数码管循环显示0~9相关推荐

  1. 使用keil及proteus实现数码管循环显示“0“-“F“

    数码管循环显示"0"-"F" 目录 数码管循环显示"0"-"F" 一.数码管循环程序的编译 1.keil新建工程 2.新 ...

  2. c语言c52数码管,数码管(STC89C52): 第一个数码管循环显示0~F

    原标题:数码管(STC89C52): 第一个数码管循环显示0~F 一. 硬件设计 说明: 选通一个分两步, 第一步是位选,即选择哪个数码管亮, 这里位选是通过锁存器U2的WE1~WE6来选择第一个数码 ...

  3. 分立式数码管循环显示数字0到9.

    在Keil C51中编写程序使得共阴极数码管在P0口循环显示0到9. 首先查询一下共阴极数码管数字0到9的数码表: code int SEG_CODE[] = {0x3f, 0x06, 0x5b, 0 ...

  4. 51单片机数码管循环显示0 9c语言,如何采用单片机实现数码管循环显示0-9

    描述 8个数码管滚动显示同一个数字 8个数码管显示多个不同的字符 8个数码管闪烁显示 8个数码管滚动显示数字串 #include __CONFIG(0x3B31); unsigned char tab ...

  5. 89C51数码管循环显示数字0~15

    89C51数码管循环显示数字0~15,使用Proteus经行仿真. 需要材料:   数码管.AT89C51.最小系统电路. 代码如下: //------------------------------ ...

  6. 51单片机定时器累加计数(000-999)+4位数码管(循环显示)+Proteus仿真

    51单片机定时器累加计数(000-999)+4位数码管(循环显示)+Proteus仿真 说明:为什么采用4位的数码管,因为Proteus里面没有3位的数码管器件可选,也可以采用2+1,或者1+1+1, ...

  7. 【Proteus仿真】STC15单片机 + DS1302 + LCD1602显示时间

    [Proteus仿真]STC15单片机 + DS1302 + LCD1602显示时间 Proteus仿真 本来想通过轮询方式读取DS1302秒时间的变化来刷新LCD1602显示的,但是这种方式在STC ...

  8. 【51单片机】串行口连接74LS164进行串行/并行转换,输出到一个七段数码管。数码管循环显示0-9。采用串行通信方式0,定时间隔1秒。

    实验内容:51单片机的串行口连接74LS164进行串行/并行转换,然后输出到一个七段数码管.数码管循环显示0-9这10个数字.要求采用串行通信方式0,定时间隔1秒. 工具:proteus+keil # ...

  9. 【Proteus仿真】AT24C02数据读写+LCD1602显示

    [Proteus仿真]AT24C02数据读写+LCD1602显示 Proteus仿真 程序说明 AT24C02采用的IIC通讯,SCK:P20;SDA:P21 按键K1-K4分别接到P30-P33引脚 ...

最新文章

  1. python对文件的读写操作方式-python 文件读写操作
  2. 前端白屏问题_前端优化-如何计算白屏和首屏时间
  3. eclipse创建多模块maven工程小结
  4. 将计算机设置成交换机主机名,CISCO2950交换机的配置(设置密码、IP地址、主机名)...
  5. JavaScript数据结构与算法——数组详解(下)
  6. python利用matplotlib做饼图_python利用matplotlib库绘制饼图的方法示例
  7. kafka topic 目录存放在哪_Kafka系列文章之安装测试-第2篇
  8. Excel中如何在打印时自动给每行加上标题
  9. 停止计算机sql服务,“本地计算机上的SQLSERVER服务启动后又停止了”解决方法
  10. python编程例子-python面向对象编程实例
  11. poj 2029 Get Many Persimmon Trees 二维树状数组
  12. vba commondialog控件添加不上_MyVBA加载宏——添加自定义菜单03——功能分析
  13. linux以下C 利用openssl的AES库加密,解密
  14. LINUX下三个内核文件详解(vmlinuz/initrd.img/System.map)
  15. 基于TI Davinci架构的多核/双核开发快速扫盲(以OMAP L138为例),dm8168多核开发参考以及达芬奇系列资料user guide整理...
  16. Java | PTA练习:伪随机数题解
  17. 使用计算机的安全事项,电脑安全使用注意事项
  18. 如何设计好一条推送通知
  19. 动态SQL中if标签:test判断的null和“ “的问题
  20. Oracle数据库培训视频教程 oracle工程师培训视频教程

热门文章

  1. AtCoder Beginner Contest 177 D.Friends
  2. 专利号校验码php,专利申请号校验位怎么去理解?
  3. 吐槽java之《程序员的呐喊》读后总结
  4. E72i 连接到电脑的各种方式
  5. 基于Nodejs的智慧小区服务系统的设计和实现
  6. 洛谷P1465 [USACO2.2]序言页码 Preface Numbering
  7. python小程序之七段数码管的绘制
  8. 蓝桥杯 C语言训练【1952】——求长方形面积
  9. Unity中使用暴风魔镜进行VR游戏开发
  10. win10 夜间模式设置无效(夜灯模式、bluelight)