多位数码管动态扫描电路设计与调试

合集下载

数码管扫描显示控制器实验报告

数码管扫描显示控制器实验报告

北京邮电大学实验报告课程名称:数字电路与逻辑设计实验实验名称:数码管扫描显示控制器设计与实现学院:信息与通信工程学院班级:姓名:学号:日期:2012年4月22日一.课题名称:数码管扫描显示控制器设计与实现二.实验目的1. 掌握VHDL语言的语法规范,掌握时序电路描述方法2. 掌握多个数码管动态扫描显示的原理及设计方法三.实验所用仪器及元器件1. 计算机2. 直流稳压电源3. 数字系统与逻辑设计实验开发板四.实验任务要求1. 用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0,1,2,3,4,5这六个不同的数字图形到六个数码管上,仿真下载验证其功能,并下载到实验板上测试。

2. 用VHDL语言设计并实现六个数码管滚动显示电路。

(选作)①循环左滚动,始终点亮6个数码管,左出右进。

状态为:012345-123450-234501-345012-450123-501234-012345②向左滚动,用全灭的数码管充右边,直至全部变灭,然后再依次从右边一个一个地点亮。

状态为:012345-12345X-2345XX-345XXX-45XXXX-5XXXXX -XXXXXX-XXXXX0-XXXX01-XXX012-XX0123-X01234-012345,其中’X’表示数码管不显示。

五.实验设计思路及过程1.实验原理为使得输入控制电路简单且易于实现,采用动态扫描的方式实现设计要求。

动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。

多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制每个数码管的公共端,循环依次点亮多个数码管,利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。

扫描显示方式就是在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。

多位数码管动态显示

多位数码管动态显示

【006】多位数码管动态显示[51]点击数:2102 发布日期:2006-4-16 16:04:00实验目的:数码管动态显示多位数字。

实验参考:笨笨工作室实验五、多位数码动态显示。

()实验板: FB51A()。

该实验用到实验板的资源电路图如下:其中P0口是段码,低电平有效。

P2口是位码,高电平有效。

口操纵第1个数码管,一直到口操纵第8个。

该板的段码表如下:各个数码管的段码都是p0口的输出,即各个数码管输入的段码都是一样的, 为了使其别离显示不同的数字, 可采纳动态显示的方式,即先只让最低位显示0 (含点),通过一段延时,再只让次低位显示1,如此类推。

由视觉暂留,只要咱们的延不时刻足够短,就能够够使得数码的显示看起来超级的稳固清楚。

进程如以下图。

采纳上述方式思路编写如下:org 0000hstart: mov a,#08h ;0 ;段码mov p0,amov p2,#01h ;位码lcall delay_1msmov a,#0abh ;1mov p0,amov p2,#02hlcall delay_1msmov a,#12h ;2mov p0,amov p2,#04hlcall delay_1msmov a,#22h ;3mov p0,amov p2,#08hlcall delay_1msmov a,#0a1h ;4mov p0,amov p2,#10hlcall delay_1msmov a,#24h ;5mov p0,amov p2,#20hlcall delay_1msmov a,#04h ;6mov p0,amov p2,#40hlcall delay_1ms; mov a,#0aah ;7; mov p0,amov p0,#0aah ;感觉用这句和上面两句实现一样,可能这种适应以后会有效吧mov p2,#80hlcall delay_1msljmp startdelay_1ms: mov r6,#2temp: mov r5,#0ffhdjnz r5,$djnz r6,tempretend下载到板上取得测结果为从低到高八位别离显示0到7(含点)。

数码管动态扫描实验报告

数码管动态扫描实验报告

数码管动态扫描实验一、实验目的学习计数器的设计、分析合测试方法。

学习硬件扫描显示电路的设计方法。

二、实验仪器1、PC机2、SW-51PROC单片机综合实验平台三、实验内容编写一段程序,用单片机P0口和P2口的I/O输出去控制8位的数码管显示,实现如下功能:使数码管上显示1、2、3、4、5、6、7、8。

四、实验步骤:1、用Protues设计数码管动态扫描显示电路;2、在KeilC51中编写识别程序,通过后与Protues联合调试;3、启动仿真,观察数码管显示是否正确;4、用Protues设计脉冲计数电路,仿真调试、运行程序并查看效果。

