第十一节多个数码管动态显示

第十一节 多个数码管动态显示
一、编写程序
步骤一:打开bascom-avr编程环境;
步骤二:新建空白编程文件;
步骤三:设置系统频率,系统的波特率
步骤四:输入程序
程序举例:
将下面程序在bascom-avr中编译及仿真

'——————————————————————————————————
'名 称 : 多个数码管动态显示程序
'目 的 : 多个数码管动态显示程序,了解I/0口及数码管。
'目 标 芯 片 : Mega16
'作 者 : 张恩锋
'编 译 环 境 : BASCOM-AVR 1.11.8.4
'protues 7仿真通过
'———————————————————————————————————
$regfile = "m16def.dat" ' 单片机型号
$crystal = 8000000 ' 定义晶振频率
Config Porta = Output '定义A口为输出口
Config Portb = Output
Dim I As Byte
Dim T As Byte
Dim S As Byte
Dim D As Byte
Dim Dled(16) As Byte '定义七段数码管显示数据数组
Restore Dataled7 '为读入数据准备 ,调用子程序 Daima
For I = 1 To 16 '依次把0-F的显示值输入到数组Dled ()
Read Dled(i)
Next I
Do '死循环
S = &B00000001 '第一个显示数字的数码管为最低位
For I = 1 To 4 '在数码管上显示数字1-4
循环4次
T = I + 1 '选择在数据数组中显示数字的对应数据
Porta = 0 '关数码管
Portb = S '数码管选择数据为二进制11111110
Porta = Dled(t) '显示数据
Waitms 1
Rotate S , Left , 1 '选择数码管
Next I '循环DO__LOOP
Loop
End
Dataled7: 'LED 7段显示代码表
Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7D , &H07 , &H7F , &H6F , &H77 ,
&H7C , &H39 , &H5E , &H79 , &H71

'——————————————————————————————————
'共阴极字形码
'&H3F 0
'&H06 1
'&H5B 2
'&H4F 3
'&H66 4
'&H6D 5
'&H7D 6
'&H07 7
'&H7F 8
'&H6F 9
'&H77 a
'&H7C b
'&H39 c
'&H5E d
'&H79 e
'&H71 f
'——————————————————————————————————
步骤五:保存程序
步骤六:编译文件
如下图所示:在菜单栏中单击“compile program”或按F7键编译文件,若提示错误请
认真检查并及时更正错误。

二、仿真模拟
在桌面中打开protues仿真软件(仿真为理想状态下运行,实际还有一点不同,后续章节中
有介绍)
2.1 添加元件
点击新建文件
单击“P”从库中选取元件
在关键字中输入“7seg-mpx1-cc”添加一个共阴级数码管(因前面章节所用数码管达不到要
求所以选用这一类型)

选择结果中的元件并双击。
同样的方法在关键字中输入“atmega16”添加AVR单片机

单击“确定”退出添加元件界面。
单击添加的元件,在编辑界面鼠标会变成笔状。

在编辑界面单击鼠标,会出现器件的外形,选择好器件所放位置并单击鼠标就可放置元件
单击鼠标后
同样的方法放置数码管。

2.2 线路连接
在器件的管脚上单击鼠标,当鼠标变成绿色笔状且在笔尖处出现小红方框就可拖动鼠标
连接线路。同理,在把线拖到要连接的另一个元件的管脚时鼠标变成绿色笔状即可单击鼠
标连接线路。
完成连接效果图:
2.3 仿真运行
双击单片机出现“编辑元件”界面
在program file这一栏中,找到前面编程所编译的扩展名为“.HEX”的文件并选
择它

回到“编辑元件”界面点击确定。
最后,单击主界面左下角的“开始”按钮即可进行仿真,若不能运
行应仔细检查是否线路连接错误。

三、回味提升
1、改变延时时间,观察其变化
2、更改显示数字,多加几个数码管让其显示自己喜欢的数字,总结经验
3、其它尝试
。

合集下载

数码管动态显示

数码管动态显示

数码管动态显示的汇编及C语言数码管动态显示是我们学习51单片机过程中的第二个必须设计的实验。

1、原理:动态显示主要是利用数码管的循环显示的方法,利用人眼的暂保留特性,当循环频率较高时,看不到闪烁。

