×
单片机 > 单片机程序设计 > 详情

单片机双色点阵显示1种颜色

发布时间:2020-08-26 发布时间:
|

#include     

#include   

  

  

//unsigned char  segout[8]={0,1,2,3,4,5,6,7}; //8列  

unsigned char  segout[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //8列  

unsigned char code tab[]={  

                        0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00  

                        };  

                          

  

  

sbit LATCH = P1^0;   

sbit SRCLK= P1^1;  

sbit SER  = P1^2;  

  

  

//公共端信号控制  

sbit LATCH_B = P2^2;  

sbit SRCLK_B= P2^1;  

sbit SER_B= P2^0;  

  

  

  

  

void DelayUs2x(unsigned char t)  

{     

 while(--t);  

}  

  

  

void DelayMs(unsigned char t)  

{  

       

 while(t--)  

 {  

     //大致延时1mS  

     DelayUs2x(245);  

DelayUs2x(245);  

 }  

}  

  

  

void SendByte(unsigned char dat)  

{      

  unsigned char i;   

          

   for(i=0;i<8;i++)  

        {  

         SRCLK=0;  

         SER=dat&0x80;  

         dat<<=1;  

         SRCLK=1;  

         }  

           

}  

  

  

void Send2Byte(unsigned char dat1,unsigned char dat2)  

{      

   SendByte(dat1);  

   SendByte(dat2);        

}  

  

  

void Out595(void)  

{  

        LATCH=1;  

        _nop_();  

        LATCH=0;  

}  

  

  

  

  

void SendSeg(unsigned char dat)  

{      

unsigned char i;   

          

   for(i=0;i<8;i++)  //发送字节  

        {  

         SRCLK_B=0;  

         SER_B=dat&0x80;  

         dat<<=1;  

         SRCLK_B=1;  

         }  

      LATCH_B=1;    //锁存  

      _nop_();  

      LATCH_B=0;  

           

           

}  

  

  

void main()  

{  

unsigned char i;  

while(1)  

{  

      

              for(i=0;i<8;i++) //8列显示  

                  {  

                     SendSeg(segout[i]);  

  

  

Send2Byte(~tab[i],0xff);  

Out595();  

                     DelayMs(1);  

  

Send2Byte(0xff,0xff);//delay(10); //防止重影  

Out595();  

                  }  

        

            

    }  

}  




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会