五、电路设计及调试:1、实验电路:2、程序设计与调试:①实验程序:【12345678】#include<reg52.h>#define uintunsigned int#define ucharunsigned charuchar codeDisplsy[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80}; uchar codeTemble[]={0,1,2,3,4,5,6,7};void delay(uint z){uchar t;while(z--) for(t=120;t>0;t--);}void main(){uchar i;P0=0xff;P1=0;while(1){if(i==8)i=0;P1=Temble[i];P0=~Displsy[i+1];i++;delay(2);}}【脉冲计时】#include<reg52.h>#define uintunsigned int#define ucharunsigned charucharcodeDisplay[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar codeTemble[]={0,1,2,3,4,5,6,7};uchar Flag;uint Num;void delay(uint z){uchar t;while(z--) for(t=120;t>0;t--);}voidTest2(void){TR1 = 1;while(1){Num = TH1;Num = Num << 8;Num |= TL1;P1 = 7;P0 = ~Display[Num%10];delay(3);P1 = 6;P0 = ~Display[Num%100/10];delay(3);P1 = 5;P0 = ~Display[Num%1000/100];delay(3);P1 = 4;P0 = ~Display[Num%10000/1000];delay(3);P1 = 3;P0 = ~Display[Num%100000/10000];delay(3);P1 = 2;P0 = ~Display[Num%1000000/100000];delay(3);P1 = 1;P0 = ~Display[Num%10000000/1000000];delay(3);P1 = 0;P0 = ~Display[Num%100000000/1000000];delay(3);}}void main(){TMOD = 0x50;TH1 = 0x00;TL1 = 0x00;EA = 1;ET1 = 1;TR1 = 0;while(1){Test2();}}②调试:③实验结果:1、数字1~8分别显示在8个数码管上,显示无闪烁。

动态扫描五位数码管显示

动态扫描五位数码管显示

2.动态扫描五位数码管显示由上例,静态显示1位数码需占8位口(包括小数点),要显示5为数码需40位输出口,这显然是不实用的,为了节省输出口可采用动态扫描方式,显示五位数码只需13位输出口。

图7.3 动态扫描显示电路如图7.3所示。

C口作字线、D口低5位作位线,动态扫描显示五位数码,数码管是共阴的。

待显示的16位二进制数在r17:r16中,将其二转十,五位BCD码的个、十、百、千、万分别存于r18、r19、r20、r21和r22中。

每隔1ms将1位BCD码查出七段码送B口输出,送相应的位线由D口输出,延时1ms,再显示下一位。

这样,每隔1ms显示1位,5ms显示1遍,反复调用扫描显示子程,每秒可显示200遍,实验证明,每秒显示30遍以上,人眼就可看见稳定的5位数字。

编程如下: .include "8535def.inc".org $0000rjmp resettab:.db $3f,$06,$5b,$4f,$66,$6d,$7d,$07,$7f,$6freset: ldi r16,low(ramend) ;栈指针置初值out spl,r16ldi r16,high(ramend)out sph,r16ldi r16,$ff ;定义PB、PD为输出口out ddrb,r16out ddrd,r16ldi r16,$ff ;设待显示数为$ffffldi r17,$ffrcall b16td5 ;调二转十子程见4.3.1 mov r22,r20 ;将BCD码送r18~r22 mov r21,r19mov r20,r18mov r19,r17mov r18,r16aa: rcall smiao ;调动态扫描子程rjmp aasmiao: ldi r16,$fe;送个位位线out portd, r16mov r23,r18 ;将个位的BCD码送R23rcall cqb ;查七段码,送B口输出rcall t1ms ;延时1msldi r16,$fd ;送十位位线out portd, r16mov r23,r19 ;将十位的BCD码送R23rcall cqb ;查七段码,送B口输出rcall t1ms ;延时1msldi r16,$fb ;送百位位线out portd,r16mov r23,r20 ;将百位的BCD码送R23rcall cqb ;查七段码,送B口输出rcall t1ms ;延时1msldi r16,$f7 ;送千位位线out portd,r16mov r23,r21;将千位的BCD码送R23rcall cqb ;查七段码,送B口输出rcall t1ms ;延时1msldi r16,$ef ;送万位位线out portd,r16mov r23,r22 ;将万位的BCD码送R23rcall cqb ;查七段码,送B口输出rcall t1ms ;延时1msretcqb: ldi zh,high(tab*2) ;七段码的首地址给Z ldi zl,low(tab*2)add zl,r23 ;首地址+偏移量lpm ;查表送B口输出out portb,r0rett1ms: ldi r24,101 ;延时1毫秒子程push r24del2: push r24del3: dec r24brne del3pop r24dec r24brne del2pop r24ret。

