文档库 最新最全的文档下载
当前位置:文档库 › 八段数码管滚动显示程序设计

八段数码管滚动显示程序设计

八段数码管滚动显示程序设计
八段数码管滚动显示程序设计

实验三八段数码管滚动显示程序设计

一、实验目的

1.掌握数码管动态显示的原理;

2.掌握74LS164扩展端口的方法;

3.掌握数码管滚动显示的方法。

二、实验内容

1.验证参考程序中的实验(显示数字0-5);

2.修改程序:(1)使6个数码管从左到右重复滚动的显示一定的信息,比如:日期2008-3-20;(2)滚动显示的速度可以修改。

三、实验器材

PC机一台, 仿真器一台, 实验箱一台, 导线若干。

四、实验原理图

显示共有6位,采用动态显示,8段数码管是由8155的PB0、PB1经过74LS164串转并后输出得到,6位位码由8155的PA0口输出,经UA2003反向驱动后,选择相应的显示位。实验中数据输出口地址为0e102h,时钟为输出地址为0e102h,位选通输出地址位0e101h。实验原理图见图4-1。

图4-1 实验原理图

五、实验步骤

1.按照实验一中的建立工程的步骤,建立本实验内容相应的工程;

2.运用调试工具,调试软件,观察现象;

3.调试修改程序观察现象。

六、参考程序

/* “验证式"?实验十一八段数码管显示 */

#include

#define LEDLen 6 //6个数码灯

//以下定义8155为PA、PB为基本I/o模式,PC为输出模式

#define mode 0x03;

/* 8155的命令状态口寄存器地址 */

#define CAddr XBYTE[0xe100]

/* 8155的PA口地址,用于数码灯的位控制 */

#define OUTBIT XBYTE[0xe101]

/* 8155的PB口地址,其PB0和PB1用于74Ls164串行输入,控制数码管的段 */

#define CLK164 XBYTE[0xe102]

#define DAT164 XBYTE[0xe102] /* 段控制口(接164数据位) */ /* 键盘读入口 */

#define IN XBYTE[0xe103]

/* 显示缓冲 */

unsigned char LEDBuf[LEDLen];

/* 八段管显示码共阴极字符显示*/

code unsigned char LEDMAP[] = {

0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,

0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 };

void Delay(unsigned char CNT)

{

unsigned char i;

while (CNT-- !=0)

for (i=100; i !=0; i--);

}

void DisplayLED()

{

unsigned char i, j;

unsigned char Pos;

unsigned char LED;

/* 6个数码管从左边开始显示,0010 0000 */

Pos = 0x20;

for (i = 0; i < LEDLen; i++)

{

/* 六个数码管位控制为零,实现关所有八段管 */

OUTBIT = 0;

//数码管需要显示的段数据

LED = LEDBuf[i];

//8155通过PB0和PB1向74Ls164送段数据,串行输入,74Ls164并行输出到数码管段

for (j = 0; j < 8; j++)

{

//每个数据有8位,开始检测每一位的情况,先检测高位

if(LED & 0x80) DAT164 = 1;

else DAT164 = 0;

//必须PB1(CLK164)由低位向高位跳变,才能PB0(DAT164)发送一位数据

CLK164 = CLK164|0x02;

//CLK164置0

CLK164 = CLK164&0xfd;

//为下一位发送做准备

LED <<= 1;

}

OUTBIT = Pos; /* 显示一位八段管 */ Delay(1);

Pos >>= 1; /* 显示下一位 */

}

OUTBIT = 0; /* 关所有八段管 */

}

void main()

{

unsigned char i = 0;

unsigned char j;

CAddr = mode;

while(1)

{

//保证数组里面的数据在0~15中间循环 LEDBuf[0] = LEDMAP[ i & 0x0f]; LEDBuf[1] = LEDMAP[(i+1) & 0x0f]; LEDBuf[2] = LEDMAP[(i+2) & 0x0f]; LEDBuf[3] = LEDMAP[(i+3) & 0x0f];

LEDBuf[4] = LEDMAP[(i+4) & 0x0f];

LEDBuf[5] = LEDMAP[(i+5) & 0x0f];

i++;

for(j=0; j<30; j++)

DisplayLED(); /* 延时 */

}

}

七、实验现象

当程序正常烧入并全速运行后,发现数码管的显示是从左到右滚动显示,并且显示的值是“0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f”轮流显示,通过延时可以调节滚动的快慢。

