单个数码管

此处仅说明一下8段数码管的使用原理及方法:

目录

1.数码管的分类以及显示:

1.共阳数码管

2.共阴数码管

2.单个共阳数码管的另一种显示方法(查表法)

3.单个共阳数码管模拟水流

3.单个共阳数码管动态显示变化数字

4.单个共阳数码管指示逻辑电平


1.数码管的分类以及显示:

1.共阳数码管

共阳极就是将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。将COM接到+5v,那么某一段发光二极管的阴极低电平时,相应字段就点亮。

即若想显示数字“0”

//P1是GPIO端口输出数据寄存器
 P1=0xc0;   //二进制 为 1100 0000  参考数码管排列,
//可以得出0对应的段点亮,1对应的段熄灭,结果显示数字"0"  

2.共阴数码管

共阴极就是将所有发光二极管的阴接到一起形成公共阴极(COM)的数码管。将COM接到GND,那么某一段发光二极管的阳极高电平时,相应字段就点亮。

//P1是GPIO端口输出数据寄存器
 P1=0x3f;   //二进制 为 0011 1111 参考数码管排列,
//可以得出1对应的段点亮,0对应的段熄灭,结果显示数字"0"  

        至此相比明白共阳和共阴了,以下就以共阳来举例。

2.单个共阳数码管的另一种显示方法(查表法)

    //通过循环赋值给P1,让数码管显示特定的字符或者数字
    unsigned char code dofly_table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,} 
    //1.code 是表示将数组存储到rom中,而并非ram中。
    //2.数组最后一个元素后的逗号是可选的(可有可无)。
    //3.显示数值0-9
    unsigned char i = 0;
    while(1)
    {
        for(i = 0 ;i<10;i++)
        {
            P1 = dofly_table[i];//P1是端口寄存器
            Delay(10000);//延时函数,单位是ms;每10s换一个数字。
        }
    }

3.单个共阳数码管模拟水流

通过循环赋值给P1,让数码管显示特定流动样式

    //P1是端口寄存器
    unsigned char i;
    while(1)
    {
        P1=0xfe;//初始化为a段亮
        for(i = 0;i<6;i++)//循环6次  让abcdefg依次单独亮
        {
            Delay(1000);//延时1s
            P1<<=1;
            p1|=0x01;
        }
    }

3.单个共阳数码管动态显示变化数字

描述:单个共阳数码管指示逻辑电平通过循环检测P1口按键输入值,然后用数码管输出,没有按键按下时原值不变 。

    
    //P1和P3是端口寄存器
    unsigned char code dofly_table[10]=
    {
        0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
    }
    //1.code 是表示将数组存储到rom中,而并非ram中。
    //2.数组最后一个元素后的逗号是可选的(可有可无)。
    //3.显示数值0-9
    P1 = dofly_table[1];//P1默认是数字“0”
    while (1)
    {
        switch (P3)//p3口作为独立按键的输入端口,检测端口带安平并作出判断。
        {
        case 0xfe:P1 = dofly_table[1];break; //0xfe = 1111 1110;显示的是0xf9即数字“1”
        case 0xfd:P1 = dofly_table[2];break; //0xfd =  1111 1101;显示的是0xa4即数字“2”
        case 0xfb:P1 = dofly_table[3];break;
		case 0xf7:P1 = dofly_table[4];break; //0xfd =  1111 1011;显示的是0xa4即数字“4”
		case 0xef:P1 = dofly_table[5];break; //以此类推
		case 0xdf:P1 = dofly_table[6];break; 
		case 0xbf:P1 = dofly_table[7];break; 
		case 0x7f:P1 = dofly_table[8];break; 
        default:break;//如果什么都没按下,直接跳出。
        }
    }

4.单个共阳数码管指示逻辑电平

描述:通过循环检测P3.2口电平输入值,然后用数码管输出"H" or "L",表示该端口现在连接的是高电平还是低电平(低电平显示“L”,高电平显示“H”)。

    
    //P1和P3是端口寄存器
    P3 = 0Xfd; //初始化P3;即1111 1101-->第二位为0;
    P1=0xc7;//初始化P1 ,默认显示"L";
    unsigned char temp = 0xff;
    while(1)
    {
        if(P3 & temp == 0xff)//P3的第二位为高电平
        {
            P1=0x89; //"H"
        }else
        {
            P1=0xc7;  //"L"
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值