文档库 最新最全的文档下载
当前位置:文档库 › 实验三 7段数码管显示

实验三 7段数码管显示

实验三  7段数码管显示
实验三  7段数码管显示

实验三 7段数码管显示

一实验要求

用设计一个共阴7段数码管控制接口,要求:在时钟信号的控制下,使8位数码管动态刷新显示各自学号。

二实验内容

在实验仪器中,8位7段数码显示的驱动电路已经做好,并且其位选信号(SEL[7..0])为一3-8译码器的输出,所以我们在设计7段数码管控制接口时,其位选信号输出必须经

8-3编码。

显示控制器的引脚图如图3-1:

图3-1

图中CP为时钟输入端,SEGOUT[7..0]为段驱动输出;SELOUT[2..0]为位选信号输出;NUMOUT[3..0]为当前显示的数据输出。

图3-2 7段显示控制器仿真波形图

从图3-2可以看出,8位数码管是轮流点亮的,我们以NUMOUT=1这段波形为参考:当SELOUT为000时,点亮第一位显示器,显示的数字为1,同时,NUMOUT输出的数据也为“0001”。同理,当SELOUT为001时,点亮第二位显示器,显示数字为1,直到6位显示器全都显示完毕,等待进入下一个数字的显示。

同时,还有一个问题不可忽视,位扫描信号的频率至少需要多少以上,才能使显示器不闪烁?简单的说,只要扫描频率超过眼睛的视觉暂留频率24H Z以上就可以达到点亮单个显示,却能享有6个同时显示的视觉效果,而且显示也不闪烁。当我们输入频率为5MH Z时,

我们通过加法计数器来产生一个约300H Z的信号,并且由它来产生位选信号,请参考下面程序段:

PROCESS (CP) -- 计数器计数

Begin

IF CP'Event AND CP='1' then

Q <= Q+1;

END IF;

END PROCESS;

NUM <= Q(24 DOWNTO 21); --about 1 Hz

S <= Q(15 DOWNTO 13); --about 300 Hz

--扫描信号

SEL <= "000" WHEN S=0 ELSE

"001" WHEN S=1 ELSE

"010" WHEN S=2 ELSE

"011" WHEN S=3 ELSE

"100" WHEN S=4 ELSE

"101" WHEN S=5 ELSE

"111111";

由计数器Q引出到S信号,若时钟信号为5MH Z时,Q13得到的信号频率约300HZ,再将它分给扫描信号,最后每个显示器扫描信号频率为:300/6=50H Z>24H Z,所以不会有闪烁情形产生。

三实验连线

CP对应IO3

SEGOUT、SELOUT分别对应数据总线的低8位与高8位

NUMOUT对应IO9-IO12

功能选择位M[3..0]状态均为0010,左端8个数码管,低8位为7位段总加小数点选取位,高8位为8个数码管com端选取,即如果要选取数码管0,则发送总线值为:1111 1110 1111 1111,如要选取数码管1,则发送总线值为:1111 1101 1111 1111,此时所选数码管7段和DP位将全部亮。

实验接线:用导线连接IO3与ADJ_CLK,调整拨码开关SW17-SW20,使输出频率为5MHz;用导线将IO9-IO12连到L1-L4。

实验4 LED数码管静态显示电路的设计与仿真

实验项目四 LED数码管静态显示电路的设计与仿真 [实验目的] 1.掌握LED数码管编码方法 2.掌握LED数码管静态显示电路的设计 3.掌握对LED数码管静态显示的控制方法 [实验原理] [实验仪器] PC机一台 [Proteus用到器件的关键词] 单片机(at89c52)、数码管(7seg-com-cathode)、排阻(respack-7) [实验内容与步骤] 1.用Proteus软件设计出LED数码管显示电路原理图。 2.由于单片机P0口内部无上拉电阻,故使用时要外接上拉电阻,阻值为10KΩ。 3.用Keil编写程序让第二个数码管从0显示到F,然后再让从0开始显示;每当第二个数码管显示到F后,第一个数码管显示值加1一次,最后调试程序、编译后生成HEX文件。4.将HEX文件装载到MCU AT89C52中,单击Start按钮开始动态仿真。 [实验数据记录] ;******两位数码管静态显示程序*******;

ORG 0000H LJMP MAIN ORG 0050H MAIN: MOV R3,#0 MOV P0,#3FH LP2: MOV DPTR,#0200H LP1: MOVC A,@A+DPTR MOV P2,A LCALL DELAY MOV R2,A CLR A INC DPTR CJNE R2,#6FH,LP1 INC R3 MOV DPL,R3 MOVC A,@A+DPTR MOV P0,A CLR A CJNE R3,#10,LP2 AJMP MAIN DELAY: MOV R0,#0FFH DL2: MOV R1,#0FFH DL1: NOP NOP NOP DJNZ R1,DL1 DJNZ R0,DL2 RET ORG 0200H TAB: DB 3FH;0 DB 06H;1 DB 5BH;2 DB 4FH;3 DB 66H;4 DB 6DH;5 DB 7DH;6 DB 07H;7 DB 7FH;8 DB 6FH;9 END [实验数据处理] [实验结果及讨论]

实验三 数码管显示实验