#include <reg52.h>void delay(){unsignedinttt=300;while(tt--);}sbit L1=P3^4; sbit L2=P3^5;unsigned char code dm[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char code wm[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voiddisp_n(unsigned char *p,unsigned char n, unsigned char w){unsigned char i;for(i=0;i<n;i++){P1=0x00;L1=1;P1=dm[*(p+i)];L1=0;L2=1;P1=wm[w+i-1];L2=0;delay();}}void main(){unsigned char d,m,j,i;unsigned char smg[]={1,2,3,4,5,6,7,8,9};while(1){m=1;for(d=8;d>0;d--){for(j=0;j<=10;j++){for(i=10;i>0;i--)disp_n(smg,d,m);}delay();m++ ;}}}二、汇编程序ORG 0000HBEG:AJMP STARTORG 0030HSTART: MOV SP,#60H WM EQU 31HMOV WM,#0FEHCS EQU 32HMOV CS ,#1MS EQU 33HMOV MS,#7 NEXT: MOV A,#250MOV B ,CSDIV ABMOV R2,AB1: MOV P1,00HMOV R0,CSMOV R3,MSCLR P3.4CLR P3.5MOV R1,#0FEH B2: MOV P1,R1SETB P3.5CLR P3.5MOV A,R1RL AMOV R1,AMOV DPTR,#DMMOV A,R3MOVC A,@A+DPTRMOV P1,ASETB P3.4LCALL DELAYMOV P1,#00HCPL P3.4INC R3DJNZ R0,B2DJNZ R2,B1INC CSDJNZ MS, NEXTWM1 EQU 35HMOV WM1,#0FEHCS1 EQU 34HMOV CS1 ,#8MS1 EQU 36HMOV MS1,#0 NEXT1: MOV A,#250MOV B ,CS1DIV ABMOV R2,AB3: MOV P1,00HMOV R0,CS1MOV R3,MS1CLR P3.4CLR P3.5MOV R1,WM1B4: MOV P1,R1SETB P3.5CLR P3.5MOV A,R1RL AMOV R1,AMOV DPTR,#DMMOV A,R3MOVC A,@A+DPTRMOV P1,ASETB P3.4LCALL DELAYMOV P1,#00HCPL P3.4INC R3DJNZ R0,B4DJNZ R2,B3MOV A,WM1RL AMOV WM1,ADJNZ CS1, NEXT1DELAY : MOV R5,#2DL2: MOV R6,#200DL1: NOPNOPNOPNOPNOPNOPNOPNOPDJNZ R6,DL1DJNZ R5,DL2RETDM:DB 06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH END BEG。

数码管动态显示实验报告

数码管动态显示实验报告

一、实验目的1. 掌握数码管动态扫描显示的原理和编程实现方法;2. 熟悉单片机与数码管之间的接口连接;3. 学会使用定时器中断控制数码管的动态显示;4. 培养动手能力和问题解决能力。

二、实验原理数码管动态显示是通过单片机控制多个数码管同时显示不同的数字或字符,利用人眼的视觉暂留效应,实现快速切换显示内容,从而在有限的引脚数下显示更多的信息。

实验中,我们采用动态扫描的方式,依次点亮数码管,通过定时器中断控制扫描速度。

三、实验器材1. 单片机开发板(如51单片机、AVR单片机等);2. 数码管(共阳/共阴自选);3. 连接线;4. 电阻;5. 实验台;6. 编译器(如Keil、IAR等)。

四、实验步骤1. 设计电路图:根据实验要求,设计单片机与数码管的连接电路图,包括数码管的段码、位选信号、电源等。

2. 编写程序:使用C语言或汇编语言编写程序,实现数码管的动态显示功能。

(1)初始化:设置单片机的工作模式、定时器模式、端口方向等。

(2)显示函数:编写显示函数,实现数码管的点亮和熄灭。

(3)定时器中断服务程序:设置定时器中断,实现数码管的动态扫描。

3. 编译程序:将编写的程序编译成机器码。

4. 烧录程序:将编译后的程序烧录到单片机中。

5. 连接电路:将单片机与数码管连接好,包括数码管的段码、位选信号、电源等。

6. 运行实验:打开电源,观察数码管的显示效果。

五、实验结果与分析1. 实验结果:数码管按照预期实现了动态显示功能,依次点亮每位数码管,并显示出不同的数字或字符。

2. 分析:(1)通过调整定时器中断的周期,可以改变数码管的扫描速度,从而控制显示效果。

(2)在编写显示函数时,要考虑到数码管的共阳/共阴特性,选择合适的点亮和熄灭方式。

