Arduino-Proteus仿真07-集成式数码管动态扫描显示

Posted 村头陈师傅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino-Proteus仿真07-集成式数码管动态扫描显示相关的知识,希望对你有一定的参考价值。

Arduino-Proteus仿真07-集成式数码管动态扫描显示

设计者: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.练习描述

这次我们让集成式数码管“同时”显示多个不同字符,程序设计时使用了集成式数码管“动态扫描”技术。为了将年月日分开显示,电路中没有使用元件库提供的8位集成式共阳数码管,而是选用了一组4位及两组2位的共阳集成式数码管拼接成一组8位集成式数码管。拼接时注意“段引脚同名并联”“位引脚逐一分立”。

2.元器件选择

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

3.电路连接


仿真电路中显示“年”时使用了4位集成式七段蓝色共阳数码管(7SEG-MPX4-CA-BLUE),CA表示共阳,从“纵向看”,任意一个数码管内A-G、DP各段的阳极连接在一起,4只数码管分别引出共阳极1、2、3、4。从“横向看”,4只数码管共有4个A段,所有A段的阴极引脚并联在一起,B、C、D、E、F、G、DP阴极也分别“横向”并联,分别引出段引脚A~G、DP。

4.程序设计

3const uint8_t CA_SEGCODE[]=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;//0-9的共阳数码管段码表
4const uint8_t DATA[]=2,0,2,1,0,1,2,7;//待显示到数码管的8个数字
5const uint8_t ledpins_SEG[]=2,3,4,5,6,7,8,9;  //用数组指定8位7段数码管所连接的段引脚
6const uint8_t ledpins_DIG[]=12,13,14,15,16,17,18,19;//用数组指定8位7段数码管所连接的位引脚
7)	uint8_t i;
8void setup()
9
10for(i=0;i<8;i++)
11
12pinMode(ledpins_DIG[i],OUTPUT);//设置位码引脚
13pinMode(ledpins_SEG[i],OUTPUT);//设置段码引脚
14
15
16void loop()
17
18for(i=0;i<8;i++)            //循环扫描显示8位数码管
19
20DIG_OUTPUT(i);           //输出位码
21SEG_OUTPUT(CA_SEGCODE[DATA[i]]);  //输出段码
22delay(1);                       //延时
23
24
2526void SEG_OUTPUT(uint8_t x)     //发送段码
27
28for(uint8_t j=0;j<8;j++)
29
30if((x>>j & 0x01) != 0x00)
31digitalWrite(ledpins_SEG[j],HIGH);
32else
33digitalWrite(ledpins_SEG[j],LOW);
34
35
3637void DIG_OUTPUT(uint8_t x)   //发送位码
38
39for(uint8_t j=0;j<8;j++)
40
41if(x != j)
42digitalWrite(ledpins_DIG[j],LOW);
43else
44digitalWrite(ledpins_DIG[j],HIGH);
45
46

程序上传成功后,将看到数码管显示2021 01 27字样

5.软件操作

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

源文件请关注公众号“STCode”获取~

以上是关于Arduino-Proteus仿真07-集成式数码管动态扫描显示的主要内容,如果未能解决你的问题,请参考以下文章

Proteus仿真步进电机转速数码管显示

Proteus仿真独立按键+数码管显示

Proteus仿真Arduino UNO按键控制数码管闪烁增/减显示

Proteus仿真数码管递加/递减带闪烁消隐显示

Arduino:数码管显示原理详解和Proteus仿真实验

Proteus仿真简易数码管定时器时钟