OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3238|回复: 0

基于51单片机的数码管显示方案

[复制链接]

221

主题

221

帖子

0

精华

高级会员

Rank: 4

积分
762
金钱
762
注册时间
2021-5-18
在线时间
28 小时
发表于 2021-11-11 17:13:48 | 显示全部楼层 |阅读模式
这一次给大家带来的项目是课堂作业级别的51单片机数码管显示,本次的项目着重于讲解原理,让大家明白单片机的io对于外界设备的控制是如何进行的。

共阳极和共阴极数码管的差异
(1)驱动方法的差异。一个数码管内部的8颗LED是独立驱动的。如果8颗LED的正极接在一起接到VCC上(负极分别接到单片机的不同引脚),这种接法就叫共阳极。反之如果8颗LED负极接在一起然后接到GND(正极就分别接到单片机的不同引脚)就叫共阴极。两种接法都可以驱动数码管显示,但是用来显示的单片机程序不同(共阳极时单片机0是亮,共阴极时单片机的1是亮)。

(2)驱动电流需求差异。数码管(其实就是LED)如果按照共阳极接法则单片机可以直接驱动显示,如果按照共阴极接法则单片机不能直接驱动,因为单片机的IO口提供的电流大小不够驱动数码管内部的LED显示,需要外部电路来提供一个大电流驱动的芯片来解决(一般会采用74HC245等数据缓冲器)。

数码管显示原理
静态数码管:
静态数码管显示原理为:数码管内部的led灯珠和外部引脚一一对应,利用总线式编码即可实现对八个led的统一编码,并且led顺序为顺时针旋转,可以通过0-F数字的笔画确定led状态,进而得到编码。
动态数码管:
动态数码管的显示分为两个部分,段选和位选,段选就是和静态数码管的显示一样,通过控制led的亮灭来表达字符。位选则是通过选通数码管的公共端来实现数码管的亮灭。由于八位并行I/O口仅能一次性输出一个数字,所以我们需要通过高速位选,利用视觉残留来实现八位数码管一起点亮,故称之为动态数码管。

按照上述的知识点,我们可以搭建下面的原理图:
11.png

部分代码示例
代码相对于其他项目来说较为简洁,但是由于字符编码问题,导致粘贴时出现乱码,这个大家不用担心,项目工程里面都是由注释的。

void DigDisplay()
{
        u8 i;
        for(i=0;i<8;i++)
        {
                switch(i)         //&#206;&#187;&#209;&#161;£&#172;&#209;&#161;&#212;&#241;μ&#227;ááμ&#196;êy&#194;&#235;1ü£&#172;
                {
                        case(0):
                                LSA=0;LSB=0;LSC=0; break;//&#207;&#212;ê&#190;μú0&#206;&#187;
                        case(1):
                                LSA=1;LSB=0;LSC=0; break;//&#207;&#212;ê&#190;μú1&#206;&#187;
                        case(2):
                                LSA=0;LSB=1;LSC=0; break;//&#207;&#212;ê&#190;μú2&#206;&#187;
                        case(3):
                                LSA=1;LSB=1;LSC=0; break;//&#207;&#212;ê&#190;μú3&#206;&#187;
                        case(4):
                                LSA=0;LSB=0;LSC=1; break;//&#207;&#212;ê&#190;μú4&#206;&#187;
                        case(5):
                                LSA=1;LSB=0;LSC=1; break;//&#207;&#212;ê&#190;μú5&#206;&#187;
                        case(6):
                                LSA=0;LSB=1;LSC=1; break;//&#207;&#212;ê&#190;μú6&#206;&#187;
                        case(7):
                                LSA=1;LSB=1;LSC=1; break;//&#207;&#212;ê&#190;μú7&#206;&#187;       
                }
                P1=xuehao;//·¢&#203;í&#209;§o&#197;
                delay(100); //&#188;&#228;&#184;&#244;ò&#187;&#182;&#206;ê±&#188;&#228;é¨&#195;è       
                P1=0x00;//&#207;&#251;òt
        }
}

原文链接:http://bj.dyrs.com.cn/story/202111/1165867

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表