基于单片机的火柴人设计

合集下载

用arduino单片机,实现与flash虚拟人物ML(关键部位已打码)

用arduino单片机,实现与flash虚拟人物ML(关键部位已打码)

用arduino单片机,实现与flash虚拟人物ML(关键部位已打码)作为吊丝,我一直都有一个梦想梦想有一天,能通过某种设备,与心目中的女神做一直都想做的事……终于有一天,我学会了flash技术,又学会了arduino开源单片机编程,实现了这个猥琐的梦想。

用到的技术:1、as2(3也行,但哥懒,改了下别人的as2代码)2、串口代理服务(把com口通信,转换成socket通信)3、arduino语言原理:arduino获取到电阻阻值变化,把变化转换成数字,发送给电脑电脑程序读取com口数据,并把数据用socket连接,发给flashflash读到数据,虚拟人物做出反应先上电路图:很简单,电位器变化是0-5V,把这个0-5V的电压,输入到A0接口里,然后读出来然后转换成亮度,从D6里输出,led就能发光了再放arduino代码:1.int n = 5;2.int inNow=0;3.int now = 0;4.void setup(){5.Serial.begin(9600);6.7.}8.void loop(){9.int n=analogRead(A0);10.if(n!=inNow && n !=0){11.if(n>1020){12.n = 1020;13.}14.analogWrite(6,n/4);15.inNow = n;16.Serial.println(inNow);17.delay(10);18.}19.}复制代码Serial.begin(9600)就是先设置串口的波特率Serial.println()就是向串口发送个字符串analogRead(A0)就是从A0里读取电平数据,这个0-5v区间,大概是1020(感觉应该是1024,具体我没查)也就是电位器拧到头,是1020,拧到另一头是0analogWrite(6,n/5)就是向D6口输出个电压值,来点亮led另外,亮度好像超过255就不好了(具体也不清楚),所以就把数字再除以4,led灯亮度范围值就是0-255了其他代码呢,就是说,一旦有变化,才给计算机发送最新数字,不然一直发也浪费。

基于单片机的火柴人设计

基于单片机的火柴人设计

基于单片机的火柴人设计设计者:吉泽欢摘要:火柴人本来是由火柴搭建起来的小人,具有简化性,后来随着电子计算机技术的发展,逐渐出现了火柴人小游戏,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)功能:画点。

基于单片机的火焰、烟雾的显示及报警装置的设计

基于单片机的火焰、烟雾的显示及报警装置的设计

基于单片机的火焰、烟雾的显示及报警装置的设计1.引言随着现在家庭中家用电器的使用量逐渐增加,用电量也随之增加。

而用电量的大幅增加也会增高火灾发生的频率。

如果在一般家庭中发生火灾,就会很大程度上出现扑救不及时的情况。

另外一种情形是:当晚上睡觉或者白天外出时候,出于防盗的考虑,一般都关闭门窗,如果发生煤气泄露,而没采取相应的措施,后果是非常危险的。

在化工厂、煤矿井中,如果发生可燃气体泄露又没及时发现,很可能导致火灾的发生。

那么如何防范火灾的发生、有毒气体的侵害以及发生火灾之后能够报警并开启自动灭火装置,就是一个非常意义的课题。

本系统设计了以AT89S52单片机为核心,不断采集当前环境中火焰的强度、可燃性气体的浓度,并在数码管上显示出来,一旦火焰强度或可燃性气体的浓度超过设定的阀值就启动报警装置。

本系统可用于家庭、工厂的火灾报警,也可用于家庭和工厂的气体泄漏监测装置,适宜于液化气、丁烷、丙烷、甲烷、酒精、烟雾等的探测。

2.系统整体架构系统的整体构架如图1所示。

本系统采用单片机AT89S52为控制器,把火焰传感器、烟雾传感器的模拟电压经过AD转换后,送到单片机处理变换后,再送到数码管进行显示,这时在数码管分别显示的是火焰强度和烟雾浓度,当火焰强度或者烟雾浓度超过设定的阀值时,单片机指挥蜂鸣器响起来,继电器动作;当强度或浓度下降后,蜂鸣器停止响,继电器失电。