实验十九数码管显示实验 一、实验目的 1、了解数码管的显示原理; 2、掌握数码管显示的编程方法。 二、实验内容 1、编写数码管显示程序,循环显示0-F字符 三、实验设备 1、硬件: JX44B0实验板; PC机; JTAG仿真器; 2、软件: PC机操作系统(WINDOWS 2000); ARM Developer Suite v1.2; Multi-ICE V2.2.5(Build1319); 四、基础知识 1、掌握在ADS集成开发环境中编写和调试程序的基本过程。 2、了解ARM 应用程序的框架结构; 3、了解数码管的显示原理; 五、实验说明 1、LED显示原理 发光二极管数码显示器简称LED显示器。LED显示器具有耗电低、成本低、配置简单灵活、安装方便、耐震动、寿命长等优点,目前广泛应用于各类电子设备之中。 7段LED由7个发光二极管按“日”字排列。所有发光二极管的阳极连接在一起称共阳极接法,阴极连接在一起称为共阴极接法。一般共阴极可以不需要外接电阻。 其中各二极管的排列如上图在共阳极接法中,如果显示数字“5”,需要在a、c、d、f、g端加上高电压,其它加低电压。这样如果按照dp、g、fe、d、c、b、a的顺序排列的话对应的码段是:6DH。其它的字符同理可以得到。

2、数码管显示驱动 数码管的显示一般有动态显示和静态显示两大类,另外按照驱动方式又分串行驱动和并行驱动两种方式。串行驱动主要是提供串-并转换,减少控制线数量;并行驱动对每一个段提供单独的驱动,电路相对简单。这方面参看数字电路相关内容。 下面主要介绍静态显示和动态显示: 1)静态显示: LED数码管采用静态接口时,共阴极或共阳极节点连接在一起地或者接高电平。每个显示位的段选线与一个8位并行口线相连,只要在显示位上的段选位保持段码电平不变,则该位就能保持相应的显示字符。这里的8位并行口可以直接采用并行I/O口,也可以采用串行驱动。相应的电路如下: 很明显采用静态显示方式要求有较多的控制端(并行)或较复杂的电路(串行)。但是在设计中对器件的要求低。

LED数码管显示实验

信息工程学院实验报告 课程名称:单片机原理及接口 实验项目名称:LED 数码管显示实验 实验时间:2016年3月11日 班级:通信141 姓名: 学号: 一、实 验 目 的: 熟悉keil 仿真软件、proteus 仿真软件、软件仿真板的使用。了解并熟悉一位数码管与 多位LED 数码管的电路结构、与单片机的连接方法及其应用原理。学习proteus 构建LED 数 码管显示电路的方法,掌握C51中单片机控制LED 数码管动态显示的原理与编程方法。 二、实 验 设 备 与 器 件 硬件:微机、单片机仿真器、单片机实验板、连线若干 软件:KEIL C51单片机仿真调试软件,proteus 系列仿真调试软件 三、实 验 原 理 LED 显示器是由发光二极管显示字段的显示器件。在单片机应用系统中通常使用的是七 段LED ,这种显示器有共阴极与共阳极两种。 共阴极LED 显示器的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发 光二极管则点亮;共阳极LED 显示器的发光二极管阳极并接。 七段LED 数码管与单片机连接时,只要将一个8位并行输出口与显示器的发光二极管引 脚相连即可。8位并行输出口输出不同的字节数据即可获得不同的数字或字符,通常将控制 成 绩: 指导老师(签名): a f b e g c d dp 1 2 3 4 5 10 9 8 7 6 g f a b e d c dp (a) 共阴极 (b) 共阳极 (c) 管脚配置

发光二极管的8位字节数据称为段选码。 多位七段LED数码管与单片机连接时将所有LED的段选线并联在一起,由一个八位I/O 口控制,而位选线分别由相应的I/O口线控制。如:8位LED动态显示电路只需要两个八位I/O口。其中一个控制段选码,另一个控制位选。 由于所有位的段选码皆由一个I/O控制,因此,在每个瞬间,多位LED只可能显示相同的字符。要想每位显示不同的字符,必须采用动态扫描显示方式。即在每一瞬间只使某一位显示相应字符。在此瞬间,位选控制I/O口在该显示位送入选通电平(共阴极送低电平、共阳极送高电平)以保证该位显示相应字符,段选控制I/O口输出相应字符段选码。如此轮流,使每位显示该位应显示字符,并保持延时一段时间,以造成视觉暂留效果。 不断循环送出相应的段选码、位选码,就可以获得视觉稳定的显示状态。由人眼的视觉特性,每一位LED在一秒钟内点亮不少于30次,其效果和一直点亮相差不多。 四、实验内容与步骤 1、电路图的设计。 (1)打开proteus软件,单击P,打开搜索元器件窗口,如图 1-1 所示: 图1-1 搜索元器件 (2)添加元器件AT89C51、CAP、BUTTON、LED-BLUE、RES、CRYSTAL、7SEG-MPXI1CC,修改元器件的参数,绘制电路图,如图1-2 所示:

《一位LED数码管显示0-9》

成都理工大学工程技术学院 单片微机原理及应用课程设计《一位LED数码管显示0-9》 学生姓名: 学号: 专业:

班级: 指导教师: 完成日期: 目录 一实验目的与任务 (2) 二实验要求 (2) 三实验内容 (2) 四元器件清单 (2) 五LED数码管的结构及工作原理 (2) 六关于PLC控制LDE介绍 (4) 七原理图绘制说明 (5) 八流程图绘制以及说明 (9)

