一維數組先定義再賦值

/****先定義數組類型再賦值**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;

 }

}

               }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章