图1 系统整体架构图2 主电路3.硬件设计3.1 主电路模块主电路如图2所示。

采用AT89S52为cpu,采用RC复位电路,可上电复位及按键复位;P2.0~P2.7接数码管的8个段选,而P1.0~P1.2接译码器74LS138的三个输入端;P0.0作为控制蜂鸣器的引脚;P3.5接ADC0832的使能端/CS,P3.4接时钟端CLK,P3.3接数据端DO和DI。

3.2 火焰传感器、烟雾传感器和继电器模块图3 火焰传感器、烟雾传感器和继电器图4 蜂鸣器电路3.2.1 火焰传感器火焰传感器采用一个远红外火焰传感器感应接受管,可用来探测火源或其它一些波长在760纳米~1100纳米范围内的热源,探测角度达60度,其中红外光波长在940纳米附近时,其灵敏度达到最大。

基于单片机的灭火机器人设计

基于单片机的灭火机器人设计

基于单片机的灭火机器人设计摘要该文设计是一款基于单片机的灭火机器人模型的设计。

该设计以STC89C52单片机为控制核心的系统,通过自制火焰传感器用于火焰探测,红外光电传感器用于探测障碍物,L298驱动电机前后转动实现机器人平面运动。

该系统火焰探测采用自制的六路火焰传感器,其中是由五路远红外接收二极管和一路近红外接收二极管构成,它与目前其他火焰探测器相比,具有火焰探测精确度相对高、结构较为简单,性能可靠等优点。

避障则用E18-D50NK型号的光电传感器,该传感器具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点。

此设计以数字集成电路技术为基础并以单片机技术为核心,依据传感器的信号传入单片机实现各种指令处理。

实验结果表明,该设计具有成本低、可靠性高、灭火速度快、安装调试方便等特征,具有较好的应用前景。

关键词:STC89C52单片机光敏晶体管红外光电开关 L298N E18-D50NKFire fighting robot hardware design based on single chip microcomputerAbstractIn this paper, the design model for the design of a microcontroller-based fire-fighting robot. System to STC89C52RC microcontroller for control core, innovation homemade flame sensor is used to measure the source of fire, use infrared receiverdiode to detect the roadblock.The system use six innovation homemade flame sensors which consist of five remote Infrared receiverdiodes and one close Infrared receiverdiode to measure the source of fire,which compare other measurements with high precision, simple structure, reliable performance characteristics. Obstacle avoidance uses the E18 - D50NK models of photoelectric sensor, the sensor has a long detection distance, small interference by visible light, the price is cheap, easy to assemble and convenient use, etc. This design is based on digital integrated circuit technology and single-chip microcomputer technology as the core, according to the sensor signal to microcontroller processing all kinds of instructions.The experimental results show that the design of low cost, high reliability, fire fast, easy installation features, very suitable for large fire risk coefficient, has a good application prospect.Keywords:STC89C52 microcontroller; photosensitive transistor; infrared photoelectric switch; L298N;E18-D50NK目录摘要 (I)Abstract (II)第一章引言 (1)1.1 课题的开发背景 (1)1.2 课题的研究现状 (1)1.3课题研究的意义................................. 错误!未定义书签。

基于单片机控制的交互式3D拼图设计

基于单片机控制的交互式3D拼图设计

基于单片机控制的交互式3D拼图设计随着科技的进步,现代人生活中的电子产品越来越普及,人们对于电子产品的需求也越来越高。

随着人们对于互动性和趣味性的需求增加,交互式的产品在市场上受到了越来越多的关注。

本文将基于单片机控制的交互式3D拼图设计进行介绍,通过该设计可以让用户在拼图的过程中获得更多的乐趣和挑战。

1. 研究背景3D拼图是一种趣味性十足的拼图游戏,其拼图的难度相对于传统的二维拼图要高很多。

传统的3D拼图通常是通过手工制作完成的,而且难度大,耗时长。

通过引入单片机控制,可以实现自动拼图的操作,并且可以设计游戏模式,增加游戏的趣味性。

