閱讀648 返回首頁    go 阿裏雲 go 技術社區[雲棲]


炫酷點陣

 /*-----------------------------------------------
  名稱:雙色點陣
  內容:鎖存器輸入公共端信號,紅綠信號分別是P0口、P2口控製,鎖存輸入端由P0口控製,鎖存端接P3.7,由J6跳帽控製
例如:
   dofly_WeiMa:00000001  0x01dofly_DuanMa:11111111   0xff    // 心形圖像 
                00000010   0x02    10010011   0x93
     00000100  0x04    011011010x6d
00001000  0x08    01111101   0x7d
00010000  0x10    101110110xbb
00100000  0x20    110101110xd7
01000000  0x40    111011110xef
10000000  0x80    111111110xff
------------------------------------------------*/
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
#define uchar unsigned char
#define uint  unsigned int
static unsigned int count,i,j,x;
 
sbit LE=P3^7;//定義鎖存使能端口 




unsigned char code dofly_WeiMa[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
// 輸出到公共端
unsigned char code dofly_1[]={0x00,0x66,0xFF,0xFF,0xFF,0x7E,0x3C,0x18};    //心形以外圖像,低電平有效,
unsigned char code dofly_DuanMa[19][8]={  
                                     {0xff,0x93,0x6d,0x7d,0xbb,0xd7,0xef,0xff},  //心形圖像,低電平有效
  {0xE7,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xE7},  //0
  {0xEF,0xE7,0xEF,0xEF,0xEF,0xEF,0xC7,0xFF},  //1                                         //1
  {0xE7,0xDB,0xDF,0xEF,0xF7,0xFB,0xC3,0xFF},  //2
  {0xE7,0xDB,0xDF,0xE7,0xDF,0xDB,0xE7,0xFF},  //3
  {0xEF,0xE7,0xEB,0xED,0x81,0xEF,0xEF,0xEF},  //4
  {0xC3,0xFB,0xFB,0xE3,0xDF,0xDF,0xE3,0xFF},  //5
  {0xE7,0xDB,0xFB,0xE3,0xDB,0xDB,0xDB,0xE7},  //6    
  {0xC3,0xDB,0xDF,0xEF,0xF7,0xF7,0xF7,0xFF},  //7                                         //1
  {0xE7,0xDB,0xDB,0xE7,0xDB,0xDB,0xE7,0xFF},  //8
  {0xE7,0xDB,0xDB,0xC7,0xDF,0xDB,0xE7,0xFF},  //9
  {0xE7,0xDB,0xBD,0xBD,0x81,0xBD,0xBD,0xBD},  //A
  {0xE3,0xDB,0xDB,0xE3,0xDB,0xDB,0xDB,0xE3},  //B
  {0xC3,0xBD,0xFD,0xFD,0xFD,0xFD,0xBD,0xC3},  //C
  {0xE1,0xDD,0xBD,0xBD,0xBD,0xBD,0xDD,0xE1},  //D                                         //1
  {0x81,0xFD,0xFD,0x81,0x81,0xFD,0xFD,0x81},  //E
  {0x81,0xFD,0xFD,0x81,0x81,0xFD,0xFD,0xFD},  //F
  {0xC3,0xBD,0x5A,0x24,0x7E,0x5A,0xA5,0xC3},  //笑臉
  {0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7},  //紅心 
 };
unsigned char code day[][8]={
                           {0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF},
 {0xFF,0xFF,0xC3,0xDB,0xDB,0xC3,0xFF,0xFF},
 {0xFF,0x81,0xBD,0xBD,0xBD,0xBD,0x81,0xFF},
 {0x00,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x00}, 
                         };


/*------------------------------------------------
                    函數聲明
------------------------------------------------*/
void Delay(unsigned int i)//延時函數
{
 while(i--);
}


/*------------------------------------------------
                    主函數
------------------------------------------------*/
main()
{ 
           
  for(x=0;x<19;x++)  //顯示0————紅心,一共19行
{  
for(j=0;j<20;j++) //用於決定綠色圖像顯示的時長
    for(i=0;i<8;i++)
  {
  P0=dofly_WeiMa[i]; //公共端信號,高電平有效,掃描行
     LE=1;                 //鎖存
     LE=0;
  P0=0xff;
  P0=dofly_DuanMa[x][i];//紅顏色控製端信號,顯示這一行的數據  
  Delay(300);               //掃描間隙延時,時間太長會閃爍,太短會造成重影
 }
 
  
        for(j=0;j<20;j++)        //用於決定綠色圖像顯示的時長  
   for(i=0;i<8;i++)
 {
  P0=dofly_WeiMa[i]; //公共端信號,高電平有效 ,掃描行
       LE=1;                 //鎖存
       LE=0;
  P0=0xff;            //紅色端置1,防止點亮紅
       P2=dofly_DuanMa[x][i]; //綠顏色控製端信號 ,顯示這一行的數據  
  Delay(300);               //掃描間隙延時,時間太長會閃爍,太短會造成重影
  P2=0xff;    
      }
   }






   //大紅心
     
     for(x=0;x<10;x++)     
 {
   for(j=0;j<10;j++)  //用於決定紅色圖像顯示的時長
      { 
    for(i=0;i<8;i++)
  {
  P0=dofly_WeiMa[i]; //公共端信號,高電平有效,掃描行
     LE=1;                 //鎖存
     LE=0;
  P0=0xff;
  P0=dofly_DuanMa[18][i];//紅顏色控製端信號,顯示這一行的數據
  P2=dofly_1[i];  //紅心以外的
  Delay(300);               //掃描間隙延時,時間太長會閃爍,太短會造成重影
 }
}
  
        for(j=0;j<10;j++)//用於決定綠色圖像顯示的時長
      { 
   for(i=0;i<8;i++)
 {
  P0=dofly_WeiMa[i]; //公共端信號,高電平有效 ,掃描行
       LE=1;                 //鎖存
       LE=0;
  P0=0xff;            //紅色端置1,防止點亮紅
       P2=dofly_DuanMa[18][i]; //綠顏色控製端信號 ,顯示這一行的數據
  P0=dofly_1[i];   //紅心以外的
  Delay(300);               //掃描間隙延時,時間太長會閃爍,太短會造成重影
  P2=0xff;
     }
 }  
 }     
  




 
    while(1)
   {
      for(x=0;x<4;x++)  //顯示0————紅心,一共19行
{  
for(j=0;j<5;j++) //用於決定綠色圖像顯示的時長
    for(i=0;i<8;i++)
  {
  P0=dofly_WeiMa[i]; //公共端信號,高電平有效,掃描行
     LE=1;                 //鎖存
     LE=0;
  P0=0xff;
  P0=day[x][i];//紅顏色控製端信號,顯示這一行的數據  
  Delay(100);               //掃描間隙延時,時間太長會閃爍,太短會造成重影
 }
 
  
        for(j=0;j<5;j++)        //用於決定綠色圖像顯示的時長  
   for(i=0;i<8;i++)
 {
  P0=dofly_WeiMa[i]; //公共端信號,高電平有效 ,掃描行
       LE=1;                 //鎖存
       LE=0;
  P0=0xff;            //紅色端置1,防止點亮紅
       P2=day[x][i]; //綠顏色控製端信號 ,顯示這一行的數據  
  Delay(100);               //掃描間隙延時,時間太長會閃爍,太短會造成重影
  P2=0xff;    
      }
   }

   
   }    
     
}


 


最後更新:2017-04-03 18:51:44

  上一篇:go hdu 1074 Doing Homework 狀態DP+dfs
  下一篇:go InputStream中read()與read(byte[] b)