九电路原理图与仿真 (10) 十源程序 (12) 十一心得体会 (12) 十二参考文献 (13) 一、实验与任务 结合实际情况,编程设计、布线、程序调试、检查与运行,完成一个与接近实际工程项目的课题,以培养学生的实际操作能力,适应生产一线工作的需要。做到能检查出错误,熟练解决问题;对设备进行全面维修。通过实训对PLC的组成、工作原理、现场调试以及基于网络化工作模式的基本配置与应用等有一个一系列的认识和提高。 利用51单片机、1个独立按键及1位7段数码管等器件,设计一个单片机输入显示系统,要求每按一下独立按键数码管显示数据加1(数码管初始值设为0,计到9后再加1 ,则数码管显示0)。 本次设计采用12MHz的晶体振荡器为单片机提供振荡周期,外加独立按键,复位电路和显示电路组成。 二、实验要求 1、了解七段LED数码管的结构、分类以及数码管的显示码。 2、学习1位LED数码管静态显示与动态显示的编程方法。

3、掌握可编程序控制器技术应用过程中的一些基本技能。 4、了解可编程控制器的装备、调试的全过程。 三、实验内容 1、练习设计、连接、调试控制电路; 2、学习PLC程序编程; 四、元器件清单 从PROTUES库中选择元器件 (1)AT89C51;单片机。 (2)RES、RX8;电阻、8排阻。 (3)7SEG-COM-CAT-BLUE;带公共端共阴极七段蓝色数码管。 (4)CAP/CAP-ELEC;电容、电解电容。 (5)CRYSTAL:晶振。 五、LED数码管的结构及工作原理 led数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位0,1,2,3,4,5,6,8,10位等等....,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。led数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,

6位7段LED数码管显示实验

6位7段LED数码管显示实验 【实验要求】1)初始化时,使6位LED均显示8,显示时间为1s。2)从第一个LED开始,从0显示到9,0.5s刷新一次。直到最后一个LED。【实验目的】1)熟悉并进一步掌握定时器中断的使用和时基信号的使用。2)进一步巩固I/O口的使用方法。3)了解6位7段LED数码管的使用。【实验设备】1)装有u’nsp IDE仿真环境的PC机一台。2)μ’nSP?十六位单片机实验箱一个。【实验原理】通过对I/O口的控制,初始化时点亮所有的数码管,即6位LED数码管均显示8。1s 后,从第一位数码管开始从0显示到9,刷新时间为0.5s。直到最后一个数码管。1s的时间使用定时器A (FIQ);0.5s的时间使用2HZ的时基信号(IRQ5)。【硬件连接图】A0—A6 接A---G A8—A13 接CS1—CS6 B0—B7 接KEY 【实验步骤】⑴按硬件电路原理图进行连接。⑵画程序流程图。⑶编写程序。⑷调试程序。⑸结合硬件调试,实现最终功能。【主程序流程图】 广告灯设计(利用取表方式) 桂林电子工业学院孙安青 https://www.wendangku.net/doc/f411994847.html, 1.实验任务 利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。 2.电路原理图 3.系统板上硬件连线 把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L 1-L8端口上,要求:P1.0对应着L1,P1.1对应着L2,……,P1.7对应着L8。 4.程序设计内容 在用表格进行程序设计的时候,要用以下的指令来完成 (1).利用MOV DPTR,#DATA16的指令来使数据指针寄存器指到表的开头。 (2).利用MOVC A,@A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。 因此,只要把控制码建成一个表,而利用MOVC工,@A+DPTR做取码的操作,就可方便地处理一些复杂的控制动作,取表过程如下图所示:

关于单片机的一些小实验_06 一位数码管静态显示

/****************************************************************************** ************** * 功能:一位数码管静态显示。 * 硬件条件:1.CPU型号:AT89S52 * 2.晶振:12.000MHz * 3. P0口全部接上拉电阻。 * 4.短接P0.0__SMG1 * 短接P0.1__SMG2 * 短接P0.2__SMG3 * 短接P0.3__SMG4 * 短接P0.4__SMG5 * 短接P0.5__SMG6 * 短接P0.6__SMG7 * 短接P0.7__SMG8 * 短接P2.7__SI1 * 短接P2.6__RCK1 * 短接P2.5__SCK1 * 日期:2014年04月23号 ******************************************************************************* **************/ #include "reg52.h" // 包含头文件 /* 与编译器无关的数据类型定义*/ /****************************************************************************** **************/ typedef unsigned char uint8; // 无符号8位整型变量 typedef signed char int8; // 有符号8位整型变量 typedef unsigned short uint16; // 无符号16位整型变量 typedef signed short int16; // 有符号16位整型变量 typedef unsigned int uint32; // 无符号32位整型变量 typedef signed int int32; // 有符号32位整型变量 typedef float fp32; // 单精度浮点数(32位长度)typedef double fp64; // 双精度浮点数(64位长度) /****************************************************************************** **************/ /* 定义位变量*/ sbit P0_0 = P0 ^ 0; sbit P0_1 = P0 ^ 1; sbit P0_2 = P0 ^ 2; sbit P0_3 = P0 ^ 3; sbit P0_4 = P0 ^ 4; sbit P0_5 = P0 ^ 5; sbit P0_6 = P0 ^ 6;

