51单片机入门————数码管显示

这篇具有很好参考价值的文章主要介绍了51单片机入门————数码管显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档
我们在马路上看到的红绿灯,就是由数码管来实现的,就是其中可能加入了一些延时和转换
数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档
数码管是通过控制138译码器与74HC245来控制数码管的亮灭与数字的显示

电路原理图

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档
数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档
我们先讨论一个数码管
数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

数码管有共阳极和共阴极,我们现在使用的STC89C52是共阴极的,说明数码管共用阴极

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

上面是阴极,下面我们给阳极,即给1,就可以亮了

说这么多,我们来是通过实例来看吧

首先我们要选灯的位置,假如我们要选择,左手边第一个灯,我们怎么设置

灯的位置通过138译码器来控制
数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

通过原理图也可以看出,左手边第一个灯LED8是通过Y7来确定的,那么怎么控制呢

Y7即对应的数字为7,二进制表示为111

这个111又赋给谁

我们规定P24是高位,P23是中间的一位,P22是最低位

这个111就是赋值给P24~P22

灯的位置在哪里我们知道控制了

数字的显示又怎么控制

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

我们是通过控制74HC245来控制信号的,先了解一下74HC245

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

我们给P0给值就可以控制信号了

我们在前面知道5对应在数码管信号为10110110

因为低位放在放在P0_0,所以我们在P0赋值是5的信号二进制的倒过来,即01101101对应的16进制0x6D

我们看看代码的实现吧

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

下面我们再来控制一个灯试一试,就LDE4吧,对应的是Y3,二进制011,显示数字为8,则对应的为

1111 1110,我们给P0的是0111 1111 对应16进制0x7F

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

点亮一个灯的步骤应该我们已经熟悉了

1.选位置,LED8~Y7,以此类推,Y后面的数字,对应P24~P22的二进制
2.选数字,根据共阴极来确定0或者1
3.在P0中存(倒过来)

如果我们要点亮很多个灯怎么实现,138编码器好像只能控制一个灯的亮灭啊

如果我们想点亮多个数字,eg

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

这个代码可以在屏幕显示12吗

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

好像不怎么行啊

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

这个代码的功能是什么,可以在不断的显示1和2,中间间隔0.5秒

那么我们让它一直显示怎么操作

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

我们把时间间隔改成0.001秒会怎么样

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

好像结果不怎么令人满意

出现这个原因是什么

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

我们怎么消除影响

我们可以将P0置为0

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

我们将P0置为0,这样就可以消除影响了,这时可以显示12

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

我们假如Delay的作用是什么,不加会怎么样

我们去除是怎么样的

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

我们去除了,显示会变暗一点,加了延时1毫秒我们可以让1或者2显示更久一点这样就会亮一点

总结:
我们显示多个数字操作和显示一个数字的操作大同小异
但是我们显示多个数字的时候,在显示下一个数字的时候,我们需要消除P0的影响,即把P0置空
我们138译码器只能控制一个灯的亮灭,我们利用人眼的视觉差,其实我们一个时间只能显示一个数字,我们看到两个数字是因为,这两个数字之间在不断转换,转换得很快,我们肉眼觉得它们没有变化,起到以假乱真得效果

我们每次设置显示的位置,都要定义,数字也要定义,显得十分不方便

我们构造一个函数来实现他会事半功倍

#include <REGX52.H>

void Delay(long xms)        //延时函数
{
    unsigned char i, j;

    while(xms--)
    {
    i = 2;
    j = 239;
    do
    {
        while (--j);
    } while (--i);
    }
}


