静态数码显示程序.c

来自「这是本人花了200元买的51开发板上的所有程序资料」· C语言 代码 · 共 49 行

C
49
字号
//MCU:AT89S51
//晶振:12M
#include"AT89X51.H"
unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,
                               0x92,0x82,0xf8,0x80,0x90
							  };//数字0~9共阳数码管代码

unsigned int tcount;   //全局变量
unsigned char count;   //全局变量   
unsigned char del_count;                     
void main(void)
{
  TMOD=0x02;  //使用定时器0,选择方式2(常数自动重装的8位定时器)
  TH0=0x06;   //保存数值,用于自动重装
  TL0=0x06;  //定时250uS初值
  TR0=1;    //开定时器0
  ET0=1;   //开定时器0溢出中断
  EA=1;    //开总中断
  P1_0=0; 
  while(1)
    {
     ;  //等待中断
    }
}

/**********定时器T0溢出中断服务程序***************/
void t0(void) interrupt 1 using 0
{
  tcount++;
  /*********************///实际应用的静态扫描是不用这几条语句的,
  del_count++;           //现在实验板上没有独立的静态扫描数码管,
  if(del_count==50)      //做静态扫描实验时是利用动态扫描连接方式其中一个数码管来做的,
     {                   //插入这几条语句是用来保护数码管的,使其亮度不要过高。
	  P1_0=~P1_0;        //当然了,明白数码显示的原理就可以了,实际应用中几乎不用单片机直接对数码管进行静态扫描,
	  del_count=0;       //因为直接用单片机静态显示数码管太耗I/O口了,有专门静态扫描数码管的芯片,比如MAX7219等。
     } 
  /*********************/
  if(tcount==4000) //1S到
    {
      tcount=0;
      count++;
      if(count==10)
      count=0;
      P0=dispcode[count]; //送出数码管代码显示
    }
     
}

 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?