实验五 LED动态扫描显示实验
VHDL编写LED动态扫描控制器

《EDA技术》课程实验报告
学生姓名:郑月庭
所在班级:电信1001
指导教师:高金定老师
记分及评价:
项目满分10分
得分
一、实验名称
实验7:LED动态扫描控制器的设计
二、任务及要求
1、新建原理图文件,调用以前的电子钟模块、LED显示译码器模块及其他计数器模块、译码器模块等,实现电子钟时、分、秒的结果在模式B数码管上以动态扫描的方式显示出来。
2、设计完成后生成一个元件,以供更高层次的设计调用。
3、实验箱上选择模式B进行验证,目标芯片为ACEX1K系列EP1K30TC144-3。
数码管为共阴极,低电平选中。
模式B不提供电平键,电子钟等模块的使能、清零信号等直接接电源或地(正常工作)。
电 子
钟
六进制计数器
3-6译码器
六选一数据选择器
7段LED 显示译码器
1Hz
时钟脉冲
3位
4位
7位段数据,接6个数码管公共的数据线 a,b,c,d,e,f,g
时钟输出6组4位二进制数据
6位位选信号,分别接数码管公共端,低电平选中
三、实验程序
四、仿真及结果分析
扫描时钟 >300Hz
五、硬件验证
1、选择模式:选择模式B
2、引脚锁定情况表:
六、小结
经过这次试验,我的体会是所以的复杂电路其实是一些简单电路的组合,所以我们学知识也是从基本学起。
只有把基础打牢了,才有可能设计出复杂的电路图,再就是设计一定要有丰富的理论知识。
没有理论知识,一切都是空谈。
数码管动态扫描显示实验

实验三定时器和中断实验一、实验目的1、学习51单片机内部定时器的使用方法。
2、掌握中断处理程序的方法。
3、掌握数码管与单片机的连接方法和简单显示编程方法。
4、学习和理解数码管动态扫描的工作原理。
二、实验内容1、使用定时器T0,定时1秒,控制P1口发光管循环点亮。
2、使用定时器T0,定时1秒,控制1个数码管循环显示数字0~9,每秒钟数字加一。
3、使用软件定时1秒,控制2个数码管循环显示秒数0~59,每秒钟数字加一。
4、使用定时器T0,定时1秒,控制2个数码管循环显示秒数0~59,每秒钟数字加一。
三、实验电路图四、实验说明1、数码管的基本概念(1)段码数码管中的每一段相当于一个发光二极管,8段数码管则具有8个发光二极管。
本次实验使用的是共阴数码管,公共端是1、6,公共端置0,则某段选线置1相应的段就亮。
公共端1控制左面的数码管;公共端6控制右面的数码管。
正面看数码管的引脚、段选线和数据线的对应关系为:图1 数码管封装图图2 数据线与数码管管脚连接关系段码是指在数码管显示某一数字或字符时,在数码管各段所对应的引脚上所加的高低电平按顺序排列所组成的一个数字,它与数码管的类型(共阴、共阳)(2)位码位码也叫位选,用于选中某一位数码管。
在实验图中要使第一个数码管显示数据,应在公共端1上加低电平,即使P2.7口为0,而公共端6上加高电平,即使P2.6口为1。
位码与段码一样和硬件连接有关。
(3)拉电流与灌电流单片机的I/O 口与其他电路连接时,I/O 电流的流向有两种情况:一种是当该I/O 口为高电平时,电流从单片机往外流,称作拉电流;另一种是该I/O 口为低电平时,电流往单片机内流,称为灌电流。
一般I/O 的灌电流负载能力远大于拉电流负载能力,对于一般的51 单片机而言,拉电流最大4mA,灌电流为20mA。
一般在数码管显示电路中采用灌电流方式(用共阳数码管),可以得到更高的亮度。
本实验电路中采用拉电流方式(用共阴数码管)。
Lab5 七段数码管显示设计

1
1
1
0
1
1
1
A
11
1
0
1
1
0
0
1
1
1
1
1
b
12
1
1
0
0
1
0
0
1
1
1
0
C
13
1
1
0
1
0
1
1
1
1
0
1
d
14
1
1
1
0
1
0
0
1
1
1
1
E
15
1
1
1
1
0
0
0
0
0
0
0 灭灯
2. 动态扫描显示原理
2
北京中教仪装备技术有限公司
数码管动态扫描显示,是将所用数码管的相同段(a~g 和 p)并联在一起,通过选位通 信号分时控制各个数码管的公共端,循环依次点亮各个数码管。当切换速度足够快时,由于 人眼的“视觉暂留”现象,视觉效果将是六个数码管同时显示,选通信号的时序关系如图 5-4 所示。
四、 实验内容
根据七段数码管的显示原理,用 VHDL 语言编写七段数码显示管的源程序。 要求设计一个带复位的七段数码管循环扫描程序,本程序需要着重实现两部分: 1. 显示数据的设置:程序设定 4 位数码管从左至右分别显示 1、2、3、4; 2. 动态扫描:实现动态扫描时序,这部分是难点,也是重点。参看动态扫描显示原理,
图 5-1 7 段数码管显示原理
该四位数码管与 FPGA 之间通过 8 位拨码开关(JP1)进行连接,当 DIP 开关全部拨到 上方时(板上标示为:7SEGLED),FPGA 的相应 IO 引脚和四位 7 段数码管连接,7 段数码
LED数码管动态扫描显示实验

