7段数码管静态显示实验说明

合集下载

静态数码管显示

静态数码管显示

静态数码管显示1.实验目的学习7段数码显示译码器的设计,进一步了解、熟悉和掌握FPGA开发软件的使用方法及VHDL的编程方法。

2.实验内容试验箱上有2个4位动态共阳数码管。

其中8个位码DIG0-DIG7和8位段码SEG0-SEG7分别与FPGA相应的引脚相连。

这样,只要DIG0-DIG7上一直输出低电平“0”,则8个数码管将显示相同的数码(因为8个LED数码管的段码线分别接上了同引脚上),这样8位动态LED数码管就变成了静态LED。

本实验的内容是建立7段译码显示模块,用于控制LED数码管的静态显示。

要求在实验箱上的数码管依次显示0-9和A-F这16个字符。

3.实验原理数码管LED显示是工程项目中使用较广的一种输出显示器件。

常见的数码管有共阴和共阳2钟。

共阴数码管是将8个发光二极管的阴极连接在一起作为公共端,而共阳数码管是将8个发光二极管的阳极连接在一起作为公共端。

公共端常称为位码,而将其他8位称为段码。

本实验通过七段译码模块译码后在数码管上显示出来。

4.实验步骤(1)启动Xilinx ISE,新建项目并命名为sled(2)分别新建VHDL源程序文件并命名为int_div、count、decl7s,输入程序代码并保存(完整的VHDL程序参考实验参考程序),进行综合编译,若在编译过程中发现错误,则找到并更正错误,直至编译成功为止。

(3)从VHDL源程序文件,创建模块符号文件。

(4)新建顶层模块原理图文件sledtop,分别将模块int_div、count、decl7s添加到原理图中,将各个模块连接起来,添加输入、输出引脚,给引脚命名并保存。

完整的原理图如下所示(5)分配FPGA引脚,设置方法如下信号引脚信号引脚信号引脚信号引脚信号引脚Seg[0] 52 Seg[4] 77 Dig[0] 81 Dig[4] 43 clkin 128Seg[1] 75 Seg[5] 54 Dig[1] 85 Dig[5] 74Seg[2] 58 Seg[6] 53 Dig[2] 83 Dig[6] 59Seg[3] 76 Seg[7] 66 Dig[3] 82 Dig[7] 51(6)对该项目文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。

(VHDL实验报告)数码管显示(一位数码管显示0-9,八位数码管显示学号后八位)

(VHDL实验报告)数码管显示(一位数码管显示0-9,八位数码管显示学号后八位)
七段码管位选输入信号 七段码管位选输RTUSII 软件,新建一个工程。 2、建完工程之后,再新建一个VHDL File,打开VHDL 编辑器对话框。 3、按照实验原理和自己的想法,在VHDL 编辑窗口编写VHDL 程序。其 程序如下所示:
(1)一位数码管显示0-9:
电子科技大学成都学院学院
标准实验报告
(实验)课程名称 数字电路 EDA 设计与应用
姓名 乱弹的枇杷 学号 专业 指导教师
一、 实验名称 数码管显示(一位数码管显示 0-9,八位数码管显示学号
后八位)
二、 实验目的 1、了解数码管的工作原理。 2、学习七段数码管显示译码器的设计。 3、掌握 VHDL 的 CASE 语句及多层次设计方法。
信号名称 7SEG-A 7SEG-B 7SEG-C 7SEG-D 7SEG-E 7SEG-F 7SEG-G 7SEG-DP 7SEG-SEL0 7SEG-SEL1 7SEG-SEL2
对应 FPGA 管脚名
F13 F14 F15 E15 F16 F17 E18 F18 G18 G17 G16
说明 七段码管 A 段输入信号 七段码管 B 段输入信号 七段码管 C 段输入信号 七段码管 D 段输入信号 七段码管 E 段输入信号 七段码管 F 段输入信号 七段码管 G 段输入信号 七段码管 dp 段输入信号
7、分配完成后,再进行一次全编译,以使管脚分配生效。 8、新建波形文件,对程序进行仿真,其仿真波形如下所示:
(1)一位数码管显示0-9:
(2)八位数码管显示学号后八位:
9、用下载电缆通过JTAG 口将对应的sof 文件加载到FPGA 中。观察实验 结果是否与自己的编程思想一致。
六、实验现象及结果 以设计的参考示例为例,当设计文件加载到目标器件后,将数字

实验03静态数码管显示

实验03静态数码管显示

实验三 静态数码管显示一.实验目的 1.了解数码管内部电路结构; 2.学习7段数码管显示译码器的设计; 3. 学习LPM 兆功能模块的调用。

二. 准备知识为了对数字电路进行控制、直观观察数字电路的设计结果,CPLD/FPGA 器件往往要和一些外部接口电路相连,前面实验中实验的二极管、DIP 开关、脉冲信号源等都属于外部接口电路。

在编译前我们进行的锁定管脚,就是把设计电路(元件)的数字信号输入、输出连到相应的CPLD/FPGA 器件管脚;而CPLD/FPGA 器件的一些管脚在硬件上和外部的接口电路相连;这样就把设计的输入、输出管脚和外部的接口电路相通,以便对电路进行控制(输入)、观察结果(输出)。

通常的外部接口电路有:二极管、7VGA 接口、鼠标接口、键盘、时钟信号接口、A/D 接口、D/A 接口、UART 接口、I 2C 控制器接口等其它数字信号接口。

数码管LED 显示是工程项目中使用广泛的一种输出显示器件。

从数码管的个数上数码管分为单联和多联,单联数码管的封装结构如图3.1所示;从电路连接上数码管分为共阳极和共阴极2种,共阴极数码管是将8个发光二极管的阴极连接在一起作为公共端,如图3.2所示;而共阳极数码管是将8个发光二极管的阳极连接在一起作为公共端,如图3.3所示。

公共端通常称为位码或选通位,而将其它8位称为段码。

底部管脚 上部结构图数码管的e 、d 、c 、b 、a 。

我们以图3.3所A11脚为低电平,这样发光二极1”,就需要位码为高电平,BC 段码为低电平,正向导通而发光,而其他的段码为高电平,无电流通过不发光。

故8位段码的需要赋二进制值为“00000011”,位码赋值为高电平,这就是所谓的“译码”。

位码使用了三极管。

从硬件电路原理图上可知,FPGA 器件的IO 管脚为低电平时,数码管的位码管脚为高电平,导通。

本实验通过分频器得到1Hz 的时钟信号,加载于4位计数器的时钟输入端。

计数器循环输出0~9、A~F 共16个数。

FPGA实验三七段数码管静态与动态显示实验报告

