数码管动态驱动实验报告

时间:2024.3.31

单片机实验三:数码管动态驱动实验报告

我是勇哥,自己写


第二篇:共阳极数码管的动态扫描驱动


共阳极数码管的动态扫描驱动

发布人:来自网络   发布时间:20##-6-16   飞凌官网

    数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。

    什么是共阳极呢?就是他们的公共端接正极。扫描型的意思是,几位的数码管的段选都是并联的,由他们的位选位来控制哪一位的数码管来亮。 看看上面的照片,由两个黑糊糊的三极管,来控制两边的数码管哪一边亮。

    动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM 是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I /O控制的,所以我们就可以自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。

    在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

   

    可以看到他的COM端由四个PNP型的三极管控制,控制端分别接在P2.0, P2.1,P2.2, P2.3,字段则分别接在P0.0--0.7口。

假如我们要让左边的数码管显示一个2字

可以编以下的程序。

CLR P2.3;选中左边第一个数码管

SETB P2.0;不选右边第一个数码管

SETB P2.1;不选右边第二个数码管

SETB P2.2;不选右边第三个数码管

SETB P0.7;小数点不亮

SETB P0.5; F段不亮

SETB P0.2;C段不亮

CLR P0.6;G亮

CLR P0.4 ;E段亮

CLR P0.3 ;D段亮

CLR P0.1 ;B段亮

CLR P0.0 ;A段亮

END

运行程序可以看到他们显示的数字为2。

在这样一种情况下, 我们会发现这个程序非常麻烦。其实一排数字就是二进制的数字。 我们把他转换为16进制。 直接送到P0口就行啦。

注意:0为点亮, 1为灭 

   我们把他从高往低排列为二进制,例如2,就是10100010, 用计算器转换为16进制就是A2.我们在单片机里为了把16进制和10 进制有所区别, 就把16进制后面跟一个H,同时如果首位为字母的为了区别于指令, 同时前面跟一个0, 就成了0A2H了。

大家可能有一点疑问, 为啥P0.7始终为1呢。 因为它接在小数点上。我们没有用它而已。

根据上面的方法。如果我们把数码管的接线给打乱, 同样的可以分析出他的数字代码。 

现在程序就简单啦:

还是显示一个2字:

CLR P2.0;选中右边的数码管

SETB P2.1;不选左边的数码管

SETB P2.2

SETB P2.3

MOV P0,#0A2H;将10100010送P0口

END

可以看到显示的结果是一样的。

把所有的代码分析出来后以后编程序就可以直接调用啦。 我们的4个数码管的位选为P2.0 P2.1 P2.2 P2.3 这样他一共可以显示四位数字。甚至我们可以直接用它来做一个显示仪表,或者闹钟了。 

他的0,1,2,3,4,5,6,7,8,9 的代码分别为0c0h,0f9h,0a2h,0b0h,99h,92h,82h,0f8h,80h,90h

以下为我们的试验板运行现实89S52的程序

LOOP:
     MOV   P0,#0FFH ;关显示
     MOV   P2,#0FFH ;关显示
     CLR   P2.3     ;选中第一个数码管
     MOV   P0,#80H  ;数码管显示8
     LCALL DELAY    ;调用延时
     MOV   P0,#0FFH
     MOV   P2,#0FFH
     CLR   P2.2     ;选中第二个数码管
     MOV   P0,#0C0H ;数码管显示0
     LCALL DELAY
     MOV   P2,#0FFH
     MOV   P0,#0FFH
     CLR   P2.1     ;选中第三个数码管
     MOV   P0,#92H  ;数码管显示5
     LCALL DELAY
     MOV   P0,#0FFH
     MOV   P2,#0FFH
     CLR   P2.0     ;选中第四个数码管
     MOV   P0,#0F9H ;数码管显示1
     LCALL DELAY
     AJMP  LOOP     ;程序条转到第一步,反复执行
DELAY:              ;延时子程序
     MOV   R6,#250
