zoukankan      html  css  js  c++  java
  • MSP430-四位数码管及其代码讲解

    对于平常的七段数码管我们应该是非常熟悉的,接出来8根线控制每一个灯的亮灭,那对于四位数码管是如何用12根线来控制四个灯的亮灭的呢?下边先讲解一下共阳数码管原理,然后附上MSP430的代码

    首先是他的接线原理图(自己画的比较丑)

    原理图

    先忽略上边的三极管的电路,单独对这四个数码管来说,我们是把他们的线都总到一起,本来是共接出8*4根线,现在只接出8根线(相同类型的),我们给他通电时,不考虑控制端的话他们是可以四个都会亮的,现在加上的控制端,即通过四个控制端来控制三极管的导通与截至,这样每次上边只会出现一个或者多个数码管显示同一个数字。

    这时候可能有人有疑问了,既然显示一次都是同一个数字那么比方说12怎么显示的 ,其实数码管是先在第一个管脚显示1,再在第二个管脚显示2,这样来回循环,选好切换的时间延时,就可以在人体视觉上产生1和2同时显示的错觉。

    引脚图

     从左下方,逆时针依次增加

    控制端:12    9      8      6   接到三极端集电极

    接线端: 11    7    4      2      1     10    5      3  需要按照这样的顺序接出来

    整体图(摘自网络,侵权必删)

     实物图(MSP430+自己外接的数码管电路)

     

     依次显示1,2,3,4的程序

     P3的低四位做控制端,P2做数码管的显示

    #include <MSP430x14x.h>
    
    //共阳数码管的显示表
    unsigned char table[16]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 
                                0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};
    //控制位依次循环
    unsigned char sel[4]={0x0E,0x0D,0x0B,0x07};
    void delay(void);
    
    void main( void )
    {
      unsigned char i; // 用于上边两个表的索引
      WDTCTL = WDTPW + WDTHOLD;//关闭开门狗
      
      P3DIR=0XFF;P3OUT=0X00;
      P2DIR=0XFF;P2OUT=0XFF;
      while(1)
      {
        for(i=0;i<4;i++)
        {
          P3OUT=sel[i]; //控制位依次开启
          P2OUT=table[i+1];//显示从1到4依次显示
          delay();
          delay();
          delay();
          delay();
          delay();
          delay();
          delay();
        }
      }
      
      
    }
    void delay(void)
    {
    unsigned int tmp;
    
    for(tmp = 12000;tmp > 0;tmp--);
    }
  • 相关阅读:
    C# IEnumerable 和 IEnumerator接口浅析
    SQLite笔记
    命令行工具osql.exe使用
    2016年年终工作总结
    c# Json 自定义类作为字典键时,序列化和反序列化的处理方法
    多线程随笔
    常见异步机制分析
    SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据
    SQL 删除索引错误
    SQL 实用函数
  • 原文地址:https://www.cnblogs.com/CaiFengYuanXing/p/13616536.html
Copyright © 2011-2022 走看看