一维数组先定义再赋值

/****先定义数组类型再赋值**L236*********/     

/*2014 8 19 16:40**PAST*CODE1028**PAST**/     

               #include<reg51.h>    

               #define  uint unsigned int  

               #define  uchar unsigned char

   sfr      AUXR=0x8e;              //辅助寄存器

               sfr      SADDR=0xA9;             //从机地址寄存器

               sfr      SADEN=0xB9;             //从机地址屏蔽寄存器

       int      j;           //待放入数组的数据

               int      k,*p=&k;     //数组下标位变量

               uint     a[10],i;     //定义数组a 循环总变量i 

   uint     aa=0;   //

   uint     val,Buff;

               sfr      P4=0xc0;

               sfr      P5=0xc8;

       sbit     out=P5^5;    //

       sbit     CS=P3^5;  //12864 PIN4

               sbit     SID=P3^6;    //12864 PIN5

               sbit     SCLK=P3^7;   //12864 PIN6

   sbit     key1=P3^2;   //

               sbit     key2=P3^3;   //

   sbit     key3=P3^4;   //

       uchar    code disdt[11]={0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,

                                0xb6,0xb7,0xb8,0xb9,0xa3}; 

/*------------------延时子程序------------------------*/ 

               void delay_1ms(uint x) 

               {

               int i, j;

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

               for (j=0; j<1500; j++);

               }

/*------------------延时子程序-----------------------------*/ 

              void delay(unsigned int t) 

              {  

  unsigned int i,j; 

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

              for(j=0;j<100;j++); 

              } 

/*------------------写命令到LCD-----------------------*/ 

               void write_com(unsigned char cmdcode) 

               { 

               uchar i; 

               uchar i_data,temp_data1,temp_data2; 

               i_data=0xf8; 

               delay(10); 

               CS=1; 

               SCLK=0; 

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

                { 

                SID=(bit)(i_data&0x80); 

                SCLK=0; 

                SCLK=1; 

                i_data=i_data<<1; 

                } 

               i_data=cmdcode; 

               i_data&=0xf0; 

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

                { 

                SID=(bit)(i_data&0x80); 

                SCLK=0; 

                SCLK=1; 

                i_data=i_data<<1; 

                } 

               i_data=cmdcode; 

               temp_data1=i_data&0xf0; 

               temp_data2=i_data&0x0f; 

               temp_data1>>=4; 

               temp_data2<<=4; 

               i_data=temp_data1|temp_data2; 

               i_data&=0xf0; 

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

                { 

                SID=(bit)(i_data&0x80); 

                SCLK=0; 

                SCLK=1; 

                i_data=i_data<<1; 

                } 

               CS=0; 

               } 

/*-------------------写数据到LCD----------------------*/ 

               void write_data(unsigned char Dispdata) 

               { 

               uchar i; 

               uchar i_data,temp_data1,temp_data2; 

               i_data=0xfa; 

               delay(10); 

               CS=1; 

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

                { 

                SID=(bit)(i_data&0x80); 

                SCLK=0; 

                SCLK=1; 

                i_data=i_data<<1; 

                } 

               i_data=Dispdata; 

               i_data&=0xf0; 

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

                { 

                SID=(bit)(i_data&0x80); 

                SCLK=0; 

                SCLK=1; 

                i_data=i_data<<1; 

                } 

               i_data=Dispdata; 

               temp_data1=i_data&0xf0; 

               temp_data2=i_data&0x0f; 

               temp_data1>>=4; 

               temp_data2<<=4; 

               i_data=temp_data1|temp_data2; 

               i_data&=0xf0; 

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

                { 

                SID=(bit)(i_data&0x80); 

                SCLK=0; 

                SCLK=1; 

                i_data=i_data<<1; 

                } 

               CS=0; 

               } 

/*------------------初始化LCD屏-----------------------*/ 

   void lcd_init() 

               { 

               uchar comdata; 

               delay_1ms(100); 

               comdata=0x30; 

               write_com(comdata);   /*功能设置:一次送8位数据,基本指令集*/ 

               comdata=0x04; 

               write_com(comdata);   /*点设定:显示字符/光标从左到右移位,DDRAM地址加1*/ 

   comdata=0x0f; 

               write_com(comdata); /*显示设定:开显示,显示光标,当前显示位反白闪动*/ 

               comdata=0x01; 

               write_com(comdata);   /*清DDRAM*/ 

               comdata=0x02; 

               write_com(comdata);   /*DDRAM地址归位*/ 

               comdata=0x80; 

               write_com(comdata);   /*把显示地址设为0X80,即为第一行的首位*/ 

               }

/*********************************/

               void timer0() interrupt 1

               { 

               aa=aa+1;

               TH0=0X53;

               TL0=0X32;

               if(aa==500)

               out=!out,

               aa=0;

               }  

/*--------------显示------------------*/

            void display()              /*显示A函数*/

               { 

    write_com(val);               /*地址*/

                write_data(0xA3);                /*半个字符*/

                write_data(disdt[(Buff%100)/10]);/*十位*/ 

val++;

                write_com(val);               /*地址*/

                write_data(0xA3);                /*半个字符*/

                write_data(disdt[Buff%10]);      /*个位*/ 

val++;

               }      

/**************显示 数据显示*********************/

  void dispfile()

  {

   write_com(0x9B);    /*--数---*/ 

               write_data(0xCA);

               write_data(0xFD);   

               write_com(0x9C);    /*--据---*/ 

               write_data(0xBE);

               write_data(0xDD);    

               write_com(0x9D);    /*--显---*/ 

               write_data(0xCF);

               write_data(0xD4);  

               write_com(0x9E);    /*--示---*/ 

               write_data(0xCA);

               write_data(0xBE);   

  }      

/*********************************/

               void main()

               { 

   lcd_init();  //初始化LCD屏

   dispfile();

   AUXR=0X80;             //STC系列的1T 设置

               TMOD=0X01;

               TH0=0X53;

               TL0=0X32;

   ET0=1;

               TR0=1;   

   while(1)

   {

             if(!key1)

     {

 EA=0;

     j=10;   //放入数据初始值10

                  for(i=0;i<10;i++) //小于10个数据循环

              {

                   a[i]=j;           //数组下标位置的数据等于j

                   j++;              //j加一

              }

                  out=0;

      delay(2000);

      out=1;

  EA=1;

 }

     if(!key2)

     {

 EA=0;

     j=20;   //放入数据初始值20

                  for(i=0;i<10;i++) //小于10个数据循环

              {

                  a[i]=j;           //数组下标位置的数据等于j

                  j++;              //j加一

              }

  out=0;

      delay(2000);

      out=1;

  EA=1;

 }

 if(!key3)

   {

  EA=0;

  lcd_init();  //初始化LCD屏

  dispfile();

  val=0x80;

                   for(i=0;i<10;i++) //输出10个数据

              {

                  k=i;              //数组下标位变量等于循环位

                  Buff=a[*p];       //输出指针指向的变量

  display();

  delay_1ms(200); 

                  }

  out=0;

      delay(2000);

      out=1;

  EA=1;

 }

}

               }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值