|  | 
 
| #include <reg52.h> #include <stdio.h>
 #define uchar unsigned char
 /************************************************************************
 I/O定义
 *************************************************************************/
 sbit DIN=P3^1;//数据输入端
 sbit LOAD=P3^2;//地址锁存端
 sbit CLK=P3^3; //时钟输入端
 sbit P2_0=P2^0;
 sbit P2_1=P2^1;
 sbit P2_2=P2^2;
 sbit P2_5=P2^5;
 sbit P2_6=P2^6;
 sbit P2_7=P2^7;
 /************************************************************************
 数据输入
 *************************************************************************/
 void send(uchar add,uchar dat)
 {
 uchar ADS,i,j;
 CLK=0;
 LOAD=0;
 DIN=0;
 i=4;
 while(i<16)
 {
 if(i<8)
 {
 ADS=add;
 }
 else
 {
 ADS=dat;
 }
 for(j=8;j>=1;j--)
 {
 if((ADS&0x80)==0)
 
 {     DIN=0 ;}
 else
 {     DIN=1;}
 ADS=ADS<<1;
 CLK=1;
 CLK=0;
 }
 i=i+8;
 }
 LOAD=1;
 }
 
 /************************************************************************
 主函数
 *************************************************************************/
 
 void main(void)
 
 {
 
 send(0x0c,0x01);//正常状态
 
 send(0x0b,0x07);//设置扫描范围DIG0-7
 
 send(0x0a,0x05);//设置亮度11/32
 
 send(0x09,0xff);//采用译码方式
 
 
 
 while(1)
 
 {
 /*
 send(0x01,0x01);
 
 send(0x02,0x02);
 
 send(0x03,0x03);
 
 send(0x04,0x84);
 
 send(0x05,0x05);
 
 send(0x06,0x06);
 
 send(0x07,0x07);
 
 send(0x08,0x08);
 */
 
 if(P2_0==0) {P2_5=0
  2_6=1  2_7=1;send(0x01,0x01);send(0x02,0x02);} if(P2_1==0) {P2_5=1
  2_6=0  2_7=1;send(0x01,0x04);send(0x02,0x07);} if(P2_2==0) {P2_5=1
  2_6=1  2_7=0;send(0x01,0x08);send(0x02,0x05);} 
 
 
 }
 
 }
 
 
 
 | 
 |