FPGA实验三七段数码管静态与动态显示实验报告

FPGA实验三七段数码管静态与动态显示实验报告实验目的:通过FPGA实现七段数码管的静态与动态显示,在FPGA上可实现对任意数字的显示和计数功能。

实验原理:七段数码管是一种能够显示数字的晶体管数字显示器件,它由七个LED数码管组成,每个数码管分别由a、b、c、d、e、f、g七个LED组成。

通过控制每个LED的亮灭情况,可以对任意数字进行显示。

七段数码管的静态显示是指每个数字的显示都是固定的,而动态显示则是通过快速地刷新七段数码管的显示,使得数字像是在变化。

在FPGA 中,可以通过时钟信号和计数器实现刷新,从而实现数字的动态显示。

实验过程:首先,将FPGA和七段数码管连接,在FPGA上选择适当的引脚连接到a、b、c、d、e、f、g七个数码管。

在FPGA中创建工程,并添加适当的引脚约束,以实现与七段数码管的连接。

然后,根据需要选择静态或动态显示。

静态显示:静态显示的原理是通过直接控制每个LED的亮灭情况,使得每个数字都可以被显示出来。

首先,需要定义每个数字对应的LED的状态(亮灭),例如数字0对应的LED状态可能为(1,1,1,1,1,1,0)等。

然后,通过FPGA的逻辑电路实现对应数字的显示。

动态显示:动态显示的原理是通过快速地刷新显示,使得数字在若干个数码管中切换,从而造成数字变化的视觉效果。

这里需要使用时钟信号和计数器来控制刷新。

首先,需要设计一个计数器,它的计数范围应该与显示数字的个数相同。

然后,通过时钟信号让计数器开始计数,并根据计数器的值选择对应的数字显示在七段数码管上。

通过控制计数器的计数速度和刷新频率,可以实现数字的动态显示。

实验结果:经过实验,我们成功地实现了七段数码管的静态显示和动态显示。

在静态显示中,我们可以通过FPGA的逻辑电路对七段数码管的每个LED进行控制,从而实现任意数字的显示。

在动态显示中,我们通过时钟信号和计数器实现了刷新功能,使得数字在七段数码管中快速地切换,从而呈现出动态的显示效果。

《静态显示学号》实验报告(可编程逻辑器件)

《静态显示学号》实验报告(可编程逻辑器件)

电子信息与自动化学院《可编程逻辑器件》实验报告学号:姓名:实验名称:静态显示学号一、实验原理LED七段数码管根据LED的接法不同分为共阴和共阳两类,是电子开发过程中常用的输出显示设备。

在本次实验中,使用的是四个共阳极型七段数码管。

每当送入一次字形码后,四个数码管同时显示同一数字,显示字形可一直保持,然后间隔1s再送入新的字形码,四个数码管同时显示下一个数字,以此类推,直到显示完四个数字再重头开始,轮流往复,便可实现四位学号的静态显示。

图1二、实验步骤1、编辑数码管静态显示的源程序执行“File”→“New”→“Verilog HDL File ”命令,进入Verilog HDL 文本编辑方式,按下列数码管静态显示的Verilog HDL 源代码输入源程序:module jiaoduxianshi (clk, rst, out0) ;input clk,rst;output reg[6:0] out0;reg [3:0] state;parameters0=4'd0,s1=4'd1, s2=4'd2, s3=4'd3, s4=4'd4,s5=4'd5, s6=4'd6, s7=4'd7;always@ (posedge clk or negedge rst)beginif(!rst) begin out0=7'b0111111;state=s0;endelsebegincase (state)//共阳s0: begin out0=7'b0010010;state<=s1;end//display 2s1: begin out0=7'b0000001;state<=s2;end//display 0s2: begin out0=7'b1001111;state<=s3;end //display 1s3: begin out0=7'b0001111;state<=s4;end //display 7s4: begin out0=7'b1000001;state<=s5;end //display 6s5: begin out0=7'b0001111;state<=s6;end //display 7 s6: begin out0=7'b0000110;state<=s7;end //display 3s7: begin out0=7'b1001111;state<=s0;end //display 1default:state<=0;endcaseendendendmodule图2 RTL viewer2、设计文件存盘和编译完成数码管静态显示的文本编辑后,以jingtaixianshi.v件名将设计文件保存在工程目录中,“.v”表示Verilog HDL 源程序文件。

数码管静态实验报告(3篇)

数码管静态实验报告(3篇)

第1篇一、实验目的1. 熟悉数码管的结构和原理,掌握数码管的静态显示方法。

2. 学习使用单片机控制数码管显示数字的方法。

3. 提高编程能力和实际动手操作能力。

二、实验原理数码管是一种用于显示数字和符号的电子显示器件,它由若干个发光二极管(LED)组成,每个LED对应数码管的一个段,通过控制LED的亮与灭,可以显示出相应的数字和符号。

本实验采用共阴极数码管,当对应的段亮起时,显示相应的数字。

数码管的静态显示方式是指,当数码管显示一个数字时,该数字的各个段都会持续亮起,直到下一次更新显示内容。

三、实验设备1. 单片机实验箱2. AT89C51单片机3. 5V电源4. 共阴极数码管5. 连接线6. 调试工具(如示波器、万用表等)四、实验步骤1. 连接电路:按照实验原理图,将单片机的P0口与数码管的各个段连接,将单片机的VCC和GND与数码管的VCC和GND连接。

2. 编写程序:使用C语言编写程序,控制单片机输出相应的数字到数码管。

3. 烧录程序:将编写的程序烧录到单片机中。

4. 调试程序:使用调试工具观察数码管显示的数字,确认程序运行正常。

5. 修改程序:根据实验要求,修改程序,实现不同的显示效果。

五、实验内容1. 显示数字0-9:编写程序,使数码管依次显示数字0-9。

2. 显示特殊字符:编写程序,使数码管显示特殊字符,如“”、“”等。

3. 显示自定义字符:编写程序,使数码管显示自定义的字符,如“ABC”等。

4. 显示数字与字符混合:编写程序,使数码管同时显示数字和字符。

六、实验结果与分析1. 显示数字0-9:程序运行正常,数码管依次显示数字0-9。

2. 显示特殊字符:程序运行正常,数码管显示特殊字符。

3. 显示自定义字符:程序运行正常,数码管显示自定义字符。

4. 显示数字与字符混合:程序运行正常,数码管同时显示数字和字符。

在实验过程中,遇到以下问题:1. 数码管显示不清晰:经过检查,发现数码管与单片机的连接线存在松动,重新连接后,数码管显示清晰。

led数码管显示控制实验报告

led数码管显示控制实验报告

