Arduino-Proteus仿真05-分立式数码管循环显示0~9
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”获取~
- 四只数码管滚动循环显示0~3 PROTEUS 和51单片机教程(仿真文件+源代码)
- 51proteus仿真:7段数码管显示小数
- Proteus 8 Professional 仿真流水灯以及数码管显示数字
- 单只按键控制单只数码管滚动显示 PROTEUS 和51单片机教程(附仿真文件+源代码)
- proteus仿真之DS1302+8位数码管显示试验
- 1~99秒倒计时数码管显示C程序+Proteus仿真
- 51单片机数码管显示+proteus仿真
- 数码管显示拨码开关编码 PROTEUS 和51单片机教程(附仿真文件+源代码)
- 单只数码管循环显示0~F PROTEUS 和51单片机教程
- 基于proteus的51单片机仿真实例五十九、1位数码管显示实例
- Proteus仿真-数码管显示温度(实验三)
- proteus入门,数码管循环显示静态数字详解
- proteus仿真之8位数码管动态扫描显示试验
- 数码管0到9循环显示仿真图
- 20141016 【Arduino + C51单片机】 八段数码管--数字循环显示
- 基于proteus的51单片机仿真实例七十八、使用BCD译码器实现8位数码管显示应用实例
- 51单片机超声波测距数码管显示并报警(Proteus 仿真)
- 用C语言编程使51单片机的数码管左移循环显示
- 基于proteus的51单片机仿真实例七十九、8位数码管驱动芯片max7221应用实例
- 89C51数码管循环显示数字0~15