历史上的今天
今天是:2025年02月18日(星期二)
2019年02月18日 | 51单片机数码管的静态与动态显示
2019-02-18 来源:eefocus
操作数码管的显示其实与操作led灯的操作本质上差不多,可以把一个数码管当做操作8段led灯来让它显示我们所预想的效果,如下图所示。

假如我想让一个数码管显示1,把我只需把B、C两个LED灯点亮就可以了,数码管的a~dp(数码管的点)对应字节的1~8位,假设为共阳极接法,即为1111 1001对应十六进制的F9
数码管的显示分为静态显示和动态显示
数码管的静态显示其实就是一直给数码管的特定位一直发送一样的数据就可以了,
动态显示的原理其实是一位一位的操作操作每个数码管,因为对每一位的操作特别快,并且在一直轮流给数,原理其实就是利用了人眼的视觉暂留效果和发光管的余晖作用来达到效果,只是操作的比较快,我们人眼视觉分辨不出来,就会觉得是动态显示的。
数码管的接法分为共阳极和共阴极两种接法

共阴极接法只要我们给数码管逻辑高电平即可控制其显示对应的数字
那么共阳极我们只需要给其逻辑低电平就可以控制其显示各个数字
我操作的51单片机的数码管的接法如下图所示

这四个数码管是共阳极接法,当J6跳线帽接上的时候我们对数码管给逻辑低电平就可以对数码进行操作。
就如我上面所提到的,数码管相当于8个LED灯共阳极接在一起,然后用这4个共阳极接法数码管通过各自通过连接一个PNP型的三极管来进行开通与关断,RL1的4个电阻是为了限流,防止电流过大烧坏数码管,当Q1~Q4也就是P20~P23引脚给低电平时,三极管导通,数码管可以被点亮,也就是这四个数码管的位选端,通过P20~P23来控制哪个数码管来亮。
而P00~P07是这4个数码管的段选端并联起来,来进行控制的。
我们来先来实现数码管的静态显示,操作如下。


数码管对每个位选端进行操作显示不同的数字
操作如下(位选的注释有误,应该依次是第一到第四)


经过大神的指正,了解了数码管数字显示不清晰有重影是没有消影导致的,在进行动态显示时,IO口从高电平到低电平,有一定的残留的电流在里面,所以要进行消影,即在送入位选数据之前,需要加一句 “P0 = 0xff”即可。
上一篇: 51单片机串口通讯UART
下一篇:51单片机 定时器及其应用
史海拾趣
|
用微软自带的WIFI连接程序,去连一个不能上外网的无线路由,能正确分配到IP,图标显示已连接,但用IE上不了网。我怎么判断此无线路由能否上外网呢?… 查看全部问答> |
|
我在EVC下创建了一个基于担文档的工程,工程目的是对串口数据缓冲区的读写操作,在读取时读取数据比较多,一个屏幕显示不了,因为我的视类是继承CScrollView void CSuper_TerminalView::OnDraw(CDC* pDC) { CSuper_TerminalDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native ...… 查看全部问答> |
|
用的是xilinx的spatan 3a 发现有个状态机工作不正常: 1.当我用ont-hot编码的时候,用chipscope观察,出现全是0的现象,我在状态机的when others中也加了状态的回复,但是还是不行。 2.然后我换了gray编码,这次状态停到了“011”就不走了,而这 ...… 查看全部问答> |
|
最近打算用PIC18F4550做个USB的东西,打算先在protues上仿真一下,但是usb模块一直没有工作,有没有熟悉这块的朋友帮忙看一下,是不是我初始化上面有问题呢?或者是protues的电路图有问题? 我的代码: #include #include #pragma config ...… 查看全部问答> |