led数码管显示控制实验报告篇一:单片机实验报告——LED数码管显示实验《微机实验》报告LED数码管显示实验指导教师:专业班级:姓名:学号:联系方式:一、任务要求实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。

实验内容:利用C8051F310单片机控制数码管显示器基本要求:利用末位数码管循环显示数字0-9,显示切换频率为1Hz。

提高要求:在4位数码管显示器上依次显示当天时期和时间,显示格式如下:yyyy(月份.日)(小时.分钟)思考题:数码管采用动态驱动方式时刷新频率应如何选择?为什么?二、设计思路C8051F310单片机片上晶振为,采用8分频后为,输入时钟信号采用48个机器周期。

0到9对应的断码为:FCH、60H、DAH、F2H、66H、B6H、BEH、E0H、FEH、F6H 基础部分:由于只需要用末位数码管显示,不需要改变位码,所以只需要采用LED的静态显示。

采用查表的方法,通过循环结构,每次循环查找数据表下一地址,循环十次后重新开始循环。

每次循环延时1s,采用定时器0定时方式1。

提高部分:四个数码管都要显示,所以采用LED的动态显示。

由于数码管的位选由、控制,P0端口的其他引脚都没用到,所以对P0端口初始化赋00H,每次循环加40H、选中下一位,四次后十六进制溢出,P0端口变又为00H回到第一个数码管。

每位数码管显示一个段码后都延时1ms(否则数码管太亮,刺眼)采用定时器0定时方式1,依然采用查表法改变段码值。

通过循环:DJNZ R5,BACKMOVR5,#250 DJNZ R4,BACK MOVR4,#8来控制每种模式的切换时间,我采用2s切换一次(8*250*1ms=2s)。

切换模式,可以采用改变查表法的偏移量来实现,没切换一次模式,偏移量加04H,三次后回到初始偏移量,来实现三种模式的循环显示。

三、资源分配基础部分:、:控制数码管的位选P1:控制数码管段码的显示R0:控制段选提高部分:、:控制数码管的位选P1:控制数码管段码的显示R0:控制位选R1:控制段选R3:用于改变偏移量来切换模式R4、R5:控制循环次数,控制模式切换时间四、流程图基础部分:提高部分篇二:实验八数码管LED实验报告苏州大学实验报告院、系年级专业姓名学号课程名称成绩指导教师同组实验者实验日期实验名称:数码管LED实验一.实验目的理解8段数码管的基本原理,理解8段数码管的显示和编程方法,理解4连排共阴极8段数码管LG5641AH与MCU 的接线图。

实验二 7 段数码管静态显示译码器

实验二 7 段数码管静态显示译码器

实验二7 段数码管静态显示译码器1.实验目的学习quartusii 和modelsim的使用方法;学习原理图和veriloghdl混合输入设计方法;掌握7 段数码管静态显示译码器的设计及仿真方法。

2.实验原理根据下面电路图,设计7 段数码管静态显示译码器电路,在kx3c10F+开发板上实现该电路,并作仿真。

3.实验设备kx3c10F+开发板,电脑。

4.实验步骤4.1编译4.1.1七段数码管代码module segled(out1,a); //定义模块名和输入输出端口input [3:0]a; //输入一个3位矢量output [6:0]out1; //输出一个6位矢量reg [6:0]out1; //reg型变量用于always语句always@(a) //敏感信号啊begincase(a) //case语句用于选择输出4'b0000:out1<=7'b1000000;4'b0001:out1<=7'b1001111;4'b0010:out1<=7'b0100100;4'b0011:out1<=7'b0110000;4'b0100:out1<=7'b0011001;4'b0101:out1<=7'b0010010;4'b0110:out1<=7'b0000011;4'b0111:out1<=7'b1111000;4'b1000:out1<=7'b0000000;4'b1001:out1<=7'b0011000;4'b1010:out1<=7'b0001000;4'b1011:out1<=7'b0011100;4'b1100:out1<=7'b1000111;4'b1101:out1<=7'b0100011;4'b1110:out1<=7'b0000110;4'b1111:out1<=7'b0001110;endcaseendendmodule //模块结束效果图:4.1.2综合模块代码// Copyright (C) 1991-2013 Altera Corporation// Your use of Altera Corporation's design tools, logic functions // and other software and tools, and its AMPP partner logic// functions, and any output files from any of the foregoing// (including device programming or simulation files), and any// associated documentation or information are expressly subject // to the terms and conditions of the Altera Program License// Subscription Agreement, Altera MegaCore Function License// Agreement, or other applicable license agreement, including,// without limitation, that your use is for the sole purpose of// programming logic devices manufactured by Altera and sold by// Altera or its authorized distributors. Please refer to the// applicable agreement for further details.// PROGRAM "Quartus II 64-Bit"// VERSION "Version 13.1.0 Build 162 10/23/2013 SJ Web Edition" // CREATED "Mon Mar 27 15:23:18 2017"module Blok(a,out1);input wire [3:0] a;output wire [6:0] out1;segled b2v_inst(.a(a),.out1(out1));endmodule效果图:4.1.3编辑结果截图编译解释:在这个报告中,我们可以看到如下信息:Total logic elements 7/5136(<1%): 该芯片中共有5136个LE资源,其中的7个在这个工程的这次编译中得到了使用。

静态数码管显示(可编程)

静态数码管显示(可编程)

电子信息与自动化学院《可编程逻辑器件》实验报告学号:姓名:实验名称:数码管静态显示一、实验原理七段数码管是电子开发过程中常用的输出显示设备。

在实验系统中使用的是四个共阳极型七段数码管。

由于七段数码管公共端连接到VCC(共阳极型),当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。

图1数码管原理图图2程序设计大致流程图二、实验步骤1、打开QuartusII软件,新建一个工程然后创建一个Verilog File,打开VHDL编辑对话框进行编程;2、主要程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity JINGTAI isport (clk:in std_logic;x: out std_logic_vector(6 downto 0);y: out std_logic_vector(3 downto 0));end JINGTAI;architecture behave of JINGTAI issignal number :integer range 50000000 downto 0;signal count: std_logic_vector (1 downto 0);signal key: std_logic_vector (3 downto 0);beginy<="0000";PROCESS(clk)begin if clk'event and clk='1' then if number<50000000 thennumber <= number+1;else number <= 0;key <= key +1;end if;end if;end process;process(key)begincase key iswhen "0000" => x <= "1000000" ;when "0001" => x <= "1111001" ;when "0010" => x <= "0100100" ;when "0011" => x <= "0110000" ;when "0100" => x <= "0011001" ;when "0101" => x <= "0010010" ;when "0110" => x <= "0000010" ;when "0111" => x <= "1111000" ;when others => null;end case;end process;end behave;3、引脚锁定图3 引脚锁定三、实验结果仿真图如下:图4时序仿真图由以上可知,实验结果符合要求,则设计成功。