专题七动态扫描电路设计

专题七动态扫描电路设计
ELSE NUM<=0; END IF; END IF; END PROCESS; Process(num) begin CASE NUM IS WHEN 1=>C<="11111110"; WHEN 2=> C<="11111101"; WHEN 3=>C<="11111011"; WHEN 4=> C<="11110111"; WHEN 5=>C<="11101111"; WHEN 6=> C<="11011111"; WHEN 7=>C<="10111111"; WHEN 0=> C<="01111111"; WHEN OTHERS=>NULL; END CASE; END PROCESS; END A;
Q[7..0] RD 读数据控制
ARCHITECTURE a OF MEMO_RD_WR IS
SIGNAL Q0,Q1,Q2,Q3: STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL Q4,Q5,Q6,Q7: STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
扫描控制器时序图
ARCHITECTURE a OF SCAN_8 IS SIGNAL NUM: INTEGER RANGE 7 DOWNTO 0;
BEGIN PROCESS(CLK2)
BEGIN IF CLK2'EVENT AND CLK2=‘1' THEN
IF NUM<=7 THEN NUM<=NUM+1;

多位LED-显示器动态扫描驱动电路设计完整版

多位LED-显示器动态扫描驱动电路设计完整版

《多位LED 显示器动态扫描驱动电路》报告(一)目的:1、了解多位LED 显示器动态扫描驱动电路的基本工作原理;2、完成多位LED 显示器动态扫描驱动电路设计并分析计算单元电路;3、绘制多位LED 显示器动态扫描驱动电路图,针对工作原理进行参数估算;4、电路功能的检测和调试;5、设计答辩,完成设计报告。

(二)结构图(三)电路总体功能概述该电路的功能是通过控制数据选择器输入端的高低电平来使四个LED显示器可以显示0-9任意一个数字,实现动态扫描功能。

由振荡电路,控制电路,四位四选一数据选择器,一位LED译码驱动电路和四位LED显示电路组成。

首先用555定时器构成频率为1000赫兹多谐振荡器产生脉冲信号,再将信号传输到74构成的二位二进制触发器,使该触发器输出00,01,10,11。

将触发器的两输出端分别接到数据选择器153的S1,S0,将四个输入D0或D1D2D3信号传输到LED显示电路,使LED显示不同数字,将触发器的两输出端接到138的A1,A0(A2接0),再将138的输出Y0,Y1,Y2,Y3接到四个LED的共阴极,控制LED的显示状态,把74ls153的输出端与cc4511的四个输入端相连,把LED显示器的a,b,c,d,e,f,g与cc4511的输出端相连,这样便可以通过555定时器产生的脉冲控制四个LED的显示顺序,同时调整153的输入端的高低电位,这样便实现了对四个LED的显示控制,可随意现实0至9的数字。

振荡电路由555定时器构成的多谐振荡电路组成,有振荡电路提供脉冲,振荡周期T=Tpl+Tph=R1*C*ln2+(R1+R2)*C*ln2=0.001s,则其振荡频率为1000Hz,多谐振荡器在接通电源后无需外接触发信号就可以产生矩形脉冲或方波。

控制电路是一片74LS74构成的两位二进制触发器,它接收到控制电路的振荡脉冲,产生00,01,10,11的输出信号。

数据选择器由两片74LS153构成,其功能为四选一数据选择器,接收控制电路的输出信号,分别选择四个输入D0或D1或D2或D3信号传输到LED显示电路,使LED显示不同数字译码驱动电路由一片八选一的数据选择器74LS138组成,它接受控制电路输出的信号同时将自身的输出信号分别连接到4片LED的共阴极控制LED显示器的工作状态.显示电路由一片4511构成,其接收74LS153输出的信号分别使四个LED显示器显示8421BCD码所代表的十进制数。

八位数码管动态扫描案例原理与测试说明

“八位数码管动态扫描”案例原理与测试说明
1程序设计目标及程序运行效果说明
本程序是动态扫描所有的数码管,从左到右8个数码管分别显示1、2、3、4、5、6、7、8。

