找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1340|回复: 0
打印 上一主题 下一主题
收起左侧

任意I/O口的数码管扫描

[复制链接]
跳转到指定楼层
楼主
ID:265979 发表于 2017-12-24 11:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#define _LED_DIRIVE_C_

#include "main.h"



//====================================================================
//====     数码管管脚宏定义      ====//
#define            p_seg_a         P3_5
#define                  p_seg_b         P3_4
#define           p_seg_c         P2_7
#define                  p_seg_d         P0_2
#define                  p_seg_e         P0_0
#define                  p_seg_f         P2_5
#define           p_seg_g         P2_6
#define           p_seg_dp        P0_1
                         
#define                        p_dig_0                                         P2_2
#define                        P_dig_1                                        P2_3
#define                        P_dig_2                                        P1_6


//====================================================================
//====     数码管显示宏定义      ====//
#define BIT0                0x01
#define BIT1                0x02
#define BIT2                0x04
#define BIT3                0x08
#define BIT4                0x10
#define BIT5                0x20
#define BIT6                0x40
#define BIT7                0x80

#define seg_a   BIT0
#define seg_b   BIT1
#define seg_c   BIT2
#define seg_d   BIT3
#define seg_e   BIT4
#define seg_f   BIT5
#define seg_g   BIT6
#define seg_h   BIT7

#define seg00   (seg_a+seg_b+seg_c+seg_d+seg_e+seg_f)             //"0"
#define seg01   (seg_b+seg_c)                                                                                                      //"1"
#define seg02   (seg_a+seg_b+seg_d+seg_e+seg_g)                              //"2"
#define seg03   (seg_a+seg_b+seg_c+seg_d+seg_g)                              //"3"
#define seg04   (seg_b+seg_c+seg_f+seg_g)                                              //"4"
#define seg05   (seg_a+seg_c+seg_d+seg_f+seg_g)                                      //"5"
#define seg06   (seg_a+seg_c+seg_d+seg_e+seg_f+seg_g)                 //"6"
#define seg07   (seg_a+seg_b+seg_c)                                                      //"7"
#define seg08   (seg_a+seg_b+seg_c+seg_d+seg_e+seg_f+seg_g)           //"8"
#define seg09   (seg_a+seg_b+seg_c+seg_d+seg_f+seg_g)                 //"9"
#define seg10   (seg_a+seg_b+seg_c+seg_d+seg_e+seg_f+seg_h)           //"0."
#define seg11   (seg_b+seg_c+seg_h)                                                                                                          //"1."
#define seg12   (seg_a+seg_b+seg_d+seg_e+seg_g+seg_h)                      //"2."
#define seg13   (seg_a+seg_b+seg_c+seg_d+seg_g+seg_h)                          //"3."
#define seg14   (seg_b+seg_c+seg_f+seg_g+seg_h)                                          //"4."
#define seg15   (seg_a+seg_c+seg_d+seg_f+seg_g+seg_h)                                      //"5."
#define seg16   (seg_a+seg_c+seg_d+seg_e+seg_f+seg_g+seg_h)           //"6."
#define seg17   (seg_a+seg_b+seg_c+seg_h)                                                                      //"7."
#define seg18   (seg_a+seg_b+seg_c+seg_d+seg_e+seg_f+seg_g+seg_h)     //"8."
#define seg19   (seg_a+seg_b+seg_c+seg_d+seg_f+seg_g+seg_h)           //"9."
#define seg20   (0x00)                                                                                                                                                                                  //关闭
#define seg21   (seg_g)                                                                                                                                 //"-"

u8 code table_seg[22]=//字形码表
{seg00,seg01,seg02,seg03,seg04,seg05,seg06,seg07,seg08,seg09,
seg10,seg11,seg12,seg13,seg14,seg15,seg16,seg17,seg18,seg19,
seg20,seg21};

/***************数码管缓冲区*********************/

u8 r_dis_buff[3] = {0x00,0x00,0x00};        //

/*******************************************************/
//独立LLED
#define   set_Led_ANT      (r_dis_buff[2] |= seg_h)                //0x10  
#define   set_Led_SLP      (r_dis_buff[2] |= seg_e)                //0x04
#define   set_Led_TIME     (r_dis_buff[2] |= seg_d)   //0x08
#define   set_Led_SPEED    (r_dis_buff[2] |= seg_b)   //0x01
#define   set_Led_Hr       (r_dis_buff[2] |= seg_g)   //0x40
#define   set_Led_SW       (r_dis_buff[2] |= seg_c)   //0x20

/***********************************************************/


//显示函数
void  LedShow(u8 tmp)
{
        CLR_WDT;                                //CLR WDT
        p_seg_a = tmp & BIT0;
        p_seg_b = tmp & BIT1;
        p_seg_c = tmp & BIT2;
        p_seg_d = tmp & BIT3;
        p_seg_e = tmp & BIT4;
        p_seg_f = tmp & BIT5;
        p_seg_g = tmp & BIT6;
        p_seg_dp = tmp & BIT7;
       
}
                                                       
//数码管扫描函数
void LedScan(void)
{
        static u8  r_dig_bit = 0;
       
        CLR_WDT;                        //CLR WDT
        //LedShow(0x00);
        p_dig_0 = 1;
        P_dig_1 = 1;
        P_dig_2        = 1;                     //关显示 消隐

        if(r_dig_bit < 2)
        {
                LedShow(table_seg[r_dis_buff[r_dig_bit]]);                        //数码管显示
        }
        else if(r_dig_bit == 2)
        {
                LedShow(r_dis_buff[r_dig_bit]);                //独立LED显示
        }
        switch(r_dig_bit)
        {
                case 0:       
                                p_dig_0 = 0;
                                break;       
                case 1:
                                P_dig_1 = 0;
                                break;
                case 2:
                                P_dig_2 = 0;
                                break;       
                default:        break;
                                                                                                                               
        }
        CLR_WDT;                                //喂狗
        r_dig_bit++;
        if(r_dig_bit >= 4)
        {
                r_dig_bit = 0;
        }

}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表