实验四 数码管扫描显示控制器设计与实现

合集下载

数码管动态显示实验报告

数码管动态显示实验报告

一、实验目的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. 熟悉了单片机与数码管之间的接口连接,提高了动手能力。

实验四 LED数码管显示实验报告

实验四 LED数码管显示实验报告

实验名称 LED数码管显示实验指导教师曹丹华专业班级光电1202班姓名陈敬人学号联系电话一、任务要求实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。

实验内容:1.基础部分:利用C8051F310单片机控制数码管显示器。

利用末位数码管循环显示数字0-F,显示切换频率为1Hz。

2.提高部分:在数码管上显示0→199计数,计数间隔为0.5秒。

二、设计思路1.基础部分C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz ,输入时钟信号为48个机器周期,T1采用定时器工作方式1,单次定时最长可达1.027s,可以实现1s定时要求。

定时采用软件查询工作方式,利用JNB TF0, HERE实现。

置P0.6和P0.7端口为0,位选信号选定末位数码管。

通过MOVC A, @A+DPTR指令,利用顺序查表法取出显示段码数据。

寄存器R0自增1,并赋给A以取出下一个显示段码数据。

为减短代码长度,利用CJNE指令实现循环结构。

当寄存器R0增至0FH后,跳转至开头,重新开始下一轮显示。

2.提高部分定时方式及查表方式同基础部分,由于要实现三个数码管同时显示,因此采用动态扫描显示法。

三、资源分配1.基础部分P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据R0:存放显示数据DPTR:指向段码数据表首 2.提高部分P0.6:位选信号端口P0.7:位选信号端口R0:存放个位显示数据 R5:存放十位显示数据 R6:存放百位显示数据 P1:输出段码数据DPTR: 指向段码数据表首四、流程图1.基础部分2.提高部分五、源代码(含文件头说明、语句行注释)1.基础部分;******************基础部分源代码***************************;Filename: test.asm;Decription: 末位数码管循环显示数字0-F,显示切换频率为1Hz。

实验四单片机控制数码管实验打印版 (1)

实验四单片机控制数码管实验打印版 (1)

实验报告一、实验目的1. 掌握单片机控制数码管静态显示字符的方法2. 进一步掌握延时子程序的应用3.进一步掌握单片机程序设计及调试方法二、实验内容1)用一位数码管循环显示十六进制数符。

2)交替点亮4个数码管。

(例如:开始时在数码显示器的最右边一位上显示1个“0”字,以后每隔0.5秒将“0”字左移1位,直到最左边一位后停止显示。

)3) 实验板第一行按键定义同实验三,要求:当按下S3后,对S4的按键次数计数(计数次数不超过9),对S4按键N次(N≤9)后,若再按下S3键,则将N显示在数码管上。

三、实验相关说明1、实验电路原理图实验一流程图实验程序:#include<reg52.h>#define KEY P3 //定义按键接口#define LED P0 //定义LED灯接口sbit s1=P3^4; //定义按键位置sbit s2=P3^5;sbit s3=P3^6;sbit s4=P3^7;unsigned char code seg[]={0x08,0x04,0x02,0x01};//分别对应相应的数码管点unsigned char constdofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0 x5e,0x79,0x71};// 显示段码值01234567void delay(unsigned int cnt){while(--cnt);}void main1(); //按实验二中的实验内容1要求点亮数码管void main2(); //按实验二中的实验内容2要求点亮数码管void main3(int a,int count); //点亮数码管void main(){int a=1; //标记S3按的次数为奇数次还是偶数次int count=0; //统计S4键按的次数P2=0x10; //关闭蜂鸣器KEY=0xf4; //设置为独立键盘模式while(1){if(!s1) //S1是否按下{delay(200);if(!s1)main1(); //如何按下S1,调用main1()}if(!s2) //S2是否按下{delay(200);if(!s2)main2(); //如何按下S2,调用main2()}if(!s3) //S3是否按下{delay(3000);if(!s3){P0=0xff; //关闭LED灯while(1){if(s3){a=~a; //如果S3按下,a取反,当a为1时点亮LED灯main3(a,count);if(a)count=0; //如果a为1,清countbreak;}}}}if(!s4) //S4是否按下{delay(3000);if(!s4)while(1){if(s4){count++; //每按一次S4就加一break;}}}}}void main1() //按实验二中的实验内容1要求点亮数码管{unsigned char i=0;P2=0x08; //取位码while(1){P0=~dofly[i];//取显示数据,段码delay(20000);if(KEY!=0xf4)break;delay(20000);if(KEY!=0xf4)break;delay(20000); //扫描间隙延时,时间太长会闪烁,太短会造成重影,这里使用长时间方便了解显示原理if(KEY!=0xf4)break;i++;if(i==16) //检测1位扫描完全?i=0;}}void main2() //按实验二中的实验内容2要求点亮数码管{unsigned char flag=0;P0=0xc0;//取显示数据,段码while(1){if(flag==0){unsigned char i=0;flag=1;while(1){P2=seg[i]; //取位码delay(20000);if(KEY!=0xf4)break;delay(20000);if(KEY!=0xf4)break;delay(20000); //扫描间隙延时,时间太长会闪烁,太短会造成重影if(KEY!=0xf4)break;i++;if(i==4) //检测8位扫描完全?{P0=0xff;break;}}break;}}}void main3(int a,int count) //如果a为1点亮数码管{P2=0x08; //取位码if(a==1){P0=~dofly[count];}}实验分析:在本次实验中通过写程序实现按键对数码管的控制,当按下不同的键时实现不同的功能。