单片机实验五LED数码管动态扫描显示实验一.实验目的掌握LED数码管动态扫描显示的原理和编程实现方法。
二.实验原理LED数码管动态扫描显示即各数码管循环轮流显示,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁现象,这种显示需要一个接口完成字形码的输出(段码),另一接口完成各数码管的点亮(位选)。
三.实验内容及要求1.对于显示的字形码数据此实验采用查表的方法来完成。
2.此实验要求是在八个数码管中显示学生的班级号(如11040601)或日历年月日(如2014 05 20)。
四.实验电路图中,SEG1为八个封装在一起的共阴数码管,RP1为排阻,其余同实验三,导线以总线形式完成。
五.实验步骤1.在KEIL4中编写、调试、编译程序。
2.在PRTUSE中设计电路,加载HEX文件运行。
3.(1)将单片机实验箱通过USB口与PC机连接;(2)用杜邦线(8根线)将实验箱上的JP8与J16连接(去掉原J15和J16之间的短路跳线帽),JP10与J12连接。
(3)打开实验箱电源开关POWER;(4)打开STC自动下载器,将步骤1中创建的*.HEX文件下载到单片机,完成后观测LED数码管显示内容。
六.实验参考程序(请同学自己编写实验程序)七.思考题1.某同学在实验时数码管闪烁,可能的原因是什么?2.为节省I/O口,可采用7段译码器(比如CD4511,74LS 等)和3-8译码器74LS138,如何连接电路并编程。
LDE数码管动态试验ORG 0000HAJMP MAINORG 0100HMAIN: SP,#60HMOV 30H,#02HMOV 31H,#00HMOV 32H,#01HMOV 33H,#04HMOV 34H,#00HMOV 35H,#05HMOV 36H,#02HMOV 37H,#00HSTART:MOV R0,#30HMOV R3,#0FEHNEXT: MOV P1,#0FFHMOV A,@R0MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,AMOV P1,R3LCALL DLY2MSINC R0JNB P1.7,STRATMOV A,R3RL AMOV R3,AAJMP NEXTDLY2MS:MOV R6,#2DL2: MOV R7,#250DL1:NOPNOPDJNZ R7,DL1DJNZ R6,DL2RETTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END。
动态显示学号