(3)在实际应用中,可以根据需要添加其他功能,如显示时间、温度等。

六、实验总结1. 通过本次实验,掌握了数码管动态显示的原理和编程实现方法。

2. 熟悉了单片机与数码管之间的接口连接,提高了动手能力。

数码管动态显示程序编写步骤

数码管动态显示程序编写步骤

数码管动态显示程序编写步骤一、准备工作在编写数码管动态显示程序之前,我们需要准备以下工作:1. 硬件设备:数码管、开发板等;2. 开发环境:Arduino IDE等;3. 相关库函数:例如“TM1637.h”库。

二、引入库函数在编写数码管动态显示程序之前,我们首先需要在代码中引入相应的库函数。

在Arduino IDE中,可以通过“库管理器”来搜索并安装需要的库函数。

三、初始化设置在开始编写程序之前,我们需要先对数码管进行初始化设置。

这包括设置数码管的引脚连接方式、亮度等参数。

四、定义变量在程序中我们需要定义一些变量来保存要显示的数字、字符等信息。

可以根据需要定义不同类型的变量,例如整型、字符型等。

五、编写显示函数编写一个显示函数来控制数码管的显示效果。

该函数可以接收一个参数,用来指定要显示的内容。

六、主函数在主函数中,我们可以通过调用显示函数来控制数码管的显示效果。

可以根据需要设置循环次数、延时时间等参数,来实现不同的显示效果。

七、编译与上传在编写完程序后,我们需要将代码进行编译,并将程序上传到开发板中进行运行。

在Arduino IDE中,可以点击“编译”按钮进行代码的编译,然后点击“上传”按钮将代码上传到开发板。

八、调试与优化在程序运行过程中,可能会出现一些问题,例如数码管显示异常、数字错误等。

这时候我们需要对程序进行调试,并进行相应的优化。

可以通过添加调试信息、查看变量的值等方式来进行调试。

九、总结通过以上步骤,我们可以编写出一个简单的数码管动态显示程序。

通过调整不同的参数和函数,我们可以实现不同的显示效果。

读者可以根据自己的需求进一步扩展和优化程序,实现更加复杂的功能。

编写数码管动态显示程序并不复杂,只需要按照上述步骤进行操作即可。

希望本篇文章对读者有所帮助,能够让大家更好地理解和掌握数码管动态显示程序的编写方法。

祝大家编程愉快!。

数码管的动态显示与静态显

数码管的动态显示与静态显
• 按能显示多少个“8”可分为1位、2位、4位 等等数码管;
• 按发光二极管单元连接方式分为共阳极数码 管和共阴极数码管。
a
共阴阳极接到一起形成公共阳 极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,
当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
• 通常将数码管的各段连接到单片机的8位I/O 口,如P2口,P2口的8位分别连接数码管的 abcdefg各段,通过控制P2口各位的电平, 控制数码管各段的亮灭。
a
数码管显示方式
• 数码管有两种显示方式:静态显示、动态显 示。
• 静态显示:静态驱动是指每个数码管的每一 个段码都由一个单片机的I/O口进行驱动
a
delaynms(2); }
num++; if(num>99) num=0;
}
例如需要显示数字“12”时,先输出位选信号, 选中第一个数码管,输出1 的段码,延时一 段时间后选中第二个数码管,输出2 的段码。 把上面的流程以一定的速度循环执行就可以 显示出“12”,由于交替的速度非常快,人眼 看到的就是连续的“12”
在动态显示程序中,各个位的延时时间长 短是非常重要的,如果延时时间长,则会出 现闪烁现象;如果延时时间太短,则会出现 显示暗且有重影。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴极数码管则与之相反
我们平时所看到的0-9这样的数字,通过控制不同的LED的亮灭 来显示出这些字形的。为了显示数字或字符,必须对数字或字 符进行编码。因此为LED显示器提供的编码正好是一个字节。
比如对于共阳极数码管,显示“0”。则abcdef各段led灯亮, 其余灭。对于共阳极,则在相应的阴极部分加低电平0即可。

数码管动态显示数字

数码管动态显示数字

单片机实习课题:数码管动态显示数字LED数码管动态显示共阳极的LED数码管,共阳就是7段的显示字码共用一个电源的正。