实验三 数码管显示实验

实验十九数码管显示实验 一、实验目的 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八段数码管规格书 型号:八段全彩数码管 【工作电压】:12V/24V(DC,AC),AC110V/220V 【每米功耗】:6W-15W 【工作温度】:-40℃~55℃ 【防护等级】:IP65 【像素密度】:8段

【内控特效】:跳变跑马流水追逐堆砌全彩等多种变化 【外形尺寸】:D50mm*H37*L1000mm 特点: 1、高品质PC灯管,抗老化,混色均匀,透光性好;耐寒耐高温;在低温环境下可以良好的工作。 2、管材颜色有透明,乳白色,D形(配有堵塞、支架); 3、每米规格可装144粒LED灯珠; 4、根据同心圆理论设计,LED发光经圆形灯的多次折射,视角可达250度,可视性强; 5、LED为台湾晶元固体冷光源,环氧树脂封装,无灯丝发热;在高低温环境可以正常工作;额定电压,恒定电流供电,确保LED长期工作,衰减小; 6、高亮度LED光源,色彩鲜丽,色泽纯正无光斑。有红、绿、蓝、黄、白色、双色、七彩渐变、加以控制可实现多色变化; 7、控制形式:可分为管内控制,外置控制器,二种形式。可与DMX512系列控制器驳接,进行IC编程,变幻模式可达数千万种; 8、安装方便,投射角度大。防尘,防漏电耐寒耐高温。 9、工作电压12V、24V可供客户选择。 10、采用电磁兼容设计,不含对环境有害的汞污染,达到绿色环保。 11、采用LED光源,低耗能、寿命长达3-5 万小时(根据外部使用环境)。 应用范围: 该产品广泛应用于舞台、酒吧、酒店、的士高、KTV歌舞厅、桥梁、花园、沟道河岸、各交通立交桥、建筑物轮廓、建筑物的装饰及轮廓勾勒。是取代传统霓虹灯和荧光灯的新一代照明解决案。 注意事项: 1.安装前切断电源,防止触电。 2.初步预算所需护拦管的数量,然后根据数量单根护拦管的额定功率,计算出总功率,并设计配电方案。 3.此灯管应避免安装在热源处及热蒸汽,腐蚀性气体的场所,以免影响寿命。 4.使用电源时,不宜工作在频繁通断电状态下,这样会影响其寿命。

数码管的常见问题

【技术分享】数码管显示常见问题总结 2015—03-30吴鉴鹰(原创) 一、数码管显示原理 我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形.数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。其原理图如下。 其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。可以看出两个编码的各位正好相反.如下图。

二、数码管出现暗红现象 现象描述: 单片机穿行口的范式0为同步移位寄存器方式,外接一个串入并出的移位寄存器,可以扩展为一个并行口。但是发现数码管显示数据的时候,出现暗红现象。 电路连接图 原因:数据在串行输出期间,输出允许控制端没有关闭,从而导致串口输出端不稳定产生暗红现象。 三、数码管闪烁 1:动态扫描驱动的时候,时间调整的不对,时间太短,就会闪烁,时间太长,就会出玩不应该亮的位微亮,所以,这是调整延时时间的事?2:有可能是程序要求

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 数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里有八个小LED 发光二极管,通过控制不同的LED 的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED 的阴极连在一起,让其接地,这样给任何一个LED 的另一端高电平,它便能点亮。而共阳极就是将八个LED 的阳极连在一起。其原理图如下。

其中引脚图的两个COM 端连在一起,是公共端,共阴数码管 要 将其接地,共阳数码管将其接正5伏电源。一个八段数码管称为一 位,多个数码管并列在一起可构成多位数码管,它们的段选线(即 a,b,c,d,e,f,g,dp )连在一起,而各自的公共端称为位选线。显示时, 都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点 亮。数码管的8段,对应一个字节的8位,a 对应最低位,dp 对应最 高位。所以如果想让数码管显示数字 0,那么共阴数码管的字符编码 为00111111,即0x3f ;共阳数码管的字符编码为11000000,即0xc0。 可以看出两个编码的各位正好相反。如下图。 MW 引脚图 共阴极 *5V 共阳取 g f vpM a ti e d COM c

