AI智能
改变未来

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)	            else26)	            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) 打赏
未经允许不得转载:爱站程序员基地 » Arduino-Proteus仿真05-分立式数码管循环显示0~9