单片机实验——数码管显示

单片机实验——数码管显示

数码管显示 一、数码管静态显示 1、电路图 图1 2、电路分析 该电路采用串行口工作方式进行串行显示实验,串行传输数据为8位,只能从RXD端输

入输出,TXD端用于输出同步移位脉冲。当CPU 执行一条写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口开始将发送缓冲器SBUF 中的8位数据按照从低位到高位依次发送出去,8位数据发送完毕,发送结束标志TI置1,必须由软件对它清0后才能启动发送下一帧数据。 因此,当输完8个脉冲后,再一次来8个脉冲时,第一帧的8位数据就移到了与之相连的第二个74LS164中,其他数据依此类推。 3、流程图

发送数据 二、数码管动态显示 1、电路图

图2 2、电路分析 R1-R7电阻值计算:一个7-seg 数码管内部由8段LED 组成,因此导通电压和电流与LED 灯相同,LED 导通压降大概在 1.5V-2.2V ,电流3mA-30mA ,单片机的工作电压是5V , 所以 一般取Rmin 和Rmax 中间值,330Ω、470Ω、510Ω。 由于P0口内部没有上拉电阻,所以在P0 口接1003025Im min 1325Im max =-===-==mA V V an U R K mA V V in U R

排阻,上拉电压。如果没有排阻的话,接上拉电阻时需要考虑数码管的电流,如果太小的话,是驱动不了数码管的。如图3: 发现电流大于5mA时,数码管才能亮,与前面电流最小3mA不符,因此计算数码管电流时使其在10mA-20mA之间,确保能驱动数码管亮。 两个74HC573实现对六位数码管的段选和位选,控制端为LE(第11脚)。 3、思路分析 先使第一个573输出同步,把数据送入573中,然后锁存,第二个573输出同步,打开第一个数

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

八位七段数码管动态显示电路的设计 一、实验目的 1、了解数码管的工作原理。 2、学习七段数码管显示译码器的设计。 3、学习VHDL的CASE语句及多层次设计方法。 二、实验原理 七段数码管是电子开发过程中常用的输出显示设备。在实验系统中使用的是两个四位一体、共阴极型七段数码管。其单个静态数码管如下图4-4-1所示。 图4-1 静态七段数码管 由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。反之则不亮。共阳极性的数码管与之相么。四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。 三、实验内容 本实验要求完成的任务是在时钟信号的作用下,通过输入的键值在数码管上显示相应的键值。在实验中时,数字时钟选择1024HZ作为扫描时钟,用四个拨动开关做为输入,当四个拨动开关置为一个二进制数时,在数码管上显示其十六进制的值。 四、实验步骤 1、打开QUARTUSII软件,新建一个工程。 2、建完工程之后,再新建一个VHDL File,打开VHDL编辑器对话框。 3、按照实验原理和自己的想法,在VHDL编辑窗口编写VHDL程序,用户可参照光 盘中提供的示例程序。 4、编写完VHDL程序后,保存起来。方法同实验一。

5、对自己编写的VHDL程序进行编译并仿真,对程序的错误进行修改。 6、编译仿真无误后,根据用户自己的要求进行管脚分配。分配完成后,再进行全编译 一次,以使管脚分配生效。 7、根据实验内容用实验导线将上面管脚分配的FPGA管脚与对应的模块连接起来。 如果是调用的本书提供的VHDL代码,则实验连线如下: CLK:FPGA时钟信号,接数字时钟CLOCK3,并将这组时钟设为1024HZ。 KEY[3..0]:数码管显示输入信号,分别接拨动开关的S4,S3,S2,S1。 LEDAG[6..0]:数码管显示信号,接数码管的G、F、E、D、C、B、A。 SEL[2..0]:数码管的位选信号,接数码管的SEL2、SEL1、SEL0。 8、用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。观察实验结果是否与 自己的编程思想一致。 五、实验现象与结果 以设计的参考示例为例,当设计文件加载到目标器件后,将数字信号源模块的时钟选择为1464HZ,拨动四位拨动开关,使其为一个数值,则八个数码管均显示拨动开关所表示的十六进制的值。

拨码开关输入数码管显示实验

综合课程设计实验报告 班级: 姓名: 学号:11 指导老师:

实验名称: 拨码开关输入数码管显示实验 实验要求: 1. 掌握数码管显示原理 2. 掌握拨码开关工作原理 3. 通过FPGA用拨码开关控制数码管显示 实验目标: 4位拨码开关分别对应4位数码管,拨动任意1位开关,对应的数码管将显示数字1,否则显示数字0。 实验设计软件 Quartus II 实验原理 1.数码管显示模块 电路原理图:

如图所示,数码管中a,b,c,d,e,f,g,dp分别由一个引脚引出,给对应的引脚高电平,则对应引脚的LED点亮,故我们在程序中可以设定一个8位的二进制数reg【7:0】h,每一位对应一个相应的引脚输出,那么我们就可以通过对x的赋值,控制对应的8个LED亮灭的状态进行数字显示。例如,如果我们显示数字2,则在数码管中,a、b、d、e、g亮,c、f、dp不亮,则显示的是数字2,即h=’b代表显示数字2。 2.拨码开关模块 电路原理图: 拨码开关有8个引脚,每个引脚对应于数码管的一个LED灯,当拨码开关的一个引脚是高电平时,则对应的数码管一个LED灯亮,其他7个LED等不亮。通过此原理来实现数码管的LED灯亮暗情况从而实现数码管的数字显示。例如当第一个拨码接通时,此时输入信号为8'b对应的数码管的输出信号为out=8'b,此时相当于数码管a,b,c,d,e,f,g亮,7段数码管全部显示,显示的数字为8。 程序代码 module bomakaiguan(out,key_in,clk); assign p='b1111; output[7:0] out=8'b; input[7:0] key_in; input clk; reg[7:0] out; always @(posedge clk) begin case(key_in) 8'b: out=8'b;