将基于单片机控制的交互式3D拼图设计成为了一个有趣的研究课题。

2. 设计方案单片机控制的交互式3D拼图设计可以分为硬件设计和软件设计两个方面。

硬件设计主要包括:机械结构设计、电路设计、传感器选型等。

而软件设计主要包括:单片机程序设计、用户界面设计、游戏算法设计等。

硬件设计是整个系统的基础,包括了机械结构和电路设计两个方面。

在机械结构设计上,需要考虑到拼图的结构和移动方式。

可以利用3D打印技术制作拼图的零件,通过齿轮、链条等方式实现拼图的移动。

需要保证拼图的结构稳固,同时保证拼图的可移动性。

在电路设计上,需要考虑到单片机的选型和传感器的选择。

单片机需要具备较强的计算和控制能力,同时需要有足够的接口用来连接传感器和执行器。

传感器选型需要根据实际需求选择合适的传感器,例如光电传感器、加速度传感器等,用来检测拼图的状态和位置。

软件设计主要包括了单片机程序设计和用户界面设计。

单片机程序设计需要根据拼图的结构和传感器的信号来编写逻辑控制程序。

程序需要能够准确地控制拼图的移动,同时需要能够实现游戏模式的设计,包括时间计时、提示功能等。

用户界面设计需要考虑到用户操作的便利性和游戏性。

可以设计一个LCD显示屏来显示游戏进度和信息,同时设计按键或者触摸屏来实现用户的交互操作。

用户界面设计需要考虑到美观性和实用性,让用户可以更加方便地进行游戏操作。

基于PIC单片机控制的智能玩具机器人_方建军

基于PIC单片机控制的智能玩具机器人_方建军

·37·2003年第1期基于PIC 单片机控制的智能玩具机器人◆方建军陈海峰周峰许进忠北方工业大学机电工程学院*本项目得到北京市石景山区科委的经费资助[摘要]本文介绍了智能玩具机器人控制系统的硬件电路以及软件设计。

控制系统的硬件电路部分主要包括控制器、传感器和电机驱动模块,控制器和传感器分别采用8位PIC 系列单片机PIC16F877和二值型红外传感器。

智能玩具机器人的驱动则是采用直流电机。

软件主要是基于规则的避碰行走算法以及灭火算法。

[关键词]智能玩具机器人,PIC16F877,红外传感器,避碰算法[Abstract ]Circuit desi g n and p ro g ram of intelli g ent to y robot were introduced in this p a p er .Hardware p art of control s y st em includes 8-bit PIC microcontroller ,infrared sensors and DC driven motors .Obstacle -free algorithm was written based on rules .[Key word ]Intelligent Toy Robot ,PIC16F877,Infrared Sensor ,Obstacle -free algorithm引言近年来机器人足球比赛和机器人灭火比赛在世界各国范围内得到广泛的开展,引起了很大的社会轰动效应。

寓教于乐的机器人比赛,拉近了社会公众和科学的距离,极大地激发了青年学生的学习兴趣。

国际上机器人足球比赛分为RoboCup (Robot World Cu p )和FI RA (Fede ra tionofInte rnationalRobot _Soccer Associa _tio n )两种,国内也有类似的足球比赛。

火柴人大战小游戏编程实现

火柴人大战小游戏编程实现

火柴人大战小游戏编程实现火柴人大战是一款简单而有趣的小游戏,其编程实现可以利用现有的编程语言和开发工具完成。

本文将介绍如何使用Python语言和Pygame库编写火柴人大战小游戏并实现其基本功能。

引言火柴人大战是一款受欢迎的小游戏,玩家将控制火柴人角色进行战斗,并击败其他敌方火柴人。

为了实现这款游戏,我们将使用Python编程语言和Pygame库。

下面将列出游戏的基本要求和实现步骤。

基本功能需求1. 游戏界面显示:游戏需要显示一个游戏窗口,窗口内包含游戏地图、火柴人角色和其他游戏元素。

2. 火柴人角色:玩家需要控制火柴人进行移动和攻击。

火柴人可以向上、向下、向左、向右移动,并可以使用武器攻击敌人。

