• 共阴数码管静态显示


    数码管电路原理图

    硬件实现原理

    1.电路分析

    首先通过M74HC573MIR锁存器锁存数据,首先通过Y7C使能端输出段码,Y6C使能端输出位码,这里的电阻起到限流的作用。

    2.数码管分析

    共阳(阴)数码管:每个数码管都是有八个二极管构成的,所以二极管的阳(阴)极是共用的而且连高(低)电平就共阳(阴)数码管。

    段码显示:段码显示最高位从dp(h)->g->f->e->d->c->b->a。共阴数码管点亮的二极管位置为1,构成的二进制数转换成十六进制数。

    代码实现

     1 #include "reg52.h"
     2 
     3 typedef unsigned int u16;
     4 typedef unsigned char u8;
     5 
     6 /*u8 code smgduan[18]=
     7         {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
     8          0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};*/ //共阳
     9          
    10 u8 code smgduan[18]=
    11         {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
    12          0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; 
    13 
    14 void delay(u16 i)
    15 {
    16     while(i--);
    17     while(i--);
    18 }
    19          
    20 void HC138Init(u8 i)
    21 {
    22     switch(i)
    23     {
    24         case 4:
    25             P2 = (P2 & 0x1f) | 0x80;
    26         break;
    27         
    28         case 5:
    29             P2 = (P2 & 0x1f) | 0xa0;
    30         break;
    31         
    32         case 6:
    33             P2= (P2 & 0x1f) | 0xc0;
    34         break;
    35         
    36         case 7:
    37             P2 = (P2 & 0x1f) | 0xe0;
    38             
    39     }
    40 }
    41 
    42 void Display(u8 dat,unsigned pos)
    43 {
    44     HC138Init(6); // 数码管的位置
    45     P0 = 0x01 << pos;
    46     HC138Init(7); // 数码管的内容
    47     P0 = dat;
    48 }
    49 
    50 void DigDisplay()
    51 {
    52     u8 i,j;
    53     for(i=0;i<8;i++)
    54     {
    55         for(j=0;j<10;j++)
    56         {
    57             Display(smgduan[j],i);
    58             delay(60000);
    59         }
    60     }
    61     for(j=0;j<16;j++)
    62     {
    63         HC138Init(6);
    64         P0 = 0xff;
    65         HC138Init(7);
    66         P0 = smgduan[j];
    67         delay(60000);
    68     }
    69     
    70 }
    71 
    72 void main()
    73 {
    74     while(1)
    75     {
    76         DigDisplay();
    77     }   
    78 }
  • 相关阅读:
    updatepanel,linkbutton一点问题
    URL编码处理
    习惯
    style.display,有点问题
    [转]Atlas goes M2.2 or June CTP
    贴代码——从泛型数组中递归删除不符合要求的项
    做好项目,思想要不得
    关于MemoryStream类
    DateTimePicker控件的使用
    Console“自服务”读取文件
  • 原文地址:https://www.cnblogs.com/kevinkala/p/12913101.html
Copyright © 2020-2023  润新知