美文网首页
10 静态数码管

10 静态数码管

作者: aaa小菜鸡 | 来源:发表于2018-03-25 20:21 被阅读0次

    单片机STC89C52学习——10 静态数码管

    汇总:00 单片机STC89C52学习
    参考教程:普中科技

    1 工作原理

    1.1 显示器及其接口

    单片机系统中常用的显示器有:

    • 发光二极管LED(Light Emitting Diode)显示器
    • 液晶LCD(Liquid Crystal Display)显示器
    • TFT液晶显示器等

    LED显示器有两种显示结构:

    • 段显示(7段、米字型等)
    • 点阵显示(5×8、8×8点阵等)

    1.2 8段LED数码管

    8段数码管
    共阴(本开发板使用) 共阳

    共阴数码管码表(0~F):
    0x3f , 0x06 , 0x5b , 0x4f ,
    0x66 , 0x6d , 0x7d , 0x07 ,
    0x7f , 0x6f , 0x77 , 0x7c ,
    0x39 , 0x5e , 0x79 , 0x71 ,
    0x00 无显示

    原理图

    静态显示原理:
    静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码(若要显示8个数字则需要8*8=64个IO口控制)。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。

    1.3 74H573锁存器

    1. OE为使能端:低电有效
    2. LE为锁存端:
      当LE为高电平时,Q0 ~ Q7与D0 ~ D7状态相同;
      当LE为低电平时,Q0 ~ Q7锁存数据,无论D0 ~ D7如何变化,Q0 ~ Q7保持不变

    2 程序:静态数码管——控制1个数码管显示1个数字

    #include "reg52.h"
    typedef unsigned char u8;
    typedef unsigned int u16;
    
    #define LED P0// 段选
    
    sbit LSA = P2^2;// 38译码器的位选
    sbit LSB = P2^3;
    sbit LSC = P2^4;
    
    //sbit LE = P1^0;// 锁存器的锁存端
    
    u8 code LEDSeg[] = {    0x3f , 0x06 , 0x5b , 0x4f , 
                        0x66 , 0x6d , 0x7d , 0x07 , 
                        0x7f , 0x6f , 0x77 , 0x7c ,
                        0x39 , 0x5e , 0x79 , 0x71 , 0x00};// 定义数组,并保存到flash中,否则在data中
    
    void main()
    {
        LSA = 1; LSB = 1; LSC = 0;// 38译码器控制LED1为低,选中LED1,1110 0011
        // LE = 1;// 高电平开放
        LED = LEDSeg[0];// 显示0
        while (1);
    }
    
    效果:经测试位选没问题,段选总是显示"8."即0xff,暂未找到原因。结果第二天下载同样的程序,可以在正确的位显示正确的数字了,然后一会儿又不能了(图中改了位选)...

    相关文章

      网友评论

          本文标题:10 静态数码管

          本文链接:https://www.haomeiwen.com/subject/trkkcftx.html