2程序相关电路及工作原理说明
2.1 LED数码管电路
2.2 LED数码管引脚定义
2.3 工作原理
P0口的8位输出分别控制1个LED数码管的7段和一个小数点;而P2.3经反相器U4C控制74HC138的使能信号E3,结合P2.0、P2.1、P2.2这3个位选控制信号确定8个LED数码管中的哪个被点亮;电阻R15~R22为限流电阻。

当段选为高、使能信号有效时,对应的LED管将会发光。

通过以一定频率扫描位选信号,修改段选信号进行数码管点亮一段时间,从而给人视觉上几个数码管几乎同
时显示的效果。

3测试方法
(1)用STC ISP默认设置,打开工程中的HEX并下载
(2)下载后观察现象为:从左到右8个数码管分别显示1、2、3、4、5、6、7、8。

(3)本案例无需辅助操作。

数码管的动态扫描显示


*/
/***************************************************************************/
/*********************************包含头文件********************************/
上图中上面三条就是所谓的位选信号线,下面八条就是所谓的段选信号线。 下图是四位共阳数码管显示原理实验的电路图:
基于以上电路图我们来了解一下什么是数码管的动态扫描显示: 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8 个显示笔划
"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM 增加位选通控制电路,位选通由各自独立 的I/O 线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形, 取决于单片机对位选通COM 端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形, 没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM 端,就使各个数码管轮流受控显示,这就是动 态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应, 尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪 烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O 端口,而且功耗更低。
根据这些说明可以总结出数码管动态扫描显示驱动程序的书写流程如下: 1、 送位选信号,选通其中的一位数码管。 2、 送段选信号,让选通的这位数码管显示一个数字。 3、 延时1-2ms。
4、 送另一个位选信号,选通另外一位数码管。

EDA实验二 八位七段数码管动态显示电路的设计

实验名称八位七段数码管动态显示电路的设计一、实验目的1、了解数码管的工作原理。

2、学习七段数码管显示译码器的设计。

3、学习Verilog的CASE语句及多层次设计方法。

二、实验原理七段数码管是电子开发过程中常用的输出显示设备。

在实验系统中使用的是两个四位一体、共阴极型七段数码管。

其单个静态数码管如下图4-1所示。

图4-1 静态七段数码管由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。

反之则不亮。

共阳极性的数码管与之相么。

四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。

八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。

三、实验内容本实验要求完成的任务是在时钟信号的作用下,通过输入的键值在数码管上显示相应的键值。

在实验中时,数字时钟选择1KHZ作为扫描时钟,用四个开关做为输入,当四个开关置为一个二进制数时,在数码管上显示其十六进制的值。

实验箱中的拨动开关与FPGA的接口电路,以及开关FPGA的管脚连接在实验一中都做了详细说明,这里不在赘述。

数码管显示模块的电路原理如图4-2所示,表4-1是其数码管的输入与FPGA的管脚连接表。

图4-2 数字时钟信号模块电路原理信号名称对应FPGA管脚名说明7SEG-A G6 七段码管A段输入信号7SEG-B G7 七段码管B段输入信号7SEG-C H3 七段码管C段输入信号7SEG-D H4 七段码管D段输入信号7SEG-E H5 七段码管E段输入信号7SEG-F H6 七段码管F段输入信号7SEG-G J4 七段码管G段输入信号7SEG-DP L8 七段码管dp段输入信号7SEG-SEL0 G5 七段码管位选输入信号7SEG-SEL1 G3 七段码管位选输入信号7SEG-SEL2 F4 七段码管位选输入信号表4-1 数码管与FPGA的管脚连接表四、实验步骤1、打开QUARTUSII软件,新建一个工程。

数码管动态扫描实验报告

数码管动态扫描实验报告数码管动态扫描实验报告引言:数码管是一种常见的显示器件,广泛应用于电子设备中。

动态扫描技术是一种常见的驱动数码管的方法。

本实验旨在通过动态扫描技术实现数码管的显示,并对其原理进行深入研究。

一、实验目的本实验的主要目的是掌握数码管的动态扫描原理,并通过实践验证其可行性。

具体目标如下:1. 理解数码管的基本工作原理;2. 熟悉动态扫描技术的实现方法;3. 掌握使用单片机驱动数码管的方法;4. 通过实验验证动态扫描技术的可行性。

