欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

8位共陰極數碼管動態驅動程序

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年06月09日   【字體:

//##################################################################

//******               程序作用: 驅動8位數碼管                   ****************************************

//******               單片機型號: STC90C16RD+               ****************************************

//******               編寫日期: 2013年6月8日晚                ****************************************

//******               編寫人: Elitah                                      ***************************************

//##################################################################

 

 

 

//↓↓↓↓↓預定義開始#######################################################

 

#include <reg52.h>

#define uchar unsigned char

#define ulong unsigned long

 

//以下定義斷選接口

#define DuanXuan P0

 

//以下定義位選接口

#define WeiXuan P2

 

//↑↑↑↑↑預定義結束#######################################################

 

 

 

//↓↓↓↓↓全局變量開始#####################################################

 

uchar HexCode [] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F} ;

uchar DispBit [] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F} ;

 

//↑↑↑↑↑全局變量結束#####################################################

 

 

 

//↓↓↓↓↓函數聲明開始#####################################################

 

void openDigitalTube(ulong) ;

void dispDigitalTube(int,int) ;

void delay(int) ;

 

//↑↑↑↑↑函數聲明結束#####################################################

 

 

 

//↓↓↓↓↓主函數開始#######################################################

 

void main()

{

while(1)
{
openDigitalTube(99999999) ;
}

}

 

//↑↑↑↑↑主函數結束#######################################################

 

 

 

//↓↓↓↓↓函數定義開始#####################################################

 

void openDigitalTube(ulong x)

{

if (x >= 0 && x < 10)
{
dispDigitalTube(x,7) ;
}
else if(x >= 10 && x < 100)
{
dispDigitalTube(x / 10,6) ;
dispDigitalTube(x % 10,7) ;
}
else if(x >= 100 && x < 1000)
{
dispDigitalTube(x / 100,5) ;
dispDigitalTube((x / 10) % 10,6) ;
dispDigitalTube((x % 100) % 10,7) ;
}
else if(x >= 1000 && x < 10000)
{
dispDigitalTube(x / 1000,4) ;
dispDigitalTube((x / 100) % 10,5) ;
dispDigitalTube((x / 10) % 10,6) ;
dispDigitalTube(x % 10,7) ;
}
else if(x >= 10000 && x < 100000)
{
dispDigitalTube(x / 10000,3) ;
dispDigitalTube((x / 1000) % 10,4) ;
dispDigitalTube((x / 100) % 10,5) ;
dispDigitalTube((x / 10) % 10,6) ;
dispDigitalTube(x % 10,7) ;
}
else if(x >= 100000 && x < 1000000)
{
dispDigitalTube(x / 100000,2) ;
dispDigitalTube((x / 10000) % 10,3) ;
dispDigitalTube((x / 1000) % 10,4) ;
dispDigitalTube((x / 100) % 10,5) ;
dispDigitalTube((x / 10) % 10,6) ;
dispDigitalTube(x % 10,7) ;
}
else if(x >= 1000000 && x < 10000000)
{
dispDigitalTube(x / 1000000,1) ;
dispDigitalTube((x / 100000) % 10,2) ;
dispDigitalTube((x / 10000) % 10,3) ;
dispDigitalTube((x / 1000) % 10,4) ;
dispDigitalTube((x / 100) % 10,5) ;
dispDigitalTube((x / 10) % 10,6) ;
dispDigitalTube(x % 10,7) ;
}
else if(x >= 10000000 && x < 100000000)
{
dispDigitalTube(x / 10000000,0) ;
dispDigitalTube((x / 1000000) % 10,1) ;
dispDigitalTube((x / 100000) % 10,2) ;
dispDigitalTube((x / 10000) % 10,3) ;
dispDigitalTube((x / 1000) % 10,4) ;
dispDigitalTube((x / 100) % 10,5) ;
dispDigitalTube((x / 10) % 10,6) ;
dispDigitalTube(x % 10,7) ;
}

}

 

void dispDigitalTube(int x,int y)

{

DuanXuan = HexCode[x] ;
WeiXuan = DispBit [y] ;
delay(10) ;
DuanXuan = 0xFF ;
WeiXuan = 0xFF ;

}

void delay(int x)

{

int i = 0,j = 0 ;
for(i = x;i > 0;i--)
for(j = 10;j > 0;j--) ;

}

//↑↑↑↑↑函數定義結束#####################################################

關閉窗口

相關文章