数码管的十位静态显示和动态显示

来源:互联网 发布:淘宝答题红包有限制 编辑:程序博客网 时间:2024/05/21 09:55


#include<reg52.h>


sbit DTube_OneP=P1^0;
sbit DTube_TenP=P1^1;
sbit DTube_HundredP=P1^2;
sbit DTube_KiloP=P1^3;
sbit SPK=P1^5;


void main()
{
    SPK=1;
DTube_KiloP=0;
DTube_HundredP=0;
DTube_TenP=1;
DTube_OneP=0;


P0=0x80;


while(1); 
}

这段代码显示的是数码管十位上的静态显示。写这个程序的目的,主要是为了重视命名的规范。让人看程序一目了然。


#include<reg52.h>


#define uchar unsigned char
#define uint unsigned int


//编码
uchar code table[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};


sbit SMG_G=P1^0;
sbit SMG_S=P1^1;
sbit SMG_B=P1^2;
sbit SMG_Q=P1^3;


void delay(uint smx);


void main()
{
    uchar num;


while(1)
{
  
   SMG_G=1;          //位选;
   SMG_S=1;
   SMG_B=1;
   SMG_Q=1;


for(num=0;num<10;num++)       //段选;
{
P0=table[num];
delay(500);  //延时;
}
}
}


void delay(uint smx)
{
    uint i,j;
for(i=smx;i>0;i--)
{
for(j=110;j>0;j--);
}
}


四个数码管同时点亮,依次显示0-9,时间间隔0.5s,循环下去。


#include<reg52.h>


#define uchar unsigned char
#define uint unsigned int


//编码
uchar code table[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};


sbit SMG_G=P1^3;
sbit SMG_S=P1^2;
sbit SMG_B=P1^1;
sbit SMG_Q=P1^0;


uchar SMG_No=0;
void delay(uint smx);


void main()
{
    //uchar num;


while(1)
{
SMG_G=0;          //位选初始化;
   SMG_S=0;
   SMG_B=0;
   SMG_Q=0;
   
        SMG_No=1;


P0=0xff;


   SMG_G=1;          //位选;




P0=table[SMG_No];
delay(1);
SMG_No++; 
SMG_G=0;


SMG_S=1;
P0=table[SMG_No]; 
delay(1);
SMG_No++; 
SMG_S=0;


    SMG_B=1;
P0=table[SMG_No]; 
delay(1);
SMG_No++;
SMG_B=0;


  SMG_Q=1;
P0=table[SMG_No]; 
delay(1);
SMG_No++;
SMG_Q=0;
}
}


void delay(uint smx)
{
    uint i,j;
for(i=smx;i>0;i--)
{
for(j=110;j>0;j--);
}
}


这个程序是用来动态显示数码管的。其中变量的初始化很重要,如果不设置,那么显示的时候会出现一些乱的显示。另外这里面,有个概念要注意:P0=oxff,专业名称叫消影;



原创粉丝点击