標題: 51單片機仿真4位8段led共陰極PROTEUS [打印本頁]

作者: dlt728005539    時間: 2020-2-13 11:28
標題: 51單片機仿真4位8段led共陰極PROTEUS

#include <reg52.h>


#define DUAN_PORT P0                //段選信號的鎖存器控制

sbit WEI_LIN1=P2^0;                //位選信號的鎖存器控制
sbit WEI_LIN2=P2^1;       
sbit WEI_LIN3=P2^2;       
sbit WEI_LIN4=P2^3;       


//0-F的碼表
unsigned char code table[]={
        0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,//0-9
        0x77,0x7c,0x39,0x5e,0x79,0x71//a-f
        };
                                               
void delay(unsigned int i)
{
        unsigned int m,n;
        for(m=i;m>0;m--)
                for(n=90;n>0;n--);
}






//消除尾光
void DisplayOff(void)
{
                        WEI_LIN1=1;
                        WEI_LIN2=1;
                        WEI_LIN3=1;
                        WEI_LIN4=1;
                       
                        DUAN_PORT=0x00;
                       
                        delay(1);
}

//1次顯示一位
void DisplayNum(unsigned int value)
{
       
                static unsigned int num=0;
       
       
                unsigned char qian=1,bai=2,shi=3,ge=4;
               
               
                qian=value/1000;
                value%=100;
                bai=value/100;
                value%=100;
                shi=value/10;
                value%=10;
                ge=value;
       
                num++;
                num%=4;
       
                switch(num)
                {
                        case 0: DUAN_PORT=table[qian];         WEI_LIN1=0;break;
                        case 1: DUAN_PORT=table[bai];         WEI_LIN2=0;break;
                        case 2: DUAN_PORT=table[shi];         WEI_LIN3=0;break;
                        case 3: DUAN_PORT=table[ge];         WEI_LIN4=0;break;
                }       
       
}


void main(void)
{
        unsigned int value=0;       
        unsigned int num=0;
       
        DisplayOff();       
       
        while(1)
        {
               
                        if(num++>20)//200ms變化一次數(shù)據(jù)
                        {
                                        num=0;
                               
                                        value++;                               
                                        if(value>9999)value=0;
                        }
                       
                        DisplayNum(value);        //動態(tài)顯示1位數(shù),刷新
                        delay(10);                                        //刷新周期                       
               
                        DisplayOff();//消除尾光
               
        }
}



03-四個數(shù)碼管-共陰proteus.rar

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

程序代碼及仿真圖






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1