原理示意图:从上图可以看出,要是数码管显示数字,有两个条件:1、是要在VT端(3/8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。

这样才能显示的。

例:如要显示“0”,则要 a,b,c,d,e,f六个字段亮就显示“0”了,而g和dp字段不亮;这样只要向P0口送出相应的代码即可,编码方法如下表:程序使用时,只需将显示数字所对应的编码送P0口,然后打开相应的数码管显示位的电源控制即可显示相应的字符。

5双位数码管显示控制程序及说明START: MOV R0,#0 ;清零MOV DPTR,#TABLE ;指定查表起始地址LOOP: ACALL DISPLAY ;调用子程序DISPLAY INC R0 ;R0加1CJNE R0,#100,LOOP ;R0未到100则转换JMP START ;跳转DISPLAY: MOV A,R0 ;把R0里的数据送入A MOV B,#10 ;把10送入BDIV AB ;a b相除MOV 20H,A ;十位送入20HMOV 21H,B ;个位送入21HMOV R3,#50 ;把50送入R3LOOP1: MOV A,21H ;取个位数ACALL CHANG ;调用子程序CHANGCLR P2.4 ;开个位显示ACALL DLY ;调用子程序DLYSETB P2.4 ;关闭个位显示MOV A,20H ;取十位数6ACALL CHANG ;调用子程序CHANGCLR P2.5 ;开十位显示ACALL DLY ;调用子程序DLYSETB p2.5 ;关闭十位显示DJNZ R3,LOOP1 ;循环50次RET ;子程序返回CHANG: MOVC A,@A+DPTR ;查表MOV P0,A ;查表结果送入P0RET ;子程序返回DLY: MOV R6,#20 ;典型延时子程序延时D1: MOV R7,#248 ;10msDJNZ R7,$DJNZ R6,D1RETTABLE: DB 0C0H,0F9H,0A4H ;表数据共阳极数码管显示代码 DB 0B0H,99H,92H,82HDB 0F8H,80H,90HEND7心得体会时光飞逝,一转眼,一个学期又进尾声了,本学期的单片机实训在这一周内完成了。

数码管的动态显示原理及应用

数码管的动态显示原理及应用

数码管的动态显示原理及应用1. 数码管简介数码管是一种用于显示数字和符号的电子器件,常见的包括七段数码管、八段数码管等。

它由许多发光二极管(LED)组成,每个LED代表一个数字或符号。

数码管广泛应用于电子设备、仪器仪表等领域,具有直观、易读、低功耗等优点。

2. 数码管的工作原理数码管的工作原理主要依靠电流和电压的控制,通过控制每个LED的亮灭状态,实现数字和符号的显示。

数码管通常由多个LED组成,每个LED分别代表一个数字或符号。

在数码管中,每个LED的正极(阳极)接通位线,而负极(阴极)则分别连接到不同的控制引脚。

通过控制这些引脚的高低电平,可以控制相应的LED点亮或熄灭。

2.1 驱动方式数码管的驱动方式分为静态和动态两种。

静态驱动方式是指每个LED的亮灭状态不变,即只显示一个数字或符号。

动态驱动方式是通过快速地改变LED的亮灭状态,以达到显示多个数字或符号的效果。

2.2 动态显示原理动态显示原理是指通过快速地改变LED的亮灭状态,使人眼产生视觉暂留效应,从而在有限的时间内显示多个数字或符号。

动态显示使用了时间分片的原理,即将一个显示周期分为多个时间片段,在每个时间片段内只显示一个数字或符号。

通过控制每个时间片段内不同LED的亮灭状态,可以实现数字或符号的动态切换。

3. 数码管的应用数码管由于其直观、易读的特点,在各行各业都有广泛的应用。

3.1 仪器仪表数码管在仪器仪表领域得到广泛应用,例如数字万用表、电子测量仪器等。

它们通过控制不同的LED点亮或熄灭,可以直观地显示测量结果、电压、电流等信息。

3.2 数字时钟数码管常被用于制作数字时钟。

通过控制每个LED的亮灭状态,可以实时显示小时、分钟、秒等信息,方便人们了解当前的时间。

3.3 电子秤数码管还广泛应用于电子秤。

它们通过控制LED的亮灭状态,实时显示被称量物体的重量,方便人们进行称重工作。

3.4 电子计数器数码管常被用于制作电子计数器。

通过控制LED的亮灭状态,可以实时显示计数结果,常见于工业自动化、交通信号灯等领域。

数电实验 数码管的动态显示

实验六数码管的动态显示
一、实验目的:
1.学习多位数码动态显示的原理。

2.培养综合运用多种中规模集成器件组合逻辑功能部件的能力及实验技能。

二、实验器材:
74LS139 74LS153 74LS00 74LS74 数字电子线路实验箱
三、实验原理:
数字电路中数据的显示方式有两种,一种为静态显示,一种为动态显示。

前面的实验中数码管的显示方式均为静态显示,数码管动态显示原理与静态显示不同,如果数码管采用共阳极接法一般在阴极接入数据信号,同时在阳极信号接入高电平则该数码管显示数据。

静态显示原理框图:
4路数据输入
数据
选择
2-4译
码器振荡器
秒脉冲
计数
器
七段
译码
4位
数码
管显
示
电路设计图:
测试:。

数码管动态显示ppt课件

20
7.4 单片机外部LED数码显示器的扩展 • 问题?
1个数码管只能显示1位数字,如果要显示多位数字怎么办? 有两种方式:静态显示方式和动态显示方式。 静态显示方式:各位LED数码管同时显示。 动态显示方式:各位LED数码管分时轮流显示;同一时刻只有1位LED 数码管显示;但因为显示间隔非常短暂,由于人眼的视觉暂留效应,人 眼看到的仍然是同时显示的字符。
25
7.4 单片机外部LED数码显示器的扩展
• LED静态显示接口及应用
– LED静态显示接口电路
74LS245是8路同相三态双向数据总
线驱动芯片,具有双向三态功能,
既可以输出,也可以输入数据。
引脚说明:
A0~A7 总线端
B0~B7 总线端
/CE
三态门允许端(低电平有效)
AB//BA 方向控制端
26
16
7.4 单片机外部LED数码显示器的扩展
• LED数码显示器的结构与原理
– 1位共阴LED数码显示器的接口电路
0
1
1
LED灭
三极管导通
17
7.4 单片机外部LED数码显示器的扩展
• LED数码显示器的结构与原理
– 1位共阴LED数码显示器的接口电路
这种接口电路在单片机输出低
1
0
0
电平时,利用三极管的截止, 防 止 电 流 灌 入 单 片 机 I/O 引 脚 。 LED亮 同时,也增强了对LED的驱动
COM
共阳:阳极并联
7
7.4 单片机外部LED数码显示器的扩展
• LED数码显示器的结构与原理
– LED数码显示器的显示原理 通过控制“段”的发光与熄灭,数码管可以显示数字和一些字母符号:

数码管动态显示的原理

数码管动态显示的原理
数码管动态显示的原理是通过快速地在不同的数码管上切换显示不同的数字或字符来实现的。

它主要依靠以下几个关键元素来实现:
1. 数码管:数码管是一种显示设备,通常由七个发光二极管(LED)组成,排列成数字“8”的形状。

每个LED可以独立地
点亮或熄灭,而且在点亮时可以显示不同的数字或字符。

2. 位选信号:位选信号是控制哪个数码管被点亮的信号。

通常使用一个二进制的计数器来产生不同的位选信号,每个信号在不同的时间点上为高电平,用于控制特定位置的数码管。

3. 段选信号:段选信号是控制数码管上哪个LED被点亮的信号。

它由一个逻辑电路产生,根据需要显示的数字或字符来决定哪些LED需要点亮。

通过快速地切换不同的段选信号,可
以实现在不同的数码管上显示不同的内容。

4. 控制电路:控制电路主要由计数器、分频器和逻辑电路组成,用于产生位选信号和段选信号。

计数器用于产生位选信号,分频器用于控制切换速度,逻辑电路用于产生段选信号。

这些信号经过适当的放大和驱动后,可以控制数码管的亮灭以及显示的内容。

通过以上关键元素的协调工作,数码管动态显示可以实现快速地在多个数码管上显示不同的数字或字符。

这种显示方式广泛应用于数字时钟、计算器、仪表盘等电子设备中。

数码管动态显示原理

数码管动态显示原理
数码管动态显示原理:
数码管动态显示是利用数码管的特性实现的,也就是说,数码管本身就可以显示很多形态的数字和字符,所以只需要把不同形态的数字和字符一次次地发送出去就可以了。

数码管动态显示的关键在于控制单片机送出的不同数字和字符,可以使用定时器每隔一定时间就发送一次,就可以实现动态的数字和字符的显示。

另外,也可以在按键按下时就发送数字或字符,使得数码管实现更多功能。

总的来说,数码管动态显示需要单片机和数码管共同配合,单片机通过控制发送的数字和字符,使得数码管实现动态显示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档