单片机,定时器的应用,段选,位选

来源:互联网 发布:淘宝没有合格证被投诉 编辑:程序博客网 时间:2024/05/15 20:13

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char

void delay(uint Z);

uchar code table[]={   //结构体
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};


uchar temp,numdu,shi,ge;

sbit dula=P2^6;
sbit wela=P2^7;

void main()
{
    temp=12;
    numdu=0;
 /*   TMOD=0x01;    //选择t0
 TH0=(65536-50000)/256;  //给高8位给值
    TL0=(65536-50000)%256;  //给低8位给值
 EA=1;                   //开总定时器中断
 ET0=1;                  //开定时器0中断
    TR0=1;                  //定时器启动/// TR0=0 定时器停止

    dula=1;                 //开段选控制
 P0=table[0];            //给P0负值 所有的数码管点亮 所选的段就是所有的数码管
 dula=0;                 //关段选控制

 wela=1;                  //位选打开
 P0=0xc0;                 //给所有的数码管负值 0
 wela=0;                  //位选关闭,保存住所贡的值

    temp=0xfe;
 P1=temp;


*/
 while(1)
 {
  shi=temp/10;
  ge=temp%10;

     dula=1;
  P0=table[shi];
     dula=0;

  wela=1;
  P0=0xfe;
  wela=0;

  delay(5);

  dula=1;
  P0=table[ge];
     dula=0;

  wela=1;
  P0=0xfe;
  wela=0;

  delay(5);

 

    /*  delay(1000);
        temp=_crol_(temp,1);
     P1=temp;

  if (aa==40)
    {
      aa=0;
   num++;
   if (num==16)
           num=0;
   dula=1;
      P0=table[num];
   dula=0;
    }

*/
    }
}


void delay(uint Z)
{
 uint x,y;
 for(x=Z;x>0;x--)
        for(y=110;y>0;y--);
 }


 /*
void timer0() interrupt 1
{
    TH0=(65536-50000)/256;  //给高8位给值
 TL0=(65536-50000)%256;  //给低沉位给值
 aa++;
   
 if (aa==40)
   {
     aa=0;
  num++;
  if (num==16)
         num=0;
  dula=1;
     P0=table[num];
  dula=0;
   }
}   */

原创粉丝点击