共阴极数码管的显示刷新

发布者:Qinghua2022最新更新时间:2019-08-15 来源: eefocus关键字:共阴极数码管  显示刷新 手机看文章 扫描二维码
随时随地手机看文章

共阳极数码管是指八段数码管的八段发光二极管的阳极(正极)都连在一起,而阴极对应的各段可分别控制,如图(B)所示:


共阴极数码管是指八段数码管的八段发光二极管的阴极(负极)都连在一起,而阳极对应的各段分别控制,如图(C)所示:


共阴级输入高电平有效,共阳级输入低电平有效。




驱动程序如下:


/*seg.c*/


#include "./delay/delay.h"

#define SEGPORT  P0

sbit bit_select = P2^0;    //定义位码位为P2^0口

sbit seg_select = P2^1;    //定义断码位为P2^1口

 

/*共阴极数码管的0~F的显示*/

unsigned char seg_data[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsigned char bit_data[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

 

void main()

{

    unsigned char i;

    SEGPORT = 0;

    /*消除数码管刷新时的重影*/ 

    while(1)

   {

        for(i = 0; i < 8; i++)

{

    SEGPORT = 0x0;

    seg_select = 1;

    seg_select = 0;

    

    SEGPORT = 0xff;

    bit_select = 1;

    bit_select = 0;

 

    SEGPORT = seg_data[i];

    seg_select = 1;

    seg_select = 0;

   

    SEGPORT = bit_data[i];

    bit_select = 1;

    bit_select = 0;

    

    delay_ms(2);

}

}

/*延时函数*/

/*delay.c*/

void delay_us(unsigned char t)

{

    while(--t);

}

 

void delay_ms(unsigned char t)

{

    while(t--)

    {

delay_us(245);

delay_us(245);

     }

}

 

void delay_s(unsigned char t)

{

    while(t--)

    {

        delay_ms(200);

delay_ms(200);

delay_ms(200);

delay_ms(200);

delay_ms(200);

    }

}


/*delay.h*/

#ifndef _DELAY_H_

#define _DELAY_H_

 

extern void delay_us(unsigned char t);

extern void delay_ms(unsigned char t);

extern void delay_s(unsigned char t);

 

#endif


关键字:共阴极数码管  显示刷新 引用地址:共阴极数码管的显示刷新

上一篇:利用单片机的数码管模拟时钟的显示时间
下一篇:利用中断实现的4*4矩阵键盘扫描

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved