![]() |
發布時間: 2017-5-11 19:05
正文摘要:本帖最后由 Nyx影 于 2017-5-11 20:50 編輯 [size=13.3333px] AD574A AT89C52單片機 19264液晶屏 來實現輸入信號波形顯示[size=13.3333px]proteus仿真不成功 請問前輩們,程序錯在了哪里。單片機完全無法驅動AD#i ... |
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();//所有燈滅一會兒 } } |