找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2231|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機6位數(shù)碼管顯示程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:114509 發(fā)表于 2022-1-14 21:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#define GPIO_DIG    P0 //數(shù)碼管 P0 端口

//位定義
sbit DU = P2^6;  //段選控制
sbit WU = P2^7;  //位選控制

unsigned char code ledDX[]=
{
        //數(shù)碼管段碼
        0x3f, // 0
        0x06, // 1
        0x5b, // 2
        0x4f, // 3
        0x66, // 4
        0x6d, // 5
        0x7d, // 6
        0x07, // 7
        0x7f, // 8
        0x6f, // 9
        0x77, // A
        0x7c, // B
        0x39, // C
        0x5e, // D
        0x79, // E
        0x71, // F
        0x76, // H
        0x38, // L
        0x37, // n
        0x3E, // u
        0x73, // P
        0x5C, // O
        0x40, // -
        0x00 // 熄滅
};

unsigned char code ledWX[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//數(shù)碼管位選

void LED_display(unsigned char dx,unsigned char wx)
{
        GPIO_DIG = ledWX[wx];//送位碼
        WU = 1;
        WU = 0;//鎖住位碼
        
        GPIO_DIG = ledDX[dx];//送段碼
        DU = 1;
        DU = 0;//鎖住段碼
        
        delay_ms(2);//延時一會
        
        GPIO_DIG = 0x00;//消影
        DU = 1;
        DU = 0;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:114509 發(fā)表于 2022-3-16 20:16 | 只看該作者
前面的程序有問題,附件文件好了。

LED DISPLAY (20220316).zip

65.17 KB, 下載次數(shù): 6, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報

板凳
ID:114509 發(fā)表于 2022-3-16 20:17 | 只看該作者
// 頭文件
#include "LEDdisplay.h"

ulong parm = 202203;

//數(shù)據(jù)暫存區(qū)
uchar LED_BuF[]={8,8,8,8,8,8};
//位選
uchar code LED_WX[]=
{
        0xfe,0xfd,0xfb,0xf7,0xef,0xdf
};
//段選
uchar code LED_DX[]=                                
{
        0x3f,0x06,0x5b,0x4f,0x66,0x6d, // 0,1,2,3,4,5
        0x7d,0x07,0x7f,0x6f,0x77,0x7c, // 6,7,8,9,A,B
        0x39,0x5e,0x79,0x71,0x76,0x38, // C,D,E,F,H,L
        0x37,0x3E,0x73,0x5C,0x40,0x00  // n,u,P,O,-,滅
};
//顯示服務(wù)函數(shù)
void dis_Service()
{
        LED_BuF[0] = parm/100000%10;
        LED_BuF[1] = parm/10000%10;
        LED_BuF[2] = parm/1000%10;
        LED_BuF[3] = parm/100%10;
        LED_BuF[4] = parm/10%10;
        LED_BuF[5] = parm%10;
}
//LED 顯示
void LED_display()
{
        uchar i;
       
        switch (i)
        {
                case 0:
                Port_DX = 1;// LE置1 送段碼到 P0端口
                GPIO_P0 = LED_DX[LED_BuF[0]];
                Port_DX = 0;// LE鎖存 保持?jǐn)?shù)碼管端口的數(shù)據(jù)
                GPIO_P0 = 0x00;//消影 復(fù)位P0端口
               
                Port_WX = 1;// LE置1 送位碼,點亮數(shù)碼管
                GPIO_P0 = LED_WX[0];
                Port_WX = 0;// LE鎖存 保持點亮數(shù)碼管
                GPIO_P0 = 0x00;//消影 復(fù)位P0端口
                //delay_ms(1);//延時1ms
                i++;
                break;
               
                case 1:
                Port_DX = 1;// LE置1 送段碼到 P0端口
                GPIO_P0 = LED_DX[LED_BuF[1]];
                Port_DX = 0;// LE鎖存 保持?jǐn)?shù)碼管端口的數(shù)據(jù)
                GPIO_P0 = 0x00;//消影 復(fù)位P0端口
               
                Port_WX = 1;// LE置1 送位碼,點亮數(shù)碼管
                GPIO_P0 = LED_WX[1];
                Port_WX = 0;// LE鎖存 保持點亮數(shù)碼管
                GPIO_P0 = 0x00;//消影 復(fù)位P0端口
                //delay_ms(1);//延時1ms
                i++;
                break;
               
                case 2:
                Port_DX = 1;// LE置1 送段碼到 P0端口
                GPIO_P0 = LED_DX[LED_BuF[2]];
                Port_DX = 0;// LE鎖存 保持?jǐn)?shù)碼管端口的數(shù)據(jù)
                GPIO_P0 = 0x00;//消影 復(fù)位P0端口
               
                Port_WX = 1;// LE置1 送位碼,點亮數(shù)碼管
                GPIO_P0 = LED_WX[2];
                Port_WX = 0;// LE鎖存 保持點亮數(shù)碼管
                GPIO_P0 = 0x00;//消影 復(fù)位P0端口
                //delay_ms(1);//延時1ms
                i++;
                break;
               
                case 3:
                Port_DX = 1;// LE置1 送段碼到 P0端口
                GPIO_P0 = LED_DX[LED_BuF[3]];
                Port_DX = 0;// LE鎖存 保持?jǐn)?shù)碼管端口的數(shù)據(jù)
                GPIO_P0 = 0x00;//消影 復(fù)位P0端口
               
                Port_WX = 1;// LE置1 送位碼,點亮數(shù)碼管
                GPIO_P0 = LED_WX[3];
                Port_WX = 0;// LE鎖存 保持點亮數(shù)碼管
                GPIO_P0 = 0x00;//消影 復(fù)位P0端口
                //delay_ms(1);//延時1ms
                i++;
                break;
               
                case 4:
                Port_DX = 1;// LE置1 送段碼到 P0端口
                GPIO_P0 = LED_DX[LED_BuF[4]];
                Port_DX = 0;// LE鎖存 保持?jǐn)?shù)碼管端口的數(shù)據(jù)
                GPIO_P0 = 0x00;//消影 復(fù)位P0端口
               
                Port_WX = 1;// LE置1 送位碼,點亮數(shù)碼管
                GPIO_P0 = LED_WX[4];
                Port_WX = 0;// LE鎖存 保持點亮數(shù)碼管
                GPIO_P0 = 0x00;//消影 復(fù)位P0端口
                //delay_ms(1);//延時1ms
                i++;
                break;
               
                case 5:
                Port_DX = 1;// LE置1 送段碼到 P0端口
                GPIO_P0 = LED_DX[LED_BuF[5]];
                Port_DX = 0;// LE鎖存 保持?jǐn)?shù)碼管端口的數(shù)據(jù)
                GPIO_P0 = 0x00;//消影 復(fù)位P0端口
               
                Port_WX = 1;// LE置1 送位碼,點亮數(shù)碼管
                GPIO_P0 = LED_WX[5];
                Port_WX = 0;// LE鎖存 保持點亮數(shù)碼管
                GPIO_P0 = 0x00;//消影 復(fù)位P0端口
                //delay_ms(1);//延時1ms
                i++;
                break;
               
                case 6:
                Port_DX = 1;// LE置1 送段碼到 P0端口
                GPIO_P0 = LED_DX[LED_BuF[6]];
                Port_DX = 0;// LE鎖存 保持?jǐn)?shù)碼管端口的數(shù)據(jù)
                GPIO_P0 = 0x00;//消影 復(fù)位P0端口
               
                Port_WX = 1;// LE置1 送位碼,點亮數(shù)碼管
                GPIO_P0 = LED_WX[6];
                Port_WX = 0;// LE鎖存 保持點亮數(shù)碼管
                GPIO_P0 = 0x00;//消影 復(fù)位P0端口
                //delay_ms(1);//延時1ms
                i=0;
                break;
                default:break;//退出switch循環(huán)
        }
        dis_Service();
}


#ifndef __LEDdisplay_H__
#define __LEDdisplay_H__

#include <reg52.h>
#include "delay.h"

//IO口定義
#define GPIO_P0  P0
#define GPIO_P1  P1
#define GPIO_P2  P2
#define GPIO_P3  P3

//位定義
sbit Port_DX = P2^6;  //段選
sbit Port_WX = P2^7;  //位選

void LED_display();//LED 顯示
void dis_Service();//顯示服務(wù)函數(shù)

#endif
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表