二、实验器材与原理1. 实验器材:- 单片机开发板;- 4位共阳数码管;- 连接线。

2. 实验原理:数码管是由多个发光二极管组成的,每个发光二极管对应一个数字或符号。

共阳数码管的阳极连接在一起,而阴极分别与单片机的IO口相连。

动态扫描技术是通过快速切换数码管的显示,从而形成连续的显示效果。

具体原理如下:- 单片机通过IO口输出高电平或低电平控制数码管的显示;- 通过快速切换数码管的显示,使得人眼感觉到数码管同时显示多个数字。

三、实验步骤1. 连接电路:将4位共阳数码管的阳极分别连接到单片机的IO口,阴极连接到GND。

确保连接正确,避免短路或接反。

2. 编写程序:使用单片机开发板的编程软件,编写程序控制数码管的显示。

通过循环控制IO 口输出高低电平,实现动态扫描的效果。

3. 上传程序:将编写好的程序上传到单片机开发板中,确保程序能够正确运行。

4. 运行实验:将单片机开发板连接到电源,观察数码管的显示效果。

通过动态扫描技术,数码管会以一定的频率显示不同的数字。

四、实验结果与分析通过实验,我们成功实现了数码管的动态扫描显示。

数码管以一定的频率切换显示不同的数字,形成了连续的显示效果。

通过改变程序中的循环次数和延时时间,我们可以调整数码管显示的速度和亮度。

动态扫描技术的优点是可以通过少量IO口驱动多个数码管,节省了硬件资源。

同时,由于数码管的刷新速度较快,人眼无法察觉到闪烁的现象,使得显示效果更加平滑和稳定。

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

实验项目二:多位数码管动态扫描电路设计与调试
一、实验目的
1、掌握数码管动态扫描显示原理及实现方法。

2、掌握动态扫描显示电路驱动程序的编写方法。

二、实验电路
本实验电路如图1所示,所用元件清单如图2所示。

三、相关实验知识
LED数码管动态显示的基本做法在于从那时起轮流选通数码管的公共端,使得各数码管轮流导通,在选通相应数码管后,即在显示字段上得到显示字形码。

这种方式不但能提高数码管的发光效率,而且由于各个数码管的字段线是并联使用的,从而大大简化了硬件线路。

动态扫描显示接口是单片机系统中应用最为广泛的一种显示方式。

其接口电路是把所有显示器的8个笔画段A~DP同名端并联在一起,而每个显示器的公共极COM各自独立地受I/O线控制,CPU向字输出口送出字形码时,所有显示器由于同名端并连接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以就可以自行决定何时显示哪一位了。

而所谓动态扫描是指采用从分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。

在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描
的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

采用总路线驱动器74HC245提供LED数码管的段驱动,输出高电平时点亮相应段;采用集电极开路的BCD-十进制译码器/驱动器完成LED数码管位驱动,输出低电平时选通相应位。

P2口每个口线输出灌电流不足以驱动一个数码管显示器的位—公共极,所以通过集电极开路的BCD—十进制译码器/驱动器7445驱动,即节约P2口线,又增加驱动能力。

四、实验内容
1、打开ISIS 7 Professional,参照“二、实验电路”设计仿真电路原理图。

2、编写程序实现:
显示“8.8.8.8.8.8.8.8.”,即点亮显示器所有段,持续约500ms之后,显示器持续约1s;最后显示“HELLO—10”,保持。

五、实验要求
1、复习“LED数码显示器”有关内容,查阅学习通用集成电路74HC245、7445资料
和使用方法。

2、写出实验报告,内容包括:
(1)实验目的。

(2)实验电路组成及各单元描述。

(3)软件组成和主要模块流程图。

(4)写出详细的调试步骤,记录实验现象。

可通过uVision2 IDE提供的单步、断点、连续等调试功能查看实验电路和内部寄存器,存储器的变化情况。

(5)记录必要的实验数据。

3、提交电子文件给老师验收,包括实验电路、对应的uVision2 IDE项目。

六、思考与讨论
1、能否像PC那样,在内存中建立一个显示缓冲区,通过修改缓冲区达到修改显示器
的内容?这样的缓冲区需要几个字节?这样做有什么优点,试编写程序实现。

相关文档
最新文档