void Nixietube_number(int position,int number)//对应的位置左手边为第一个显示屏
{
    unsigned char numberSize[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
    switch(position)
    {
        case 1:
            P2_4=1;P2_3=1;P2_2=1;break;//对应138译码器Y7 LED8
        case 2:
            P2_4=1;P2_3=1;P2_2=0;break;//??138???Y6 LED7
        case 3:
            P2_4=1;P2_3=0;P2_2=1;break;//??138???Y5 LED6
        case 4:
            P2_4=1;P2_3=0;P2_2=0;break;//??138???Y4 LED5
        case 5:
            P2_4=0;P2_3=1;P2_2=1;break;//??138???Y3 LED4
        case 6:
            P2_4=0;P2_3=1;P2_2=0;break;//??138???Y2 LED3
        case 7:
            P2_4=0;P2_3=0;P2_2=1;break;//??138???Y1 LED2
        case 8:
            P2_4=0;P2_3=0;P2_2=0;break;//??138???Y0 LED1
    }
    P0=numberSize[number];
    Delay(1);//稳定显示数字
    P0=0;//消除数字
    
}

利用这个函数,我们可以快速设置数码管上的数字

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

我们调用这个函数就可以显示数字了文章来源地址https://www.toymoban.com/news/detail-540360.html

数码管显示,51单片机,嵌入式硬件,单片机,Powered by 金山文档

到了这里,关于51单片机入门————数码管显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机矩阵键盘——数码管显示

    当我们熟悉了数码管的位选与段选,并了解的矩阵键盘的扫描之后就可以编写程序了。 按下矩阵键盘S1并松开,数码管第一位(LED8)显示0;按下矩阵键盘S2并松开,数码管第一位显示1;...按下矩阵键盘S16并松开,数码管第一位显示F; 矩阵键盘扫描(输入扫描)     原理:

    2024年02月11日
    浏览(55)
  • 51单片机控制数码管动态显示

    首先打开proteus,导入8位数码管和89c51。 然后如图连线,分清断码和位码, 断码就是一个数码管的7个LED灯。 位码:就是第几位显示,由于是共阴极,所以哪位接地就显示哪位。 下面通过改变位码的接线就可以看出不同的效果 下面就编写程序,从第1位到第8位显示从0到7的八

    2023年04月21日
    浏览(46)
  • 51单片机数码管显示0-9

    初级代码:使用延时函数,延时; 进阶代码:使用定时器,延时:51单片机定时器控制数码管显示_学习笔记吧的博客-CSDN博客 初级代码: 电路接线图:  

    2024年02月12日
    浏览(40)
  • 51单片机动态数码管显示自己学号

    实验题目:使用51单片机实现动态数码管显示自己8位学号,例如20220018 在此原理图又分两种连接方式: 第一种是8位数码管接38译码器来减少端口使用。 第二种是,没有端口要求接好就可以那就是,把位选端接P3口,段选端接P0口,这样占用端口多,一般实验都是使用第一种接

    2024年02月13日
    浏览(57)
  • 【51单片机】矩阵按键实现数码管显示

    闲的没事看一看玩一玩········· 矩阵按键 数码管是一种导体发光器件,其基本单元是发光二极管。按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管 共阴极数码管是指将所有发光二极管的阴极接到一起形成共阴极的数码管,共阴极的数码管在应用时将公共

    2024年02月02日
    浏览(60)
  • 【51单片机-数码管】:用51单片机写一个八个数码管中选用任意相邻两个数码管,用来循环显示0-99之间的数据,数据显示间隔为0.5s

             用普中51单片机写一个八个数码管中选用任意相邻两个数码管,用来循环显示0-99之间的数据,数据显示间隔为0.5s。         随机数码管 00-99  循环0.5s  显示。        数码管是一种数字显示器件,它由多个发光二极管(LED)组成,可以显示数字、字母、符号等

    2024年02月07日
    浏览(54)
  • 51单片机按键控制数码管显示0-9

    实验题目:使用51单片机设计两个按键控制数码管显示0-9,当K1按下减1,当K2按下加1. 理解程序可参考我的另外两个文章; 51单片机数码管显示0-9_学习笔记吧的博客-CSDN博客 51单片机独立按键控制合集_学习笔记吧的博客-CSDN博客 两个文章一结合就是一个新的产物,所以51单片机

    2024年02月11日
    浏览(52)
  • C51单片机的电子时钟(数码管显示)

    普中科技51单片机开发板STC89C52 查看这两个原理图,我们可以发现控制这8个数码管由P22、P23、P24这三个控制,就相当于三个二进制数来控制数码管,三个二进制数(000-111)总共有8个,每一个二进制代表控制一个数码管。而控制数码管的发光二极管P0-P7控制,例如要想数码管显

    2024年02月11日
    浏览(51)
  • 51单片机实现矩阵键盘密码锁,数码管显示

    板子是普中的,按键按下10为0,按键11为确认,按键12为取消。 输入密码正确时LED D8闪烁(正确密码为5555) #include REGX52.H//头文件定义 unsigned char nixie[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示的段码 unsigned int Code = 0;//用于保存密码的变量 void Tim_int(void);//定时器初

    2024年02月02日
    浏览(51)
  • 【51单片机】数码管的静态与动态显示(含消影)

    数码管在现实生活里是非常常见的设备,例如 这些数字的显示都是数码管的应用。 注意 :数码管有 共阴 和 共阳 的区分。 在自己设计电路时,应当选用一种数码管时需要选用相应的译码器(共阴配共阴,共阳同理) 数码管的使用: 数码管其实就是一段一段LED构成的,51单

    2024年01月19日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包