实验4七段数码管译码扫描显示(无源码)

实验4七段数码管译码扫描显示(无源码)

实验4七段数码管译码扫描显示(无源码)实验四七段数码管译码扫描显示一、实验目的:通过对译码和串行扫描电路的设计,理解多位数码管串行扫描输出的工作原理以及七段数码管的译码以及串行扫描输出的设计方法。

二、实验条件:1. 安装WindowsXP系统的PC机;2. 安装QuartusII6.0 EDA软件;过所设计的串行扫描分别显示“1”、“2”、data_control[7..0]:8个分别控制数码管显示的输入信号;led_addr[7..0]:对8个数码管进行串行扫描的输出控制信号;seg7_data[6..0]:驱动7段数码管各显示段的输出信号;首先在QuartusII上进行功能和时序仿真,之后通过器件及其端口配置下载程序到SOPC开发平台中。

在硬件实现中,要求:1. 用实验平台的8个数码管输出显示(共阴接法),并且用其下方的8个按键分别控制对应数码管的显示与否。

注:采用I/O模式5实现输入控制和输出显示方式。

为了实现数码管的串行扫描,必须把数码管连接成串行控制输出电路,我们可以通过I/O板上的跳线实现此操作,如右图所示,把模式数码管右方的跳线(JP24)向下连接即可。

此跳线必须下置,以实现数码管的串行扫描接法,具体电路如附录所示2. 扫描所用的时钟信号采用实验平台的clock0时钟资源:I/O板上的clock0时钟资源是0.5Hz~20MHz。

暂留特性的要求,频大部分时间内对准,上的跳线可以选择采钟资源(此两类时钟在适配板跳线置右:连接I/O板上的clock0;跳线置左:选择适配板上的20MHz时钟。

四、实验步骤:1. 打开QuartusII软件,建立一个新的工程:1) 单击菜单File\New Project Wizard…2) 输入工程的路径、工程名以及顶层实体名。

3) 单击Next>按钮,出现以下窗口单击Next>继续。

5) 单击Next>,指定第三方工具:这里我们不指定第三方EDA工具,单击Next>后结束工程建立。

数码管显示控制器实训报告

数码管显示控制器实训报告

实训报告项目名称:数码管显示控制器班级:姓名:学号:一、实训任务根据已知条件,完成对数码管显示控制器的设计、装配与调试。

二、设计要求(1)、能自动一次显示出数字 0、1、2、3、4、5、6、7、8、9(自然数列),1、3、5、7、9(奇数列), 0、2、4、6、8(偶数列),0、1、0、1、2、3、4、5、6、7(音乐符号序列);然后再从头循环;(2)、打开电源自动复位,从自然数列开始显示。