3. 游戏地图:游戏地图应当具备一定的障碍物、道具和敌人。

玩家需要在地图中寻找敌人并与之进行战斗。

4. 敌人AI:敌人应当具有一定的智能,可以自动寻找玩家并进行攻击。

敌人的行动应当受到一定的限制,例如只能在一定范围内移动等。

5. 游戏结束:游戏应当设定胜利和失败的条件,并在达成条件后给出相应的游戏结果。

实现步骤1. 搭建开发环境:安装Python编程语言和Pygame库,并创建一个新的Python项目。

2. 初始化游戏窗口:创建一个Pygame窗口对象,并设置窗口的尺寸和标题。

3. 加载游戏资源:加载游戏所需的素材资源,例如火柴人角色的图片、地图的图片等。

确保素材资源的路径正确。

4. 绘制游戏界面:使用Pygame提供的绘制方法,在游戏窗口中绘制游戏地图、火柴人和其他元素。

5. 处理玩家输入:使用事件监听机制,监听玩家的键盘输入,并根据输入控制火柴人的移动和攻击。

6. 实现火柴人移动:根据玩家的输入,更新火柴人的位置,并控制移动范围在游戏地图内。

7. 实现敌人AI:编写代码实现敌人的自动行动,使其能够寻找玩家并移动、攻击。

8. 判断游戏结果:编写代码判断玩家胜利或失败的条件,当条件满足时,结束游戏并显示相应的结果。

flash制作简单火柴人走路

flash制作简单火柴人走路

flash制作简单火柴人走路火柴人走路是一种经典的动画效果,使用Flash制作一个简单的火柴人走路动画是非常有趣和具有学习意义的。

下面我将为你提供一个超过1200字的步骤指南,帮助你完成这个任务。

第一步:准备工作第二步:创建新动画打开Adobe Flash软件,点击“文件”菜单,选择“新建”创建一个新的Flash文件。

在弹出的对话框中,选择“动画”并点击“确定”。

第三步:准备画布在创建的新动画文件中,你将看到一个空白的画布。

我们需要调整画布的大小,以适应我们的动画。

点击“窗口”菜单,选择“属性”打开属性窗口。

在属性窗口中,选择“尺寸”选项卡,并将宽度设置为500像素,高度设置为300像素。

第四步:绘制火柴人在画布上绘制一个简单的火柴人。

点击“画笔”工具,在工具栏上选择合适的画笔尺寸,并使用黑色颜色绘制一个垂直的直线,作为火柴人的身体。

接下来,使用同样的画笔绘制一个水平的直线,作为火柴人的胳膊。

最后,绘制两条斜线,作为火柴人的腿。

第五步:制作关键帧在时间轴上,选择第1帧并右键单击,选择“插入关键帧”。

然后,再次右键单击选中的帧,选择“转换为动画”。

在第1帧和第2帧之间插入两个关键帧,这将是你的第一个动作。

第六步:设置动画属性在时间轴上选择第1帧,并在属性窗口中选择“动画”选项卡。

设置动画的循环次数为无限循环,并设置帧速率为24帧/秒。

这样,每个动画将在0.04秒内播放完毕。

第七步:动画帧的绘制在第1帧的位置,点击鼠标右键并选择“画笔”工具。

使用适当的画笔尺寸和颜色,在画布上绘制火柴人第一步的动作。

例如,你可以将火柴人的左腿向前抬起,右腿向后伸直,左臂向后伸直,右臂向前弯曲。

这将是火柴人行走的第一步动作。

第八步:动画帧的复制在第1帧的位置,点击鼠标右键并选择“复制帧”。

然后,右键点击选中的帧,在弹出的菜单中选择“粘贴帧”。

这样,你就复制了第1帧的动作到第2帧。

现在,你需要在第2帧的位置上调整火柴人的动作,使其看起来像是迈出了一步。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于单片机的火柴人设计设计者:吉泽欢摘要:火柴人本来是由火柴搭建起来的小人,具有简化性,后来随着电子计算机技术的发展,逐渐出现了火柴人小游戏,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)功能:画点。

相关文档
最新文档