共阴扱共阳极 共阳极的数码管0~f的段编码是这样的: unsigned char code table[]={ // 共阳极0~f 数码管编码0xc0,0xf9,0xa4,0xb0,//0~3 0x99,0x92,0x82,0xf8,//4~7 0x80,0x90,0x88,0x83,//8~b 0xc6,0xa1,0x86,0x8e //c~f }; 共阴极的数码管0~f的段编码是这样的: un sig ned char code table[]={// 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 }; 共阴极0~f数码管编码 //0~3 //4~7 //8~b //c~f Qa

用汇编语言实现八段数码管显示

用汇编语言实现八段数码管显示 一、实验要求 利用实验仪提供的显示电路,动态显示一行数据. 二、实验目的 1. 了解数码管动态显示的原理。 2. 了解用总线方式控制数码管显示 三、实验线路及连线 四、实验说明 1.本实验仪提供了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 。 位选通信号 (0x002H) 段码输出 (0x004H) 数据总线

七段数码管的字型代码表如下表: 五、程序框图

程序代码 OUTBIT equ 08002h ; 位控制口 OUTSEG equ 08004h ; 段控制口 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 ; mov r2, #00100000b ; Loop: mov dptr, #OUTBIT mov a, #0 movx @dptr, a ; mov a, @r0 mov dptr, #OUTSEG movx @dptr,a mov dptr, #OUTBIT mov a, r2 movx @dptr, a ; mov r6, #01

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

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

数码管显示 一、数码管静态显示 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输出同步,打开第一个数

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

综合课程设计实验报告 班级: 姓名: 学号: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;

(完整word版)六位LED八段数码管显示

八段数码管显示 1.实验目的: (1)了解数码管动态显示的原理。 (2)了解74LS164 扩展端口的方法。 2.实验内容: 利用实验仪提供的显示电路,动态显示一行数据。 3.实验线路: PB0 数据输入 PB1 时钟输入 说明:这里只是显示草图,详细原理参见"8155 接口实验" 4.实验器材: (1)QTH2008下载式综合实验仪 1 台(2)QTH2008仿真器 1 台 (3)计算机 1 台 5.实验说明: (1)本实验仪提供了8 段码LED 显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6 位,用动态方式显示。8 段码是由8155 的PB0、PB1 经74LS164“串转并”后输出得到。6 位位码由8155(或8255) 的PA0-5 口输出,经uA2003 反向驱动后,选择相应显示位。 74LS164 是串行输入并行输出转换电路,串行输入的数据位由8155 的PB0 控制,时钟位由8155 的PB1 控制输出。写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位置到74LS164 中,并且实现移位。向显示位选通地址输出高电平就可以点亮相应的显示位。 本实验仪中数据位输出地址为0e102H,时钟位输出地址为0e102H,位选通输出地址为0e101H。本实验涉及到了8155 I0/RAM 扩展芯片的工作原理以及 74LS164 器件的工作原理。

7.参考程序(SY10.ASM): OUTBIT equ 0e101h ; 位控制口 CLK164 equ 0e102h ; 段控制口(接164 时钟位) DAT164 equ 0e102h ; 段控制口(接164 数据位) IN equ 0e103h ; 键盘读入口 LEDBuf equ 60h ; 显示缓冲 Num equ 70h ; 显示的数据 DelayT equ 75h org 0000h 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

八段数码管显示实验

八段数码管显示实验报告 一.设计目的 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

51单片机-八段数码管显示

实验一八段数码管显示 1、实验目的: (1)了解数码管动态显示的原理。 (2)了解74LS164扩展端口的方法。 2、实验要求: 利用实验仪提供的显示电路,动态显示一行数据. 3、实验电路图 LED1LED2LED3LED4LED5LED6 4、实验器材: (1)超想-3000TB综合实验仪 1 台 (2)超想3000仿真器 1 台 (3)计算机 1 台

5、实验连线 无 6、实验说明: (1)本实验仪提供了8段码LED 显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。8段数码管是由8155的PB0、PB1经74LS164“串转并”后输出得到。6位位码由8155的PA0口输出,经Ua2003反向驱动后,选择相应显示位。 74LS164是串行输入并行输出转换电路,串行输入的数据位由8155的PB0控制,时钟位由8155的PB1控制输出。写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位移到74LS164中,并且实现移位。向显示位选通地址输出高电平就可以点亮相应的显示位。 本实验仪中数据位输出地址为0e102H ,时钟位输出地址为0e102H ,位选通输出地址为 0e101H 。本实验涉及到了8155 I0/RAM 扩展芯片的工作原理以及74LS164器件的工作原理。 (2)七段数码管的字型代码表 显示字形 g f e d c b a 段码 0 0 1 1 1 1 1 1 3fh 1 0 0 0 0 1 1 0 06h 2 1 0 1 1 0 1 1 6bh 3 1 0 0 1 1 1 1 4fh 4 1 1 0 0 1 1 0 66h 5 1 1 0 1 1 0 1 6dh 6 1 1 1 1 1 0 1 7dh 7 0 0 0 0 1 1 1 07h 8 1 1 1 1 1 1 1 7fh 9 1 1 0 1 1 1 1 6fh A 1 1 1 0 1 1 1 77h B 1 1 1 1 1 0 0 7ch C 0 1 1 1 0 0 1 39h D 1 0 1 1 1 1 0 5eh E 1 1 1 1 0 0 1 79h F 1 1 1 1 71h a b c d e f g dp

数码管显示实验报告

三、数码管显示实验 一、实验目的及要求 理解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<

数码管完整版

例程18.数码管显示实验 数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示),本实验所使用的是八段数码管。按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM 接到地线GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。 数码管的每一段是由发光二极管组成,所以在使用时跟发光二极管一样,也要连接限流电阻,否则电流过大会烧毁发光二极管的。本实验用的是共阴极的数码管,共阴数码管在应用时应将公共极接到GND,