七段数码管静态显示程序

七段数码管静态显示程序

依次将要显示的数字的代码送端口,就可以将相应的段点亮,显示出数字的字形。

为了人的眼睛能看清楚显示的字形,每个显示是字形停留一段时间。

右图是循环显示0~3的程序流程图。

;------------------------------------; 数码循环显示; 设计:黄有全; P2口接七段数码管。

; 2010年10月9日;-------------------------------------#include <reg.h>void delay(){ //函数体起始括号int i,j; //函数内部变量定义,16位的整数。

for(i=0;i<1000;i++) //for语句,循环语句{ //复合语句起始括号for(j=0;j<121;j++) //for语句,循环语句{ //空语句}} //复合语句结束括号}main() //主函数,C语言必须有名称为main的主函数。

{while(1) //循环语句,当while后面括号中数不为0时,执行循环体。

{P2=0xc0; // P2口送16进制数c0,显示0delay(); //调用延时函数delay。

延时0.2秒。

P2=0xf9; // P2口送16进制数f9,显示1delay(); //调用延时函数delay。

P2=0xa4; //显示2delay(); //调用延时函数delay。

延时0.2秒。

P2=0xb0; //显示3delay(); //调用延时函数delay。

}}。

实验四 七段数码管显示实验报告

实验四 七段数码管显示实验报告

实验四七段数码管显示实验一、实验目的掌握数码管显示数字的原理。

二、实验内容1.静态显示:数码管为共阴极,通过BCD码译码驱动器CD4511驱动,其输入端A~D输入4位BCD码,位码输入低电平选中。

按图4-1连接好电路,将8255的A口PA0~PA3与七段数码管LED1的BCD码驱动输入端A1~D1相连,8255的A口PA4~PA7与七段数码管LED2的BCD码驱动输入端A2~D2相连,8255的B口PB0~PB3与七段数码管LED3的BCD码驱动输入端A3~D3相连,8255的B口PB4~PB7与七段数码管LED4的BCD码驱动输入端A4~D4相连,8255的C口PC0~PC3分别与七段数码管LED4~LED4的位驱动输入端DG1~DG4相连。

编程从键盘上每输入4个0~9数字,在七段数码管LED4~LED4上依次显示出来。

图4-12.动态显示:数码管为共阴极,段码采用相同驱动,输入端加高电平,选中的数码管对应段点亮,位码采用同相驱动,位码输入端低电平选中,按图4-2连接好电路,图中只画了2个数码管,实际是8个数码管,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~g相连(32TCI0模块上的J1连32LED8模块J2),8255的C口的PC0~PC7接七段数码管的段码驱动输入(32TCI0模块上的J3连32LED8模块J1),跳线器K1连2和3。

编程在8个数码管上显示“12345678”。

按任意键推出运行。

图4-2三、编程提示1.由于DVCC卡使用PCI总线,所以分配的IO地址每台微机可能都不用,编程时需要了解当前的微机使用那段IO地址并进行处理。

2.对实验内容1,七段数码管字型代码与输入的关系如下表:四、参考流程图1.实验内容一的参考流程图图4-3 2.实验内容二的参考流程图图4-4五、参考程序1.内容一的参考程序源程序清单如下:data segmentioport equ 0c400h-0280hio8255a equ ioport+288hio8255b equ ioport+289hio8255c equ ioport+28ahio8255k equ ioport+28bhled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmesg1 db 0dh,0ah,'Input a num (0--9),other key is exit:',0dh,0ah,'$'bz db ?cz db 04hdata endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255k ;使8255的A口为输出方式mov ax,80hout dx,alsss0: mov si,offset bzmov cx,04hsss1: mov dx,offset mesg1 ;显示提示信息mov ah,09hint 21hmov ah,01 ;从键盘接收字符int 21hcmp al,'0' ;是否小于0jl exit ;若是则退出cmp al,'9' ;是否大于9jg exit ;若是则退出sub al,30h ;将所得字符的ASCII码减30Hmov [si],al ;存入显示缓冲区inc si ;显示缓冲区指针加1dec cx ;判断输入满4个数字吗?jnz sss1 ;不满继续mov si,offset bz ;从显示缓冲区取第一个数字的BCD 码mov al,[si]and al,0fh ;屏蔽高四位暂存ALinc si ;显示缓冲区指针加1mov ah,[si] ;取第二个数字的BCD码到AHsal ah,4h ;右移4次到高四位add al,ah ;两个BCD码合并成一个字节mov bl,al ;暂存入BLinc simov al,[si] ;取第三个数字的BCD码and al,0fhinc simov ah,[si] ;取第四个数字的BCD码到AHsal ah,4hadd ah,almov al,ahmov dx,io8255a ;从8255的A口输出(后两个数字)out dx,almov al,blmov dx,io8255b ;从8255的B口输出(前两个数字)out dx,almov al,0f0hmov dx,io8255c ;从8255的C口输出位码out dx,almov dl,0ffhmov ah,06int 21hje sss0 ;有键按下则退出exit: mov ah,4ch ;返回int 21hcode endsend start2.内容二的参考程序源程序清单如下:data segmentioport equ 0C400h-0280hio8255c equ ioport+28ahio8255k equ ioport+28bhio8255a equ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 01h,02h,03h,04h,05h,06h,07h,08h ;存放要显示的十位和个位con db ? ;位码data endscode segmentassume cs:code, ds:datastart: mov ax,datamov ds,axmov dx,io8255k ;将8255设为A口C口输出mov al,80hout dx,alloop2: mov al,08h ;设置数码管位计数器初值到CON mov byte ptr con,almov si,offset buffer1 ;置显示缓冲器指针SImov ah,7fh ;置位码初值disp0: mov cx,0ffffhmov bl,ds:[si] ;取显示缓冲区显示值存BXmov bh,0hpush simov dx,io8255c ;位码从C口输出mov al,ahout dx,almov dx,io8255amov si,offset led ;置led数码表偏移地址为SIadd si,bx ;求出对应的led数码mov al,byte ptr [si]out dx,al ;段码从A口输出disp1: loop disp1 ;延时mov cx,0ffffhdisp2: loop disp2ror ah,01h ;位码右移1位pop siinc si ;显示缓冲区指针加1mov al,byte ptr condec almov byte ptr con,aljnz disp0 ;数码管位计数器减1为0吗?,不为0继续mov dx,io8255a ;为0,关数码管显示mov al,0out dx,almov dl,0ffhmov ah,06int 21hje loop2 ;有键按下则退出mov ah,4ch ;返回int 21hcode endsend start实验总结:通过这次试验,我了解到自定义数据类型可以根据自己的需要方便设定,有很大的灵活性。

