P10单元板输入数据测试

 /****STC15W408AS驱动P10板显示两个三角形***/  
/*********l95 code354*********************/    
      #include   <reg52.h>
      #include   <intrins.h>
      #define    uchar unsigned char 
      #define    uint  unsigned int
      #define    NOP   _nop_()
      sbit         OE=P1^1;          //74HC245 A1
      sbit         A1=P1^0;          //74HC138A
      sbit         B1=P3^7;          //74HC138B
      sbit         SHCP=P1^7;        //11脚    移位时钟
      sbit         STCP=P1^4;        //12脚    锁存时钟
      sbit         SDATA=P1^5;       //14      脚数据输入
     
/*******************************************************************************************/ 
        void delay(uint ms)
        {
        uint i,j;
        for(i=ms;i>0;i--)
        for(j=300;j>0;j--);
        }         
/*******************************************************************************************/
/*******************************************************************************************/
//数据串行输入 
        void serial_input(uchar dat)    
        {
         uint m;
         for(m=0;m<8;m++)
         {
         if(dat & 0x80)
         SDATA=1;
         else 
                    
         NOP;
         NOP;
         SHCP=0;
         NOP;
         NOP;
         dat=dat<<1;
         }
        }
/***********************并出********************************************************************/
        void serial_output()
        {
         STCP=1;                 
         NOP;
         NOP;
         STCP=0;    
        }  
/*******************************************************************************************/
/*******************************************************************************************/
//行显控制
        void HC138_scan(uchar temp)
        {
         OE=1;
         A1=0x01&temp;
         B1=0x01&(temp>>1);
        }
/*******************************************************************************************/
//整屏显示
         void display()
              {
              uint i,j,k;
               for(k=0;k<4;k++)  //显示的四行
               {    
               for(j=0;j<2;j++)   //显示3、4列
               {
                for(i=0;i<2;i++)   // 显示1、2列
                {
                 serial_input(~table[j][3*8+2*k+i]);          
                 serial_input(~table[j][2*8+2*k+i]);             
                 serial_input(~table[j][1*8+2*k+i]);        
                 serial_input(~table[j][0*8+2*k+i]);
                }
               }
               serial_output();
               HC138_scan(k);
               }
              }
/*******************************************************************************************/
       void main()
       {
       delay(200);
       while(1)             //
        {                 //
         display();        //开始移动显示
        } 
       }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值