D1:  DJNZ  R6,D1
     RET
     END

更多相关推荐:
数码管动态显示实验报告

实验四数码管动态显示实验一一实验要求1在Proteus软件中画好51单片机最小核心电路包括复位电路和晶振电路2在电路中增加四个7段数码管共阳共阴自选将P1口作数据输出口与7段数码管数据引脚相连P20P23引脚输...

单片机c语言版数码管动态显示实验报告

数码管动态显示实验一实验要求1在Proteus软件中画好51单片机最小核心电路包括复位电路和晶振电路2在电路中增加四个7段数码管共阳共阴自选将P1口作数据输出口与7段数码管数据引脚相连P20P23引脚输出选控制...

EDA八段动态数码管显示设计实验报告

第十周动态数码管显示设计报告姓名学号专业班级指导教师20xx年11月8日目录EDA技术及应用课程设计任务书3实验目的5设计要求5实验设备5扫描原理5设计任务6实验程序6时序仿真波形图7仿真结果8模拟电路8设计总...

数码管动态扫描实验实验报告及程序

实验七数码管动态扫描实验姓名专业学号20xx412381成绩一实验目的1掌握KeilC51软件与protues软件联合仿真调试的方法2掌握单片机对数码管的动态显示控制方式3掌握定时器的基本使用及编程方法二实验仪...

七段数码管的动态扫描显示实验报告

实验四七段数码管的动态扫描显示一实验目的1进一步熟悉QuartusII软件进行FPGA设计的流程2掌握利用宏功能模块进行常用的计数器译码器的设计3学习和了解动态扫描数码管的工作原理的程序设计方法二实验原理及过程...

机器人控制-数码管动态显示-仿真实验报告

机器人控制课程总结报告机器人控制仿真实验二数码管动态显示姓名李铃年级20xx级系别信息工程学院计科师学号1111000048同组人姓名杨晨年级20xx级系别信息工程学院计科师同组人学号111100005420x...

数码管动态扫描实验报告

数码管动态扫描实验一实验目的学习计数器的设计分析合测试方法学习硬件扫描显示电路的设计方法二实验仪器1PC机2SW51PROC单片机综合实验平台三实验内容编写一段程序用单片机P0口和P2口的IO输出去控制8位的数...

嵌入式软件开发基础实验报告 数码管显示

上海电力学院嵌入式软件开发基础实验报告题目专业年级姓名学号ARM实验46数码管显示实验电子科学与技术一实验目的1通过实验掌握LED的显示控制方法2巩固实验41中所掌握的对存储区进行访问的方法二实验设备硬件Emb...

DSP键盘接口及七段数码管显示实验报告

学生实验报告实验课名称DSP原理及运用实验项目名称键盘接口及七段数码管显示实验专业名称测控技术与仪器班级24081001学号11学生姓名徐章龙教师姓名高涛20xx年6月27日组别同组同学实验日期20xx年6月2...

实验二 LED数码管动态显示(报告要求)

实验二LED数码管动态显示一实验目的1掌握LED数码管动态显示的原理和设计方法2掌握使用KeilC51项目文件创建编译运行和硬件仿真的基本操作方法二实验原理1LED数码管的结构及显示方式2实验仪的LED接口电路...

实验四、数码管动态扫描显示实验

实验四数码管动态扫描显示实验一实验目的1学习和理解数码管动态扫描的工作原理2学习和掌握数码管动态扫描的电路接口设计及程序编写二实验设备1仿真器2单片机最小系统教学实验模块3动态数码管显示模块三实验要求使8位数码...

实验四 七段数码管的动态扫描显示

实验四七段数码管的动态扫描显示专业电子信息科学与技术姓名高晓骏学号20xx02119xx10一实验目的1进一步熟悉QuartusII软件进行FPGA设计的流程2掌握利用宏功能模块进行常用的计数器译码器的设计3学...

数码管动态显示实验报告(24篇)