实验2:8255七段数码管静动态显示

实验2:8255七段数码管静动态显示

微机实验报告书学号:姓名:班级:同组名单:实验日期: 2012.12.21实验题目:七段数码管的静态显示实验目标:掌握数码管显示数字的原理(功能:键盘输入一位十进制数字(0~9),用七段数码管显示。

)解题思路:1.静态显示:按图 10(a)连接好电路,将8255的A口PA0-PA6分别与七段数码管的断码驱动输入端a-g项链,位码驱动输入端S1接+5V,S0、dp接地。

编程从键盘输入一位十进制数字,在七段数码管上显示出来。

2.动态显示:按图10(b)连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255C口的PC1,PC0。

编程在两个数码管上显示“56”。

程序框图:静态显示见图11(a),动态显示见图11(b)。

关键问题分析(静态显示):1、按键判断和程序结束判断按键来说,由于程序中必须输入数字,所以没有必要对是否按键进行判断,只需要判断按键是否在0-9之间即可。

用以下程序即可:cmp al,'0'jl exit ; jl,条件转移指令,即在小于时转移cmp al,'9'jg exit ;jg, 条件转移指令,即在大于时转移程序中还要用到“cmp”即比较指令,用来比较输入数与0、9的大小关系。

程序结束:如若输入的数字小于0或者大于9,必须直接跳出程序,即结束指令必须单独占用一个程序段,这样,程序顺序执行完毕也可以顺利返回DOS。

2、七段码显示。

实验指导书中给出了七段码的字型代码。

这样一来,七段码的显示只需要用换码指令“XLAT”便可以轻松实现。

前提是必须将七段码字型编成数码表以字符串的形式写进程序中。

3、数字键ASCII码与数值间的转换。

因为0的ASCII码为30H,所以数字键ASCII码与数值间的转换时只需减去30H即可,可用下列语句实现:sub al,30h程序清单:静态显示:data segmentioport equ 0c800h-0280hio8255a equ ioport+288hio8255b equ ioport+28bhled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmesg1 db 0dh,0ah,'Input a num (0--9h):',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255b ;使8255的A口为输出方式mov al,80h ;10000000B,控制字PA以方式0输出out dx,alzby: mov dx,offset mesg1 ;显示提示信息mov ah,09hint 21hmov ah,01 ;从键盘接收字符int 21hcmp al,'0' ;是否小于0jl exit ;如若小于0,则跳转到exit退出程序cmp al,'9' ;是否大于9jg exit ; 如若大于9,则跳转到exit退出程序sub al,30h ;将所得字符的ASCII码减30H,数字键ascii码同数值转换mov bx,offset led ;bx为数码表的起始地址xlat ;求出相应的段码mov dx,io8255a ;从8255的A口输出out dx,aljmp zby ;转zbyexit: mov ah,4ch ;返回DOSint 21hcode endsend start动态显示:data segmentioport equ 0c800h-0280hio8255a equ ioport+28ahio8255b equ ioport+28bhio8255c equ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 5,6 ;存放要显示的个位和十位bz dw ? ;位码data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255b ;将8255设为A口输出mov al,80h ;10000000B,控制字PA以方式0输出out dx,almov di,offset buffer1 ;设di为显示缓冲区loop2: mov bh,02zby: mov byte ptr bz,bhpush didec diadd di, bzmov bl,[di] ;bl为要显示的数pop dimov al,0mov dx,io8255aout dx,almov bh,0mov si,offset led ;置led数码表偏移地址为SIadd si,bx ;求出对应的led数码mov al,byte ptr [si]mov dx,io8255c ;自8255A的口输出out dx,almov al,byte ptr bz ;使相应的数码管亮mov dx,io8255aout dx,almov cx,3000delay: loop delay ;延时mov bh,byte ptr bzshr bh,1jnz zbymov dx,0ffhmov ah,06int 21hje loop2 ;有键按下则退出mov dx,io8255amov al,0 ;关掉数码管显示out dx,almov ah,4ch ;返回int 21hcode endsend start运行结果:静态显示:在键盘上输入一个0-9的任意数字,会显示在数码管上。

数码管静态显示实验,单片机实验报告

数码管静态显示实验,单片机实验报告

数码管静态显示实验,单片机实验报告数码管静态显示实验一.实验目的 1.熟悉数码管的功能和使用。

2.熟悉延时子程序的编写和使用。

3.初步熟悉单片机软硬件设计方法。

二.实验仪器计算机、Keil 编程环境、普中下载软件、单片机开发实验仪。

三.实验原理与内容P0 口做输出口,接一个共阳极数码管,要求循环显示。

共阳极数码管字形表(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,-共17 个字形码)0C0H,0FCH,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0 A1H,86H,8EH,0BFH。

四 . 实验线路及原理五 . 注意事项1.安装实验仪时,先接通讯串口线,再开电源开关。

2.实验过程中,在进行接插线操作时,必须先关闭电源。

六 . 实验步骤1、主机连线说明:JP10 单片机0 P0 口(8 8 位)JP3 共阳极数码管七 . 实验步骤2.打开 Keil 编程软件编写程序,并进行汇编产生HEX 文件。

(1)流程图(2)汇编源程序ORG 00H LJMP MAIN ;初始位置直接跳转MAIN 主程序START; MOV R2,#0 ;赋值R2=0 MOV R5,#17;赋值 R5=17 MAIN: MOV DPTR,#TAB;将 TAB 地址传送给数据指针MOV A,R2 ;赋值累加器 A=0 MOVC A,@A+DPTR;将数组第 A+1 的数据赋值 A MOV P0,A ;赋值 P0 数据的数据INC R2 ;R2 加一LCALL DELAY ;调用延时子程序DJNZ R5,MAIN ;R5 减一不为0 跳转主程序MAIN JMP START ;跳转 START RET DELAY: MOV R0,#5 ;延时子程序DL2: MOV R7,#200 DL1: MOV R6,#250DJNZ R6,$ DJNZ R7,DL1 DJNZ R0,DL2 TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0 A1H,86H,8EH, END (1) C 语言源程序#include #define uint unsigned int Uint table [ ]= (0xC0,0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E, 0xBF )Void delay (int z) { int x,y; for (x=z;x>0;x--) for (y=100;y>0;i++) } Void main ( ) {int i ;While (1) {for (i=0;i<17;i++) { P0=table [i]; delay (1000) // 延时 } } } 3.点击普中下载软件,检查设置是否正确,然后下载到实验仪的单片机中。