当某一字段发光二极管的阳极为低电平时,相应字段就点熄灭。当某一字段的阳极为高电平时,相应字段就点亮。介绍完原理, 我们开始准备实验用元器件。 八段数码管*1 220Ω直插电阻*8 面包板*1 面包板跳线*1 扎 我们参考实物连接图按原理图连接好电路。

数码管共有七段显示数字的段,还有一个显示小数点的段。当让数码管显示数字时,只要将相应的段点亮即可。例如:让数码管显示数字1,则将b、c 段点亮即可。将每个数字写成一个子程序。在主程序中每隔2s 显示一个数字,让数码管循环显示1~8 数字。每一个数字显示的时间由延时时间来决定,时间设置的大些,显示的时间就长些,时间设置的小些,显示的时间就短。 参考程序源代码:

单片机实验四 I O显示控制实验(数码管显示实验)

电子信息工程学系实验报告 课程名称:单片微型计算机与接口技术Array 实验项目名称:实验四 I/O显示控制实验实验时间: 班级: **** 姓名:**** 学号:******** 一、实验目的: 1、熟悉keil仿真软件、proteus仿真软件、软件仿真板的使用。 2、了解并熟悉一位数码管与多位LED数码管的电路结构、与单片机的连接方法及其应用原理。 3、学习proteus构建LED数码管显示电路的方法,掌握C51中单片机控制LED数码管动态显示的原理与编程方法。 二、实验环境: 1、Windows XP系统; 2、Keil uVision2、proteus系列仿真调试软件 三、实验原理: 1、LED数码管的结构和原理 LED显示器是由发光二极管显示字段的显示器件。在单片机应用系统中通常使用的是七段LED,这种显示器有共阴极与共阳极两种。 (a)共阴极LED显示器的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发光二极管则点亮; (b)共阳极LED显示器的发光二极管阳极并接。 2、七段显示器与单片机接口:只要将一个8位并行输出口与显示器的发光二极管引脚相连即可。8位并行输出口输出不同的字节数据即可获得不同的数字或字符,如下表所示。通常将控制发光二极管的8位字节数据称为段选码。 八段选码(显示码)的推导(以共阳数码管显示C为例): 要显示C则a、f、e、d四个灯亮2.为是共阳数码管,则a、f、e、d应送0时亮3.dp-a为11000110B 3、多位数码管的显示:电路结构、动态静态两种实现原理: LED显示器有静态显示与动态显示两种方式。 (1) LED静态显示方式 各位LED的位选线连在一起接地或接+5V;每位LED的段选线(a-dp)各与一个八位并行口相连; 在同一时间里每一位显示的字符可以各不相同。

八段数码管编码