单片机数码管静态显示实验程序(汇编)

单片机数码管静态显示实验程序 org 00h num equ p0 ;p0口连接数码管 clr p2.0 ; mov dptr ,#tab clr a mov r2,#0 loop: movc a,@a+dptr mov num ,a acall delay_200ms inc r2 mov a,r2 cjne r2,#15, loop mov r2,#0 clr a ajmp loop tab : DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH delay_200ms: mov r3,#20 delay: acall delay_10ms djnz r3,delay ret ;;;;;;;;;;;;;;;; 非中断精确1MS定时程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; delay_1ms: MOV R7 ,#249 signed: ;循环部分4机器周期 nop nop djnz R7 ,signed ret ;返回指令2机器周期 ;2+249*4+2=1000us 可以精确定时1MS,假设外部晶振是12M

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 非中断精确10MS定时程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; mov r6,#9 ;2个机器周期用2us delay_10ms_sined: ;9次循环共用9(1ms+4us)=9036us acall delay_1ms djnz r6,delay_10ms_sined MOV r6 ,#240 ;2个机器中期用2us signed_10ms : ;循环部分4机器周期共240次 nop nop djnz r6 ,signed_10ms ret ;返回指令要2us ;2us+9036us+240*4us+2us = 10ms 即可精确定时10ms ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 非中断精确定时1s ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; delay_1s: mov r5,#99 ;两个机器周期2us delay_1s_signed: ;循环指令周期为4us,加上延时10ms ;(10ms+4us)*99 = 990.396ms acall delay_10ms djnz r5,delay_1s_signed mov r5 ,#9 ;两个机器周期2us signed_1s: ;循环指令周期为4us,加上延时1ms ;(1ms+4us)*9 = 9ms+36us acall delay_1ms djnz r5 ,signed_1s mov r5 ,# 140 ;机器周期2us signed_1s_: ;一次循环4us共有140次。140us*4 = 560us nop nop djnz r5,signed_1s_ ret ;2us ;2us+990ms+396us+2us+9ms+36us+2us+560us+2us = 999ms+1000us = 1s end

实验三静态数码管显示

实验三静态数码管显示 1.实验目的 通过本实验让学生学习7段数码管显示译码器的设计,进一步了解、熟悉和掌握FPGA 开发软件Quartus II的使用方法及VHDL语言的编程方法,学习LPM兆功能模块的调用。 2.实验内容 实验箱上有2个4位动态共阳极数码管,其中8个位码DIG0~DIG7和8位段码SEG0~SEG7分别与FPGA相应的引脚相连。这样只要DIG0~DIG7上一直输出低电平“0”,则8个数码管将显示相同的数码,这样8位动态数码管就变成了静态数码管。 本实验的内容是建立7段译码显示模块,用于控制LED数码管的静态显示。要求在试验箱上循环显示0~9和A~F 16个字符。 3.实验原理 数码管LED显示是工程项目中使用较广的一种输出显示器件。常见的数码管有共阴和共阳两种。共阴数码管是将8个发光二极管的阴极连接在一起作为公共端,而共阳数码管是将8个发光二极管的阳极连接在一起作为公共端。公共端常称为位码,而将其它8位称为段码,分别为:a、b、c、d、e、f、g、h,其中h为小数点。对于共阳极数码管,只要公共端为高电平“1”,某个段输出为低电平“0”,则相应的段就亮。 本实验通过分频模块得到1Hz的频率信号,加载于4位计数器的时钟输入端,计数循环输出0~9和A~F 16个字符,通过7段译码模块后在数码管上显示出来。 4.实验步骤 (1)启动Quartus II,建立一个空白工程,然后命名为sled.qpf。 (2)新建decl7s.vhd源程序文件,编写代码。然后进行综合编译。若在编译过程中发现错误,则找出并更正错误,直到编译成功为止。生产符号文件decl7s.bsf (File→ Create/_Update → Create Symbol Files for Current File)。 (3)将实验模块库里的int_div.vhd和int_div.bsf拷贝到工程目录下。 (4)添加4位兆计数器功能模块。步骤如下: ①在Quartus II主界面中选择Tools—Mega Wizard Plug-In Manager,打开如下图所示的兆功能模块向导。选择Create a new custom megafunction variation新建一个新的兆功能模块。

八段数码管显示实验