实验1 数码管显示实验

实验1  数码管显示实验

实验Ⅰ 七段数码管静态显示一、实验目的1. 掌握数码管显示数字的原理。

2. 学会用实验箱中的数码管、数码开关、固定脉冲、单脉冲按钮的使用。

二、实验仪器及材料1、仪器设备:数字电路实验箱三、预习要求1. 预习数码管显示数字的原理。

固定脉冲、单脉冲的概念。

2. 熟悉所用集成电路的引脚排列及用途。

四、实验内容及步骤实验前按数字电路实验箱使用说明书先检查电源是否正常,线接好后经检查无误方可通电实验。

实验中改动接线须先断开电源,接好线后再通电实验。

1、七段显示数码管七段显示器由七个段状的发光二极管组成,这七个段状的发光二极管的排列情况见图一(a),因此七段显示器可以用来显示数字,也可以用来显示部分英文字母。

将七个发光二极管的阳极接在一起,就构成共阳极接法见图一(b),这时要使某段亮就使相应的段输入低电平。

若将七个发光二极管的阴极接在一起,就构成了共阴极接法见图一(c),这时要使某段亮就使相应的段输入高电平。

实验箱上的七段数码管如图所示将K0~K8开关量输入分别与七段数码管的段码驱动输入端a1~g1及dp1相连,2、译码显示管实验n n n开关K,测试实验结果并填写下表DP及A~D的输入值。

(2) 拨码开关选取另一组,将拨码开关输出与A n ~D n 相连,将K15开关量输入与输入端DP n 相连,拨动输入开关K15及拨码开关按钮,测试实验结果并填写下表中的输入值。

(3) 把DP 改接到1HZ 连续脉冲观测实验现象,并记录。

(4) 把DP 改接到单脉冲,按动按钮,观测实验现象,并记录。

实验现象:五、实验报告1、按要求完成电路设计,并填写各步骤的相关内容。

并对实验结果进行记录,并进行分析讨论。

2、按自己的设计可改线路。

试试单脉冲按钮的作用。

数码管实验报告实验原理(3篇)

数码管实验报告实验原理(3篇)

第1篇一、实验背景数码管是一种常用的显示器件,它可以将数字、字母或其他符号显示出来。

数码管广泛应用于各种电子设备中,如计算器、电子钟、电子秤等。

本实验旨在通过实践操作,让学生了解数码管的工作原理,掌握数码管的驱动方法,以及数码管在电子系统中的应用。

二、实验原理1. 数码管类型数码管分为两种类型:七段数码管和液晶数码管。

本实验主要介绍七段数码管。

七段数码管由七个发光二极管(LED)组成,分别代表七个笔画。

当七个LED中的某个或某几个LED点亮时,就可以显示出相应的数字或符号。

根据发光二极管的连接方式,七段数码管可分为共阳极和共阴极两种类型。

2. 数码管驱动方式(1)静态驱动静态驱动是指每个数码管独立驱动,每个数码管都连接到单片机的I/O端口。

这种方式下,数码管显示的数字或符号不会闪烁,但需要较多的I/O端口资源。

(2)动态驱动动态驱动是指多个数码管共用一组I/O端口,通过控制每个数码管的扫描时间来实现动态显示。

这种方式可以节省I/O端口资源,但显示的数字或符号会有闪烁现象。

3. 数码管显示原理(1)共阳极数码管共阳极数码管的特点是七个LED的阳极连接在一起,形成公共阳极。

当要显示数字时,将对应的LED阴极接地,其他LED阴极接高电平,即可显示出相应的数字。

(2)共阴极数码管共阴极数码管的特点是七个LED的阴极连接在一起,形成公共阴极。

当要显示数字时,将对应的LED阳极接地,其他LED阳极接高电平,即可显示出相应的数字。

4. 数码管驱动电路(1)BCD码译码驱动器BCD码译码驱动器是一种将BCD码转换为七段数码管所需段码的电路。

常用的BCD码译码驱动器有CD4511、CD4518等。

(2)74HC595移位寄存器74HC595是一种8位串行输入、并行输出的移位寄存器,常用于数码管的动态驱动。

它可以将单片机输出的串行信号转换为并行信号,驱动数码管显示。

三、实验目的1. 了解数码管的工作原理和驱动方式。

[指南]七段数码管的静态显示

[指南]七段数码管的静态显示

七段数码管的动态显示1、实验内容:数码管的动态显示利用实验板上的某四位数码管依次显示 16 进制的0000~FFFF。

为实现功能重用的目的,我们仍然将系统划分为几个部分:(1)时钟分频模块:将开发板上的 50MHz 高速时钟进行分频产生一个5Hz 的时钟用于计数。

(2)计数模块:实现从 0000~FFFF 的计数功能。

用4位十六进制数来实现,其中15‐12 位表示十六进制数的最高位,11‐8 位表示次高位,7‐4 位表示次低位,3‐0位表示最低位(3)数码管动态显示模块:将计数模块的输出作为显示字符的输入值,分时送出相应段码,实现数码管的动态显示效果。