摘要这次的课程设计主要是用计数器来实现的,这个循环控制电路的实质就是要产生一系列有规律的数列, 然后通过一个七段数码管显示出来. 这里使用的只要就是计数器, 计数器在时序电路中应用的很广泛,它不仅可以用于对脉冲进行计数,还可用于分频,定时,产生节拍脉冲以及其他时序信号。

运用计数器的不同的功能和不同的接发就可以实现不同的序列输出了。

而且这次的内容还包括分电路图的整合,使这个循环显示器能够按照要求依次输出自然序列,奇数序列,偶数序列还有音乐序列。

还有一个部分就是时钟电路是由 555 多谐自激震荡集成电路制成,与电阻和电容一起构成周期为一秒时钟电路的时钟周期发生器,为电路提供时钟信号。

驱动电路是由74LS160D计数器和74LS153D数据选择器组成,用以驱动数码管正常工作,并且在时钟电路的控制下让数码管循环工作。

支持整个电路的工作。

这个设计基本上就是由以上部分连接在一起组成的。

1.设计背景1.1设计任务根据已知条件,完成对数码管显示控制器的设计、装配与调试。

1.2设计要求(1)能自动一次显示出数字 0、1、2、3、4、5、6、7、8、9(自然数列),1、3、5、7、9(奇数列), 0、2、4、6、8(偶数列),0、1、0、1、2、3、4、5、6、7(音乐符号序列);然后再从头循环;(2)打开电源自动复位,从自然数列开始显示。

1.3指导思想本设计将采用几个基本的数字集成的74系列(74LS48,74LS153,555)芯片来完成所需要的数字逻辑显示功能(在七段数码管上按规律显示特定的数字)。

数字电路与逻辑设计实验报告——数码管扫描显示控制器的设计与实现

数字电路与逻辑设计实验报告——数码管扫描显示控制器的设计与实现

数码管扫描显示控制器的设计与实现一、六个数码管串行扫描电路1.实验任务要求:⑴掌握VHDL语言的语法规范,掌握时序电路描述方法⑵掌握多个数码管动态扫描显示的原理及设计方法2.设计思路和过程用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0、1、2、3、4、5这6个不同的数字图形到6个数码管上,仿真并下载验证其功能:使用模6计数器产生一个M=6的信号,控制“数码管选通控制信号”cat的输出,低电平点亮管,使“0至5号”6个数码管依次点亮;同时控制数字的输出,依次输出0至5。

