sad,没有一个人解答 。。。。 |
很好,做得借鉴。 |
经过修改,最后发现 void prcrdata() 函数 没有被程序调用。。。请问前辈们,这个函数应该插入到哪里呢? |
虽然很长 但也看完了 |
666562323 发表于 2017-5-12 10:59 您好。。这个和我的有关系么~如果我没猜错的话,前面看出来这是点亮数码管的程序吧~ |
之前想过用51做示波器,看了我又想起来了。 |
#include<reg52.h> #include<intrins.h>//循环函数的头文件 #define uint unsigned int #define uchar unsigned char uchar code table0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//从低位往高位移一个灯 uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//从高位往低位移一个灯 uchar code table2[]={0xfe,0xfa,0xf8,0xf0,0xe0,0xa0,0x80,0x00};//从低位到高位逐步全部点亮 uchar code table3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//从高位到低位逐步全部点亮 uchar code table4[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//从低位到高位逐步全部熄灭 uchar code table5[]={0x80,0xa0,0xe0,0xf0,0xf8,0xfa,0xfe,0xff};//从高位到低位逐步全部熄灭 uchar code table6[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//从低位到高位,灭一个灯移动 uchar code table7[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//从高位到低位,灭一个灯移动 uchar i; void delay(uint z) //延时函数 { uint x,y; for(x=z;x>0;x--) for(y=314;y>0;y--); } /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// void deng123()// { for(i=0;i<8;i++) { P2=table1[i]; P0=table1[i]; delay(25); } } /*********************************************** ************************************************/ void deng0()//所有灯亮一会儿 { P0=0x00;P1=0x00;P2=0x00;P3=0x00; delay(150); } ///////////////////////////////// void deng0_1()//所有灯灭一会儿 { P0=0xff;P1=0xff;P2=0xff;P3=0xff; delay(150); } ////////////////////////////////////// void deng1()//两列灯顺时针旋转2遍,然后逐渐降低 { uchar c; P1=0x00;P3=0x00; for(c=2;c>0;c--) { deng123(); } //////////////// P1=0x03; deng123(); ///////////////// P1=0x0f; deng123(); //////////////// P1=0x3f; deng123(); /////////////// P1=0xff; deng123(); //////////////////////// P3=0x03; deng123(); ////////////// P3=0x0f; deng123(); ////////////// P3=0x3f; deng123(); ///////////// P3=0xff; deng123(); P2=0xff;P0=0xff; } /////////////////////////////////////////////// void deng2()//四列灯顺时针旋转2遍 { uchar a; uchar b; b=0x77; P2=b; P0=b; P1=0x00;P3=0x00; for(a=4;a>0;a--) { for(i=0;i<8;i++) { b=_cror_(b,1);//循环左移 delay(25); P2=b; P0=b; } } P2=0xff;P0=0xff;P1=0xff;P3=0xff; } ////////////////////////////////////////////// void deng3()//单层,向上升 { P0=0x00; P2=0x00; for(i=0;i<8;i++) { P3=table1[i]; delay(25); } P3=0xff; /*----------------------*/ for(i=0;i<8;i++) { P1=table1[i]; delay(25); } P1=0xff; } ///////////////////////////////////////// void deng4()//单层,向下降 { P2=0x00;P0=0x00; for(i=0;i<8;i++) { P1=table0[i]; delay(25); } P1=0xff; /*----------------------*/ for(i=0;i<8;i++) { P3=table0[i]; delay(25); } P3=0xff;P1=0xff;P0=0xff;P2=0xff; } ///////////////////////////////////////// void deng5()//从上到下,逐层全部点亮】 { P0=0x00;P2=0x00; for(i=0;i<8;i++) { P1=table2[i]; delay(25); } for(i=0;i<8;i++) { P3=table2[i]; delay(25); } P0=0xff;P1=0xff;P2=0xff;P3=0xff; } //////////////////////////////////////// void deng6()//从上到下,逐层全部熄灭】 { P0=0x00;P2=0x00; P1=0x00;P3=0x00; for(i=0;i<8;i++) { P1=table4[i]; delay(25); } P1=0xff; for(i=0;i<8;i++) { P3=table4[i]; delay(25); } P3=0xff; P0=0xff;P2=0xff; } /////////////////////////////////// void deng7()//四组灯,交替两次 { for(i=2;i>0;i--) { P1=0x00;P2=0x00;//上左 delay(40); P1=0xff;P2=0xff; delay(40); ///////////// P3=0x00;P0=0x00;//下右 delay(40); P3=0xff;P0=0xff; delay(40); ///////////// P3=0x00;P2=0x00;//下左 delay(40); P3=0xff;P2=0xff; delay(40); ///////////// P1=0x00;P0=0x00;//上右 delay(40); P1=0xff;P0=0xff; delay(40); } } void deng8()//上半先逐步列点亮,然后再向下点点亮 { P0=0xff;P2=0xff;P3=0xff; P1=0x00; for(i=0;i<8;i++) { P0=table3[i]; P2=table3[i]; delay(25); } delay(70); P1=0x00;P2=0x00;P0=0x00; for(i=0;i<8;i++) { P3=table2[i]; delay(25); } } ////////////////////////////////////// void deng9()//从中间向上、下点亮,再熄灭 { P0=0x00;P2=0x00; for(i=0;i<8;i++) { P1=table3[i]; P3=table2[i]; delay(25); } for(i=0;i<8;i++) { P1=table4[i]; P3=table5[i]; delay(25); } } /////////////////////////////////////////// void deng10()//从中间向上、下熄灭 { P0=0x00;P2=0x00; for(i=0;i<8;i++) { P1=table5[i]; P3=table4[i]; delay(25); } P1=0xff;P3=0xff; } void deng11()//逆时针逐列点亮所有灯 { P1=0x00;P3=0x00; P0=0xff;P2=0xff; for(i=0;i<8;i++) { P0=table2[i]; delay(25); } for(i=0;i<8;i++) { P2=table2[i]; delay(25); } P0=0xff;P2=0xff;P3=0xff;P1=0xff; } /////////////////////////////////////////// void deng12()//闪烁 { uchar i; uchar b; b=0xaa; P2=b; P0=b; P1=b; P3=b; for(i=0;i<8;i++) { b=_cror_(b,1);//循环左移 delay(50); P2=b; P0=b; P1=b; P3=b; } P0=0xff;P1=0xff;P2=0xff;P3=0xff; } void deng13()//两层灯,分别从中间向上、下移动 { P2=0x00;P0=0x00; for(i=0;i<8;i++) { P1=table1[i]; P3=table0[i]; delay(25); } P2=0xff;P0=0xff;P1=0xff;P3=0xff; } void deng14_1()//点满一圈的小函数(限内部用) { P2=0xff;P0=0xff; for(i=0;i<8;i++) { P2=table2[i]; delay(15); } for(i=0;i<8;i++) { P0=table2[i]; delay(15); } P2=0xff;P0=0xff; } /////////////////////////// void deng14()//从下开始,点满一圈后,灭,再上升点亮第二圈 { P1=0xff; P3=0x7f;//1层 deng14_1();//点满一圈的小函数(限内部用) P3=0xbf;//2层 deng14_1();//点满一圈的小函数(限内部用) P3=0xdf;//3层 deng14_1();//点满一圈的小函数(限内部用) P3=0xef;//4层 deng14_1();//点满一圈的小函数(限内部用) P3=0xf7;//5层 deng14_1();//点满一圈的小函数(限内部用) P3=0xfb;//6层 deng14_1();//点满一圈的小函数(限内部用) P3=0xfd;//7层 deng14_1();//点满一圈的小函数(限内部用) P3=0xfe;//8层 deng14_1();//点满一圈的小函数(限内部用) ////////////////// P3=0xff; P1=0x7f;//1层 deng14_1();//点满一圈的小函数(限内部用) P1=0xbf;//2层 deng14_1();//点满一圈的小函数(限内部用) P1=0xdf;//3层 deng14_1();//点满一圈的小函数(限内部用) P1=0xef;//4层 deng14_1();//点满一圈的小函数(限内部用) P1=0xf7;//5层 deng14_1();//点满一圈的小函数(限内部用) P1=0xfb;//6层 deng14_1();//点满一圈的小函数(限内部用) P1=0xfd;//7层 deng14_1();//点满一圈的小函数(限内部用) P1=0xfe;//8层 deng14_1();//点满一圈的小函数(限内部用) P1=0xff; } /*==================================================== ===================主函数君=========================== ======================================================*/ void main() { while(1) { deng0_1();//所有灯灭一会儿 deng0_1();//所有灯灭一会儿 deng14();//从下开始,点满一圈后,灭,再上升点亮第二圈 deng4();//单层,向下降 deng5();//从上到下,逐层全部点亮 deng6();//从上到下,逐层全部熄灭】 deng8();//上半先逐步点亮,然后再向下点亮 deng0();//所有灯亮一会 deng6();//从上到下,逐层全部熄灭】 deng9();//从中间向上、下点亮,再熄灭 deng9();//从中间向上、下点亮,再熄灭 deng0_1();//所有灯灭一会儿 deng11();//逆时针逐列点亮所有灯 deng10();//从中间向上、下熄灭 deng0_1();//所有灯灭一会儿 deng13();//两层灯,分别从中间向上、下移动 deng3();//单层,向上升 deng5();//从上到下,逐层全部点亮 deng12();//闪烁 deng12();//闪烁 deng2();//四列灯顺时针旋转2遍 deng1();//两列灯顺时针旋转2遍,然后逐渐降低 deng0_1();//所有灯灭一会儿 } } |