2、参考程序:module SegDynamicDisp(CLK,rst_n,SEG0,SEG1,SEG2,SEG3);//数码管动态显示模块?input CLK;input rst_n;output [7:0]SEG0;//定义输出数码管0的段码带output [7:0]SEG1;//定义输出数码管1的段码带output [7:0]SEG2;//定义输出数码管2的段码带output [7:0]SEG3;//定义输出数码管3的段码带//......................................................... .....reg [7:0]SEG0;//定义输出数码管0的段码带reg [7:0]SEG1;//定义输出数码管1的段码带reg [7:0]SEG2;//定义输出数码管2的段码带reg [7:0]SEG3;//定义输出数码管3的段码带//......................................................... .........parameter seg0=8'hC0,seg1=8'hF9,seg2=8'hA4,seg3=8'hB0,seg4=8'h99,seg5=8'h92,seg6=8'h82,seg7=8'hF8,seg8=8'h80,seg9=8'h90,sega=8'h88,segb=8'h83,segc=8'hC6,segd=8'hA1,sege=8'h86,segf=8'h8E;//......................................................... ...........reg[23:0] cnt;//定义计数寄存器,用来实现定时的功能reg [15:0]counter;//定义计数寄存器,用于实现显示的数值always @(posedge CLK or negedge rst_n)//计数过程,记录当前显示的位选序号if(!rst_n)begincnt<=24'D0;//复位时cnt初始化为0counter<=2'b00;//复位时counter初始化为0endelsebegincnt<=cnt+1'b1;//实现计数的功能if(cnt==24'D1*******)begincnt<=0;//当达到计数值以后回复初始值counter<=counter+1;//当达到计时时间以后显示的数值也相应的+1endend//....................................................always @(posedge CLK or negedge rst_n)if(!rst_n)beginSEG0<=0;SEG1<=0;SEG2<=0;SEG3<=0;endelsealways @(counter)begincase(counter[3:0])4'h0: sm_dbr <= seg0; 4'h1: sm_dbr <= seg1; 4'h2: sm_dbr <= seg2; 4'h3: sm_dbr <= seg3; 4'h4: sm_dbr <= seg4; 4'h5: sm_dbr <= seg5; 4'h6: sm_dbr <= seg6; 4'h7: sm_dbr <= seg7; 4'h8: sm_dbr <= seg8; 4'h9: sm_dbr <= seg9; 4'ha: sm_dbr <= sega; 4'hb: sm_dbr <= segb; 4'hc: sm_dbr <= segc; 4'hd: sm_dbr <= segd; 4'he: sm_dbr <= sege; 4'hf: sm_dbr <= segf; default: ;endcasecase(counter[7:4])4'h0: sm_dbr <= seg0; 4'h1: sm_dbr <= seg1; 4'h2: sm_dbr <= seg2; 4'h3: sm_dbr <= seg3; 4'h4: sm_dbr <= seg4; 4'h5: sm_dbr <= seg5; 4'h6: sm_dbr <= seg6; 4'h7: sm_dbr <= seg7; 4'h8: sm_dbr <= seg8; 4'h9: sm_dbr <= seg9;4'hb: sm_dbr <= segb; 4'hc: sm_dbr <= segc; 4'hd: sm_dbr <= segd; 4'he: sm_dbr <= sege; 4'hf: sm_dbr <= segf; default: ;endcasecase(counter[11:8]) 4'h0: sm_dbr <= seg0; 4'h1: sm_dbr <= seg1; 4'h2: sm_dbr <= seg2; 4'h3: sm_dbr <= seg3; 4'h4: sm_dbr <= seg4; 4'h5: sm_dbr <= seg5; 4'h6: sm_dbr <= seg6; 4'h7: sm_dbr <= seg7; 4'h8: sm_dbr <= seg8; 4'h9: sm_dbr <= seg9; 4'ha: sm_dbr <= sega; 4'hb: sm_dbr <= segb; 4'hc: sm_dbr <= segc; 4'hd: sm_dbr <= segd; 4'he: sm_dbr <= sege; 4'hf: sm_dbr <= segf; default: ;endcasecase(counter[15:12]) 4'h0: sm_dbr <= seg0; 4'h1: sm_dbr <= seg1; 4'h2: sm_dbr <= seg2;4'h4: sm_dbr <= seg4; 4'h5: sm_dbr <= seg5; 4'h6: sm_dbr <= seg6; 4'h7: sm_dbr <= seg7; 4'h8: sm_dbr <= seg8; 4'h9: sm_dbr <= seg9; 4'ha: sm_dbr <= sega; 4'hb: sm_dbr <= segb; 4'hc: sm_dbr <= segc; 4'hd: sm_dbr <= segd; 4'he: sm_dbr <= sege; 4'hf: sm_dbr <= segf; default: ;endcaseendendmodule3、接口:clk--PIN_N2rst_n--PIN_N25SEG0[0]--PIN_AF10SEG0[1]--PIN_AB12SEG0[2]--PIN_AC12SEG0[3]--PIN_AD11SEG0[4]--PIN_AE11SEG0[5]--PIN_V14SEG0[6]--PIN_V13SEG1[0]--PIN_V20SEG1[1]--PIN_V21SEG1[2]--PIN_W21SEG1[3]--PIN_Y22SEG1[4]--PIN_AA24SEG1[5]--PIN_AA23SEG1[6]--PIN_AB24SEG2[0]--PIN_AB23SEG2[1]--PIN_V22SEG2[2]--PIN_AC25SEG2[3]--PIN_AC26SEG2[4]--PIN_AB26SEG2[5]--PIN_AB25SEG2[6]--PIN_Y24SEG3[0]--PIN_Y23SEG3[1]--PIN_AA25SEG3[2]--PIN_AA26SEG3[3]--PIN_Y26SEG3[4]--PIN_Y25SEG3[5]--PIN_U22SEG3[6]--PIN_W244、上机程序module SegDynamicDisp(CLK,rst_n,SEG0,SEG1,SEG2,SEG3); input CLK;input rst_n;output [6:0]SEG0;output [6:0]SEG1;output [6:0]SEG2;output [6:0]SEG3;reg [6:0]SEG0;reg [6:0]SEG1;reg [6:0]SEG2;reg [6:0]SEG3;//........以上是定义的一些输入输出接口..........................parameter seg0=7'hC0,seg1=7'hF9,seg2=7'hA4,seg3=7'hB0,seg4=7'h99,seg5=7'h92,seg6=7'h82,seg7=7'hF8,seg8=7'h80,seg9=7'h90,sega=7'h88,segb=7'h83,segc=7'hC6,segd=7'hA1,sege=7'h86,segf=7'h8E;//..............以上是定义的参数,用来标记段代码...................reg[23:0] cnt;reg [15:0]counter;always @(posedge CLK or negedge rst_n)if(!rst_n)begincnt<=24'D0;counter<=2'b00;endelsebegincnt<=cnt+1'b1;if(cnt==24'D1*******)begincnt<=0;counter<=counter+1;endend//..........用来实现计数功能和控制数字递增的速度....................always @(counter)begincase(counter[3:0])4'h0: SEG0 <= seg0;4'h1: SEG0 <= seg1;4'h2: SEG0 <= seg2;4'h3: SEG0 <= seg3;4'h4: SEG0 <= seg4;4'h5: SEG0 <= seg5;4'h6: SEG0 <= seg6;4'h7: SEG0 <= seg7; 4'h8: SEG0 <= seg8; 4'h9: SEG0 <= seg9; 4'ha: SEG0 <= sega; 4'hb: SEG0 <= segb; 4'hc: SEG0 <= segc; 4'hd: SEG0 <= segd; 4'he: SEG0 <= sege; 4'hf: SEG0 <= segf; default: ; endcasecase(counter[7:4]) 4'h0: SEG1 <= seg0; 4'h1: SEG1 <= seg1; 4'h2: SEG1 <= seg2; 4'h3: SEG1 <= seg3; 4'h4: SEG1 <= seg4; 4'h5: SEG1 <= seg5; 4'h6: SEG1 <= seg6; 4'h7: SEG1 <= seg7; 4'h8: SEG1 <= seg8; 4'h9: SEG1 <= seg9; 4'ha: SEG1 <= sega; 4'hb: SEG1 <= segb; 4'hc: SEG1 <= segc; 4'hd: SEG1 <= segd; 4'he: SEG1 <= sege; 4'hf: SEG1 <= segf; default: ; endcasecase(counter[11:8])4'h1: SEG2 <= seg1; 4'h2: SEG2 <= seg2; 4'h3: SEG2 <= seg3; 4'h4: SEG2 <= seg4; 4'h5: SEG2 <= seg5; 4'h6: SEG2 <= seg6; 4'h7: SEG2 <= seg7; 4'h8: SEG2 <= seg8; 4'h9: SEG2 <= seg9; 4'ha: SEG2 <= sega; 4'hb: SEG2 <= segb; 4'hc: SEG2 <= segc; 4'hd: SEG2 <= segd; 4'he: SEG2 <= sege; 4'hf: SEG2 <= segf; default: ;endcasecase(counter[15:12]) 4'h0: SEG3 <= seg0; 4'h1: SEG3 <= seg1; 4'h2: SEG3 <= seg2; 4'h3: SEG3 <= seg3; 4'h4: SEG3 <= seg4; 4'h5: SEG3 <= seg5; 4'h6: SEG3 <= seg6; 4'h7: SEG3 <= seg7; 4'h8: SEG3 <= seg8; 4'h9: SEG3 <= seg9; 4'ha: SEG3 <= sega; 4'hb: SEG3 <= segb;4'hd: SEG3 <= segd;4'he: SEG3 <= sege;4'hf: SEG3 <= segf;default: ;endcaseend//...................用来实现显示功能..................... endmodule5、实验结果复位按键为0时:HEX3 HEX2 HEX1 HEX0 显示的为0000;复位按键为1时:HEX3 HEX2 HEX1 HEX0 显示的依次为:0000——FFFF。

