当前位置:文档之家› 基于单片机的火柴人设计

基于单片机的火柴人设计

基于单片机的火柴人设计设计者:吉泽欢摘要:火柴人本来是由火柴搭建起来的小人,具有简化性,后来随着电子计算机技术的发展,逐渐出现了火柴人小游戏,LG公司的棒棒糖系列手机更是允许用户自定义火柴人的样式并作为来电显示的动画。

本设计是基于单片机的火柴人,以STC89C52作为单片机,8个8×8的红绿双色点阵作为显示设备,74HC138和74HC595作为点阵的驱动芯片,最终达到的效果就是火柴人在点阵屏上跳舞。

程序:#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define ulint unsigned long intsbit IA=P1^0;sbit IB=P1^1;sbit IC=P1^2;sbit ID=P1^3;sbit SDA_G=P1^4;//sbit G2=P1^5;sbit STR=P1^6;sbit SCK=P1^7;sbit EN=P2^7; //输出使能sbit SDA_R=P2^6;//sbit R2=P3^3;ulint tab[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //保存每一行的旧数据ulint code arrlizheng[12]={0x00ffc000,0x00800000,0x00ffdffc,0x3cffd000,0x3ffff000,0x3ffff000,0x3cffd000,0x00ffdffc,0x00800000,0x00ffc000}; //立正ulint code arrhand[13]={0x00ffc000,0x00800000,0x00ffdffc,0x3cffd000,0x3ffff000,0x3ffff000,0x3cffd000,0x00ffdffc,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000}; //左手立正,右手横Ulint codearrhandbendno[16]={ 0x0f800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00ffdffc, 0x3cffd000,0x3ffff000,0x3ffff000,0x3cffd000,0x00ffdffc,0x00800000,0x00800000,0x00800000,0 x00800000,0x00f80000}; //左手向上弯,右手向下弯Ulint codearrhandbendup[16]={0x0f800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00ffdffc, 0x3cffd000,0x3ffff000,0x3ffff000,0x3cffd000,0x00ffdffc,0x00800000,0x00800000,0x00800000,0x00800000,0x0f800000}; //两手都向上弯Ulint codearrhandbenddown[16]={0x00f80000,0x00800000,0x00800000,0x00800000,0x00800000,0x00ffdf fc,0x3cffd000,0x3ffff000,0x3ffff000,0x3cffd000,0x00ffdffc,0x00800000,0x00800000,0x00800000,0x00800000,0x00f80000}; //两手都向下弯ulint code arr1[16]={0x00000000,0x00000000,0x00000000,0x00000000,0x3f800000,0x40ffdffc, 0xbcffd000,0x3ffff000,0x3ffff000,0x3cffd000,0x00ffdffc,0x00840000,0x00440000,0x00240000,0 x00140000,0x000c0000}; //左手上内弯,右手叉腰ulint code arr2[16]={0x000c0000,0x00140000,0x00240200,0x00440100,0x00840080,0x00ffdfc0, 0x3cffd000,0x3ffff000,0x3ffff000,0x3cffd000,0x00ffdffc,0x00840000,0x00440000,0x00240000,0x00140000,0x000c0000}; //两手叉腰,左腿勾Ulint codearr22[16]={0x000c0000,0x00140000,0x00240200,0x00440100,0x00840080,0x00ffdfc0,0x3cffd000,0x3ffff000,0x3ffff000,0x3cffd000,0x00ffdfc0,0x00840080,0x00440100,0x00240200,0x00140000,0x000c0000}; //两手叉腰,两腿勾Ulint codearr31[16]={0x00040020,0x00080040,0x00100080,0x00200100,0x00400200,0x00800400,0x3cffc800,0x3ffff000,0x3cffd000,0x007fc7e0,0x00200000,0x00100000,0x00080000,0x00040000,0x00020000,0x00010000}; //向右跑1Ulint codearr32[16]={0x00040020,0x00080040,0x00100080,0x00200100,0x00400200,0x00800400,0x3cffc800,0x3ffff000,0x3cffd000,0x007fc800,0x00200600,0x001003e0,0x00080000,0x00040000,0x00020000,0x00010000}; //向右跑2Ulint codearr41[16]={0x00040000,0x00080000,0x00100000,0x002001e0,0x00400600,0x00800800,0x3cffd000,0x3ffff000,0x3cffc800,0x007fc600,0x00200180,0x001002c0,0x00080420,0x00040420,0x00020240,0x00010180}; //踢足球1Ulint codearr42[16]={0x00040000,0x00080000,0x00100000,0x002001e0,0x00400600,0x00800800,0x3cffd000,0x3ffff000,0x3cffc800,0x007fc400,0x002003e0,0x00100310,0x00080290,0x00040250,0x00020120,0x000100c0}; //踢足球2Ulint codearr51[16]={0x00020000,0x00420000,0x00210000,0x00108000,0x00086000,0x00041000,0x3cffd000,0x3ffff000,0x3cffd000,0x007fd000,0x00046000,0x00084000,0x00108000,0x00210000,0x00420000,0x00020000}; //上跳1Ulint codearr52[16]={0x00020000,0x00420000,0x00210000,0x00108000,0x00086000,0x00049000,0x007f1000,0x000f1000,0x000f1000,0x007f9000,0x0004e000,0x00084000,0x00108000,0x00210000,0x00420000,0x00020000}; //上跳2Ulint codearrend[16]={0x7e083070,0x7e08504c,0x40085042,0x40089041,0x7e089041,0x7e091041,0x4009 1041, 0x400a1042,0x7e0a104c,0x7e0c1070}; //endulint code arr_xiexie[16]={0x01100110,0x02a802a8,0x28882888,0x34883488,0x2a882a88,0x21882188,0x2fa82fa8,0x24a824a8,0x24c824c8,0xe788e788,0x04880488,0x07be07be,0x24882488,0x27882788,0x42084208,0x01080108}; //谢谢ulint code arr_xuzhou[16]={0x20808004,0x21404004,0x28442084,0x24442084,0x22481084,0x22501084,0x20401084,0xa7fc9084,0x60405294,0x20405294,0x15f654a4,0x92081084,0x41101084,0x20a01084,0x10401084,0x10401004}; //徐州ulint code arr_gongcheng[16]={0x00001000,0x000013fe,0xfffe1020,0xfffe1020,0x010091fc,0x01005420,0x01005420,0x010039fe,0x01003000,0x01001000,0x0100fdfc,0x01001 104,0x01001104,0x7ffcf104,0x00001dfc,0x00000800}; //工程ulint code arr_xueyuan[16]={0x02004400,0x0500420e,0x01004112,0x01004112, 0x01005090,0xfffe6890,0x01804890,0x00404bfe,0x01fe04800,0x80045000,0x400261f8,0x7ffe5404,0x00205202,0x11104bfe,0x11087820,0x22080040}; //学院ulint code arr_jidian[16]={0x140000fe,0x120e0102,0x12120102,0x1112210a,0x11123ff8,0x91102108,0x55102108,0x55102108,0x39103ff8,0x31102108,0x11002108,0xfd102108,0x11103ff8,0x11100100,0x11f00100,0x10000100}; //机电ulint code arr_keji[16]={0x10102606,0x10105188,0x10101050,0x10101020,0x90101050,0x53f0d048,0x501e3088,0x34101884,0x389015fc,0x10901020,0xfd101020,0x1010fc20,0x109013fe,0xf0901020,0x1d101020,0x08101020}; //科技ulint code arr_xiehui[16]={0x24201008,0x22503ff8,0x21101010,0x21100820,0x20900400,0x28920200,0x24927ffc,0x22940000,0x22980000,0x2090cfe6,0x20903018,0xfbf00820,0x20800440,0x20800280,0x20800100,0x20800100}; //协会uchar tt=0,i;uint num;/*#define OFF 0#define ON 1#define RED 0#define GREEN 1*/#define scan0 {IA=0;IB=0;IC=0;ID=0;}#define scan1 {IA=1;IB=0;IC=0;ID=0;}#define scan2 {IA=0;IB=1;IC=0;ID=0;}#define scan3 {IA=1;IB=1;IC=0;ID=0;}#define scan4 {IA=0;IB=0;IC=1;ID=0;}#define scan5 {IA=1;IB=0;IC=1;ID=0;}#define scan6 {IA=0;IB=1;IC=1;ID=0;}#define scan7 {IA=1;IB=1;IC=1;ID=0;}#define scan8 {IA=0;IB=0;IC=0;ID=1;}#define scan9 {IA=1;IB=0;IC=0;ID=1;}#define scan10 {IA=0;IB=1;IC=0;ID=1;}#define scan11 {IA=1;IB=1;IC=0;ID=1;}#define scan12 {IA=0;IB=0;IC=1;ID=1;}#define scan13 {IA=1;IB=0;IC=1;ID=1;}#define scan14 {IA=0;IB=1;IC=1;ID=1;}#define scan15 {IA=1;IB=1;IC=1;ID=1;}/*************************************************void delay(uint xms){ uint x,y;for(x= xms;x>0;x--)for(y=110;y>0;y--);}*//*****不影响其他端口的扫描*************************/void scan(uchar Value) //扫描行{switch(Value){case 0: scan0;break;case 1: scan1;break;case 2: scan2;break;case 3: scan3;break;case 4: scan4;break;case 5: scan5;break;case 6: scan6;break;case 7: scan7;break;case 8: scan8;break;case 9: scan9;break;case 10:scan10;break;case 11:scan11;break;case 12:scan12;break;case 13:scan13;break;case 14:scan14;break;case 15:scan15;break;}}/**********************************************************函数名:exp(m)功能:计算2的m次方参数:m:2的次幂返回值:result************************************************************* ulint exp(uchar m) //计算2的m次方{uchar i;ulint result=1;for(i=0;i<m;i++){result=result<<1;}return result;}*//**********************************************************函数名:dat功能:发送32位的每一行数据参数:dat:每一行的32位数据color:0为红色,1为绿色返回值:无**************************************************************/void dat(ulint dat,bit color){ulint uldat=dat;uchar i;if(color){for(i=0;i<32;i++) //32为数据{SDA_G=(uldat&0x1)?0:1; //高位在左,低位在右,1显示,0不显示SCK=1;SCK=0;uldat>>=1;}}else{for(i=0;i<32;i++) //32为数据{SDA_R=(uldat&0x1)?0:1; //高位在左,低位在右,1显示,0不显示SCK=1;SCK=0;uldat>>=1;}}STR=1;STR=0;}/**********************************************************函数名:point(x,y,color,show)功能:画点。

相关主题