八段数码管显示实验报告 一.设计目的 1.掌握数码管动态显示的原理; 2.学会用总线方式控制数码管显示; 3.熟悉利用单片机驱动数码管的电路及编程原理。 二.设计内容 利用实验箱提供的显示电路,设计一个能够动态显示一行数据的系统。实验箱一般提供了6位8段码LED显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。能够正常显示数据之后,请改变一下数字的变化速度或者LED显示的方向。 三.实验原理 1.原理:当用总线方式驱动八段显示管时,请将八段的驱动方式选择开关拨到“内驱”位置;当用I/O方式驱动八段显示管时,请将开关拨到“外驱”位置。 本实验仪提供了6 位8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。8位段码、6位位码是由两片74LS374输出。位码经MC1413或ULN2003倒相驱动后,选择相应显示位。 本实验仪中 8位段码输出地址为0X004H,位码输出地址为 0X002H。此处X 是由KEY/LED CS 决定,参见地址译码。做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。以便用相应的地址来访问。例如,将KEY/LED CS 接到CS0上,则段码地址为08004H,位码地址为08002H。 七段数码管的字型代码表如下表:

2. 3.程序 OUTBIT equ 08002h ; 位控制口

OUTSEG equ 08004h ; 段控制口 IN equ 08001h ; 键盘读入口 LEDBuf equ 60h ; 显示缓冲 Num equ 70h ; 显示的数据 DelayT equ 75h ; ljmp Start LEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h Delay: ; 延时子程序 mov r7, #0 DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop ret DisplayLED: mov r0, #LEDBuf mov r1, #6 ; 共6个八段管 mov r2, #00100000b ; 从左边开始显示 Loop: mov dptr, #OUTBIT mov a, #0 movx @dptr, a ; 关所有八段管 mov a, @r0 mov dptr, #OUTSEG movx @dptr,a

单个数码管静态显示教案

单个数码管静态显示公开课教案 主讲老师杨镇彬授课班级13电子B2 日期2014.11.11 教学目标:1、理解数码管显示控制原理; 2、掌握单个数码管静态显示的程序;并能修改程序; 3、能使用模拟软件模拟实验效果。 重点难点:1、数码管静态显示原理; 2、数码管显示控制的主程序。 教学过程时 间 一、复习ORG MOV AJMP SJMP DJNZ CLR RET END 4 二、导入在我们生活中能经常见到LED数码管的应用实例,如电饭煲、电磁炉、洗 衣机、数码万年历等等,这些数码管都是由单片机控制的,那么如何控制数码 管显示的呢? 1 三、七段LED数码管内部结构 有a、b、c、d、e、f、g七个笔画,第八位为小数点dp,分为共阳、共阴 两大类。 3

四、显示原 理 以共阴极为例(控制正极,高电平有效)9 五、电气原 理图分析 3 六、练习1猜猜显示的数字是多少? MOV P0,# 0000 0110 B 1 MOV P0,# 0101 1011 B 2 MOV P0,# 0111 1111 B 8 请问要显示数字7的话,需要传送什么数值给P0端口? 6 七、单个数码管显示MAIN: CLR P2.0;设置低电平,接通负极 MOV A,#00000110B;储存控制信号 MOV P0,A;传送控制信号 LCALL DELAY;调用延时子程序 SJMP MAIN;跳回主程序 8

主程序 八、完整程序ORG 0000H AJMP MAIN ORG 0100H MAIN:CLR P2.0 MOV A,#00000110B MOV P0,A SJMP MAIN END 1 九、软件模 拟实验 1、显示数字1; 2 十、学生 操作 叫学生上讲台操作(修改程序) 2

七段数码管显示实验

单片机实验报告

实验九七段数码管显示实验 一、实验目的 1.学习七段数码管的工作原理; 2.学习数码管与8051单片机的接口方法; 3.掌握动态扫描显示技术。 二、实验原理 如图4.9-1所示,LED数码管由7个发光二极管组成,此外,还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。通过七段发光二极管亮 共阴极接法共阳极接法 图4.9-1 暗的不同组合,可以显示多种数字、字母以及其它符号。LED数码管中的发光二极管共有两种连接方法: 1)共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。实验中使用的LED显示器为共阴极接法 2)共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。 为了显示数字或符号,要为LED显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。七段发光二极管,再加上一个小数点位,共计八段。因此提供给LED显示器的字形代码正好一个字节。若a、b、c、d、e、f、g、dp 8个显示段依次对应一个字节的低位到高位,即D0、D1、D2、D3、D4、D5、D6、D7,则用共阴极LED数码管显示十六进制数时所需的字形代码如表4.9-1所示。

表4.9-1 共阴极LED 数码管字形代码 字型 共阴极字形代码 字型 共阴极字形代码 字型 共阴极字形 代码 0 3FH 6 7DH C 39H 1 06H 7 07H d 5EH 2 5BH 8 7FH E 79H 3 4FH 9 6FH F 71H 4 66H A 77H 灭 00H 5 6DH b 7CH *实际上试验中使用的是共阳极数码管,这里就不一一列出。 2、动态显示 按图4.9-2(b )连接线路,通过交替选中LED1和LED0循环显示两位十进制数。七段数码管段码连接不变,位码驱动输入端S1、S0接8255A C 口的PC1、PC0,通过C 口的这两位交替输出1和0,以便交替选中LED1和LED0,从而实现两位十进制数的交替显示。请编程实现在两个LED 数码管上循环显示00 99,程序流程图如图4.9-3(b)所示。 (a) 静态显示程序流程图 (b) 动态显示程序流程图 图4.9-3 十位数的段码至A 口 个位数的段码至A 口 开始 开始 返回DOS 返回DOS 延时并修改要显示的数字

七段数码管循环显示

