八位数码管动态显示程序
02实验二数码管动态显示程序设计
02实验二数码管动态显示程序设计数码管是一种常见的数字显示器件,通常由七段LED组成。
通过控制不同的LED亮灭状态,可以显示出0到9的数字和一些字母。
数码管通常被广泛应用于计时器、温度显示器等设备中,用于显示数字和一些特定的符号。
数码管的动态显示是指通过快速切换数码管显示的内容,从而实现多个数码管连续显示不同的数字。
这种显示方式使得数字的显示看起来像是连续变化的,给人一种流动的感觉。
在进行数码管动态显示的程序设计时,需要考虑以下几个方面:1.数码管的接口:数码管通常使用共阴极或共阳极的接口方式,需要根据实际的硬件接口进行相应的程序设计。
2.显示内容的切换:数码管需要显示不同的数字,需要通过程序控制数码管的显示内容。
可以通过数组或者其他数据结构来存储需要显示的数字,并通过循环,依次将不同的数字输出到数码管上。
3.显示周期的控制:数码管动态显示的关键是控制显示的刷新速度。
数码管的刷新速度通常以帧率进行表示,即每秒显示的帧数。
常见的数码管帧率为50Hz或60Hz,即每秒刷新50次或60次。
程序需要根据帧率来控制数码管显示的频率。
4.数码管的亮度控制:数码管的亮度通常通过PWM(脉宽调制)来控制,即快速开关数码管的亮灭状态,通过调整开关的占空比来控制数码管的亮度。
程序需要实现相应的PWM控制函数,可以通过改变PWM的占空比来控制数码管的亮度。
下面是一个简单的数码管动态显示的程序设计示例:```c++#include <arduino.h>//数码管引脚定义const int digitPins[] = {2, 3, 4, 5};const int segmentPins[] = {6, 7, 8, 9, 10, 11, 12}; //数码管显示的数字const int numbers[] =// abcdefg};//数码管显示的当前数字int currentNumber = 0;// 数码管显示的刷新速度,单位为msconst int refreshRate = 10;void setu//设置数码管引脚的模式for (int i = 0; i < 4; ++i)pinMode(digitPins[i], OUTPUT);}for (int i = 0; i < 7; ++i)pinMode(segmentPins[i], OUTPUT);}void loo//刷新数码管显示refreshDisplay(;//数码管显示的数字切换currentNumber = (currentNumber + 1) % 10; //延时delay(refreshRate);//刷新数码管显示的函数void refreshDispla//显示当前数字for (int i = 0; i < 4; ++i)digitalWrite(digitPins[i], LOW); setSegments(numbers[currentNumber]); delayMicroseconds(500);digitalWrite(digitPins[i], HIGH);}//设置数码管的段void setSegments(int segments)for (int i = 0; i < 7; ++i)digitalWrite(segmentPins[i], (segments >> i) & 1);}```该程序通过设置数码管引脚的模式来控制数码管的显示。
(完整word版)八位七段数码管动态显示电路设计
八位七段数码管动态显示电路的设计一七段显示器介绍七段显示器,在许多产品或场合上经常可见。
其内部结构是由八个发光二极管所组成,为七个笔画与一个小数点,依顺时针方向为A、B、C、D、E、F、G与DP等八组发光二极管之排列,可用以显示0~9数字及英文数A、b、C、d、E、F。
目前常用的七段显示器通常附有小数点,如此使其得以显示阿拉伯数之小数点部份。
七段显示器的脚位和线路图如下图4.1所示( 其第一支接脚位于俯视图之左上角)。
图4.1、七段显示器俯视图由于发光二极管只有在顺向偏压的时候才会发光。
因此,七段显示器依其结构不同的应用需求,区分为低电位动作与高电位动作的两种型态的组件,另一种常见的说法则是共阳极( 低电位动作)与共阴极( 高电位动作)七段显示器,如下图4.2所示。
( 共阳极) ( 共阴极)图4.2、共阳极(低电位动作)与共阴极(高电位动作)要如何使七段显示器发光呢?对于共阴极规格的七段显示器来说,必须使用“ Sink Current ”方式,亦即是共同接脚COM为VCC,并由Cyclone II FPGA使接脚成为高电位,进而使外部电源将流经七段显示器,再流入Cyclone II FPGA的一种方式本实验平台之七段显示器模块接线图如下图4.5所示。
此平台配置了八组共阳极之七段显示器,亦即是每一组七段显示器之COM接脚,均接连至VCC电源。
而每一段发光二极管,其脚位亦均与Cyclone II FPGA接连。
四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。
八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。
图4.5、七段显示器模块接线图七段显示器之常见应用如下可作为与数值显示相关之设计。
⏹电子时钟应用显示⏹倒数定时器⏹秒表⏹计数器、定时器⏹算数运算之数值显示器二七段显示器显示原理七段显示器可用来显示单一的十进制或十六进制的数字,它是由八个发光二极管所构成的( 每一个二极管依位置不同而赋予不同的名称,请参见图4.1 ) 。
51单片机应用:8只数码管同时显示多个不同字符
51单片机应用:8只数码管同时显示多个不同字符设计要求单片机控制8只数码管,同时显示8个字符。
例如,从左至右显示“”,接着显示“”,在接着显示“”,……“”,“”,分析及方案设计:本题可以采用扩展I/O口或直接用单片机自身的I/O口的方法实现。
为节省硬件设施并使电路连线尽量简单,采用直接使用单片机自身I/O口的方式,8个数码管同时显示数字则需采用动态显示方法,初步设定以P0口给出数码管显示字段,P1口选中某一时刻动态点亮的数码管。
软件设计可以有以下几种方案:a)将全部显示状态列出,放在主程序中不断循环b)将显示状态放入8个数组中,每个状态循环一次后主程序重新开始循环c)只设置两个数组,其中一个取值不变,为正序的从1到8的共阳极数码管段码,另一个数组中的数值不断被修改,即每次显示状态改变的时候都相应改变一次,如从的段码改为的段码。
从上述方案可以看出,若设置太多的数组或列出所有显示状态,程序虽然清晰易懂但占用程序存储空间明显较大,且用delay()函数延时的话会不断占用CPU;用两个数组和两个定时器虽然算法略复杂,但程序可以达到最简化。
详细的方案说明:1)采用数码管动态显示方法。
2)8个数码管由P3控制位选,即决定某一时刻哪一个数码管亮,由P0发出的总线控制显示的段码。
3)定时器T0和T1同时工作,定时时间均为0."5毫秒,采用方式1定时,每次溢出后由软件重装初值。
4)设置中间变量temp,用于不断左移并给P3赋值;数组display[]为code 即取之不变的数组,数组show[]中的取值变化。
5)每次T0计数溢出时,temp左移一次,相应的P3左移一次,数码管由第i 个点亮变为第i+1个点亮,与此同时赋给P0口的值由show[i]变为show[i+1],达到动态显示的效果。
6)定时器T1也是每0."5毫秒计数溢出一次,但只有到1秒时才执行定时器1中断中修改数组show[]取值的程序,用变量t记录T1溢出的次数,达到200次时数组show[]中的内容开始进行修改并且t清零。
51单片机-八段数码管显示
实验一八段数码管显示1、实验目的:(1)了解数码管动态显示的原理。
(2)了解74LS164扩展端口的方法。
2、实验要求:利用实验仪提供的显示电路,动态显示一行数据.3、实验电路图LED1LED2LED3LED4LED5LED64、实验器材:(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 16bh 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 05ehE 1 1 1 1 0 0 1 79h F1111 71hab c def g dp7、程序框图8、实验步骤1.将KEIL仿真器上40芯排线一端和实验箱上51CPU板上的40芯排针连接起来,将仿真器连接的USB或串口线与PC机对应的USB或串口连接起来,打开实验箱电源。
c51单片机驱动三位8段数码管显示0.00-9.99,c语言程序
unsigned char temp[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}
unsigned char table[3];
unsigned iபைடு நூலகம்t num;
void display(unsigned int num)
TH0 = 0xfc;
TL0 = 0x18;
j++;
if(i < 3)
{
P2 = 0xf8;
P1 = 0x00;
P2 = ~(1 << i);
P1 = table1[i];
i++;
}
else
i = 0;
if(j >= 1000)
{
num++;
if(num > 999)
num = 0;
j = 0;
}
用的是共阴极数码管,定时器延时,不会出现数码管抖动现象
定时器自动加,会从0.00-9.99自动显示,9.99以后又清0.00
追问
我是从ADC0908中传出的8位数字量到单片机上,用单片来动态显示到数码管上的,不知道是不是要标定一下?(传感器输出1-5v,量程是0-10米经AD转换后给单片机用数码管显示0-10米,且在1米和8米处要求报警)
是不是该用单片机不断地循环查询?
回答
不知道这个有没的AD转换中断,如果有可以在每次转换成功以后查下,没有的话,估计要不断查询
TL0 = 0x18;
ET0 = 1;
8位LED数码管动态显示电路的仿真测试
数字电子技术仿真实验实验题目:8位LED数码管动态显示电路院系:电子与信息工程学院专业:电子信息工程班级:2010级X班老师:XXX姓名:XXX学号:XXXXXXXXXX8位LED数码管动态显示电路的仿真测试一,实验目的:(1)掌握LED数码管动态显示的工作原理。
(2)掌握BCD—七段显示译码器74LS48,3—8线译码器74LS138的应用。
(3)掌握MultiSIM中LED数码管的应用。
二,实验原理:LED数码管有静态显示和动态显示2种显示方式。
LED数码管工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起并接地,且使用一片译码驱动芯片驱动一位七段LED数码管进行数码显示。
LED数码管工作于动态显示方式时,使用一片译码驱动芯片驱动多位七段LED数码管,有控制电路控制各位显示器分别进行数码显示,即每个显示器按照不同的时间轮流使用这片译码驱动芯片,从而是电路更加简单。
三,实验设配及元器件:四,仿真结果:1,显示相同数码电路的仿真测试:2,显示不同数码电路的仿真实验:(1)当频率为100HZ时:LED数码管显示的数码及显示的顺序:(2)当频率为100KHZ时:LED数码管显示的数码及显示的顺序:五,实验总结:通过此次实验,不仅让我对仿真更加熟悉,也加深了我对数字电子电路的理解。
在仿真过程中,我遇到了很多困难,经过思考和尝试,终于将实验做成功了。
例如刚开始我不知道字符信号发生器再那里,于是就在原件中一个一个的试,很快就在工具栏上的图标中找到了。
还有数码管,在元件库中找了很久,终于在Indicators下面的HEX_DISPLAY中才找到。
电路图连接完后,因为字符信号发生器没有接地,数码管始终不能显示。
改正后,刚开始又始终只有一位数码管显示,经过思考,原来是频率低了,当我把频率变大后,循环扫描的速度变得足够快,就可以看到8位LED数码管的持续发光。
8位数码管动态显示电路设计
电子课程设计— 8位数码管动态显示电路设计学院:电子信息工程学院专业、班级:姓名:学号:指导老师:2014年12月目录一、设计任务与要求................................................. (3)二、总体框图................................................. (3)三、选择器件................................................. (3)四、功能模块................................................. (9)五、总体设计电路图................................................. . (10)六、心得体会.................................................. .. (12)8位数码管动态显示电路设计一、设计任务与要求1. 设计个8位数码管动态显示电路,动态显示1、2、3、4、5、6、7、8。
2. 要求在某一时刻,仅有一个LED数码管发光。
3. 该数码管发光一段时间后,下一个LED发光,这样8只数码管循环发光。
4. 当循环扫描速度足够快时,由于视觉暂留的原因,就会感觉8只数码管是在持续发光。
5、研究循环地址码发生器的时钟频率和显示闪烁的关系。
二、总体框图设计的总体框图如图2-1所示。
图2-1总体框图三、选择器件 1、数码管数码管是一种由发光二极管组成的断码型显示器件,如图1所示。
U13DCD_HEX图1 数码管数码管里有八个小LED 发光二极管,通过控制不同的LED 的亮灭来显示出不同的字形。
数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED 的阴极连在一起,让其接地,这样给任何一个LED 的另一端高电平,它便能点亮。
数码管流动显示12345678
学号天津城建大学嵌入式系统及应用课程设计设计说明书数码管流动显示12345678起止日期:2015 年11月15日至2015 年11月27 日学生姓名班级成绩指导教师(签字)计算机与信息工程学院2015年11 月27 日课程设计报告书题目: 数码管流动显示12345678学生姓名:学生学号:院名:专业:任课教师:目录摘要 (II)第一章课设总述 (1)1.1单片机概述 (1)1.3课题研究的目的和意义 (1)1.4课题的主要研究工作 (1)第二章系统硬件介绍及设计 (2)2.1AT89C51简介 (2)1.2数码管7SEG-COM-AN-BLUE介绍(7段数码管) (3)2.2硬件电路图 (4)2.3元件清单 (4)第三章系统软件设计 (5)3.1程序描述 (6)3.2程序流程图 (6)第四章系统调试 (7)4.1在PROTEUS中仿真 (7)参考文献 (7)摘要1.内容:利用动态扫描让八位数码管稳定的显示1、2、3、4、5、6、7、82.目标:(1)掌握单片机控制八位数码管的动态扫描技术,包括程序设计和电路设计,本任务的效果是让八位数码管稳定的显示12345678。
(2)用PROTEUS进行电路设计和实时仿真3.知识点链接(1)数码管动态扫描(动态扫描的定义以及与静态显示的区别)动态显示的特点是将所有位数码管的段选线s一位数码管有效。
选亮数码管采用动态扫描显示。
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
(2)总线的应用元器件与总线的连线P0口的接线采用总线方式,详细如电路图1所示。
①选择总线按钮②绘制总线:与普通电线的绘制方法一样,选择合适的起点、终点单击。
如果终点在空白处,左键双击结束连线。
画总线的时候为了和一般的导线区分,我们一般喜欢画斜线来表示分支线。
此时我们需要自己决定走线路径,只需在想要拐点处单击鼠标左键即可。
8位数码管动态显示电路设计
电子课程设计——8位数码管动态显示电路设计学院:电子信息工程学院专业、班级:自动化姓名:学号:指导教师:2014年12月目录一、设计任务与要求...................... 错误!未定义书签。
二、总体框图............................ 错误!未定义书签。
2.1、设计思想....................... 错误!未定义书签。
2.2、设计方案....................... 错误!未定义书签。
2.3、对方案的分析................... 错误!未定义书签。
三、选择器件 (4)3.1、实验所需器件: (4)3.2、器件说明: (4)四、功能模块 (7)4.1、脉冲模块设计 (7)4.2、扫描电路模块设计 (8)4.3、显示电路模块设计 (9)五、总体设计电路图 (10)5.1总体设计原理 (10)5.2、总体设计电路图 (11)5.3、仿真结果 (11)5.4、硬件实验 (13)六、心得体会 (14)8位数码管动态显示电路设计一、设计任务与要求1.设计个8位数码管动态显示电路,动态显示1、2、3、4、5、6、7、8。
(第一至第八个数码管依次显示1、2、3、4、5、6、7、8)2.要求在某一时刻,仅有一个LED数码管发光。
3.该数码管发光一段时间后,下一个LED发光,这样8只数码管循环发光。
4.当循环扫描速度足够快时,由于视觉暂留的原因,就会感觉8只数码管是在持续发光。
5.研究循环地址码发生器的时钟频率和显示闪烁的关系。
二、总体框图2、1、设计思想电路有八种显示状态,在第一脉冲周期内,第一个数码管显示1;第二个脉冲周期内,第二个数码管显示2;在第三脉冲周期内,第三个数码管显示3;第四个脉冲周期内,第四个数码管显示4;在第五脉冲周期内,第五个数码管显示5;第六个脉冲周期内,第六个数码管显示6;在第七脉冲周期内,第七个数码管显示7;第八个脉冲周期内,第八个数码管显示8。
八位七段数码管动态显示电路设计知识讲解
八位七段数码管动态显示电路设计八位七段数码管动态显示电路的设计一七段显示器介绍七段显示器,在许多产品或场合上经常可见。
其内部结构是由八个发光二极管所组成,为七个笔画与一个小数点,依顺时针方向为A、B、C、D、E、F、G与DP等八组发光二极管之排列,可用以显示0~9数字及英文数A、b、C、d、E、F。
目前常用的七段显示器通常附有小数点,如此使其得以显示阿拉伯数之小数点部份。
七段显示器的脚位和线路图如下图4.1所示( 其第一支接脚位于俯视图之左上角 )。
图4.1、七段显示器俯视图由于发光二极管只有在顺向偏压的时候才会发光。
因此,七段显示器依其结构不同的应用需求,区分为低电位动作与高电位动作的两种型态的组件,另一种常见的说法则是共阳极( 低电位动作 )与共阴极( 高电位动作 )七段显示器,如下图4.2所示。
( 共阳极 ) ( 共阴极 )图4.2、共阳极(低电位动作)与共阴极(高电位动作)要如何使七段显示器发光呢?对于共阴极规格的七段显示器来说,必须使用“ Sink Current ”方式,亦即是共同接脚COM为VCC,并由Cyclone II FPGA使接脚成为高电位,进而使外部电源将流经七段显示器,再流入Cyclone II FPGA的一种方式本实验平台之七段显示器模块接线图如下图4.5所示。
此平台配置了八组共阳极之七段显示器,亦即是每一组七段显示器之COM接脚,均接连至VCC 电源。
而每一段发光二极管,其脚位亦均与Cyclone II FPGA接连。
四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。
八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。
图4.5、七段显示器模块接线图七段显示器之常见应用如下➢可作为与数值显示相关之设计。
⏹电子时钟应用显示⏹倒数定时器⏹秒表⏹计数器、定时器⏹算数运算之数值显示器二七段显示器显示原理七段显示器可用来显示单一的十进制或十六进制的数字,它是由八个发光二极管所构成的( 每一个二极管依位置不同而赋予不同的名称,请参见图4.1 ) 。
硬件实验6 八段数码管显示实验
硬件实验6 八段数码管显示实验1.实验目的1)了解数码管实现显示字符的7段码编制方法;2)掌握查表法获得0-F的7段码的方法;3)掌握静态显示和动态显示的原理,硬件连接方式和程序编写方法。
2.预习要求1)了解数码管静态显示和动态显示接口电路的设计方法和特点;2)了解数码管动态显示的程序设计方法;3)理解运用串行口工作方式0扩展I/O连接数码管的方法;4)认真预习本节实验内容,设计实验硬件连接电路,编写实验程序。
3.实验说明1)LED数码管显示原理8段LED数码管有共阴极和共阳极两种结构。
对于共阴数码管,其8个LED的阴极连接在一起作为公共COM端;而共阳数码管中8个LED的阳极连接在一起作为公共COM端。
共阴数码管显示的必要条件是其COM端接地或接具有较大灌电流能力的输入端口,此时当某个发光二级管的阳极为高电平时,该发光二极管点亮;共阳数码管显示的必要条件是共阳极接电源或具有较强电流输出能力的输出端口,此时当某个发光二极管的阴极接低电平时,该发光二级管被点亮。
2)LED数码管显示方式A.静态显示方式静态显示的特点是每个数码管需要一个具有锁存功能的8位输出口,用来锁存待显示的段码。
将要显示数的7段码输出到端口,数码管就会显示并一直保持到接收到新的显示段码为止。
静态显示的优点:显示程序简单,占用CPU时间少。
但当数码管数量较多时,就需要外扩较多的输出端口,因此静态显示的缺点是占用硬件资源多,成本较高。
B.动态显示方式动态显示的特点是将多个数码管的相应段码线连在一起,接到一个8位输出端口,该端口称为段码输出口;同时将各个(如8个)数码管的COM端连接到一个8位输出端口,该端口称为位控输出口。
这样的连接使得8个数码管只要2个输出端口就可以实现控制,大大简化硬件电路。
但是由于多个数码管的段码是连在一起的,所以需要结合位控信号,分时输出不同数码管上显示的7段码,即需要采用动态显示扫描,轮流向段码输出口输出段码和向位控输出口输出位选信号,并进行1~2ms的短时延时;8个数码管轮流输出一遍后,约20ms后,就要进行一次显示刷新,这样才能利用发光管的余辉和人眼视觉暂留作用,得到全部数码管同时稳定显示的效果。
8位数码管动态显示电路设计
电子课程设计—8位数码管动态显示电路设计学院:电子信息工程学院专业、班级:姓名:学号:指导老师:2014年12月目录一、设计任务与要求................................................. (3)二、总体框图................................................. (3)三、选择器件................................................. (3)四、功能模块................................................. (9)五、总体设计电路图................................................. . (10)六、心得体会.................................................. .. (12)8位数码管动态显示电路设计一、设计任务与要求1. 设计个8位数码管动态显示电路,动态显示1、2、3、4、5、6、7、8。
2. 要求在某一时刻,仅有一个LED数码管发光。
3. 该数码管发光一段时间后,下一个LED发光,这样8只数码管循环发光。
4. 当循环扫描速度足够快时,由于视觉暂留的原因,就会感觉8只数码管是在持续发光。
5、研究循环地址码发生器的时钟频率和显示闪烁的关系。
二、总体框图设计的总体框图如图2-1所示。
图2-1总体框图三、选择器件 1、数码管数码管是一种由发光二极管组成的断码型显示器件,如图1所示。
U13DCD_HEX图1 数码管数码管里有八个小LED 发光二极管,通过控制不同的LED 的亮灭来显示出不同的字形。
数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED 的阴极连在一起,让其接地,这样给任何一个LED 的另一端高电平,它便能点亮。
单片机课程设计-8位8段LED数码管动态扫描显示
华南理工大学广州汽车学院单片机课程设计题目:8位8段LED数码管动态扫描专业:电子信息工程班级:09电信(1)班姓名:付锦辉学号:200930062745一、内容要求:在8位8段LED数码管显示“8.8.8.8.8.8.8.8.”持续500ms,之后灭显示器200ms;然后显示“WELCOM-1”(由于8位8段LED数码管显示不能显示字母W 和M,所以改为显示“HELLO-93”)二、目的和意义1、掌握数码管动态扫描显示原理及实现方法。
2、掌握动态扫描显示电路驱动程序的编写方法。
三、总体方案设计思路LED数码动态显示的基本做法在于分时轮流选通数码管的公共端,使得各数码管轮流导通,再选通相应的数码管后,即显示字段上得到显示字形码。
这种方式数码管的发光效率,而且由于各个数码管的字段线是并联使用的,从而大大简化了硬件线路。
动态扫描显示接口是单片机系统中应用最为广泛的一种显示方式。
其接口电路是把所有显示器的8个笔画段A-DP同名端并联在一起,而每个显示器的公共极COM各自独立地接受I/O线控制,CPU向字段输出口送出字段形码是,所有显示器由于同名端并连接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以就可以自行决定何时显示哪一位了。
而所谓动态扫描是指采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。
再轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上个位显示器并非同时点亮,但只要扫描的速度足够快,给人的影响就是一组稳定的显示数据,不会有闪烁感。
采用总线驱动器74HC245提供LED数码管的段驱动,输出高电平时点亮相应段;采用集电极开路的BCD-十进制译码器/驱动器完成LED数码管位驱动,输出低电平时选通相应位。
P2口每个口线输出灌电流不足以驱动一个数码管显示器的位-公共极,所依通过集电极开路的BCD-十进制译码器/驱动器7445驱动,即节约P2口线,又增加驱动能力。
八段数码管显示
实验一八段数码管显示1、实验目的:(1)了解数码管动态显示的原理。
(2)了解74LS164扩展端口的方法。
2、实验要求:利用实验仪提供的显示电路,动态显示一行数据.3、实验电路图LED1LED2LED3LED4LED5LED64、实验器材:(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 06h2 1 0 1 1 0 1 1 6bh3 1 0 0 1 1 1 1 4fh4 1 1 0 0 1 1 0 66h5 1 1 0 1 1 0 1 6dh6 1 1 1 1 1 0 1 7dh7 0 0 0 0 1 1 1 07h8 1 1 1 1 1 1 1 7fh9 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 F1111 71hab c def g dp7、程序框图8、实验步骤1.将KEIL仿真器上40芯排线一端和实验箱上51CPU板上的40芯排针连接起来,将仿真器连接的USB或串口线与PC机对应的USB或串口连接起来,打开实验箱电源。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void main()
{
//P0=0xff; 数码管不显示任何信号,默认情况下通电本身就不显示,可以不写
duan=1; //开启段显端口
P0=0x06; //附值段显数值为1,可以查阅数码管电路图相对应显示的对码表
duan=0; //锁存,保持上一步段显状态,硬件说明请查阅74HC573功能
if(numw==8) //如果位显值到对应位显对码表第八位则转下执行
numw=0; //重新附值位显值对应对码表第0位起
/*
下面是简单的单个数码管显示例证 第一骤, 修改后在第三步骤内
#include"reg52.h"
#include"intrins.h"
sbit duan=P2^6; //段显端口
P0=tabled[பைடு நூலகம்umd];//附段显P0值对应段显值对码表
duan=0; //锁存
wei=1; //开启位显端
P0=tablew[numw];//附位显P0值对应位显值对码表
wei=0; //锁存
numw++; //相当于位显移位
numw=0; //附位显初值为0位
numd=0; //附段显初值为0位
TMOD=0X01; //第四步骤,附中断暂存器初值
TH0=(65535-50000)/256; //附中断请求时间初值,高8位
TL0=(65536-50000)%256; //附中断请求时间初值,低8位
感觉8位数显一直在亮着,相当于正在播放的电影胶卷*/
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
numd++; //段显值++
if(numd==9) //如果段值在对码表第9位则转下执行
numd=1; /*重新附值段显值对应对码表第1位,因为++所以0位并不在数码管中显示.
如果要显示,也会因为++而在第二轮中显示出*/
duan=1; //开启段显端
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f}; //第二步骤,创建位显,就是显示的位置,这个码表相对简单,用二进制表示11111110~01111111,是0的为八位数显管的位置
void main()
{
a=0; //定义个时间函数
/*动态数显的设计思路,首先是我们要先知道怎样才能使哪个位亮,显示的段是什么数值,接下来就是中断时间
的问题了,设计步骤如下,如果要让八个数码管静态显示1到8,我们可以修改中断时间,如把50000改成100或更低*/
#include<reg52.h>
#include<intrins.h>
EA=1; //开启总中断
ET0=1; //开启定时中断
TR0=1; //启动定时中断
while(1)
{
if(a==10) //第三步骤,执行速度,如果等20差不多是1秒,则往下执行,相当于单位数值亮的时间
{
a=0; //重新附值初值0
#define uint unsigned int
#define uchar unsigned char
sbit duan=P2^6;
sbit wei=P2^7;
uchar a,numw,numd;
uchar code tabled[]={
0x3f,0x06,0x5b,0x4f,0x66,
wei=1; //开启位显端口
P0=0xfe; //附值位显位置,01111111,左边第一位,为0的显示
wei=0; //锁存,保持上一步位显状态,硬件说明请查阅74HC573功能
}
*/
}
}
}
void timer0() interrupt 1 /*第四步骤,中断时间函数这个相当于移位数显的速度,速度够快,人眼就会有余辉效应,
0x6d,0x7d,0x07,0x7f,0x6f}; /*第二步骤,创建段显数值的对码表0~9数值.如果要显示1~8数值,最好多加前后两位数0跟9,
因为后面++移位时就能按我们常规顺序亮下去,至于如何显示对应数值请先看数码显示电路图*/
uchar code tablew[]={