首页 > 其他 > 详细

单片机学习笔记——LED

时间:2020-04-16 17:23:46      阅读:48      评论:0      收藏:0      [点我收藏+]
/****************晶体管显示数字1.0***************/
/*
P2.0    a
P2.1    b 
P2.2    c
P2.3    d
P2.4    e
P2.5    f
P2.6    g
P2.7    dp
共阴数码管,com接地
abcdef按逆时针旋转,g为中间一横,dp为点
*/
void display(int i)
{
    if(i == 0)
    {
        P2DIR |= 0xFF;
        P2OUT |= 0xFF;
        P2OUT &= ~(BIT6 + BIT7)       //显示数字零,g dp不亮
    }
    if(i == 1) 
    {

        P2DIR |= 0xFF;
        P2OUT |= 0xFF;
        P2OUT &= ~(BIT6 + BIT7) 
    }
    if(i == 2)
    {
        P2OUT |= 0xFF;
        P2DIR |= 0xFF;
        P2OUT &= ~(BIT6 + BIT7)
    }
    if(i == 3)
    {
         P2OUT |= 0xFF;
         P2DIR |= 0xFF;
         P2OUT &= ~(BIT6 + BIT7)  
    }
    if(i == 4)
    {
         P2OUT |= 0xFF;
         P2DIR |= 0xFF;
         P2OUT &= ~(BIT6 + BIT7)  
    }
    if(i == 5)
    {
         P2OUT |= 0xFF;
         P2DIR |= 0xFF;
         P2OUT &= ~(BIT6 + BIT7)  
    }
    if(i == 6)
    {
         P2OUT |= 0xFF;
         P2DIR |= 0xFF;
         P2OUT &= ~(BIT6 + BIT7)  
    }
    if(i == 7)
    {
         P2OUT |= 0xFF;
         P2DIR |= 0xFF;
         P2OUT &= ~(BIT6 + BIT7)  
    }
    if(i == 8)
    {
         P2OUT |= 0xFF;
         P2DIR |= 0xFF;
         P2OUT &= ~(BIT6 + BIT7)  
    }
    if(i == 9)
    {
        P2DIR |= 0xFF;
        P2OUT |= 0xFF;
        P2OUT &= ~(BIT6 + BIT7)       //显示数字9,e dp 不亮
    }
}
int main()
{
    display(0);
    display(8);
    int n,i;
    for(i = 0; i < 10; i++)
    {
        display(i);
        for(n = 0;n < 60000; n++)
    }
}
/*************数码管显示数字2.0(查表)*****************/

#include <msp430f169.h>
/*
 查表方式实现(共阴极)将十六进制转换成二进制,对应下面个字母
 举例 0->3F 
 dp g f e d c b a
 0  0 1 1 1 1 1 1
 
 */
void main (void)
{
    unsigned char table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
    unsigned int n,i;
    WDTCTL =WDTPW + WDTHOLD;
    P1DIR |= 0xFF;
    P1OUT |= 0;
    while(1)
    {
        for(n = 0;n < 10; n++)
        {
            P1OUT = table[n];
            for(i = 0; i < 60000; i++);
        }
    }
}
/***********数码管显示数字3.0(专用译码芯片)*****************/
//通过四个管脚即四位二进制数表示数字,再经译码器

#include <msp430f169.h>

void main(void)
{
    unsigned int n,j;
    WDTCTL = WDTPW + WDTHOLD;
    P1DIR |= 0x0F;
    P1OUT |= 0;
    while(1)
    {
        for(n = 0;n < 10 ; n++)
        {
            P1OUT = n;
            for(i = 0;i < 60000;i++);
        }
    }
}
/************数码管显示数字4.0(动态显示)**************/
/**********************显示数字2008******************/
#include <msp430f169.h>
unsigned char Tab[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsigned char Pos[4]={0x0E,0x0D,0x0B,0x07};
unsigned char Buf[4]={2,0,0,8};
void main (void)
{
    unsigned int n,i;
    WDTCTL = WDTPW + WDTHOLD;
    P1DIR |= 0xFF;
    P1OUT |= 0xFF;
    P2DIR |= 0x0F;
    P2OUT |= 0x0F;
    while(1)
    {
        for(n = 0;n < 4; n++)
        {
            P2OUT = Pos[n];
            P1OUT = Tab[Buf[n]];
            for(i = 0; i < 6000;i++);
        }
    }
}

 

单片机学习笔记——LED

原文:https://www.cnblogs.com/xinguihu/p/12713973.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!