8-bit common cathode digital tube dynamic driver

Publisher:黑白之间Latest update time:2015-07-02 Source: 51hei Reading articles on mobile phones Scan QR code
Read articles on your mobile phone anytime, anywhere
//############################################### ##################

//****** Program function: drive 8-bit digital tube ****************************************

//****** MCU model: STC90C16RD+ ****************************************

//****** Date of writing: evening of June 8, 2013 ****************************************

//****** Written by: Elitah ***************************************

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

 

 

 

//↓↓↓↓↓Predefined start############################################################

 

#include

#define uchar unsigned char

#define ulong unsigned long

 

//The following defines the disconnection interface

#define DuanXuan P0

 

//The following defines the bit selection interface

#define WeiXuan P2

 

//↑↑↑↑↑Predefined end##############################################################

 

 

 

//↓↓↓↓↓Start of global variables#########################################################

 

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

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

 

//↑↑↑↑↑End of global variables##########################################################

 

 

 

//↓↓↓↓↓Function declaration begins##########################################################

 

void openDigitalTube(ulong);

void dispDigitalTube(int,int);

void delay(int) ;

 

//↑↑↑↑↑End of function declaration###########################################################

 

 

 

//↓↓↓↓↓Main function starts#############################################################

 

void main()

{

while(1)
{
openDigitalTube(99999999);
}

}

 

//↑↑↑↑↑End of main function#############################################################

 

[page]

 

//↓↓↓↓↓Function definition begins#########################################################

 

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--) ;

}

//↑↑↑↑↑End of function definition#########################################################

Reference address:8-bit common cathode digital tube dynamic driver

Previous article:A fun C51 dynamic scanning applet
Next article:Play with LED dot matrix 1: 16X64 single red dot matrix static display

Latest Microcontroller Articles
Change More Related Popular Components

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号