实验五学号的显示一、实验目的利用数码管动态扫描显示的原理编写程序,实现自己的学号的显示。
二、实验原理和内容实验内容:1在SmartSOPC实验箱上完成了LED数码管的动态显示“40710840”八个数字。
2放慢扫描速度演示动态显示的原理过程。
实验原理:数码管的八个段:a,b,c,d,e,f,g,h(h是小数点)都分别连接到SEG0-SEG7,8个数码管分别由八个选通信号DIG0-DIG7来选择,被选通的数码管显示数据,其余关闭。
三、实验步骤1启动QuartusⅡ建立一个空白工程,然后命名为dled.qpf。
2新建Verilog HDL源程序文件scan_led.v,输入程序代码并保存,进行综合编译知道成功为止。
3从设计文件创建模块,有scan_led.v生成名为scan_led.bsf 的模块符号文件。
4将光盘中EDA_Component目录下的int_div.bsf和int_div.v 拷贝到工程目录。
5添加常量兆功能模块。
6新建图形设计文件(顶层模块)命名为dled.bdf并保存。
7选择目标器件并对相应的引脚进行锁定。
8将dled.bdf设置为顶层实体。
对该工程文件进行全程编译处理,直到编译成功为止。
9连接硬件,下载程序。
10观察LED数码管上的数字是否为“40710840”;然后修改分频模块的参数为:F_DIV为24000000,F_DIV_WIDTH为25,再重新编译下载,观察这次LED数码管上显示的数据是否动起来了。
四、程序代码:module dec17s(clk,dig,seg);inputclk;output[7:0]seg;output[7:0]dig;reg [7:0]seg;reg [7:0]dig;reg[3:0]m;always@(posedgeclk)beginif (m==4'hf)m<=0;else m<=m+1;case(m)4'h0:begin dig<=8'b11111110; seg<=8'h99;end4'h1:begin dig<=8'b11111101; seg<=8'hc0;end4'h2:begin dig<=8'b11111011; seg<=8'hf8;end4'h3:begin dig<=8'b11110111; seg<=8'hf9;end4'h4:begin dig<=8'b11101111; seg<=8'hc0;end4'h5:begin dig<=8'b11011111; seg<=8'hf9;end4'h6:begin dig<=8'b10111111; seg<=8'ha4;end4'h7:begin dig<=8'b01111111; seg<=8'hf9;end default:seg<=8'hc0;endcaseendendmodule五、实验数据与结果通过同学跟老师的指导,再经过几次的调试,终于在数码管上显示出了自己的学号:40710121六、实验总结通过数码管编译显示自己的学号后8位,学会数码管动显示的原理,以及如何编写程序来实现数码管的静态与动态显。
8位8段LED数码管动态扫描显示

8位8段LED数码管动态扫描显示
项目名称:8位8段LED数码管动态扫描显示班级:09电二姓名:解健学号:09020313
一.实验目的
1.掌握数码管动态扫描显示原理及实现方法。
2.掌握动态扫描显示电路驱动程序的编写方法。
二.实验电路
第一步:先在Proteu软件中设计仿真电路原理图。
第四步:最后观察设计的电路图是否能得到预想的效果,若不能,进行检查,找到毛病且纠正。
流程图
开始灭显示器I=0延时Counter=0Counter=0选择段选择段点亮所有位按数值点亮位延时延时
Counter++YCounter<8NI++YNNCounter++YCounter<8N停止Y结束I<30
实验现象:
显示器点亮所有段,持续约1,然后灭显示器,持续2,最后显示“hello-93”,保持。
附:程序
#include#include#defineTRUE1#definedataPortP0#defineledConPortP 2
{unignedchari,counter=0;
for(i=0;i<30;i++){
voiddelay_5u(void){_nop_();_nop_();}
voiddelay_50u(void){unignedchari;for(i=0;i<4;i++){delay_5u() ;}}
voiddelay_100u(void){delay_50u();delay_50u();}
for(j=0;j<10;j++)delay_100u();ucM--;}}。
LED动态扫描显示实验

51单片机实验报告二名称:LED动态扫描显示目的:掌握数码LED的动态扫描显示原理;学习延时子程序的编写和使用。
原理:为了节省输出端口数,数码LED显示一般采用动态扫描的方法,将所有数码LED的共阴极接在一个位型输出口上,将所有数码管的相同段接在一起作为字型口,软件控制每个数码LED轮流显示,任一时刻只一个数码亮,但扫描速度足够快时,视觉效果是8个数码LED同时亮。
电路图:流程图:汇编程序:ORG 0000HAJMP MAINORG 0080HMAIN:CLR P2.0 ;选中第一个数码管MOV P0, #3FH ;显示0LCALL DELAY ;调用延时MOV P0, #0FFH ;关显示SETB P2.0CLR P2.1 ;选中第二个数码管MOV P0, #06H ;显示1LCALL DELAYMOV P0, #0FFHSETB P2.1CLR P2.2 ;选中第三个数码管MOV P0, #5BH ;显示2LCALL DELAYMOV P0, #0FFHSETB P2.2CLR P2.3 ;选中第四个数码管MOV P0, #4FH ;显示3LCALL DELAYMOV P0, #0FFHSETB P2.3CLR P2.4 ;选中第五个数码管MOV P0, #66H ;显示4LCALL DELAYMOV P0, #0FFHSETB P2.4CLR P2.5 ;选中第六个数码管MOV P0, #6DH ;显示5LCALL DELAYMOV P0, #0FFHSETB P2.5CLR P2.6 ;选中第七个数码管MOV P0, #7DH ; 显示6LCALL DELAYMOV P0, #0FFHSETB P2.6CLR P2.7 ;选中第八个数码管MOV P0, #07H ; 显示7LCALL DELAYSETB P2.7MOV P0, #0FFHAJMP MAIN ;重新开始DELAY: ;延时子程序MOV R7 ,#2D1: MOV R6, #25D2: DJNZ R6, D2DJNZ R7, D1RETEND现象及结论:8只数码管循环滚动显示单个数字0—7。
键盘扫描及动态LED 显示实验报告

//P0=num;
for(i=0;i<16;i++){
if(jianpan==bianma[i]){//等于判断一定是双等于号
num=i;
break;
}
}
send_byte(0xa1);
write7279(0xc8,num);
while(key==0);
//***变量及I/O口定义***
unsigned char digit[5];
unsigned char key_number, j, k,mk; //mk为按键次数计数值
unsigned int tmr;
unsigned long wait_cnter;
sbit cs=P1^0;// cs at P1.0
sbit clk=P1^1;// clk连接于P1.1
sbit dat=P1^2;// dat连接于P1.2
sbit key=P1^3;// key连接于P1.3
void write7279(unsigned char cmd, unsigned char dta)
{
send_byte (cmd);
}
dat=0;
}
unsigned char receive_byte(void)
{
unsigned char i, in_byte;
dat=1;// set to input mode
long_delay();
for (i=0;i<8;i++)//分8次读入数据高位在前
{
clk=1;
short_delay();
cs=0;//芯片使能
动态数码显示实验报告

动态数码显示实验报告动态数码显示实验报告概述:动态数码显示是一种通过数字技术实现的图像和视频显示方式。
它通过不断刷新像素点的颜色和亮度来呈现出连续变化的图像和视频内容。
本实验旨在探究动态数码显示的原理、应用和发展前景。
一、实验目的通过实验了解动态数码显示的原理和工作方式,探究其在电子产品、广告宣传等领域的应用,并展望其未来的发展前景。
二、实验方法1. 实验设备准备:电脑、动态数码显示屏、视频播放软件。
2. 实验步骤:a. 连接电脑和动态数码显示屏,确保设备正常工作。
b. 打开视频播放软件,选择一个动态视频文件。
c. 将视频文件播放到动态数码显示屏上,观察显示效果。
三、实验结果通过实验观察,我们可以看到动态数码显示屏能够清晰、流畅地显示视频内容。
它的刷新率高,色彩鲜艳,能够呈现出真实的图像和视频效果。
四、动态数码显示的原理动态数码显示的原理是利用电子元件的刷新速度和像素点的变化来实现图像和视频的显示。
它采用了逐行扫描的方式,通过不断刷新像素点的颜色和亮度来呈现出连续变化的图像和视频内容。
五、动态数码显示的应用1. 电子产品:动态数码显示屏广泛应用于手机、电视、电脑等电子产品中。
它能够提供更加真实、清晰的图像和视频显示效果,提升用户体验。
2. 广告宣传:动态数码显示屏在广告宣传中也得到了广泛应用。
它能够吸引人们的注意力,传递更加生动、有趣的广告内容,提升宣传效果。
3. 艺术创作:动态数码显示技术为艺术创作提供了新的可能性。
艺术家可以利用动态数码显示屏展示他们的作品,实现更加生动、多样的艺术效果。
六、动态数码显示的发展前景随着科技的不断进步,动态数码显示技术也在不断发展。
未来,动态数码显示屏将更加轻薄、高清、节能,显示效果将更加逼真。
它将在电子产品、广告宣传、教育培训等领域发挥更加重要的作用。
七、结论通过本次实验,我们了解了动态数码显示的原理、应用和发展前景。
它是一种高效、生动的图像和视频显示方式,将在各个领域发挥重要作用。
LED动态扫描控制器的设计

《EDA技术》课程实验报告学生姓名:黄红玉所在班级:电信100227指导教师:高金定老师记分及评价:一、实验名称实验7:LED动态扫描控制器的设计二、任务及要求【基本部分】10分1、新建原理图文件,调用以前的电子钟模块、LED显示译码器模块及其他计数器模块、译码器模块等,实现电子钟时、分、秒的结果在模式B数码管上以动态扫描的方式显示出来。
2、设计完成后生成一个元件,以供更高层次的设计调用。
3、实验箱上选择模式B进行验证,目标芯片为ACEX1K系列EP1K30TC144-3。
【提示】数码管为共阴极,低电平选中。
模式B不提供电平键,电子钟等模块的使能、清零信号等直接接电源或地(正常工作)。
位段数据,接个数码管公 组4位二进制数据位选信三、 实验程序六进制计数器程序: library ieee;use ieee.std_logic_1164.all; entity CNT6 isport(clk: in std_logic;en: in std_logic; clr: in std_logic;gw: buffer integer range 0 to 5);end entity CNT6;architecture ART of CNT6 is beginprocess(clk,en,clr) beginif (clr='1') thengw<=0;elsif (clk'event and clk ='1' ) then gw<=gw+1;if (en ='1') thenif gw=5 thengw<=0;end if;end if;end if;end process;end;六选一数据选择器:library ieee;use ieee.std_logic_1164.all;entity mux61a isport(a,b,c,d,e,f:in std_logic_vector(3 downto 0);s1,s2,s3:in std_logic;z:out std_logic_vector(3 downto 0));end entity mux61a;architecture art of mux61a issignal s:std_logic_vector(2 downto 0);begins<=s1&s2&s3;process(s,a,b,c,d,e,f)begincase s iswhen "000" =>z<=a;when "001" =>z<=b;when "010" =>z<=c;when "011" =>z<=d;when "100" =>z<=e;when "101" =>z<=f;when others =>z<=null;end case;end process;end architecture art;四、仿真及结果分析时钟输出6组4位二进制数据,时钟脉冲频率为1Hz,六选一的数据选择器选择一数据输出,六选一的数据选择器选择这是用来选择外界输入的数据,7段LED显示译码器,7位段数据,接6个数码管公共的数据线a,b,c,d,e,f,g。
动态扫描数码显示实验

实验六一、实验目的动态扫描数码显示实验1.掌握数字、字符转换成显示段码的软件译码方法 2.动态显示的原理和相关程序的编写 二、实验说明 动态显示,也称扫描显示。
显示器由 6 个共阴极 LED 数码管构成。
单片机的 P1 口输出 显示段码,经由一片 74LS245 驱动输出给 LED 管,由 P0 口输出位码,经由 74LS06 输出给 LED 管。
三、实验电路图 本实验用到 80C51 MCU 模块(C 区) ,动态数码显示模块(A5 区) 。
80C51 MCU 模块电路 原理参考附录三,动态数码显示电路原理参考图 9.1。
图 9.1 动态数码显示电路 四、实验步骤 1.用 8P 数据线分别连接 80C51 MCU 模块的 JD0C(P0 口) 、JD1C(P1 口)到动态数码显 示模块的 JD2A5、JD1A5。
2.用串行数据通信线连接计算机与仿真器, 把仿真器插到 80C51 MCU 模块的 40P 锁紧插 座中,请注意仿真器的方向:缺口朝上。
3.将 80C51 MCU 模块的电源扭子开关 S1C 拨到上端,将动态数码显示模块的电源短路帽 J1A5 打在上端。
将直流稳压电源模块的直流控制开关 S1G1 打到 ON, 本实验所用到的相关模 块的电源指示灯 VCC 亮。
4.打开 Keil uVision2 仿真软件,首先建立本实验的项目文件,接着添加“TH9_动态显 示.ASM”源程序,进行编译,编译无误后,全速运行程序。
5.实验现象:动态数码显示模块显示“168168” 。
6.也可以把源程序编译成可执行文件, 把可执行文件用 ISP 烧录器烧录到 89S52 芯片中 运行(注意:芯片缺口朝上)(ISP 烧录器的使用查看附录二) 。
五、实验源程序 DBUF EQU 30HTEMP ORG ORGEQU 40H 0000H 0100HLJMP DISP DISP: MOV 30H,#8 MOV 31H,#6 MOV 32H,#1 MOV 33H,#8 MOV 34H,#6 MOV 35H,#1 MOV R0, #DBUF MOV R1, MOV R2, #TEMP #6MOV DPTR, #SEGTAB DP00: MOV A,@R0 MOVC A, @ A+DPTR MOV @R1, INC R1 INC R0 DJNZ R2, DP00 DISP0: MOV R0,#TEMP MOV R1,#6 MOV R2,#1 DP01: MOV A,@R0 MOV MOV MOV ACALL MOV RL MOV INC A R2,A R0 P1, A A,R2 P0,A DELAY A,R2 ADJNZ R1,DP01 SJMP DISP0 SEGTAB:DB 3FH,06H,5BH DB 4FH,66H,6DH DB 7DH,07H,7FH DB 6FH,77H,7CH DB 58H,5EH,7BH DB 71H,00H,40H DELAY: MOV AA1: AA: MOV NOP R4,#03H R5,#0FFH ; 0,1,2 ; 3,4,5 ; 6,7,8, ; 9,A,B ; C,D,E ; F, ,-NOP DJNZ DJNZ RET END 六、思考题 1.如何修改程序,实现六位 LED 数码管只显示其中的两位? R5,AA R4,AA1仿真实验二 题目 : 编写汇编程序实现单片机控制的 题目 : 编写汇编程序实现单片机控制的 停止,接着单片机控制 的黄色 以 次停止。
计控实验报告LED动态显示

计控实验报告LED动态显示第一篇:计控实验报告LED动态显示实验 LED动态显示主要教学目标:掌握LED动态显示的方法。
教学的方法及教学手段:讲授法,讨论法,练习法,实验法教学重点及难点:LED动态显示实验内容1.LED用动态显示123456;2.时间切换开关K1,可切换动态扫描时间间隔,1ms和50ms。
(一)作法微型机定时地对显示器件扫描。
显示器件分时工作,每次只能有一个器件显示。
1.LED用动态显示123456;2.时间切换开关K1,可切换动态扫描时间间隔,1ms和50ms。
(二)1、8155 的PA口输出显示码,PB口用来输出位选码。
2、74LS07为6 位驱动器,为LED提供一定的驱动电流3、8155的PB 口经75452缓冲器/驱动器反向后,作为位控信号。
4、75452内部包括两个缓冲器/驱动器,它们各有两个输入端。
(三)显示原理 1、8155初始化,建立显示缓冲区为 DISBUF, 存放待显示数据。
2、用软件译码法求出待显示的数对应的七段显示码,由PA口输出,并经过74LS07驱动后送到各显示器3、由PB口输出位选码。
各位从左至右依次显示,每个数码管显示1ms。
显示完最后一位数后,再重复上述过程,(四)电路图(五)参考程序#include #include #include #define uint unsigned int #define uchar unsigned char /*8155控制字和PA,PB 口地址定义*/ #define CON_8155 XBYTE[0x7F00] #define PA_8155 XBYTE[0x7F01] #define PB_8155 XBYTE[0x7F02] //数码管字型定义uchar LEDDATA[]={0x3F,/*0*/0x06, /*1*/0x5B, /*2*/0x4F, /*3*/0x66, /*4*/0x6D, /*5*/0x7D, /*6*/0x07, /*7*/0x7F, /*8*/0x6F, /*9*/0x77, /*A*/0x7C, /*b*/0x39,/*C*/0x5E,0x79,0x71,};/*d*/ /*E*/ /*F*/ //动态扫描时间间隔50ms标志位bit g_delay50ms = 0;//函数原型声明void Delay1ms(void);void Delay50ms(void);void main(){uchar i, selectLED;IT0 = 1;EX0 = 1;EA = 1;CON_8155 = 0x03;selectLED = 0x20;while(1){for(i=1;i<7;i++){PA_8155 = LEDDATA[i];PB_8155 = selectLED;//从8155 A口输出显示码//PA口、PB口基本输入输出 //LED位选,从左到右扫描//外部中断0,边沿触发//从8155 B口输出位选码//准备显示下一位selectLED = _cror_(selectLED, 1);if(selectLED == 0x80){ }if(g_delay50ms){ } else { } PB_8155=0x00;//消隐 Delay1ms();Delay50ms();selectLED = 0x20;//动态扫描时间间隔50ms//动态扫描时间间隔1ms} } }void Int0(void)interrupt 0 { } void Delay1ms(void){ uchar i, j, k;for(j=142;j>0;j--)for(i=1;i>0;i--)} void Delay50ms(void){unsigned char a,b;for(b=173;b>0;b--)for(a=143;a>0;a--);}for(k=2;k>0;k--);g_delay50ms =!g_delay50ms;第二篇:六位7段LED显示器动态显示任务:利用8155的PA口和PB口实现6位7段LED显示器动态显示(硬件电路参见6XLED_8155.DSN)。
(完整版)LED数码管显示实验

® P L 信息工程学院实验报告课程名称:单片机原理及接口 实验项目名称:LED 数码管显示实验 实验时间:2016年3月11 班级:通信141姓名:学号:一、 实验目的:熟悉keil 仿真软件、proteus 仿真软件、软件仿真板的使用 多位LED 数码管的电路结构、与单片机的连接方法及其应用原理。
学习proteus 构建LED 数码管显示电路的方法,掌握C51中单片机控制LED 数码管动态显示的原理与编程方法。
二、 实验设备与器件硬件:微机、单片机仿真器、单片机实验板、连线若干软件:KEIL C51单片机仿真调试软件,proteus 系列仿真调试软件三、 实验原理LED 显示器是由发光二极管显示字段的显示器件。
在单片机应用系统中通常使用的是七 段LED 这种显示器有共阴极与共阳极两种共阴极LED 显示器的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发 光二极管则点亮;共阳极LED 显示器的发光二极管阳极并接。
七段LED 数码管与单片机连接时,只要将一个 8位并行输出口与显示器的发光二极管引成绩:日 ___________________指导老师(签名):了解并熟悉一位数码管与1 1 1 1 110 98 7 6/d / * dp 1 2 34 5I' 2 1 11(c)管脚配置(b)共阳极 g f a be d c dp脚相连即可。
8位并行输出口输出不同的字节数据即可获得不同的数字或字符,通常将控制 发光二极管的8位字节数据称为段选码。
多位七段LED 数码管与单片机连接时将所有 LED 的段选线并联在一起,由一个八位I / O 口控制,而位选线分别由相应的I /O 口线控制。
如:8位LED 动态显示电路只需要两个八位 I /O 口。
其中一个控制段选码,另一个控制位选。
由于所有位的段选码皆由一个I /0控制,因此,在每个瞬间,多位LED 只可能显示相同 的字符。
要想每位显示不同的字符,必须采用动态扫描显示方式。
数码管动态扫描显示实验综述

实验三定时器和中断实验一、实验目的1、学习51单片机内部定时器的使用方法。
2、掌握中断处理程序的方法。
3、掌握数码管与单片机的连接方法和简单显示编程方法。
4、学习和理解数码管动态扫描的工作原理。
二、实验内容1、使用定时器T0,定时1秒,控制P1口发光管循环点亮。
2、使用定时器T0,定时1秒,控制1个数码管循环显示数字0~9,每秒钟数字加一。
3、使用软件定时1秒,控制2个数码管循环显示秒数0~59,每秒钟数字加一。
4、使用定时器T0,定时1秒,控制2个数码管循环显示秒数0~59,每秒钟数字加一。
三、实验电路图四、实验说明1、数码管的基本概念(1)段码数码管中的每一段相当于一个发光二极管,8段数码管则具有8个发光二极管。
本次实验使用的是共阴数码管,公共端是1、6,公共端置0,则某段选线置1相应的段就亮。
公共端1控制左面的数码管;公共端6控制右面的数码管。
正面看数码管的引脚、段选线和数据线的对应关系为:图1 数码管封装图图2 数据线与数码管管脚连接关系段码是指在数码管显示某一数字或字符时,在数码管各段所对应的引脚上所加的高低电平按顺序排列所组成的一个数字,它与数码管的类型(共阴、共阳)(2)位码位码也叫位选,用于选中某一位数码管。
在实验图中要使第一个数码管显示数据,应在公共端1上加低电平,即使P2.7口为0,而公共端6上加高电平,即使P2.6口为1。
位码与段码一样和硬件连接有关。
(3)拉电流与灌电流单片机的I/O 口与其他电路连接时,I/O 电流的流向有两种情况:一种是当该I/O 口为高电平时,电流从单片机往外流,称作拉电流;另一种是该I/O 口为低电平时,电流往单片机内流,称为灌电流。
一般I/O 的灌电流负载能力远大于拉电流负载能力,对于一般的51 单片机而言,拉电流最大4mA,灌电流为20mA。
一般在数码管显示电路中采用灌电流方式(用共阳数码管),可以得到更高的亮度。
本实验电路中采用拉电流方式(用共阴数码管)。
8位动态LED数码管显示实验——【全国大学生电子设计大赛】

8位动态LED数码管显示实验2008-03-18 18:048.1 实物图与原理图本实验仪配置带8位动态扫描显示模块一个。
实物图如下:为减少IO的使用,我们采用串入并出芯片CD4094来扩展了IO 口,即采用3个IO来实现数据的传输。
原理图如下:所以,我们占用3个IO来传输数据,8个IO来进行8个LED数码管的位选。
在本实验仪中链接管教分布如下:STK-----P2.5DAT-----P2.6CLK-----P2.7B0、B1、B2、B3、B4、B5、B6、B7接P0口(P0.0 P0.1 P0.2 P0.3 P0.4 P0.5P0.6 P0.7)由于上一节已经讲述了CD4094驱动一位LED数码管的问题,这里我们讲如何来扫描8位数码管。
8.2 LED动态显示原理根据原理图管脚连接,我们知道P0口控制了8个LED数码管的位选中,所以如果想让8个数码管都亮起来,我们可以逐位扫描8位数码管。
1动态显示原理:原理上同一时刻只有一位LED是点亮的,但只要扫描的频率足够高(一般大于25Hz),由于人眼的视觉暂留特性,直观上感觉却是连续点亮的,这就是常说的动态扫描显示。
动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。
如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,所以一般均取几个ms左右为宜。
8.3 DG3000 动态显示头文件display_s.h----------------------------------------------------------程序作用:显示头文件display_s.h----------------------------------------------------------#ifndef _display_#define _display_#include <intrins.h>sbit SDA=P2^6; 定义显示管脚sbit CLK=P2^7;unsigned char data display_bit;unsigned char codeled[20]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x89,0x8C};2旗开得胜定义段码延时程序void delay(unsigned int k){ unsigned int i,j;for(i=0;i<k;i++)for(j=0;j<100;j++);}数据传输void send(unsigned char a){unsigned char i;for(i=0;i<8;i++){if(_crol_(a,i)&0x80)SDA=1;elseSDA=0;CLK=0;CLK=1;}}3显示程序8位LED数码管扫描void display(unsigned char display_buffer[8]){unsigned char i,k;display_bit=0xfe;for(i=0;i<8;i++){k=led[display_buffer[i]];send(k);P0=display_bit;delay(0x01);P0=0xff;display_bit=_crol_(display_bit,1);}display_bit=0xfe;8.4 8位数码管动态显示01234567(C51程序)----------------------------------------------------------程序作用:动态扫描显示01234567----------------------------------------------------------#include<REG52.h>#include<display_s.h> 调用显示头文件4main(){unsigned chara[8]={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7};显示01234567 while(1){display(a); 显示数据}}8.5 8位数码管动态显示01234567(汇编);----------------------------------------------------------;程序作用:8位数码管动态显示01234567(汇编);----------------------------------------------------------;定义变量DBUF DATA 40H ;显示缓冲区首址SP_BT DATA 60H ;堆栈指针初值; LED 位选LED_CS1 BIT P0.0LED_CS2 BIT P0.1LED_CS3 BIT P0.2LED_CS4 BIT P0.35旗开得胜LED_CS5 BIT P0.4LED_CS6 BIT P0.5LED_CS7 BIT P0.6LED_CS8 BIT P0.7;4094接口SDA_4094 BIT P2^6CLK_4094 BIT P2^7ORG 0000HAJMP MAIN;-------------------------------ORG 0030HMAIN: MOV SP,#60HMOV R0,#0FFH;单元清零RES1: MOV R0,#0DJNZ R0,RES1MOV DBUF,#00H;显示数据MOV DBUF+1,#01HMOV DBUF+2,#02HMOV DBUF+3,#03HMOV DBUF+4,#04H6旗开得胜MOV DBUF+5,#05HMOV DBUF+6,#06HMOV DBUF+7,#07HSAMP1:LCALL DIR ;调用显示SJMP SAMP1;------------------------------------------------------;显示数据;-------------------------------------------------------DIR:;显示程序MOV DPTR,#TABLEMOV A,DBUFMOVC A,A+DPTRACALL DISP_da ;送段码输出CLR LED_CS1 ;选通第1位数码管LCALL DELAY_4094SETB LED_CS1 ;关闭显示MOV A,DBUF+1MOVC A,A+DPTRANL A,#7FH;加小数点7ACALL DISP_da ;送段码输出CLR LED_CS2;选通第1位数码管LCALL DELAY_4094SETB LED_CS2;关闭显示MOV A,DBUF+2MOVC A,A+DPTRACALL DISP_da ;送段码输出CLR LED_CS3 ;选通第1位数码管LCALL DELAY_4094SETB LED_CS3 ;关闭显示MOV A,DBUF+3MOVC A,A+DPTRACALL DISP_da ;送段码输出CLR LED_CS4;选通第1位数码管LCALL DELAY_4094SETB LED_CS4;关闭显示MOV A,DBUF+4MOVC A,A+DPTRACALL DISP_da ;送段码输出CLR LED_CS5 ;选通第1位数码管LCALL DELAY_40948SETB LED_CS5 ;关闭显示MOV A,DBUF+5MOVC A,A+DPTRANL A,#7FH;加小数点ACALL DISP_da ;送段码输出CLR LED_CS6;选通第1位数码管LCALL DELAY_4094SETB LED_CS6;关闭显示MOV A,DBUF+6MOVC A,A+DPTRACALL DISP_da ;送段码输出CLR LED_CS7 ;选通第1位数码管LCALL DELAY_4094SETB LED_CS7 ;关闭显示MOV A,DBUF+7MOVC A,A+DPTRACALL DISP_da ;送段码输出CLR LED_CS8;选通第1位数码管LCALL DELAY_4094SETB LED_CS8;关闭显示;-------------------------------------9RETTABLE: DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0~9DB 88H,83H,0C6H,0A1H,86H,8EH ;A~F;-------------------------延时子程序---------------------------------DELAY_4094: MOV R4,#2 ;延时程序3,精确延时1000微秒D_4094:MOV R5,#248DJNZ R5,$DJNZ R4,D_4094RETDISP_DA:MOV R3,#08HDUP: RLC AMOV SDA_4094,CCLR CLK_4094SETB CLK_4094DJNZ R3,DUPRETEND10。
动态扫描显示电路设计

实验七、动态扫描显示电路设计(1)实验目的:学习动态扫描显示电路的设计。
(2)实验原理:图1是8位数码扫描显示电路,其中每个数码管的8个段(A、B、C、D、E、F、G、DP)都分别连在一起,8个数码管分别由3个选通信号LI0、LI1、LI2经过译码器得到的8个信号来选择。
当LI2LI1LI0=”000”时L1被选通显示数据,其余的关闭;当LI2LI1LI0=”001”时L2被选通显示数据,其余的关闭。
通过LI2LI1LI0的动态变化到达多位数字的显示。
图1 8位数码扫描显示电路(3)实验内容:在实验三模为60的8421BCD码加1计数器的基础上,采用动态扫描显示计数结果。
(4)附加题:用6个数码管显示数字钟。
(5)思考题:动态扫描显示的频率大致范围是多少?library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity bcd60 isport(clk,rst_n:in std_logic;ql,qh:out std_logic_vector(3 downto 0);cout: out std_logic;we1,we2: out std_logic :='0';LED7S :out std_logic_vector(7 downto 0));end;architecture rtl of bcd60 issignal cnt1hz :std_logic_vector(24 downto 0);signal clk1hz :std_logic;signal cnt20hz: std_logic_vector(24 downto 0);signal clk20hz: std_logic;signal qlt,qht:std_logic_vector(3 downto 0);signal flag: std_logic :='0';beginprocess(rst_n,clk)beginif(rst_n='0')thencnt1hz <=(others=>'0');clk1hz <='0';elsif (clk'event and clk='1')thenif (cnt1hz=9999999)then --仿真时用9,用开发板时用9999999cnt1hz<=(others=>'0');clk1hz<=not clk1hz;else cnt1hz<=cnt1hz+1;end if;end if;end process; -- 分频得到计数时钟process(rst_n,clk)beginif(rst_n='0')thencnt20hz <= (others=>'0');clk20hz <= '0';elsif (clk'event and clk='1')thenif(cnt20hz=99999) thencnt20hz <= (others=>'0');clk20hz <= not clk20hz;else cnt20hz <= cnt20hz +1;end if;end if;end process; ---分频得到扫描时钟200hzprocess(clk20hz)beginif clk20hz 'event and clk20hz='1' thenflag <= not flag;end if;end process; --- 扫描进程process(rst_n,clk1hz)beginif(rst_n='0')thenqlt<="0000";qht<="0000";elsif(clk1hz'event and clk1hz='1')thenif qlt="1001"thenif qht="0101"thenqlt<="0000";qht<="0000";elseqlt<="0000";qht<=qht+1;end if;elseqlt<=qlt+1;end if;end if;end process; --- 模为60的十进制计数器process(flag)beginif (flag = '1') thenwe1<='1';we2<='0';case qlt iswhen "0000" => LED7S <="00111111"; --0when "0001" => LED7S <="00000110"; --1when "0010" => LED7S <="01011011"; --2when "0011" => LED7S <="01001111"; --3when "0100" => LED7S <="01100110"; --4when "0101" => LED7S <="01101101"; --5when "0110" => LED7S <="01111101"; --6when "0111" => LED7S <="00000111"; --7when "1000" => LED7S <="01111111"; --8when "1001" => LED7S <="01101111"; --9WHEN OTHERS => NULL;end case;elsewe2<='1';we1<='0';case qht iswhen "0000" => LED7S <="00111111"; --0when "0001" => LED7S <="00000110"; --1when "0010" => LED7S <="01011011"; --2when "0011" => LED7S <="01001111"; --3when "0100" => LED7S <="01100110"; --4when "0101" => LED7S <="01101101"; --5-- when "0110" => LED7S <="01111101"; --6-- when "0111" => LED7S <="00000111"; --7-- when "1000" => LED7S <="01111111"; --8-- when "1001" => LED7S <="01101111"; --9WHEN OTHERS => NULL;end case;end if;end process; --数码管显示ql<=qlt;qh<=qht;cout<='1'when qlt=9 and qht=5 else '0';end;。
动态扫描实验报告总结(3篇)

第1篇一、实验背景随着科技的不断发展,数码管在电子设备中的应用越来越广泛。
动态扫描数码管作为一种高效、实用的显示方式,在电子设备中扮演着重要角色。
本实验旨在通过设计并实现动态扫描数码管电路,深入了解动态扫描原理,掌握动态扫描数码管的设计与实现方法。
二、实验目的1. 理解动态扫描数码管的工作原理。
2. 掌握动态扫描数码管电路的设计方法。
3. 学会使用Verilog HDL进行层次化设计电路。
4. 通过仿真验证动态扫描数码管电路的正确性。
三、实验内容1. 动态扫描数码管原理介绍动态扫描数码管由多个七段数码管组成,通过位选线和段选线分别控制数码管的位和段。
动态扫描数码管显示时,先选中某个数码管,然后显示该数码管的段码,随后快速切换到下一个数码管,重复此过程,使多个数码管轮流显示,从而实现多位数码管的显示。
2. 动态扫描数码管电路设计本实验采用Verilog HDL进行动态扫描数码管电路的设计。
主要设计内容包括:(1)位选信号生成模块:生成动态扫描数码管的位选信号,控制数码管的显示顺序。
(2)段选信号生成模块:生成动态扫描数码管的段选信号,控制数码管的显示内容。
(3)七段数码管驱动模块:将段选信号和位选信号转换为数码管的段码,驱动数码管显示。
3. 动态扫描数码管电路仿真使用Verilog HDL进行动态扫描数码管电路的仿真,验证电路的正确性。
主要仿真内容包括:(1)位选信号和段选信号的波形分析。
(2)数码管显示内容的波形分析。
(3)动态扫描数码管电路的整体性能分析。
四、实验结果与分析1. 仿真结果分析通过仿真实验,验证了动态扫描数码管电路的正确性。
位选信号和段选信号波形正常,数码管显示内容正确,动态扫描数码管电路整体性能良好。
2. 实验结果分析(1)动态扫描数码管电路设计过程中,位选信号和段选信号生成模块是关键部分。
位选信号需要满足轮流显示的要求,段选信号需要满足数码管显示内容的要求。
(2)动态扫描数码管电路在实现多位数码管显示时,可以有效减少引脚数量,降低硬件成本。
动态扫描显示电路实验的设计与实现

从无到有:动态扫描显示电路实验的设计与实现动态扫描显示电路是一种常见的电子数字显示技术,其原理是通过快速切换LED单元,从而在观察者眼中呈现出一组数字、字母或符号。
对于初学者而言,常常难以理解其设计和实现过程。
下面将介绍如何从无到有,完成一款具有生动效果的动态扫描显示电路。
一、材料准备1. 数字电路芯片:CD4017B、CD4060B或CD4059B2. LED单元,数量视设计而定。
建议使用3mm或5mm大小的LED。
3. 电源电容:10uF、100uF或470uF电容器。
建议使用50V及以上的规格。
4. 电阻器:220R、1k或10k电阻器,数量视设计而定。
5. 面包板或印制电路板。
6. 其他辅助器件:按钮、开关、电源头等组件。
二、电路设计1. 先了解CD4017B芯片的工作原理。
该芯片是一种低功耗CMOS数码集成电路,具有10位二进制计数器和十个输出端口。
2. 将LED单元连接到芯片对应的输出端口上。
根据需要,可在输出端口前串联电阻器进行电流调节,提高LED的寿命。
3. 通过连接按钮或开关控制器,将CD4017B芯片与CD4060B或CD4059B锁相环组合起来。
锁相环负责调节输出频率,使得LED单元在显示时呈现出连续、动态的效果。
4. 完成电路板的设计和布局。
对于初学者而言,建议使用面包板进行调试,待电路稳定后再将其焊接至印刷电路板上。
三、实验过程1. 将准备好的材料按照电路设计图进行连接。
2. 将电路接入电源头。
确定连接正确、正常工作。
3. 通过按下按钮或开关,观察电路中各个LED单元的状态变化。
调整输出频率使LED单元显示更加流畅。
4. 对电路进行优化,并记录其中的问题、瓶颈及解决方案。
5. 可以在此基础上继续扩展,如添加蜂鸣器、数字显示屏等元件,并将其整合到一起,构建出完整的数字电路系统。
本实验旨在帮助初学者掌握基本的数字电路原理,并能够熟练地设计、调试出具有生动、实用的动态扫描显示电路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验十二 LED 动态扫描显示实验
一、 实验目的
1、 掌握数码管动态显示、动态显示原理;
2、 掌握数码管驱动电路接法;
3、 掌握用汇编语言编写数码管驱动程序方法。
二、 实验内容
1、 利用定时器中断技术,编写具有时、分、秒、百分秒的时钟程序,用压缩BCD 码形式存储;
2、 编写LED 数据管显示代码转换程序;
3、 编写动态显示程序,将时、分、秒、百分秒的数值在8位LED 数码管上
动态显示。
三、 实验原理
R 88
300x 8
动态扫描数码管显示电路
将段选信号SEG_CS 连接至0XDxxx ,将位选信号BIT_CS 连接至
0XBxxx ,/WR 信号连接至单片机P3.6(/WR),因此段选地址为:0X0D000,
位选地址为:0X0B000。
将/INT0、/INT1连接至KEY1、KEY2。
四、实验步骤
1、建立工程项目。
2、主程序流程图。
3、显示代码译码参考子程序
R0指向时钟存储单元首地址,R1指向显示缓冲区首地址。
DISPCD: MOV DPTR,#DISPTBL
MOV R7,#04H
CODEAGN:MOV A,#0FH
ANL A,@R0
MOVC A,@A+DPTR
MOV @R1,A
INC R1
MOV A,#0F0H
ANL A,@R0
SWAP A
MOVC A,@A+DPTR
MOV @R1,A
INC R0
INC R1
DJNZ R7,CODEAGN
RET
DISPTBL:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
4、动态扫描显示子程序
R0指向显示缓冲区首地址。
DISPLAY:MOV R7,#08H
MOV R6,#01H
MOV R0,#50H
DISPAGN:MOV A,@R0
MOV DPTR,#0D000H
MOVX @DPTR,A
INC R0 ;此处设断点观察显示状态
MOV A,R6
MOV DPTR,#0B000H
MOVX @DPTR,A
RL A ;此处设断点观察显示状态
MOV R6,A
LCALL DELAY
DJNZ R7,DISPAGN
RET
理解R6在本子程序中的作用。
5、位间隔延时子程序
DELAY: MOV R4,#10;修改R4的初值观察显示状态DELAY1: MOV R5,#00H
DJNZ R5,$
DJNZ R4,DELAY1
RET
五、总结与思考
1、共阴极和共阳极数码管显示代码有什么区别?
2、动态扫描显示和静态显示的区别?。