八段数码管的编码 (2011-10-07 16:48:30) 分类:常用芯片引脚说明 标签: it 汇编语言: 共阳极: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H,11H,0C1H,63H,85H,61H,71H DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8E H 共阴极: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH, 8EH DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H C语言中可以如下定义数组: 共阳极数码管(由a到h的二进制码): unsigned char number[]= { 0x03,0x9f,0x25,0x0d, 0x99,0x49,0x41,0x1f, 0x01,0x09,0x11,0xc1, 0x63,0x85,0x61,0x71 } 共阳极数码管(由h到a的二进制码):

unsigned char number[]= { 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e } 共阴极数码管(由a到h的二进制码): unsigned char number[]= { 0xfc,0x60,0xda,0xf2, 0x66,0xb6,0xbe,0xe0, 0xfe,0xf6,0xee,0x3e, 0x9c,0x7a,0x9e,0x8e } 共阴极数码管(由h到a的二进制码): unsigned char number[]= { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71

LED数码管驱动显示实验

LED数码管驱动显示实验 实验内容: 1、八字段LED数码管驱动显示工作原理 2、74LS138三—八译码器工作原理及如何控制数码管工作原理 3、数码管动态显示工作原理分析与计算 4、数码管多种显示实验 实验讲义: 一、七字段数码管显示工作原理 共阴级接法 共阳级接法

详情分析可以启动51单片机工具箱软件,选择“数码管字形”生成选项进行字形分析。 二、74LS138三—八译码器工作原理及如何控制数码管工作原理

注:上图是工程样品图。实际修改后的电路板图将接入9012三极管的Y0-Y7顺序改为Y7-Y0 三、数码管驱动方式及动态显示工作原理分析与计算 1、人眼的视觉暂留现象 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。 ①静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S52单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 ②动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM 端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。 2、数码管使用的电流与电压计算 电流:静态时,推荐使用10-15mA;动态时,16/1动态扫描时,平均电流为4-5mA,峰值电流50-60mA。 电压:查引脚排布图,看一下每段的芯片数量是多少?当红色时,使用1.9V乘以每段的芯片串联的个数;当绿色时,使用2.1V乘以每段的芯片串联的个数。 四、数码管显示实验 利用3-8译码器来选择需要显示(亮)哪个数码管,利用P0口来负责显示什么数字或符号 1、让Y0所对应的数码管显示“0”—“9”,间隔1秒 2、让Y0所对应的数码管显示“0”,Y1显示“1”,Y2显示“2”…………以此类推最后Y7显示“7”,间隔1秒

ARM课程设计数码管显示

目录 一、设计内容 (2) 1.1实验目的 (2) 1.2实验设备 (2) 二、设计原理 (2) 2.1 八段数码管 (2) 2.2 电路原理 (3) 三、操作步骤 (4) 四、程序代码 (5) 五、心得体会 (12)

ARM数码管显示 一、设计内容 1.1实验目的 掌握LED 的显示控制方法。 巩固对存储区进行访问的方法。 1.2实验设备 硬件:Embest Arm EduKit II实验平台,Embest ARM标准/增强型仿真器套件,PC机。 软件:Embest IDE Pro 2004集成开发环境,Windows 98/2000/NT/XP。 二、设计原理 2.1 八段数码管 嵌入式系统中,经常使用八段数码管来显示数字或符号,由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。 结构: 八段数码管由八个发光二极管组成,其中七个长条形的发光管排列成“日”字形,右下角一个点形的发光管作为显示小数用,八段数码管能显示所有数字及部份英文字母。见图 类型: 八段数码管有两种不同的形式:一种是八个发光二极管的阳极都连在一起的,称之为共阳极八段数码管;另一种是八个发光二极管的阴极都连在一起的,称之为共阴极八段数码管。

工作原理: 以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。 显示方式: 八段数码管的显示方式有两种,分别是静态显示和动态显示。 静态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管控制信号一直保持有效。 动态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管是轮流点亮的,即控制信号按一定周期有效,在轮流点亮的过程中,点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及发光二极管的余辉效应,数码管的显示依然是非常稳定的。 2.2 电路原理 EMBEST ARM EDUKIT II教学电路中,使用的是共阳极八段数码管,数码管的控制通过芯片ZLG7290控制,各段的控制信号是芯片ZLG7290的SEGA~SEGG引脚控制,需要显示的段码通过IIC总线传送到该芯片,见图。

数码管动态显示实验报告

实验四数码管动态显示实验一 一、实验要求 1.在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路 2.在电路中增加四个7段数码管(共阳/共阴自选),将P1口作数据输出口与7段数码 管数据引脚相连,P2.0~P2.3引脚输出选控制信号 3.在Keil软件中编写程序,采用动态显示法,实现数码管分别显示数字1,2,3,4 二、实验目的 1.巩固Proteus软件和Keil软件的使用方法 2.学习端口输入输出的高级应用 3.掌握7段数码管的连接方式和动态显示法 4.掌握查表程序和延时等子程序的设计 三.实验说明 本实验是将单片机的P1口做为输出口,将四个数码管的七段引脚分别接到P1.0至P1.7。由于电路中采用共阳极的数码管,所以当P1端口相应的引脚为0时,对应的数码管段点亮。程序中预设了数字0-9的段码。由于是让四个数码管显示不同的数值,所以要用扫描的方式来实现。因此定义了scan函数,接到单片机的p2.0至p2.3 在实验中,预设的数字段码表存放在数组TAB中,由于段码表是固定的,因此存储类型可设为code。 在Proteus软件中按照要求画出电路,再利用Keil软件按需要实现的功能编写c程序,生成Hex文件,把Hex文件导到Proteus软件中进行仿真。为了能够更好的验证实验要求,在编写程序时需要延时0.5s,能让人眼更好的分辨;89C51的一个机器周期包含12个时钟脉冲,而我们采用的是12MHz晶振,每一个时钟脉冲的时间是1/12us,所以一个机器周期为1us。在keil程序中,子函数的实现是用void delay_ms(int x),其中x为1时是代表1ms。 四、硬件原理图及程序设计 (一)硬件原理图设计 电路中P1.0到P1.7为数码管七段端口的控制口,排阻RP1阻值为220Ω,p2.0到p2.3为数码管的扫描信号。AT89c51单片机的9脚(RST)为复位引脚,当RST为高电平的时间达到2个机器周期时系统就会被复位;31引脚(EA)为存取外部存储器使能引脚,当EA为高电平是使用单片机内部存储器,当EA为低电平时单片机则使用外部存储器。18、19引脚是接晶振脚。而接地和电源端在软件中已经接好,所以不用在引线。 如下图所示:

数码管显示原理及实例

数码管显示电路原理 (1)元件需求以及选型 8个八段数码管,8个PNP三极管,8个电阻,数码管内部由8个发光二极管组成,排 成一个8字,可以组成0到9数字以及A-F字符的表示形式,分共阴和共阳两种,共 阴表示8个二极管公共极接的是二极管的负极,共阳表示公共极接的是发光二极管的 正极。我们选的是共阳的数码管,三极管(8550)用来做片选,增加驱动,电阻的作 用在于限流,由于基极电流很大,所以需要一个电阻来限流,防止烧坏单片机IO口。 阻值选择用1K。建议使用1K。 (2)程序原理 数码管要亮,必须满足里面的二极管导通,有两个条件,片选打开,数据口要置低(视硬件而定)。首先要得到0到9十个数据的断码。即按硬件的排布,画出对应的0到9形状,标出对应的二极管控制IO口,得到数值,可以参照我们提供的数据。 片选:片选就是开关,控制数码管亮或不亮的,每个数码管都有自己的片选。 数据口: 数据口就直接接到了IO口上面,低电平有效,灌电流。数码管的显示分为两种:静态显示和动态显示。 静态显示: 只能显示一个数码管或者几个数码管而且只能同时显示同一个数字,静态显示不需要扫描的,就是说打开片选后不需要关闭,只需要跟换数据口出来的数据就可以改变显 示的内容。一般静态显示用的比较少,只用在数码管只有一个的情况下。

动态显示: 动态显示用的很普遍,动态显示可以任意数码管随意显示想要显示的内容。动态显示需要不断的对数码管进行扫描。原理是开一个片选送一个字节显示,延时一些时间(注:延时时间很重要,没有的话就会显示一片红,超过的话数码管就会闪烁,一般 一个数码管延时显示1MS左右就可以了)。然后关闭第一个片选,开启第二个片选, 送另外的一个数据,延时,然后关闭低二个片选,送数值,延时……循环,那么就可 以看到几个数码管显示出不同的数值了。 每个显示数字共用数据线,每个分别有一个使能管脚,显示数据采用隐消的编程方法,即每一位显示一段时间再轮换。 实验内容: 在四位数码管上显示8051

相关文档