前一個星期才知道這個設計比賽,我們三人急忙組了個隊參加,因為我們剛上大三,初學單片機,課程比較多,只能每周抽出八九個小時來制作這個,所以做的比較倉促,不過基本功能是都能實現的。不過在這個過程中我們深深感受到了電子設計的趣味性及挑戰性。
希望以后多一點這樣的學術競賽,祝電子工程師之家越辦越好!
電路圖:
軟件流程:
eehome.cn
電子工程師之家
中國行
笑臉
心跳
實物
keil c編輯
源程序:
/*================================================*/
/* */
/* 廈門大學電子工程系單片機興趣小組 */
/* 王雷、文錕、邱傳熙 */
/* */
/*================================================*/
#include<reg51.h>
#define uchar unsigned char
//------------兩邊加0x0000是為了兩個字之間延時時不出現字的”拖尾“現象---------
uchar code EE[198] =
{
//--------e----------
0x00,0x00,0x00,0x00,0x00,0xf8,0x01,0xfc,0x01,0x44,0x01,0x44,0x01,0x44,0x01,0xcc,0x00,0xc8,0x00,0x00,0x00,0x00,
//--------e----------
0x00,0x00,0x00,0x00,0x00,0xf8,0x01,0xfc,0x01,0x44,0x01,0x44,0x01,0x44,0x01,0xcc,0x00,0xc8,0x00,0x00,0x00,0x00,
//--------h----------
0x00,0x00,0x10,0x04,0x1f,0xfc,0x1f,0xfc,0x01,0x84,0x01,0x00,0x01,0x04,0x01,0xfc,0x00,0xfc,0x00,0x04,0x00,0x00,
//--------o----------
0x00,0x00,0x00,0x00,0x00,0xf8,0x01,0xfc,0x01,0x04,0x01,0x04,0x01,0x04,0x01,0xf8,0x00,0xf8,0x00,0x00,0x00,0x00,
//--------m----------
0x00,0x00,0x01,0x04,0x01,0xfc,0x01,0xfc,0x01,0x00,0x01,0xfc,0x01,0xfc,0x01,0x00,0x01,0xfc,0x00,0xfc,0x00,0x00,
//--------e----------
0x00,0x00,0x00,0x00,0x00,0xf8,0x01,0xfc,0x01,0x44,0x01,0x44,0x01,0x44,0x01,0xcc,0x00,0xc8,0x00,0x00,0x00,0x00,
//--------.----------
0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
//--------c----------
0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xf8,0x01,0x8c,0x01,0x04,0x01,0x04,0x01,0x8c,0x00,0x88,0x00,0x00,0x00,0x00,
//--------n----------
0x00,0x00,0x01,0x04,0x01,0xfc,0x01,0xfc,0x01,0x84,0x01,0x00,0x01,0x04,0x01,0xfc,0x00,0xfc,0x00,0x00,0x00,0x00
};
//------------兩邊加0x0000是為了兩個字之間延時時不出現字的”拖尾“現象---------
uchar code HANZI[252] =
{
//-------電---------
0x00, 0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x1F,0xF0,0x12,0x20,0x12,0x20,0x12,0x20,0xFF,0xFC,
0xFF,0xFE,0x12,0x22,0x12,0x22,0x12,0x22,0x1F,0xF2,0x1F,0xF2,0x00,0x0E,0x00,0x0E, 0x00,0x00,
//-------子---------
0x00, 0x00,0x00,0x80,0x00,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x40,0x82,0x40,0x83,0x47,0xFF,
0x4F,0xFE,0x58,0x80,0x70,0x80,0x60,0x80,0x40,0x80,0x01,0x80,0x01,0x80,0x00,0x80, 0x00, 0x00,
//-------工---------
0x00, 0x00,0x00,0x04,0x00,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x7F,0xFC,
0x7F,0xFC,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x00,0x04, 0x00, 0x00,
//-------程---------
0x00, 0x00,0x08,0x20,0x48,0xE0,0x4B,0xC0,0x7F,0xFF,0xFF,0xFF,0x89,0x82,0x89,0xA2,0xFD,0x22,
0xFD,0x22,0x85,0xFE,0x85,0xFE,0x85,0x22,0xFD,0x22,0xFD,0x22,0x01,0x22,0x00,0x02, 0x00, 0x00,
//-------師---------
0x00, 0x00,0x00,0x02,0x3F,0xE6,0x3F,0xEC,0x00,0x78,0xFF,0xF0,0xFF,0x80,0x4F,0xF0,0x4F,0xF0,
0x48,0x00,0x48,0x00,0x7F,0xFF,0x7F,0xFF,0x48,0x20,0x48,0x30,0x4F,0xF0,0x4F,0xE0, 0x00, 0x00,
//-------之---------
0x00, 0x00,0x00,0x04,0x10,0x06,0x10,0x0E,0x10,0x1C,0x10,0x18,0x10,0x3C,0x90,0x24,0xD0,0x64,
0x70,0xC6,0x31,0x82,0x13,0x02,0x16,0x02,0x3C,0x02,0x38,0x02,0x10,0x02,0x00,0x02, 0x00, 0x00,
//-------家---------
0x00, 0x00,0x00,0x00,0x18,0x94,0x38,0x94,0x28,0xBC,0x29,0xA8,0x29,0x7A,0xAB,0xD3,0xEF,0xB3,
0x6D,0xFE,0x28,0xFC,0x29,0xF0,0x29,0x90,0x28,0x98,0x38,0x0C,0x30,0x0C,0x20,0x08,0x00, 0x00
};
//------------兩邊加0x0000是為了兩個字之間延時時不出現字的”拖尾“現象-------
/*------------------小心圖-------------------*/
uchar code small_heart[36] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xc0,0x07,0xe0,0x07,0xf0,0x07,0xf0,0x03,0xf8,
0x03,0xf8,0x07,0xf0,0x07,0xf0,0x07,0xe0,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
/*-------------------大心圖--------------------*/
uchar code big_heart[36]=
{
0x00,0x00,0x00,0x00,0x0f,0x80,0x1f,0xc0,0x1f,0xe0,0x1f,0xe0,0x1f,0xf0,0x0f,0xf8,0x07,0xfc,
0x07,0xfc,0x0f,0xf8,0x1f,0xf0,0x1f,0xe0,0x1f,0xe0,0x1f,0xc0,0x0f,0x80,0x00,0x00,0x00,0x00
};
/*------------------笑臉圖-------------------*/
uchar code smile[36]=
{
0x00,0x00,0x03,0x80,0x0c,0x60,0x10,0x18,0x20,0xc4,0x4c,0x24,0x4c,0x12,0x4c,0x12,0x40,0x12,
0x40,0x12,0x4c,0x12,0x4c,0x12,0x4c,0x24,0x20,0xc4,0x10,0x18,0x0c,0x60,0x03,0x80,0x00,0x00
};
//------------兩邊加0x0000是為了兩個字之間延時時不出現字的”拖尾“現象-------
uchar code CHINA[144] =
{
//-----------中------------
0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xe0,0x3f,0xe0,0x10,0x40,0x10,0x40,0x10,0x40,0xff,0xff,
0xff,0xff,0x10,0x40,0x10,0x40,0x10,0x40,0x3f,0xe0,0x3f,0xe0,0x10,0x00,0x00,0x00,0x00,0x00,
//-----------國------------
0x00,0x00,0x00,0x00,0x7f,0xff,0x7f,0xff,0x50,0x12,0x51,0x12,0x51,0x12,0x51,0x12,0x5f,0xf2,
0x5f,0xf2,0x51,0x92,0x51,0xf2,0x51,0x72,0x50,0x12,0x7f,0xff,0x7f,0xff,0x00,0x00,0x00,0x00,
//-----------行------------
0x00,0x00,0x08,0x40,0x18,0xc0,0x31,0x80,0x63,0xff,0xef,0xff,0xce,0x00,0x46,0x00,0x22,0x00,
0x22,0x02,0x22,0x03,0x23,0xff,0x23,0xfe,0x22,0x00,0x22,0x00,0x22,0x00,0x02,0x00,0x00,0x00,
//-----------!-------------
0x00,0x00,0x00,0x00,0x0f,0xfa,0x0f,0xfa,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar wave_time = 0;
uchar state = 10; // 無效狀態
uchar flag = 0; // 顯示過一遍則置1
//-----延時-------
void delay(uchar time);
void main()
{
signed int i;
IT0 = 1;
IE0 = 0;
EX0 = 1;
EA = 1;
//-----P1接上面八位,P0接下面八位----
P1 = 0xff;
P0 = 0xff;
while(1)
{
//--如果沒有中斷產生則不顯示---
if(!flag)
{
IE0 = 0;//---中斷請求置0---
EA = 0;//---關中斷----
//----狀態轉換-------
switch(state)
{
//-------eehome.cn---------
case 0:
{
delay(10); // 使圖形在中央附近顯示
for(i = sizeof(EE)-1;i >= 0;i--)
{
P1 = ~EE
;
P0 = ~EE[--i];
delay(2);
}
flag = 1;
break;
}
//-------電子工程師之家--------
case 1:
{
delay(10); // 使圖形在中央附近顯示
for(i = sizeof(HANZI)-1;i >= 0;i--)
{
P1 = ~HANZI;
P0 = ~HANZI[--i];
delay(2);
}
flag = 1;
break;
}
//--------中國行!----------
case 2:
{
delay(15); // 使圖形在中央附近顯示
for(i = sizeof(CHINA)-1;i >= 0;i--)
{
P1 = ~CHINA;
P0 = ~CHINA[--i];
delay(2);
}
flag = 1;
break;
}
//--------笑臉------------
case 3:
{
delay(30); // 使圖形在中央附近顯示
for(i = sizeof(smile)-1;i >= 0;i--)
{
P1 = ~smile;
P0 = ~smile[--i];
delay(5);
}
flag = 1;
break;
}
//---------心跳(小)----------
case 4:
{
delay(30); // 使圖形在中央附近顯示
for(i = sizeof(small_heart)-1;i >= 0;i--)
{
P1 = ~small_heart;
P0 = ~small_heart[--i];
delay(5);
}
flag = 1;
break;
}
//---------心跳(大)----------
case 5:
{
delay(30); // 使圖形在中央附近顯示
for(i = sizeof(big_heart)-1;i >= 0;i--)
{
P1 = ~big_heart;
P0 = ~big_heart[--i];
delay(5);
}
flag = 1;
break;
}
//---------其它不顯示----------
default:
{