www.pudn.com > C51_PCF8591_LCD5110.rar > display.c, change:2015-06-23,size:1576b


#include"display.h" 
#include"delay.h" 
 
unsigned char code DuanMa[10]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90};// 显示段码值0~9 
unsigned char code WeiMa[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//分别对应相应的数码管点亮,即位码 
unsigned char TempData[8]; //存储显示值的全局变量 
 
 
/*------------------------------------------------ 
 显示函数,用于动态扫描数码管 
 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示 
 如输入0表示从第一个显示。 
 Num表示需要显示的位数,如需要显示99两位数值则该值输入2 
------------------------------------------------*/ 
void Display(unsigned char FirstBit,unsigned char Num) 
{ 
      static unsigned char i=0; 
	   
 
	   DataPort=0;   //清空数据,防止有交替重影 
 
       CtrlPort=WeiMa[i+FirstBit]; //取位码  
 
       DataPort=TempData[i]; //取显示数据,段码 
	   i++; 
       if(i==Num) 
	      i=0; 
 
 
} 
/*------------------------------------------------ 
                    定时器初始化子程序 
------------------------------------------------*/ 
void Init_Timer0(void) 
{ 
 TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		      
 //TH0=0x00;	      //给定初值 
 //TL0=0x00; 
 EA=1;            //总中断打开 
 ET0=1;           //定时器中断打开 
 TR0=1;           //定时器开关打开 
} 
/*------------------------------------------------ 
                 定时器中断子程序 
------------------------------------------------*/ 
void Timer0_isr(void) interrupt 1  
{ 
 TH0=(65536-2000)/256;		  //重新赋值 2ms 
 TL0=(65536-2000)%256; 
  
 Display(0,3); 
 
}