数码管静态显示实验

数码管静态显示实验
实验内容:
1、根据LED数码管连接电路(电路中U1是74LS244作为段码驱动电路;U5和U4是SN75452,与非门,作为位选信号电路),编写实验程序,实现1位数码管的静态显示,要求:内容为0~9循环显示。
2、接线方案:
P10~P17/51单片机 接 a、b…dp/数码管;
P2.0~P2.3/51单片机 接 s1~s4/数码管。
单 片 机实验报告
通信工程系13班(2016年5月19日 )
姓名学号31130
实验题目:数码管静态显示实验
实验目的:
1.掌握8051单片机与七段LED数码管连接的设计方法;
2.掌握LED数码管静态显示的编程方法。
实验仪器:
51单片机、LED数码管
实验原理:
LED数码管静态显示的显示程序简单,显示亮度高,但所需的I/O端口较多,并且功耗较大。所以静态显示常用在显示位数较少的系统中。下表为共阴极LED数码管的段码表
实验步骤:
1.连接串行通信电缆盒电源线;
2.将C51单片机核心板上的三个开关分别拨到“独立”、”运行”“单片机”;
3.打开实验箱上的电源开关。
4.利用KeilC51创建实验程序,并进行编译生产后缀为.HEX的文件;
5.利用STC-ISP软件将后缀为.HEX的文件下载到单片机ROM中;
6.观察实验现象,并记录。若实验现象有误请重复第5、6步。
实验程序:
实验结果:
任课老师评语:
签名:__________
日期_____Leabharlann __月__
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include "xplatform_info.h" //平台定义头文件
3.2 程序代码
/************************** Constant Definitions ****************************/
/* * The following constants map to the XPAR parameters created in the * xparameters.h file. They are defined here such that a user can easily * change all the needed parameters in one place.
*
- XST_FAILURE if the example has failed.
*
* @note
None
*
******************************************************************************/
int main(void)
{ int Status; int led_bus0,led_bus1,led_sel; xil_printf("Start to display the 7segment leds\r\n"); XGpioPs_Config *ConfigPtr; int Type_of_board; /*Test the target board chip*/ Type_of_board = XGetPlatform_Info(); switch (Type_of_board) { case XPLAT_ZYNQ_ULTRA_MP: printf("It's a ZYNQ_ULTRA board\r\n"); break;
/*****************************************************************************/
/**
*
* Main function to call the example.
*
* @paramNone
*
* @return - XST_SUCCESS if the example has completed successfully.

1.2 其他说明
图 1-2 从图 1-2 可知最左边为芯片引脚编号箭头所指为对应的网络标号。该对应关系用到设 计的管脚约束上,xdc 文件必须严格按照该图进行配置。
二.Vivado 操作说明
2.1 特殊操作步骤说明
图 2-1 导入 PS 部分设置 该步骤需要根据硬件平台数据手册或者用户手册导入正确的 PS 部分设置文件,否则 SDK 中会出现找不到 ARM 的错误。
7 段数码管静态显示实验说明文档
一. 背景知识说明
1.1 电路原理说明
图 1-1 从图 1-1 可知要让某个数字亮起必须满足两个逻辑条件: 1. 对应的 LED_SEL 必须为’0’; 2. 代表对应笔画的 LEDX_BUSX 必须为’1’; 例如需要最左边的数码管亮起数字 0,则首先必须让 LED_SEL0 为’0’,然后 LED0_BUS 上对应的 8 位二进制数应该为”00111111”,换算成 16 进制就是 0x3F。因此在 3 个 8 位总线上 LED0_BUS 输出 0x3F,LED1_BUS 输出 0,LED_SEL 输出 0xFE 即可让最 左边的 7 段数码管亮起数字 0。
#define printf
xil_printf /* Smalller foot-print printf */
/**************************** Type Definitions ******************************/
/***************** Macros (Inline Functions) Definitions *******************/
三.源代码说明
3.1 函数及变量说明
#include "xparameters.h" //硬件参数定义头文件
#include "xgpiops.h"
//PS部分GPIO库函数头文件
#include "xil_printf.h" //串口输出库函数头文件
#include "xstatus.h"
//状态代码定义头文件
/* * The following are declared globally so they are zeroed and can be * easily accessible from a debugger. */
XGpioPs Gpio; /* The driver instance for GPIO Device. */
*/ #define GPIO_DEVICE_ID XPAR_XGPIOPS_0_DEVICE_ID
/*
* The following constant is used to wait after an LED is turned on to make
* sure that it is visible to the human eye. This constant might need to be
/************************** Function Prototypes ****************************/ static int emerge_ledbus(int ledbus0,int ledbus1,int ledsel);
/************************** Variable Definitions **************************/
* tuned for faster or slower processor speeds.
*/
#define LED_DELAY
10000000
#define LED 0x01 /* Light 1 bit each time */
#define LED_BANK 0x02 /* Output pins BANK */
相关文档
最新文档