(封面) 天津理工大学中环信息学院 电子技术课程设计 设计题目:七段数码管循环显示控制电路设计 姓名:诸钦峰学号:11160014 系别:电子信息工程系专业班级:物联网1班 开始日期: 2013年6月24日完成日期2013 年07月01日 指导教师:彭利标成绩评定等级

天津理工大学中环信息学院 课程设计任务书 系别:电子信息工程系班级:物联网1班姓名:诸钦峰学号:11160014 本表附在课程设计说明书的目录之后。

天津理工大学中环信息学院 课程设计成绩评定表 系别:电子信息工程系班级:物联网1班姓名:诸钦峰学号:11160014 本表附在课程设计任务书之后。

目录 一、设计意义 (4) 二、主要任务 (5) 2.设计方案比较 (5) 三、电路组成框图 (8) 1.数列循环电路的设计 (8) 2.序列显示电路的设计 (8) 2.1十进制自然数序列的显示电路 (8) 2.2奇数序列显示电路 (9) 2.3偶数序列显示电路 (9) 2.4音乐序列显示电路 (10) 3.脉冲产生电路的设计 (11) 4.二分频电路的设计 (11) 四、电路原理图 (12) 五、各电路的仿真测试 (14) 1.脉冲产生电路的仿真 (15) 2.二频分电路的仿真 (16) 六、元件清单 (16) 七、总结 (16)

一、设计意义 这次的课程设计主要是用计数器来实现的,这个七段数码管循环显示控制电路设计的实质就是要产生一系列有规律的数列, 然后通过一个七段数码管显示出来。这里使用的只要就是计数器, 计数器在时序电路中应用的很广泛,它不仅可以用于对脉冲进行计数,还可用于分频,定时,产生节拍脉冲以及其他时序信号。运用计数器的不同的功能和不同的接发就可以实现不同的序列输出了。 而这次的内容还包括分电路图的整合,使这个七段数码管能够按照要求那个依次输出自然序列,奇数序列,偶数序列还有音乐序列。为了实现这个循环输出的功能,在设计的时候还用到了一个以为寄存器,可以利用它的输出端来控制四个计数器的工作情况, 可以让四个计数器依次工作,就可以达到要求的依次循环输出数列。 最后还有一个部分就是脉冲的产生基于多谐振荡器可以产生方波,就可以利用它来产生脉冲信号了。而这个多谐振荡器采用的是 555 定时器来完成的。这个设计基本上就是由以上三个部分连接在一起组成的。 1、基本方案框图 计数器输出信号,将信号给译码器和脉冲信号再由脉冲信号和译码器分别编成自然序列,奇数序列,偶数序列和音乐序列,最后由数码管显示出来。 图1 七段数码管显示的基本方框图

键盘与数码管静态显示实验 单片机 程序

键盘与数码管静态显示实验 实验内容: 1、根据电路图图1和图2编写按键程序,左侧第一位数码管显示独立式按键编号“1”、“2”、“3”、“4”,哪一个按下,对应的编号显示在左侧第一位数码管(左侧第二个数码管为全灭状态),右侧二位数码管显示“00--15”的十进制键值,无键按下时数码管为全灭状态。 图1 动态显示电路图

图2 键盘接口电路图 评分表 #include unsigned char code led_code[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09 , 0x11,0xc1,0x63,0x85,0x61,0x71,0xff}; unsigned char dis_buf[4]; unsigned char i; unsigned char aa,bb,cc,lie; sbit key1=P2^0; sbit key2=P2^1; sbit key3=P2^2;

