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

    技术2022-05-18  36

    #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)%6;  //给低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;

         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)%6;  //给低沉位给值  aa++;      if (aa==40)    {      aa=0;   num++;   if (num==16)          num=0;   dula=1;      P0=table[num];   dula=0;    } }   */


    最新回复(0)