数码管显示
- 格式:doc
- 大小:1.06 MB
- 文档页数:14
数码管显示控制实验原理
嘿,朋友们!今天咱来聊聊数码管显示控制实验原理。
想象一下,数码管就像是一个个小小的窗户,每个窗户里都能显示出不同的数字或符号。
其实啊,这原理就好像是一个聪明的指挥家在控制着一场精彩的灯光秀。
数码管里的每一段就像是一个小灯,通过巧妙地控制这些小灯的亮灭,就能组合出我们想要的数字啦。
比如说,要显示数字“8”,那就得让数码管的所有段都亮起来,就像把所有的灯光都打开,一下子就呈现出一个完整的“8”啦。
而要显示其他数字呢,就按照特定的组合让相应的段亮起来就行。
这就好像我们家里的电灯开关,想开哪个灯就按哪个开关,只不过这里的开关是通过电路和程序来控制的哦。
在实验里,我们就是要搞清楚怎么去设置这些开关,让数码管乖乖地显示出我们想要的东西。
是不是感觉挺有意思的呀?就像是在玩一个超级有趣的电子游戏,只不过这个游戏是关于数字和电路的。
所以,下次当你看到数码管显示出清晰的数字时,就可以想象一下背后那个神奇的“指挥家”是怎么工作的啦!。
简要描述数码管的静态显示方式和动态显示方式数码管是一种常见的数字显示器件,它由多个发光二极管组成。
数码管广泛应用于各种仪器、仪表以及数码钟表等领域,方便人们对数字进行直观的观察。
数码管的显示方式可以分为静态显示和动态显示两种。
一、静态显示方式:静态显示方式是指在任意时刻,只有某一个数码管被点亮,显示对应的数字。
在静态显示模式下,每个数码管都有一个对应的驱动电路,通过给驱动电路加电来点亮相应的数码管。
这种方式显示的数字清晰、稳定,但相对来说比较耗能。
静态显示常用于对显示要求较高、静止不动的场合。
二、动态显示方式:动态显示方式是指通过快速切换多个数码管的点亮状态来显示一个完整的数字。
通常一次只有一个数码管被点亮,然后迅速关闭,接着点亮下一个数码管,如此循环往复,以达到显示多个数字的目的。
动态显示通过控制每个数码管点亮的时间片段,用肉眼看到的是所有数字都在不断刷新,形成一个连续的显示效果。
动态显示方式能够节省能源,适用于显示频繁切换的场合。
动态显示方式还可以分为多路复用和直接显示两种。
1. 多路复用动态显示方式:多路复用动态显示方式是指通过在每一个时间片段内,依次对每个数码管进行点亮,以形成数字的显示效果。
在每个时间片段内,通过给对应的驱动电路加电,在该时间段内点亮对应的数字。
通过快速地在不同的时间片段内切换数码管的点亮状态,人眼可以看到所有数字的完整显示。
这种方式能够降低驱动电路的复杂度,适用于需要显示较多位数的场合。
2. 直接显示动态显示方式:直接显示动态显示方式是指通过在每一个时间片段内,同时点亮多个数码管,以形成数字的显示效果。
在每个时间片段内,通过给对应的驱动电路加电,在该时间段内点亮多个数码管。
通过快速地在不同的时间片段内切换多个数码管的点亮状态,人眼可以看到所有数字的完整显示。
这种方式增加了驱动电路的复杂度,但能够提高数字的亮度,适用于需要显示较亮的数字的场合。
总结:数码管的静态显示方式和动态显示方式各有特点,适用于不同的场合。
一、实验目的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. 熟悉了单片机与数码管之间的接口连接,提高了动手能力。
数码管显示电路的原理
数码管显示电路通过控制电压信号的高低来驱动数码管的不同段进行显示。
数码管是由多个发光二极管组成的,每个发光二极管对应显示一个数字或符号。
数码管显示电路主要由以下几个部分组成:
1. 数字信号发生器:用来产生需要显示的数字或符号的电信号。
该信号可以通过逻辑门、计数器、微控制器等方式产生。
2. 译码器:将数字信号转换为控制数码管显示的信号。
译码器一般采用BCD码(二进制编码十进制)或者7段码来表示数字。
3. 驱动电路:将译码器输出的信号转换为适合驱动数码管的电压和电流。
驱动电路一般使用三极管、开关电路等来完成。
4. 数码管:由多个发光二极管(LED)组成,每个发光二极管对应一个数字或符号的显示段。
数码管的引脚连接到驱动电路上。
5. 电源电路:为整个数码管显示电路提供工作电压。
一般使用稳压电源或者适配器来提供稳定的直流电压。
工作原理如下:
当数字信号发生器产生需要显示的数字或符号的电信号时,该
信号经过译码器转换为对应的亮灭控制信号,然后通过驱动电路产生适合数码管的控制电压和电流。
驱动电路按照控制信号的要求,通过对应的引脚将控制信号传递给数码管。
这样,数码管的不同段就会根据控制信号的高低来亮灭,从而显示出对应的数字或符号。
整个数码管显示电路在工作时,可以通过改变数字信号的输入来实现不同数字或符号的动态显示。
经过适当的控制和调节,数码管显示电路可以显示出各种数字、字母、符号等。
数码管动态显示原理
数码管的动态显示原理是通过快速地切换数字的显示段来实现连续的数字显示。
数码管通常由7个显示段构成,分别代表数字0-9的不同显示形式。
这些段也被称为a、b、c、d、e、f和
g段。
在动态显示过程中,每个数字被逐个切换显示的时间非常短,通常为几毫秒。
这个时间非常短,以至于人眼无法察觉数字的切换。
因此,当多个数码管以高速切换显示数字时,人眼会感觉到所有数码管上的数字同时显示。
要实现动态显示,需要使用一个计数器来控制切换显示的时间。
这个计数器通常是一个定时器,它会以一定的频率触发中断,每次中断时触发一次显示切换。
通过不断增加计数值,可以控制不同数字的显示时间。
为了显示一个多位数,需要使用多个数码管并连接到控制器上。
控制器会根据待显示的数字,将适当的段信号发送到对应的数码管上。
通过在不同的数码管上切换显示,就可以实现多位数的动态显示。
动态显示的基本原理如下:
1. 设置初始的数码管选择位,使其对应第一个数码管。
2. 将第一个数码管对应的段信号置为显示的数字。
3. 延时一段时间,使人眼无法察觉到数字的切换。
4. 将第一个数码管的段信号置为低电平(或不显示的状态)。
5. 设置下一个数码管的选择位,使其对应下一个数码管。
6. 重复2-5步骤,直至所有数码管都完成一轮显示。
7. 返回第一步,重复整个过程,以实现连续的动态显示。
通过以上步骤的循环,不断切换显示的数字会给人一种连续而平滑的显示效果。
这就是数码管动态显示的基本原理。
数码管静态显示和动态显示原理数码管是一种常见的显示设备,它由多个发光二极管(LED)组成,通过控制每个LED的点亮与否,可以显示数字、字母、符号等。
数码管的显示方式主要分为静态显示和动态显示两种。
静态显示即直接将需要显示的数字发送给数码管进行显示。
实现静态显示的原理是通过控制LED的正向电流,使其发光。
1.显示单个数码管静态显示一位数码管时,需要将需要显示的数字转换为对应的二进制编码,并通过控制数码管的引脚,将对应的编码信号送到数码管,从而点亮对应的LED。
LED管的引脚包括共阳(正)端和共阴(负)端,需要根据具体的数码管类型,将对应的编码信号送到相应的引脚上。
例如,常见的共阳数码管,其引脚对应的编码信号如下表所示:数码管编码,a,b,c,d,e,f,g,DOT二进制值,1,2,4,8,16,32,64,128我们可以选择使用并口或者串口的方式,将对应的编码信号通过控制引脚进行发送,从而实现对数码管的显示。
2.显示多位数码管如果需要显示多位数码管,可以依次控制每个数码管的引脚,逐个显示数字。
例如,如果需要显示一个四位的数字,可以选择多个数码管,然后依次对每个数码管进行静态显示。
对于多位数码管,如果静态刷新频率较低,人眼会觉得显示闪烁。
因此,在静态显示中,通常需要使用较高的刷新频率,以使得显示效果更加稳定。
动态显示是指通过间歇性显示不同的位数,从而实现连续显示的效果。
动态显示的原理是通过快速的切换不同的位数,让人眼产生连续显示的错觉。
1.时分复用最常见的动态显示原理是时分复用技术,即通过快速的切换不同的位数,以使得数码管在较短的时间内完成多个位数的显示。
例如,对于一个四位数码管的显示,可以快速切换每个数码管的引脚,使得数码管按照一定的频率逐个显示不同的数字。
实现时分复用的关键是要保证刷新频率足够高,以至于人眼无法察觉到刷新的效果。
2.位数切换在时分复用中,需要对每个数码管进行位数的切换,以显示对应的数字。
数码管显示实验实验报告一、实验目的本次数码管显示实验的主要目的是深入了解数码管的工作原理和显示控制方式,通过实际操作掌握数码管与微控制器的接口技术,并能够编写相应的程序实现各种数字和字符的显示。
二、实验原理数码管是一种由多个发光二极管组成的显示器件,常见的有共阴数码管和共阳数码管两种类型。
共阴数码管是将所有发光二极管的阴极连接在一起,当阳极接高电平时,相应的二极管发光;共阳数码管则是将所有发光二极管的阳极连接在一起,当阴极接低电平时,相应的二极管发光。
在控制数码管显示时,通常采用动态扫描的方式,即依次快速地给每个数码管的段选端送入相应的字形码,同时使位选端选通对应的数码管,利用人眼的视觉暂留效应,使人看起来好像所有数码管同时在显示。
三、实验设备与材料1、实验开发板2、数码管模块3、杜邦线若干4、电脑5、编程软件四、实验步骤1、硬件连接将数码管模块与实验开发板进行连接,确定好段选和位选引脚的连接。
检查连接是否牢固,确保电路无短路或断路现象。
2、软件编程打开编程软件,选择相应的开发板型号和编程语言。
定义数码管的段选和位选引脚。
编写控制程序,实现数字 0 到 9 的循环显示。
3、编译与下载对编写好的程序进行编译,检查是否有语法错误。
将编译成功的程序下载到实验开发板上。
4、观察实验现象接通实验开发板的电源,观察数码管的显示情况。
检查显示的数字是否正确,显示的亮度和稳定性是否符合要求。
五、实验结果与分析1、实验结果数码管能够正常显示数字 0 到 9,并且能够按照设定的频率循环显示。
显示的数字清晰、稳定,没有出现闪烁或模糊的现象。
2、结果分析程序编写正确,能够准确地控制数码管的段选和位选信号,实现数字的显示。
动态扫描的频率设置合理,既保证了显示的稳定性,又不会出现明显的闪烁。
六、实验中遇到的问题及解决方法1、问题数码管显示出现闪烁现象。
解决方法调整动态扫描的频率,增加扫描的速度,减少每个数码管的点亮时间,从而减轻闪烁现象。
数码管动态显示的原理
数码管动态显示的原理是通过快速地在不同的数码管上切换显示不同的数字或字符来实现的。
它主要依靠以下几个关键元素来实现:
1. 数码管:数码管是一种显示设备,通常由七个发光二极管(LED)组成,排列成数字“8”的形状。
每个LED可以独立地
点亮或熄灭,而且在点亮时可以显示不同的数字或字符。
2. 位选信号:位选信号是控制哪个数码管被点亮的信号。
通常使用一个二进制的计数器来产生不同的位选信号,每个信号在不同的时间点上为高电平,用于控制特定位置的数码管。
3. 段选信号:段选信号是控制数码管上哪个LED被点亮的信号。
它由一个逻辑电路产生,根据需要显示的数字或字符来决定哪些LED需要点亮。
通过快速地切换不同的段选信号,可
以实现在不同的数码管上显示不同的内容。
4. 控制电路:控制电路主要由计数器、分频器和逻辑电路组成,用于产生位选信号和段选信号。
计数器用于产生位选信号,分频器用于控制切换速度,逻辑电路用于产生段选信号。
这些信号经过适当的放大和驱动后,可以控制数码管的亮灭以及显示的内容。
通过以上关键元素的协调工作,数码管动态显示可以实现快速地在多个数码管上显示不同的数字或字符。
这种显示方式广泛应用于数字时钟、计算器、仪表盘等电子设备中。
数码管显示原理数码管显示原理1、定义:数码管就是可以显示数字和字母的一种显示元件,又称为显示管、数字管、数字显示器等,是一种比较通用的指示和显示仪表。
2、种类:根据显示元件的结构特点,数码管可分为集中式LED数码管、点阵式液晶显示屏、晶体管数码管、管头类数码管等。
3、数码管的显示颜色:包括红色、黄色、绿色、蓝色、白色等各种颜色,可以根据用户的要求选择最合适的颜色,以便实现最佳的显示效果。
二、数码管的原理1、原理:数码管的工作原理主要是利用电路来实现亮灭的控制,当把信号输入到数码管的控制电路时,根据不同信号强度控制不同发光灯打开,就可以得到需要显示的结果。
2、电路原理:数码管的显示电路是一种比较复杂的电路结构,它的原理是利用两个电源对八对晶体管的电子路径进行控制来实现数码管显示的,一个电源即可以点亮灯,也可以关闭灯,而另一个电源则可以在每一次显示时,进行灯位选择。
3、功能特性:数码管具有显示全面,内置自动更新功能、低功耗,操作简单,容量小、机械结构简单、输出信号稳定等优势,使用时可以根据不同要求,选择不同的控制方式来实现自动化管理功能。
三、数码管的应用1、数码管主要用于指示、显示时间、日期、温度、信号状态等,比如实验室仪器设备上,游戏机等都可以使用数码管。
2、诸如家庭家电、闹钟、计算机外围设备、电子商务机器等各类电子产品中,也可以看到数码管的身影出现在这些产品中。
3、在运动休闲及健身领域的室内运动设备,比如健身椅、健身车、跑步机等,也时常使用数码管来显示操作参数,给用户一种清晰的查看读写的体验,从而保证操作的准确性。
4、在工业领域,不仅可以用数码管显示各种数据、信号状态,而且可以和计数器结合使用,用于机床和其它各种生产机械,用以计算机床生产数量、自动控制和报警等功能。
四、数码管的性能1、防护性能:数码管一般都是采用的防护材料来实现防湿、防尘、防水、防漏电、耐高温等功能,以保证在恶劣环境下,仍可以正常运行显示。
数码管数字显示原理
数码管是一种用来显示数字的电子元件,它由多个LED(发
光二极管)组成。
每个数码管可以显示数字0到9的数字。
数码管的原理是通过控制LED的亮灭来显示数字。
LED有正
极和负极两个引脚,正极称为阳极,负极称为阴极。
数码管的每个LED都有一个独立的阳极和共用的阴极。
数字的显示是通过阴极的控制来实现的。
当某一位数码管需要显示数字时,它的对应阴极会被连接到地,变成低电平。
而其他数码管的阴极则会被连接到高电平。
这样,只有被选中的数码管对应的LED才会亮起。
而数字的显示是通过阳极的控制来实现的。
当需要显示数字0时,对应的LED会被接通,发出光亮。
而其他数字对应的
LED则会被关闭,不发光。
通过控制阴极和阳极的连接,就
可以实现不同数字的显示。
数码管可以通过数字信号来控制显示的数字。
通常情况下,数码管需要一个控制信号和四个段选信号来进行数字的显示。
控制信号用于控制数码管的工作方式,而段选信号则用于选择要显示的数字。
通过上述原理,数码管可以实现对数字的显示。
利用这一原理,数码管广泛应用于各种电子设备中,如计时器、温度显示器、计算器等。
数码管的显示方式有两种:静态显示和动态显示。
1.静态显示方式。
所谓静态显示就是指无论是多少位数码管,同时处于显示状态。
如图2.19所示。
图2.19 4个共阳极数数码管静态显示时的连接方式与显示状态当单片机系统中使用静态数码管显示时,需要在每一个数码管上添加一个锁存器,当需要某个数码管显示其他内容时,只需要修改与其相连的锁存器的值即可。
由图2.19中可以看出,当数码管处于静态显示方式时,所有位选线(数码管的公共端)连接在一起,而各个数码管的段选线(数码管上各笔段的引出线)是相互分离的。
静态显示的优点是:数码管显示无闪烁,亮度高,软件控制比较容易;缺点是:需要的硬件电路较多(每一个数码管都需要一个锁存器),如果在全国大学生电子设计竞赛中使用,将造成很大的不便,同时由于所有数码管都处于被点亮状态,所以需要的电流很大,当数码管的数量增多时,对电源的要求也就随之增高。
所以,在大部分的硬件电路设计中,很少采用静态显示方式。
2.动态显示方式。
所谓动态显示,是指无论在任何时刻只有一个数码管处于显示状态,每个数码管轮流显示。
如图2.20所示。
图2.20 4个共阴极数码管动态显示时的连接方式与显示状态由图2.20中可以看出,当数码管处于动态显示时,所有位选线分离,而每个数码管的各条段选线相连。
当需要显示数字或字符时,需要将所有数码管轮流点亮,这时对每个数码管的点亮周期有了一个较严格的要求:由于发光体从通入电流开始点亮到完全发光需要一定的时间,叫做响应时间,这个时间对于不同的发光材质是不同的,通常情况下为几百微秒,所以数码管的刷新周期(所有数码管被轮流点亮一次的时间)不要过短,这也与数码管的数量有关,一般的数码管的刷新周期应控制在5ms~10ms,即刷新率为200Hz~100Hz,这样既保证了数码管每一次刷新都被完全点亮,同时又不会产生闪烁现象。
动态显示的优点是:硬件电路简单(数码管越多,这个优势越明显),由于每个时刻只有一个数码管被点亮,所以所有数码管消耗的电流较小;缺点是:数码管亮度不如静态显示时的亮度高,例如有8个数码管,以1秒为单位,每个数码管点亮的时间只有1/8秒,所以亮度较低;如果刷新率较低,会出现闪烁现象;如果数码管直接与单片机连接,软件控制上会比较麻烦等。
论述数码管动态显示的含义及优缺点
数码管动态显示是一种常用的数字显示技术,它通过将数字信号转换成光信号,并在荧光屏幕上动态显示数字内容。
数码管动态显示的含义是指通过控制数码管的导通和关断,将数字信号转换成光信号并在荧光屏幕上动态显示数字内容。
数码管动态显示的优缺点如下:
优点:
1. 高效性:数码管动态显示采用数字信号,可以精确地控制导通和关断,从
而实现数字信号的高效显示。
2. 可靠性:数码管动态显示采用光信号显示数字内容,不受数字信号本身的干扰,因此具有较高的可靠性。
3. 灵活性:数码管动态显示可以根据不同的数字显示需求,灵活地控制数码管的导通和关断,从而实现数字内容的显示。
4. 适应性:数码管动态显示可以在不同的荧光屏幕上显示数字内容,因此具有广泛的适应性。
缺点:
1. 能耗较高:数码管动态显示需要将数字信号转换成光信号,因此具有一定的能耗。
2. 需要控制电路:数码管动态显示需要控制电路来实现数字信号的显示和
控制。
3. 易受到干扰:数字信号在传输过程中容易受到外界的干扰,因此需要对数字信号进行适当的滤波和抗干扰处理。
4. 需要维护:数码管动态显示需要定期对数码管进行维护和保养,以确保其
显示效果和使用寿命。
随着数字显示技术的不断发展,数码管动态显示也在不断地被改进和升级。
数码管动态显示的原理
数码管动态显示的原理是通过不断改变显示的数字或字符,使得各个数码管依次显示不同的内容,从而实现动态显示的效果。
数码管是一种由多个发光二极管(LED)组成的显示器件,常用的有7段数码管和8段数码管。
每个数码管都由7或8个小灯泡组成,分别代表显示的数字或字符的不同段位。
通过控制这些小灯泡的亮灭来实现不同的显示效果。
动态显示常用的方法是采用扫描技术。
具体步骤如下:
1. 将要显示的数字或字符进行数字转换,得到对应的码值。
2. 将码值按照数位顺序分割成各个段位的码值。
3. 按照顺序控制每个数码管的对应段位小灯泡的亮灭,使其显示对应的数字或字符。
4. 开启当前数码管,使其对应的段位小灯泡亮起。
5. 等待一段时间(通常是几毫秒)后,关闭当前数码管,熄灭对应的段位小灯泡。
6. 切换到下一个数码管,重复步骤4和5,直到所有数码管都显示完毕。
7. 不断重复以上步骤,使得数码管能够连续显示各个数字或字符。
通过不停地切换数码管显示的内容,人眼会感知到数码管在不断变化的效果,从而实现了动态显示的效果。
这种扫描技术在人眼的视觉暂留效应下,给人一种连
续、流畅的显示体验。
第3讲数码管显示第3讲数码管显示一、数码管显示原理我们最常用的是七段式和八段式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。
可以看出两个编码的各位正好相反。
如下图。
二、点亮一个数码管下面以七段共阴数码管为例讲述如何点亮一个数码管。
l 51系列单片机的P0口没有上拉电阻(其他端口有),所以如果直接接数码管的段选线,那么不能将其点亮。
我们需要为其加上220欧姆的上拉电阻,注意,上拉电阻阻值不能过大。
实验原理图如下。
其中,7SEG-COM-CAT-GRN为七段共阴数码管,显示为绿色。
RES为电阻。
查找电阻时,需要选中下面的Resistors,如下图。
右击选中图中的电阻再左击,弹出的窗口中可改变它的阻值。
如下图。
那七个电阻看上去很乱,其实他们可以用一个排阻(RESPACK-7)代替。
如下图。
到这里原理图就画完了,我们开始写源程序。
让数码管显示字符“0”。
#includevoid main(){P0 = 0x3f; //P0口送字符…0‟的编码}显示效果如下。
一、实验目的1. 理解数码管的工作原理及驱动方式。
2. 掌握51单片机控制数码管显示的基本方法。
3. 学会使用动态扫描显示技术实现多位数码管的显示。
4. 提高编程能力和实践操作能力。
二、实验原理数码管是一种常用的显示器件,它由多个发光二极管(LED)组成,可以显示数字、字母或其他符号。
根据LED的连接方式,数码管可分为共阴极和共阳极两种类型。
本实验使用的是共阳极数码管。
51单片机控制数码管显示的基本原理是:通过单片机的I/O口输出高低电平信号,控制数码管的各个段(a-g)的亮灭,从而显示相应的数字或符号。
动态扫描显示技术是将多个数码管连接到单片机的I/O口,通过快速切换各个数码管的显示状态,实现多位数码管的显示。
三、实验器材1. 51单片机实验板2. 共阳极数码管3. 电阻、电容等元件4. 仿真软件(如Proteus)5. 编译器(如Keil)四、实验步骤1. 搭建电路:按照实验原理图连接51单片机、数码管和电阻等元件。
2. 编写程序:使用Keil软件编写控制数码管显示的程序。
程序主要包括以下部分:a. 初始化:设置单片机的工作状态,配置I/O口等。
b. 显示函数:根据需要显示的数字或符号,控制数码管的各个段亮灭。
c. 动态扫描函数:实现多位数码管的动态显示。
3. 编译程序:将编写好的程序编译成机器码。
4. 仿真测试:使用Proteus软件对程序进行仿真测试,观察数码管的显示效果。
5. 实验验证:将程序烧录到51单片机实验板上,进行实际测试。
五、实验结果与分析1. 实验结果:通过仿真测试和实际测试,数码管能够正确显示0-9的数字。
2. 结果分析:实验结果表明,51单片机可以成功地控制数码管显示数字。
动态扫描显示技术能够有效地实现多位数码管的显示,提高了显示效率。
六、实验总结1. 通过本次实验,我们掌握了51单片机控制数码管显示的基本方法,提高了编程能力和实践操作能力。
2. 动态扫描显示技术能够有效地实现多位数码管的显示,提高了显示效率。
数码管动态显示和静态显示的原理
数码管动态显示和静态显示都使用LED数码管作为显示器件。
不同之处在于,动态显示是通过周期性地刷新数码管来实现显示效果,而静态显示则是通过直接将数码管接通电源来实现显示效果。
具体原理如下:
动态显示:在动态显示中,每个数码管都有一个独立的控制信号,也就是所谓的扫描信号。
控制信号的频率通常在几十赫兹到几千赫兹之间,可以忽略不计的频率,因为人眼无法分辨过于频繁的变化。
每次扫描信号到来时,只有一个数码管会被点亮,显示当前需要呈现的数字。
为了实现连续的数字显示,控制信号在所有数码管之间轮流切换,切换速度快到人眼无法察觉。
这就像是在快速地切换电影幻灯片,使得不同的图片连续呈现在眼前的感觉。
这种方法的好处是可以极大地减少需要的控制信号线的数量,实现简单而经济的数字显示。
静态显示:与动态显示相比,静态显示不需要扫描信号,也就不需要周期性地刷新数码管。
数字显示的实现过程更加简单直接,只需要将数字和相应的管脚连接即可。
尽管静态显示需要更多的针脚,但是它的显示效果更加稳定和清晰。
同时,它可以承载更多的信息,并且在视觉效果上更加炫酷。
总之,无论是使用动态显示还是静态显示,都在数码管的控制信号和显示电路之间建立了一条有用的桥梁,使得我们可以方便地将数字信息呈现给用户。
数码管显示第3讲数码管显示第3讲数码管显示一、数码管显示原理我们最常用的是七段式和八段式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。
可以看出两个编码的各位正好相反。
如下图。
二、点亮一个数码管下面以七段共阴数码管为例讲述如何点亮一个数码管。
l 51系列单片机的P0口没有上拉电阻(其他端口有),所以如果直接接数码管的段选线,那么不能将其点亮。
我们需要为其加上220欧姆的上拉电阻,注意,上拉电阻阻值不能过大。
实验原理图如下。
其中,7SEG-COM-CAT-GRN为七段共阴数码管,显示为绿色。
RES为电阻。
查找电阻时,需要选中下面的Resistors,如下图。
右击选中图中的电阻再左击,弹出的窗口中可改变它的阻值。
如下图。
那七个电阻看上去很乱,其实他们可以用一个排阻(RESPACK-7)代替。
如下图。
到这里原理图就画完了,我们开始写源程序。
让数码管显示字符“0”。
#includevoid main(){P0 = 0x3f; //P0口送字符‘0’的编码}显示效果如下。
因为这个程序就一句话,很简单,所以我们不再进行分析。
三、一个数码管显示不同字符下面的程序让一个数码管轮流显示不同的字符。
#includevoid delay();void main(){P0 = 0x3f; //显示字符‘0’delay(); //延时一会P0 = 0x06; //显示字符‘1’delay();P0 = 0x5b; //显示字符‘2’delay();}void delay(){int i,j;for(i=1000;i>0;i--)for(j=100;j>0;j--);}这个程序实现字符‘0’,‘1’,‘2’的循环显示。
但如果要循环显示更多的数字,每次都写出他们的编码很麻烦,这里我们可以将所有的编码都写到一个数组里,以后只需调用数组就可以了。
程序如下。
#includeunsigned char code table[]={0x3f,0x06,0x5b}; //定义编码数组,注意最后void delay();void main(){P0 = table[0]; //调用数组的第一个元素delay();P0 = table[1];delay();P0 = table[2];delay();}void delay(){int i,j;for(i=1000;i>0;i--)for(j=100;j>0;j--);}这里要说明的是,unsigned char表明数组中的元素是无符号字符型数据,code 表明这是编码数组,其编译后不占内存空间而是占程序存储空间,我们知道单片机的内存空间很小,所以这个很重要。
table是数组名字,自己可以随便更换。
因为数组中的元素是从0开始排的,所以table[0]就是第一个元素0x3f。
四、多个数码管同时显示原理图如下:其中,7SEG-MPX8-CC-BLUE是8位八段共阴数码管,显示为蓝色。
其段选线接在P0口,位选线接在P2口。
让所有数码管显示同一个字符。
源程序如下:void main(){P2 = 0; //P2口各位全为低电平,选中数码管所有位P0 = 0x3f; //显示字符‘0’}这个程序只比第一个程序多了一条“P2 = 0;”,这样来实现位选。
最终效果如下:让任意位显示字符。
源程序如下:#includevoid main(){P2 = 0xaa; //选中从左数的第1,3,5,7位数码管P0 = 0x3f;}效果如下:五、动态显示以上的显示均为静态显示,下面讲述动态显示。
而到底什么是静态显示什么是动态显示,等看完下面的内容就会很清楚了。
因为上面多个数码管显示时只能显示同一个字符,怎么才能让不同的数码管显示不同的字符呢?我们先完成这样的一个程序,让第一位数码管显示1,然后第二位数码管显示2,然后第三位数码管显示3。
为了使程序短些,我们只控制前三位,要想让其他五位也显示,道理是一样的。
源程序如下:#includeunsigned char code table[]={0x3f,0x06,0x5b,0x4f};void delay();void main(){P2 = 0xfe; //选中第一位数码管P0 = table[1]; //让其显示字符‘1’delay(); //延时一会P2 = 0xfd; //选中第二位数码管P0 = table[2]; //让其显示字符‘2’delay();P2 = 0xfb; //选中第三位数码管P0 = table[3]; //让其显示字符‘3’delay();}void delay(){int i,j;for(i=1000;i>0;i--)for(j=100;j>0;j--);}这个程序就是分别选中一位数码管,让它显示一个字符,同单位数码管显示的原理是一样的。
这里你会发现每显示完一个字符之后都有一个延时,这个延时有什么作用呢?我们可以先试着改变这个延时,看会有什么效果。
我们先将delay()函数中的第一个for循环中的i的初值由1000,改为100,再运行一下程序,有什么效果?然后再将其改为10呢?这时是不是我们想要的不同数码管同时显示不同的字符的效果已经出来了。
效果如下:这就是上面所说的动态显示效果。
那静态显示与动态显示到底有什么不同呢?很明显,通俗的说,我们把向数码管各位轮流送入字符编码和位选信号,利用人眼的视觉暂留,让人感觉好像几位数码管被同时点亮,这样便可以在不同的数码管上同时显示不同的字符的效果称为动态显示。
打个比方,你晚上拿根点着的烟,在空中快速划过,你就会看到一条亮线,但其实它只是一个亮点划过而已。
如果你对它还不了解,可以到别的资料上查看一下视觉暂留的相关知识。
而静态显示就是真实的同时选中几位。
这就是它们的根本区别。
六、消影到这里我们必须先说明一个问题了。
前面我们写程序都是全部直接写到main()函数里的。
那么你有没有想过,main()函数里的语句从头执行到尾,那么语句全部执行完了会怎么样呢?你会想到它会从头再开始执行,对吧!因为由前面的程序可以看出,指令是在无限循环执行的。
但依靠这种默认的循环并不可靠,一般地,我们都是在程序中用一个死循环语句来实现无限循环的。
上面的源程序的主函数可改为:void main(){while(1) //死循环{P2 = 0xfe;P0 = table[1];delay();P2 = 0xfd;P0 = table[2];delay();P2 = 0xfb;P0 = table[3];delay();}}可以看到,我们是把所有要循环的语句都放到了一个while(1){}循环中执行的。
在以后的程序中,程序的主体部分都会放到这个语句中。
程序写成这样以后,你再将延时函数的延时缩减,比如:void delay(){int i,j;for(i=5;i>0;i--)for(j=1;j>0;j--);}这时运行程序,是不是发现很乱了!效果可能如下:这就是我们所说的“拖影”。
其实在真实的板子上,就算延时很长,也可以看见“拖影”现象。
出现这样的现象的原因是CPU的执行速度很快,当送入位选和段选数据后,接着又送入位选数据,但该位的段选数据还没有送入,所以该位还保持着上次的段选数据,接着该位的段选数据送入,由于视觉残留,两个段选数据的显示效果重合,形成了混乱。
简单的说,就是一位数码管显示了它前一位要显示的字符和它本身要显示的字符的重叠效果。
要想避免“拖影”就必须在每位数码管显示完后将其关闭,我们可以加入“P2 = 0xff;”,这样各位数码管都不会选中,然后下一位再显示时就不会有影响了,这就是所谓的“消影”。
我们把程序改为如下:void main(){while(1){P2 = 0xfe;P0 = table[1];delay();P2 = 0xff; //消影P2 = 0xfd;P0 = table[2];delay();P2 = 0xff;P2 = 0xfb;P0 = table[3];delay();P2 = 0xff;}}但是当运行后,你会发现效果并没有变化。
为什么呢?为了研究原因,我们进行联机调试,然后单步运行程序,看看程序到底是怎么执行的。
关于怎么联机调试,我们以前已经专门讲过,这里不再叙述。
如下图,先在keil中按下调试按键,会发现Proteus仿真图已经开始运行。
然后在keil中选择源程序one显示界面,并按下单步调试按键,它表示进入子函数内部,例如下面的调试过程中会进入delay()函数的内部。
按下该按键后,会在第一条语句前出现黄色箭头,表明这条语句还没有执行,下一次将会执行该语句。
再次点击单步按键,第一条语句执行完毕,会发现第一位数码管被点亮,因为还没有赋值,所以七段都被点亮了。
如下图。
再点击单步按键,可以看到虽然段选已经赋值了,但数码管并没有显示。
如下图。
再点击单步,便进入了delay()函数的内部,此时数码管也显示出‘1’了,如下图。
连续点击单步,直到跳出delay()函数,以后我们就点击另一个单步按键,它不会进入子函数内部。
如下图。
点击单步后,执行完P2=0xff;语句,数码管不再显示,如下图。
再点击单步,执行完P2=0xfd;语句,我们发现第二个数码管居然显示的是‘1’,其实也对,因为段选的数据还没有改变呢。
这正是产生“拖影”的原因。
如下图。
再点击单步,准备执行延时函数。
如下图。
点击单步,执行完延时函数后,显示出了正确的字符,如下图。
因为已经找到了原因,所以我们联机调试就到这里。
可以看到,在进行联机调试单步运行时可以发现很多程序执行的细节,所以对一些不好想的问题,我们都可以通过这种方法去寻找答案。
我们已经看到程序出错是因为消影语句“P2 = 0xff;”并没有起到应有的作用。