51单片机流水灯
- 格式:docx
- 大小:124.77 KB
- 文档页数:7
《单片机原理及应用》基于51单片机实验箱的流水灯设计一、实验目的和要求1.掌握单片机基本资源使用。
2.掌握单片机电路原理图。
3.掌握单片机C语言软件开发以及试验箱使用。
二、实验内容和原理实验内容:1.绘制程序流程图并编写C语言程序2.在实验箱中进行测试,最后提交实验报告三、主要仪器设备Keil4软件、C51单片机实验箱。
四、操作方法与实验步骤4.1 题目要求使用单片机实验箱实现流水灯功能。
4.2 系统设计思路主程序中实现流水灯功能,时间单位采用500ms信号,作为实现流水灯的发光二极管和单片机的P1相连。
4.2 C程序编制(包含详细的文字和程序流程图)#include<intrins.h>#include<reg52.h>#define uchar unsiged char#define uint unsigned intvoid mDelay(uint Delay){int i;for(;Delay>0;Delay--)for(i=0;i<110;i++);}void main(){unsigned char a,i;While(1){a=0x01;for(i=0;i<8;i++){a=-crol-(a,1)P2=amDelay(500);}}4.3 测试分析(包含文字和图像叙述)在KeilC51软件软件中编写好程序并调试好后,连接单片机实验箱,实验结果如下:实验箱上连接的八个灯,每个灯间隔500ms的时间一个接一个的循环闪烁。
五、讨论和心得(不少于100字)通过此次实验,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,试验过程还是比较繁琐,但是还是完成了这次试验,使我对于理解单片机的基本原理更加深刻,将所学知识运用到实践中,在实践中发现问题,强化理论知识。
课程名称:单片机原理及应用实验项目名称(二):定时计数器的应用—按钮控制LED灯四、实验目的和要求1.掌握单片机基本资源使用。
1.第一个发光管以间隔200ms闪烁。
2.8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms。
3.8个发光管来回流动,第个管亮100ms。
4。
用8个发光管演示出8位二进制数累加过程。
5。
8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms间隔全部闪烁5次。
重复此过程。
6.间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。
7。
间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。
1#include<reg52。
h〉#define uint unsigned intsbit led1=P1^0;void delay();void main(){while(1){led1=0;delay();led1=1;delay();}}void delay(){uint x,y;for(x=200;x>0;x—-)for(y=100;y〉0;y-—);}2#include<reg52。
h>#include〈intrins。
h〉#define uint unsigned intuchar a;void delay();void main(){a=0xfe;P1=a;while(1){a=_crol_(a,1);delay();P1=a;delay();}}void delay(){uint b;for(b=55000;b>0;b—-);}3#include<reg52。
h〉#include <intrins。
h>#define uint unsigned int #define uchar unsigned char void delay(){uint x,y;for(x=100;x〉0;x--)for(y=110;y>0;y—-);}void main(){uchar a,i;while(1){a=0xfe;for(i=0;i〈8;i++){P1=a;delay(100);a=_crol_(a,1);for(i=0;i〈8;i++){P1=a;delay(100);a=_cror_(a,1);}}}4#include<reg52.h>#include 〈intrins。
基于51单片机的流水灯利用51单片机P0口实现8个LED(发光二极管)的流水灯控制。
可以使用Proteus软件进行仿真调试。
1 硬件设计利用单片机的PO口控制8个LED,其电路如下图所示。
在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。
单击菜单命令“文件”→“新建设计”,选择DEFAULT模板,保存文件名为“LSD.DSN”。
在器件选择按钮中单击“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示都可以不画,它们都是默认的。
在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER和GROUND放置电源和地。
放置好元件后,布好线。
左键双击各元件,设置相应元件参数,完成电路图的设计。
2 软件设计流水灯又称为跑马灯,在函数中可以将P0口的八种不同状态做成一维数组,循环执行即可,如下所示。
当然也可以采用其它函授来实现,如左移一位<<1(或右移一位>>1),循环左移函授_crol_(或循环右移函授_cror_)等。
/****************************************************************** 流水灯*******************************************************************/ #include "reg51.h"const tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};void delayms(unsigned int x) //延时{unsigned int j;unsigned char k;for(j=0;j<x;j++){for(k=0;k<120;k++);}}void main(){unsigned char k;while(1){for(k=1;k<8;k++){P0=tab[k];delayms(500);}}}打开Keil程序(本人使用的是Keil8.05中文版),执行菜单命令“工程”→“新建工程”创建“流水灯”项目,并选择单片机型号为AT89C51。
电路原理图:原件清单:1、51单片机x1、40Pin 座x12、LED x32(建议用5mm 七彩的)3、电阻470Ωx334、晶振12MHz x15、10uf 电解电容x1、谐振瓷片电容30pf x26·其他的可以看自己的爱好去加7、其实也可以不用那么多的电阻,用几个排阻就OK了。
~效果展示:作品程序:#include<>#define uchar unsigned char;uchar flag=200;///////////////////////////////////////////////////////////////////////uchar code Tab1[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF};//暗中左移向下uchar code Tab2[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};//暗中右移向上uchar code Tab3[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};//亮中左移向下uchar code Tab4[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00};//亮中右移向上uchar code Tab11[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0xff};//暗中左移向下uchar code Tab22[]={0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0xff};////////////////////////////////////////////////////////////////////uchar code Tab33[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};;uchar code Tab44[]={0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};uchar code Tab55[]={0x08,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff};uchar code Tab5[]={0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xff};uchar code Tab6[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xff}; uchar code Tab7[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; uchar code Tab8[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};////////////////////////////////////////////////////////////////void shansuo();void xl();///////////////////////////////////////////////////////////////}void delay(void){unsigned char m,n;for(m=0;m<flag;m++)for(n=0;n<250;n++);}///////////////////////////////////void hy1(void) //点亮状态逆时针旋转90度(一个一个灭){.unsigned char i;for(i=0;i<8;i++){P0=Tab11[i];P1=Tab22[i];P2=Tab11[i];P3=Tab22[i];delay();}for(i=0;i<8;i++){P0=Tab44[i];P1=Tab55[i];!P2=Tab44[i];P3=Tab55[i];delay();}}///////////////////////////////////////////void hy2(void) //暗中逆时针转360。
51单片机-流水灯
1.概述
在51单片机的P2口接上8个发光二极管,通过汇编语言使其产生流水灯的移动效果。
2.功能
八个灯产生左移(右移)效果。
3.器件
51单片机(1个)、LED灯(9个)、CRYSTAL晶振(1个)、电容(3个)、电阻(10个)、开关(1个)、导线若干。
4.原理图及实物图
焊接图(背面)
图中参数:
12345678220R R R R R R R R ========Ω
9220R =Ω
1010R K =Ω
1230C C pF ==
310C F
μ=
5.主程序
ORG 0 ;程序从0地址开始START:
MOV A,#0FEH ;让ACC的内容为11111110 LOOP: MOV P2,A ;让P2口输出ACC的内容
RR A ;让ACC的内容右移
CALL DELAY ;调用延时子程序
LJMP LOOP ;跳到LOOP处执行
;0.1秒延时子程序(12MHz晶振)DELAY: MOV R7,#200 ;R7寄存器加载200次数
D1: MOV R6,#250 ;R6寄存器加载250次数
DJNZ R6,$ ;本行执行R6次
DJNZ R7,D1 ;D1循环执行R7次
RET ;返回主程序
END ;结束程序。
51单片机最小系统流水灯按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。
AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz 工作频率,使用AT89C51单片机时无须外扩存储器。
因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。
其具体硬件组成如图1所示。
图1 流水灯硬件原理图从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。
因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。
在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。
光控电子开关,它的“开”和“关”是靠可控硅的导通和阻断来实现的,而可控硅的导通和阻断又是受自然光的亮度(或人为亮度)的大小所控制的。
该装置适合作为街道、宿舍走廊或其它公共场所照明灯,起到日熄夜亮的控制作用,以节约用电。
工作原理电路如上图所示,220V交流电通过灯泡H及整流全桥后,变成直流脉动电压,作为正向偏压,加在可控硅VS及R支路上。
白天,亮度大于一定程度时,光敏二极管D呈现底阻状态≤1KΩ,使三极管V截止,其发射极无电流输出,单向可控硅VS因无触发电流而阻断。
此时流过灯泡H的电流≤2.2mA,灯泡H不能发光。
单片机流水灯汇编程序设计开发板上的8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。
程序A:;用最直接的方式实现流水灯ORG 0000HSTART:MOV P1,#B ;最下面的LED点亮LCALL DELAY;延时1秒MOV P1,#B ;最下面第二个的LED点亮LCALL DELAY;延时1秒MOV P1,#B ;最下面第三个的LED点亮(以下省略)LCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#B ;完成第一次循环点亮,延时约0.25秒AJMP START ;反复循环;延时子程序,12M晶振延时约250毫秒DELAY:MOV R4,#2L3: MOV R2 ,#250L1: MOV R3 ,#250L2: DJNZ R3 ,L2DJNZ R2 ,L1DJNZ R4 ,L3RETEND程序B:;用移位方式实现流水灯ajmp main ;跳转到主程序org 0030h ;主程序起始地址main:mov a,#0feh ;给A赋值成loop:mov p1,a ;将A送到P1口,发光二极管低电平点亮lcall delay ;调用延时子程序rl a ;累加器A循环左移一位ajmp loop ;重新送P1显示delay:mov r3,#20 ;最外层循环二十次d1:mov r4,#80 ;次外层循环八十次d2:mov r5,#250 ;最内层循环250次djnz r5,$ ;总共延时2us*250*80*20=0.8Sdjnz r4,d2djnz r3,d1retend51单片机经典流水灯程序,在51单片机的P2口接上8个发光二极管,产生流水灯的移动效果。
ORG 0;程序从0地址开始START: MOV A,#0FEH ;让ACC的内容为LOOP: MOV P2,A ;让P2口输出ACC的内容RR A;让ACC的内容左移CALL DELAY ;调用延时子程序LJMP LOOP ;跳到LOOP处执行;0.1秒延时子程序(12MHz晶振)===================DELAY: MOV R7,#200 ;R7寄存器加载200次数D1: MOV R6,#250 ;R6寄存器加载250次数DJNZ R6,$ ;本行执RET;返回主程序END;结束程序开关控制的单片机流水灯汇编在单片机控制下,用一个拨动开关K1,控制8个发光二极管L1-L8,发光的时间间隔为0.5秒。
For personal use only in study and research; not for commercial use51单片机常见的五种流水灯编写方式通过改变赋值实现流水灯void main(){while(1){P2=0xfe;delay1ms(500);P2=0xfd;delay1ms(500);P2=0xfb;delay1ms(500);P2=0xf7;delay1ms(500);P2=0xef;delay1ms(500);P2=0xdf;delay1ms(500);P2=0xbf;delay1ms(500);P2=0x7f;delay1ms(500);}}通过公式运算实现流水灯void main(){while(1){uint a,b=1;P2=0xfe;delayms(500);for(a=0;a<7;a++){P2-=b; // P2=P2-bdelayms(500);b=b*2; //都化为同一类型进制运算}}}通过操作符<<与“|”实现流水灯(通过移位实现流水灯)void main(){uchar a,i;while(1){a=0xfe; //点亮第一位LED灯for(i=0;i<8;i++){P2=a;a=a<<1; //左移一位a=a|0x01; //左移一位后与0x01相或,保证左移后最低位为1 delay_ms(500);}}}通过库函数_crol_(字符左移)实现流水灯void main(){uint a;a=0xfe;while(1){P2=a;a=_crol_(a,1);delay_ms(500);}}采用数组实现流水灯uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};void main(void){uchar i;while (1){for(i=0;i<8;i++) //循环点亮8只LED灯{P2=table[i];delay_ms(500); //延时500毫秒}}}For personal use only in study and research; not for commercial use.Nur für den persönlichen für Studien, Forschung, zu kommerziellen Zwecken verwendet werden.Pour l 'étude et la recherche uniquement à des fins personnelles; pas à des fins commerciales.толькодля людей, которые используются для обучения, исследований и не должны использоваться в коммерческих целях.以下无正文For personal use only in study and research; not for commercial use.Nur für den persönlichen für Studien, Forschung, zu kommerziellen Zwecken verwendet werden.Pour l 'étude et la recherche uniquement à des fins personnelles; pas à des fins commerciales.толькодля людей, которые используются для обучения, исследований и не должны использоваться в коммерческих целях.以下无正文。
//51单片机控制8个LED灯,左右循环移动,当外部中断0引脚的按键,第一次按下时,停在当前位置;第二次按下时,继续向下执行//***************************************************************************** *****************************************//注释:当主函数中在执行左右流水点亮LED灯的时候,按键按下(这是第一次按下,即奇数次),CPU暂时//中断当前点亮灯的工作,转去处理中断程序(c=1),处理完后,再返回原来中断的地方继续原来的工作,//因为这时候C为1,while(c);为真,为死循环状态,即是LED亮的状态停在当前位置;当按键按下(这是第二次按下,即偶数次)//CPU中断当前状态,转去处理中断程序(c=0),处理完后,再返回原来中断的地方继续原来的工作,//这时候C为0,while(c);为假,则程序继续向下执行。
//***************************************************************************** ******************************************#include<reg51.h>#include<intrins.h>//控制左右移的头文件void delay(int);//声明延时函数unsigned char i=0,a=0,b=0,c=0;//a为判断按键按下时奇数次还是偶数次void main(){P2=0xfe;IT0=0;// 低电平有效EX0=1;//开外部中断0EA=1; //开总中断while(1){for(i=0;i<7;i++)//左循环{b=1;while(c);//C为0时,顺序向下执行,为1时停在当前状态,P2=_crol_(P2,1);delay(500);}for(i=0;i<7;i++)//右循环{b=1;while(c);//C为0时,顺序向下执行,为1时停在当前状态,P2=_cror_(P2,1);delay(500);}}while(1);//等待中断}void int0_int(void) interrupt 0 //中断服务函数{delay(40);//延时一段时间,消除抖动if(b==1){b=0;a+=1;//按键为奇数次时,停在当前的状态;偶数次时,接着原来的状态继续往下执行if(a%2)c=1;elsec=0;}}void delay(int n)//延时函数{unsigned int i,j;for(i=0;i<n;i++)for(j=0;j<50;j++);}。
基于51单片机的心形流水灯视频地址/v_show/id_XNDgzNDI4NjQ4.html新手焊接、技术有限。
振荡电路藏于单片机下。
30个led灯并联未加电阻。
供电采用移动电源内置的锂电池从生日蜡烛上拆下来的电路。
共用一个开关。
附源程序:C语言#include<reg52.h>unsigned int x,y;void delayms(unsigned int z) //延时程序{unsigned int i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}/*----------------------------------------------------------*/ void Offall() //开启所有灯{P0=0x00;P1=0x00;P2=0x00;P3=0x00;}/*----------------------------------------------------------*/void Onall()//关闭所有灯{P0=0xff;P1=0xff;P2=0xff;P3=0xff;}/*----------------------------------------------------------*/ void ls()//等时流水灯{P0=0x00;P0=0x01;delayms(50);P0=0x02;delayms(50);P0=0x04;delayms(50) ;P0=0x08;delayms(50) ;P0=0x10;delayms(50) ;P0=0x20;P0=0x40; delayms(50) ;P0=0x80; delayms(50);P0=0x00;P2=0x00;P2=0x80; delayms(50) ; P2=0x40; delayms(50);P2=0x20; delayms(50) ; P2=0x10; delayms(50) ; P2=0x08; delayms(50) ; P2=0x04; delayms(50);P2=0x02; delayms(50) ;P2=0x01;P2=0x00;P3=0x00;P3=0x80; delayms(50) ; P3=0x40; delayms(50); P3=0x20; delayms(50) ; P3=0x10; delayms(50) ; P3=0x08; delayms(50) ; P3=0x04; delayms(50);P3=0x02; delayms(50) ;P3=0x01; delayms(50);P3=0x00;P1=0x00;P1=0x80;delayms(50) ;P1=0x40;delayms(50);P1=0x20;delayms(50) ;P1=0x10;delayms(50) ;P1=0x08;delayms(50) ;P1=0x04;delayms(50);P1=0x02;delayms(50) ;P1=0x01;delayms(50);P1=0x00;P0=0x01;delayms(50);P0=0x00;}/*----------------------------------------------------------*/ void fxls()//反向等时流水灯{P0=0x00;P0=0x01;delayms(50);P0=0x00;P1=0x00;P1=0x01;delayms(50);P1=0x02;delayms(50);P1=0x04;delayms(50);P1=0x08;delayms(50);P1=0x10;delayms(50);P1=0x20;delayms(50);P1=0x40;delayms(50);P1=0x80;delayms(50);P1=0x00; P3=0x00;P3=0x01;delayms(50);P3=0x02;delayms(50);P3=0x04;delayms(50);P3=0x08;delayms(50);P3=0x10;delayms(50);P3=0x20;delayms(50);P3=0x40;delayms(50);P3=0x80;delayms(50);P3=0x00;P2=0x00;P2=0x01;delayms(50);P2=0x02;delayms(50);P2=0x04;delayms(50);P2=0x08;delayms(50);P2=0x10;delayms(50);P2=0x20;delayms(50);P2=0x40;delayms(50);P2=0x80;delayms(50);P2=0x00;P0=0x00;P0=0x80;delayms(50);P0=0x40;delayms(50);P0=0x20;delayms(50);P0=0x10;delayms(50);P0=0x08;delayms(50);P0=0x04;delayms(50);P0=0x02;delayms(50);P0=0x01;delayms(50);P0=0x00;}/*----------------------------------------------------------*/void bsb()//半双边流水由上至下{Offall();P0=0x01;delayms(50);P0=0x02;P1=0x01;delayms(50);P0=0x04;P1=0x02;delayms(50);P0=0x08;P1=0x04;delayms(50);P0=0x10;P1=0x08;delayms(50);P0=0x20;P1=0x10;delayms(50);P0=0x40;P1=0x20;delayms(50);P0=0x80;P1=0x40;delayms(50);P0=0x00; P2=0x80;P1=0x80;delayms(50);P1=0x00; P2=0x40;P3=0x01;delayms(50);P2=0x20;P3=0x02;delayms(50);P2=0x10;P3=0x04;delayms(50);P2=0x08;P3=0x08;delayms(50);P2=0x04;P3=0x10;delayms(50);P2=0x02;P3=0x20;delayms(50);P2=0x01;P3=0x40;delayms(50);Offall(); P3=0x80;delayms(50);Offall();}/*----------------------------------------------------------*/ void fbsb() //半双边流水由下至上{Offall();P3=0x80;delayms(50);P2=0x01;P3=0x40;delayms(50);P2=0x02;P3=0x20;delayms(50);P2=0x04;P3=0x10;delayms(50);P2=0x08;P3=0x08;delayms(50);P2=0x10;P3=0x04;delayms(50);P2=0x20;P3=0x02;delayms(50);P2=0x40;P3=0x01;delayms(50);Offall();P2=0x80;P1=80;delayms(50);Offall();P0=0x80;P1=0x40;delayms(50);P0=0x40;P1=0x20;delayms(50);P0=0x20;P1=0x10;delayms(50);P0=0x10;P1=0x08;delayms(50);P0=0x08;P1=0x04;delayms(50);P0=0x04;P1=0x02;delayms(50);P0=0x02;P1=0x01;delayms(50);Offall();P0=0x01;Offall();}void zxsz() //正向生长{Offall();P0=0x01;delayms(50);P0=0x03;delayms(50);P0=0x07;delayms(50);P0=0x0f;delayms(50);P0=0x1f;delayms(50);P0=0x3f;delayms(50);P0=0x7f;delayms(50);P0=0xff;delayms(50);P2=0x80;delayms(50);P2=0xc0;delayms(50);P2=0xe0;delayms(50);P2=0xf0;delayms(50);P2=0xf8;delayms(50);P2=0xfc;delayms(50);P2=0xfe;delayms(50);P2=0xff;delayms(50);P3=0x80;delayms(50);P3=0xc0;delayms(50);P3=0xe0;delayms(50);P3=0xf8;delayms(50);P3=0xfc;delayms(50);P3=0xfe;delayms(50);P3=0xff;delayms(50);P1=0x80;delayms(50);P1=0xc0;delayms(50);P1=0xe0;delayms(50);P1=0xf0;delayms(50);P1=0xf8;delayms(50);P1=0xfc;delayms(50);P1=0xfe;delayms(50);P1=0xff;delayms(50);}/*----------------------------------------------------------*/void fxsz() //反向生长{Offall();P0=0x01;delayms(50);P1=0x01;delayms(50);P1=0x07;delayms(50); P1=0x0f;delayms(50); P1=0x1f;delayms(50); P1=0x3f;delayms(50); P1=0x7f;delayms(50); P1=0xff;delayms(50); P3=0x01;delayms(50); P3=0x03;delayms(50); P3=0x07;delayms(50); P3=0x0f;delayms(50); P3=0x1f;delayms(50); P3=0x3f;delayms(50); P3=0x7f;delayms(50); P3=0xff;delayms(50); P2=0x01;delayms(50); P2=0x03;delayms(50); P2=0x07;delayms(50); P2=0x0f;delayms(50); P2=0x1f;delayms(50); P2=0x3f;delayms(50); P2=0x7f;delayms(50);P0=0x81;delayms(50);P0=0xc1;delayms(50);P0=0xe1;delayms(50);P0=0xf1;delayms(50);P0=0xf9;delayms(50);P0=0xfd;delayms(50);P0=0xff;delayms(50);}/*----------------------------------------------------------*/ void zxsw() //正向死亡{Onall();P0=0xfd;delayms(50);P0=0xf9;delayms(50);P0=0xf1;delayms(50);P0=0xf0;delayms(50);P0=0xe1;delayms(50);P0=0xc1;delayms(50);P0=0x01;delayms(50); P2=0x7f;delayms(50); P2=0x3f;delayms(50); P2=0x1f;delayms(50); P2=0x0f;delayms(50); P2=0x07;delayms(50); P2=0x03;delayms(50); P2=0x01;delayms(50); P2=0x00;delayms(50); P3=0x7f;delayms(50); P3=0x3f;delayms(50); P3=0x1f;delayms(50); P3=0x0f;delayms(50); P3=0x07;delayms(50); P3=0x03;delayms(50); P3=0x01;delayms(50); P3=0x00;delayms(50); P1=0x7f;delayms(50); P1=0x3f;delayms(50); P1=0x1f;delayms(50); P1=0x0f;delayms(50);P1=0x03;delayms(50);P1=0x01;delayms(50);P1=0x00;delayms(50);P0=0x00;delayms(50);}/*----------------------------------------------------------*/void fxsw() //反向死亡{Onall();P1=0xfe;delayms(50);P1=0xfc;delayms(50);P1=0xf8;delayms(50);P1=0xf0;delayms(50);P1=0xe0;delayms(50);P1=0xc0;delayms(50);P1=0x80;delayms(50);P3=0xfe;delayms(50); P3=0xfc;delayms(50); P3=0xf8;delayms(50); P3=0xf0;delayms(50); P3=0xe0;delayms(50); P3=0xc0;delayms(50); P3=0x80;delayms(50); P3=0x00;delayms(50); P2=0xfe;delayms(50); P2=0xfc;delayms(50); P2=0xf8;delayms(50); P2=0xf0;delayms(50); P2=0xe0;delayms(50); P2=0xc0;delayms(50); P2=0x80;delayms(50); P2=0x00;delayms(50); P0=0x7f;delayms(50); P0=0x3f;delayms(50); P0=0x1f;delayms(50); P0=0x0f;delayms(50); P0=0x07;delayms(50);P0=0x01;delayms(50);P0=0x00;delayms(50);}/*----------------------------------------------------------*/void bbs()//半边交替闪{Offall();P0=0x00;P2=0xff;P3=0x80;delayms(200);Offall(); P0=0xfe;P1=0xff;P3=0xff;delayms(200);}/*----------------------------------------------------------*/void sxs()//上下交替闪{Offall();P1=0xff;P0=0x00;P2=0x80;delayms(200);Offall();P2=0x7f;P3=0xff;delayms(200);}void cx() //出现一点点{Offall();delayms(1000);P0=0x00;P2=0x00;P1=0x40;P3=0x00;delayms(1000); P0=0x20;P2=0x40;P1=0x40;P3=0x00;delayms(1000); P0=0x24;P2=0x42;P1=0x40;P3=0x04;delayms(1000); P0=0xa6;P2=0x5a;P1=0x52;P3=0x65;delayms(1000); P0=0xee;P2=0xdf;P1=0xdb;P3=0xef; delayms(1000); P0=0xff;P2=0xff;P1=0xff;P3=0xff;delayms(1000); }void xs() //一点点消失{Onall();delayms(1000);P0=0xee;P2=0xdf;P1=0xdb;P3=0xef; delayms(1000);P0=0xa6;P2=0x5a;P1=0x52;P3=0x65;delayms(1000);P0=0x24;P2=0x42;P1=0x40;P3=0x04;delayms(1000);P0=0x20;P2=0x40;P1=0x40;P3=0x00;delayms(1000);P0=0x00;P2=0x00;P1=0x40;P3=0x00;delayms(1000);Offal l();delayms(1000);}void main(){Onall();delayms(1000);Offall();delayms(1000);cx();//一点点出现xs();zxsw();/* 正向死亡*/ls(); /* 正向流水*/zxsz();/* 正向生长*/zxsw(); /* 正向死亡*/fxsz();/* 反向生长*/fxsw(); /* 反向死亡*/fxls(); /* 反向流水*/bsb(); /* 半双边流水由上至下*/ fbsb();/* 半双边流水由下至上*/ sxs();bbs();}版权所有:山东科技大学信息与电气工程学院电气信息类2012级14班ssk。