由于使用了同一个模6计数器,使得cat的输出与数字的输出是同步的,第k号数码管亮时输出k.当时钟频率足够大时(6个数码管需要300Hz以上的频率),数码管能稳定显示,在视觉上表现为同时显示0、1、2、3、4、5这6个不同的数字图形到6个数码管上3.V HDL 程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shiyanshi1 ISPORT(clk,clear:IN STD_LOGIC;cat:OUT STD_LOGIC_VECTOR(5 downto 0);b:OUT STD_LOGIC_VECTOR(6 downto 0));end shiyanshi1;ARCHITECTURE shumaguan OF shiyanshi1 ISSIGNAL q_temp: STD_LOGIC_VECTOR(2 downto 0);BEGINPROCESS(clk)BEGINIF(clk'event and clk='1') THENIF clear='0' THENq_temp<="000";ELSIF q_temp="101" THENq_temp<="000";ELSEq_temp<=q_temp+1;END IF;CASE q_temp ISWHEN "000" => cat <="111110"; --0WHEN "001" => cat <="111101"; --1WHEN "010" => cat <="111011"; --2WHEN "011" => cat <="110111"; --3WHEN "100" => cat <="101111"; --4WHEN "101" => cat <="011111"; --5WHEN OTHERS => cat <="111111";END CASE;CASE q_temp ISWHEN "000" => b <="1111110"; --0WHEN "001" => b <="0110000"; --1WHEN "010" => b <="1101101"; --2WHEN "011" => b <="1111001"; --3WHEN "100" => b <="0110011"; --4WHEN "101" => b <="1011011"; --5WHEN OTHERS => b <="0000000";END CASE;END IF;END PROCESS;END shumaguan;4.仿真波形图5.仿真波形图分析如图,clear为复位信号,cp为时钟信号,cat5至cat0为数码管选通控制信号,b为数码管所显示的数字图形。

数码管动态扫描实验报告

数码管动态扫描实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

实验四键盘及显示设计实验报告

实验四键盘及显示设计实验报告

实验四键盘扫描及显示设计实验报告一、实验要求1. 复习行列矩阵式键盘的工作原理及编程方法。

2. 复习七段数码管的显示原理。

3. 复习单片机控制数码管显示的方法。

二、实验设备1.PC 机一台2.TD-NMC+教学实验系统三、实验目的1. 进一步熟悉单片机仿真实验软件 Keil C51 调试硬件的方法。

2. 了解行列矩阵式键盘扫描与数码管显示的基本原理。

3. 熟悉获取行列矩阵式键盘按键值的算法。

4. 掌握数码管显示的编码方法。

5. 掌握数码管动态显示的编程方法。

四、实验内容根据TD-NMC+实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能:1.扫描键盘输入,并将扫描结果送数码管显示。

2.键盘采用 4×4 键盘,每个数码管显示值可为 0~F 共 16 个数。

实验具体内容如下:将键盘进行编号,记作 0~F,当按下其中一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近 4 次按下的按键编号。

五、实验单元电路及连线矩阵键盘及数码管显示单元图1 键盘及数码管单元电路实验连线图2实验连线图六、实验说明1. 由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。

因而在闭合及断开的瞬间均伴随有一连串的抖动。

抖动时间的长短由按键的机械特性决定,一般为 5~10ms。

这是一个很重要的时间参数,在很多场合都要用到。

键抖动会引起一次按键被误读多次。

为了确保 CPU 对键的一次闭合仅做一次处理,必须去除键抖动。

在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。

按键的抖动,可用硬件或软件两种方法消除。

2. 为了减少键盘与单片机接口时所占用 I/O 线的数目,在键数较多时,通常都将键盘排列成行列矩阵形式。

3. 从数码管显示方式看,数码管分为静态显示和动态显示两种方式。

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

实验四数码管扫描显示控制器设计与实现一、实验目的1.掌握VHDL语言的语法规范,掌握时序电路描述方法。

2.掌握多个数码管动态扫描现实的原理及设计方法。

二、实验所用仪器及元器件1.计算机:装有Quartus软件,为VHDL语言提供操作场所。

2.直流稳压电源:通过USB接口实现,为实验开发板提供稳定电源。

3.数字系统与逻辑设计实验开发板:使试验结果下载到开发板上,实现整个实验的最终结果。

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

如下图10-1,是多个数码管动态扫描显示的电路连接图。

当闪烁显示的发光二极管闪烁频率较高时我们将观察到持续点亮的现象。

同理,当多个数码管依次显示,当切换速度够快时,我们将观察到所有数码管都是同事在显示。

一个数码管要稳定显示要求显示频率>50hz,那么6个数码管则需要50*6=300hz以上才能看到持续稳定点亮的现象。

图10-1中,cat1~cat6是数码管选通控制信号,分别对应于6个共阴极数码管的公共端,当catn=’0’时,其对应的数码管被点亮。

因此,通过控制cat1~cat6,就可以控制6个数码管循环依次点亮,图10-2为cat1~cat6的时序关系图。

四、实验内容1.用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0、1、2、3、4、5这6个不同的数字图形到6个数码管上,仿真并下载验证其功能。

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

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

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

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

五、实验设计思路及过程1.实现六个数码管串行扫描电路的思路及代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ljxh1 ISPORT(clk:IN STD_LOGIC;clear:IN STD_LOGIC;b:OUT STD_LOGIC_VECTOR(6 downto 0);c:OUT STD_LOGIC_VECTOR(0 to 5));END ljxh1;ARCHITECTURE a OF ljxh1 ISSIGNAL tmp:INTEGER RANGE 0 TO 5;SIGNAL x:INTEGER RANGE 0 TO 5:=0;SIGNAL s:INTEGER RANGE 0 TO 10:=0;SIGNAL clk_out:STD_LOGIC_VECTOR(0 to 5); BEGINp1:PROCESS(clear,clk)BEGINIF clear='0' THENtmp<=0;ELSIF clk'event AND clk='1' THENIF tmp=5 THENtmp<=0;x<=x+1;ELSEtmp<=tmp+1;END IF;IF x=6 THENx<=0;END IF;for i in 0 to 5 loopIF tmp<i THENclk_out(i)<='1';ELSIF tmp<i+1 THENclk_out(i)<='0';ELSEclk_out(i)<='1';END IF;END loop;for i in 0 to 5 loopc(i)<=clk_out(i);END loop;s<=tmp+x;CASE s ISWHEN 10 => b<="0110011"; --1WHEN 9 => b<="1111001"; --2WHEN 8 => b<="1101101"; --3WHEN 7 => b<="0110000"; --4WHEN 6 => b<="1111110"; --5WHEN 0 => b<="1111110"; --0WHEN 1 => b<="0110000"; --1WHEN 2 => b<="1101101"; --2WHEN 3 => b<="1111001"; --3WHEN 4 => b<="0110011"; --4WHEN 5 => b<="1011011"; --5END CASE;END IF;END PROCESS p1;END a;2.六个数码管滚动电路的思路及代码:library IEEE;Use IEEE.Std_Logic_1164.ALL;Use IEEE.Std_Logic_Unsigned.All;entity v0711509 isport(clk:IN STD_LOGIC;control1:IN STD_LOGIC;c:OUT STD_LOGIC_VECTOR(5 downto 0);b:OUT STD_LOGIC_VECTOR(6 downto 0));end v0711509;Architecture a Of v0711509 IsSIGNAL clkout: STD_LOGIC;signal stat:INTEGER RANGE 0 TO 11;signal count:INTEGER RANGE 0 TO 5;signal ck:INTEGER RANGE 0 TO 50000;TYPE ram_array1 IS ARRAY (0 TO 5) OF STD_LOGIC_VECTOR(6 downto 0);SIGNAL light1 : ram_array1:=("1111110","0110000","1101101","1111001","0110011","1011011");TYPE ram_array2 IS ARRAY (0 TO 11) OF STD_LOGIC_VECTOR(6 downto 0); SIGNAL light2 : ram_array2:=("1111110","0110000","1101101","1111001","0110011","1011011","00000 00","0000000","0000000","0000000","0000000","0000000");COMPONENT div50mport(clk_in : in std_logic;clk_out : out std_logic);END COMPONENT;Beginu1: div50m PORT MAP(clk_in=>clk,clk_out=>clkout);p1:process(clk)beginif clk'event and clk='1' thenif ck=50000 thenck<=0;if count=5 thencount<=0;elsecount<=count+1;end if;elseck<=ck+1;end if;end if;if clkout'event and clkout='1' thenif stat=11 thenstat<=0;elsestat<=stat+1;end if;end if;CASE count ISWHEN 0 => c <="011111";WHEN 1 => c <="101111";WHEN 2 => c <="110111";WHEN 3 => c <="111011";WHEN 4 => c <="111101";WHEN 5 => c <="111110";WHEN OTHERS => c <="111111";END CASE;if control1='0' thenCASE count ISWHEN 0 => b <=light1((stat mod 6));WHEN 1 => b <=light1(((stat+1) mod 6)); WHEN 2 => b <=light1(((stat+2) mod 6)); WHEN 3 => b <=light1(((stat+3) mod 6)); WHEN 4 => b <=light1(((stat+4) mod 6)); WHEN 5 => b <=light1(((stat+5) mod 6)); WHEN OTHERS => b <="0000000";END CASE;elseCASE count ISWHEN 0 => b <=light2((stat mod 12));WHEN 1 => b <=light2(((stat+1) mod 12)); WHEN 2 => b <=light2(((stat+2) mod 12)); WHEN 3 => b <=light2(((stat+3) mod 12)); WHEN 4 => b <=light2(((stat+4) mod 12)); WHEN 5 => b <=light2(((stat+5) mod 12)); WHEN OTHERS => b <="0000000";END CASE;end if;END PROCESS p1;END a;六、实验结果及分析:1.六个数码管串行扫描电路仿真结果结果分析:2.六个数码管滚动显示电路结果:结果分析:七、故障及问题分析1.每次实验中都应该注意到VHDL的文件名应与实体名一致,如果不一致编译会报错。

相关文档
最新文档