sbit key4=P2^3; sbit led_clk= P1^6 ; sbit led_data = P1^7 ; void delay_ms(unsigned int i) { unsigned char j; for(i;i>0;i--) { for(j=110;j>0; j-- ); } } void key_scan(void) { P3=0Xf0; if((P3&0xf0)!=0xf0) { aa=0xfe; for(lie=0;lie<4;lie++) { P3=aa; aa=(aa<<1)|0x01; if((P3&0xf0)!=0xf0) { bb=P3&0Xf0; switch(bb) { case 0xe0:cc=lie;break; case 0xd0:cc=lie+4;break; case 0xb0:cc=lie+8;break; case 0x70:cc=lie+12;break; default :cc=16;break; } } } } else cc=16; } void led_display ( ) { unsigned char t,i; unsigned char input_code; for(i=0;i<4;i++) {

7段数码管实验报告

EDA 实验报告 实验名称: 7段数码管控制接口学院:信息工程学院 专业: 11级电子信息工程2班年级、班: 2009级2班 学生姓名:王璐 指导教师:郭华 2014 年 6 月24 日

7段数码管控制接口 一、实验要求。 用设计一个共阴7 段数码管控制接口,要求:在时钟信号的控制下,使 6 位数码管动态刷新显示0—F,其中位选信号为8-3 编码器编码输出。 二、实验内容。 在实验仪器中,8 位7 段数码显示的驱动电路已经做好,并且其位选信(SEL[7..0])为一3-8 译码器的输出,所以我们在设计7 段数码管控制接口时,其位选信号输出必须经8-3编码。 显示控制器的引脚图如图40-1: 图1 图中CP 为时钟输入端,SEGOUT[7..0]为段驱动输出;SELOUT[2..0]为位选信号输出;NUMOUT[3..0]为当前显示的数据输出。 图40-2 7段显示控制器仿真波形图 从图40-2可以看出,6位数码管是轮流点亮的,我们以NUMOUT=1 这段波形为参考:当SELOUT为000时,点亮第一位显示器,显示的数字为1,同时,NUMOUT 输出的数据也为“0001”。同理,当SELOUT 为001 时,点亮第二位显示器,显示数字为1,直到 6 位显示器全都显示完毕,等待进入下一个数字的显示。 同时,还有一个问题不可忽视,位扫描信号的频率至少需要多少以上,才能使显示器不闪烁?简单的说,只要扫描频率超过眼睛的视觉暂留频率24HZ以上就可以达到点亮单个显示,却能享有6个同时显示的视觉效果,而且显示也不闪烁。当我们输入频率为5MHZ时,我们通过加法计数器来产生一个约300HZ 的信号,并且由它来产生位选信号,请参考下面程序段:

实验四 数码管静态显示

实验四数码管静态显示 一、实验目的 1.熟练掌握单片机定时器的原理和应用方法。 2.了解数码管的原理,掌握数码管的真值表的计算方法。 二、实验内容 通过对单片机编程来实现数码管静态显示。 三、实验知识点 3.1定时器的初步认识 时钟周期:时钟周期T是时序中最小的时间单位具体计算的方法就是1/时钟源,我们KST-51单片机开发板上用的晶振是11.0592M,那么对于我们这个单片机系统来说,时钟周期=1/11059200秒。 机器周期:我们的单片机完成一个操作的最短时间。机器周期主要针对汇编语言而言,在汇编语言下程序的每一条语句执行所使用的时间都是机器周期的整数倍,而且语句占用的时间是可以计算出来的,而C语言一条语句的时间是不可计算的。51单片机系列,在其标准架构下一个机器周期是12个时钟周期,也就是12/11059200秒。 定时器和计数器。定时器和计数器是单片机内部的同一个模块,通过配置SFR(特殊功能寄存器)可以实现两种不同的功能。 顾名思义,定时器就是用来进行定时的。定时器内部有一个寄存器,我们让它开始计数后,这个寄存器的值每经过一个机器周期就会加1一次,因此,我们可以把机器周期理解为定时器的计数周期。我们的秒表,每经过一秒,数字加1,而这个定时器就是每过一个机器周期的时间,也就是12/11059200秒,数字加1。 3.2 定时器的寄存器描述 标准的51里边只有定时器0和定时器1这两个定时器,现在很多单片机也有多个定时器的,在这里我们先讲定时器0和1。那么我前边提到过,对于单片机的每一个功能模块,都是由他的SFR,也就是特殊功能寄存器来控制。而和定时器有关的特殊功能寄存器,有TCON和TMOD,定时值存储寄存器。 a)定时值存储寄存器 表4-1中的寄存器,是存储计数器的计数值的,TH0/TL0用于T0, TH1/TL1用于 T1。 表4-1 定时值存储寄存器 表4-2 TCON--定时器/计数器控制寄存器的位分配(地址:88H) 表4-3 TCON--定时器/计数器控制寄存器的位描述

数码管显示实验报告

三、数码管显示实验 一、实验目的及要求 理解8段数码管的基本原理,理解8段数码管的显示和编程方法,理解4连排共阴极8段数码管J3641AS通过DP1668与CPU的接线图。 理解8段数码管原理,运行与理解各子程序,编制一个4连排8段数码管程序,CPU 的P2口接左、右两个DP1668的控制引脚,各DP1668接LED的数据线hgfedcba,在4 连排8段数码管显示编程的日期。 熟悉结构后,自行编程左边四个数码管,显示分钟和秒,当计时达到一个小时,就重新从00:00开始计时。另外,指定计时的开始值。 二、实验原理(图) 8段数码管一般由8个发光二极管(Llight-emitting diode,LED)组成,每一个位段就是一个发光二极管。一个8段数码管分别由a、b、c、d、e、f、g位段,外加上一个小数点的位段h(或记为dp)组成。根据公共端所接电平的高低,可分为共阳极和共阴极两种。 三、实验设备(环境): 1、电脑一台 2、STC-ISP(V6.85I)烧写应用程序 3、Keil应用程序 四、实验内容(算法、程序、步骤和方法): #include //此文件中定义了STC15系列的一些特殊功能寄存器 #include"intrins.h" #define uchar unsigned char #define uint unsigned int

sbit TM1668R_DIO_H = P4^4; //左边数码管宏定义 sbit TM1668R_CLK_H = P2^0; sbit TM1668R_STB_H = P2^1; sbit TM1668L_DIO_H = P2^2; //左边数码管宏定义 sbit TM1668L_CLK_H = P2^3; sbit TM1668L_STB_H = P2^4; sbit LIGHT = P0^1; uchar Today_data[8]; uint temp,kk; const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void Send_Data(uchar dat,uchar n); void DIS_data_1668(uchar data1,uchar data2,uchar data3,uchar data4,uchar n); /****************************************************************************** * * 函数名: Send_Data * 函数功能: TM1668发送一字节数据函数 * 输入: 无 * 输出: 无 ******************************************************************************/ void Send_Data(uchar dat,uchar n) { uchar i; for(i = 0;i<8;i++) //1个字节 { if(n==0) TM1668R_CLK_H = 0; else TM1668L_CLK_H = 0; if(dat&(1<

相关文档
相关文档 最新文档