![]() |
仿真打不開 |
好啊 可以自幾做個水暖炕啦 謝謝啊 |
樓主,你的仿真我看到了,也可以跑,但是你的程序實在是太亂了,好幾個,可以發一下最后生成hex文件的程序嗎 |
為啥我的不合適?打不開 |
感謝分享,這里果然大俠多 以后請多多指教 ![]() |
感謝分享,能交流下嗎 |
感謝分享 |
#include<reg52.h> #include"led.h" uchar code lednum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x76,0x38};//數碼管字0~9、'-'、'H'、'L'、,共陰數碼管段碼 uchar code lednum_p[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//數碼管字0~9,帶小數點 /*****************延時函數********************/ void LedDelay(uint x) { uchar k; while(x--) for(k=0;k<30;k++) ; } /*****************數碼管掃描********************/ void LedScan(void) { uchar k; for(k=0;k<100;k++) { SEG=lednum[dig0]; DIG=0xfe; LedDelay(1); SEG=0x00;//DIG是選擇哪一只數碼管點亮 SEG=lednum_p[dig1]; DIG=0xfd; LedDelay(1); SEG=0x00;//SEG是選擇數碼管哪幾段亮,這里0x00是熄滅所有段 SEG=lednum[dig2]; DIG=0xfb; LedDelay(1); SEG=0x00; SEG=lednum[dig3]; DIG=0xf7; LedDelay(1); SEG=0x00; } } /**************數碼管某位閃爍*****************/ void LedFlick(uchar FlickBit) { uchar k; for(k=0;k<100;k++) { switch(FlickBit) { case(1)://第1位數碼管閃爍,右往左 SEG=lednum[dig0];if(k<50){DIG=0xfe; LedDelay(1);}else{DIG=0xff; LedDelay(1);} SEG=0x00; SEG=lednum_p[dig1]; DIG=0xfd; LedDelay(1); SEG=0x00; SEG=lednum[dig2]; DIG=0xfb; LedDelay(1); SEG=0x00; SEG=lednum[dig3]; DIG=0xf7; LedDelay(1); SEG=0x00; break; case(2)://第2位數碼管閃爍 SEG=lednum[dig0]; DIG=0xfe; LedDelay(1); SEG=0x00; //SEG=lednum_p[dig1];if(k<50){DIG=0xfd; LedDelay(1);}else{DIG=0xff; LedDelay(1);} SEG=0x00; //以下這句是用來處理閃爍數字而不閃爍小數點的 DIG=0xfd; if(k<50){SEG=lednum_p[dig1];LedDelay(1);}else{SEG=0x80; LedDelay(1);} DIG=0xff; SEG=lednum[dig2]; DIG=0xfb; LedDelay(1); SEG=0x00; SEG=lednum[dig3]; DIG=0xf7; LedDelay(1); SEG=0x00; break; case(3)://第3位數碼管閃爍 SEG=lednum[dig0]; DIG=0xfe; LedDelay(1); SEG=0x00; SEG=lednum_p[dig1]; DIG=0xfd; LedDelay(1); SEG=0x00; SEG=lednum[dig2];if(k<50){DIG=0xfb; LedDelay(1);}else{DIG=0xff; LedDelay(1);} SEG=0x00; SEG=lednum[dig3]; DIG=0xf7; LedDelay(1); SEG=0x00; break; case(4)://第4位數碼管閃爍 SEG=lednum[dig0]; DIG=0xfe; LedDelay(1); SEG=0x00; SEG=lednum_p[dig1]; DIG=0xfd; LedDelay(1); SEG=0x00; SEG=lednum[dig2]; DIG=0xfb; LedDelay(1); SEG=0x00; SEG=lednum[dig3];if(k<50){DIG=0xf7; LedDelay(1);}else{DIG=0xff; LedDelay(1);} SEG=0x00; default:break; } } } |
#include<reg52.h> #include"led.h" uchar code lednum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x76,0x38};//數碼管字0~9、'-'、'H'、'L'、,共陰數碼管段碼 uchar code lednum_p[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//數碼管字0~9,帶小數點 /*****************延時函數********************/ void LedDelay(uint x) { uchar k; while(x--) for(k=0;k<30;k++) ; } /*****************數碼管掃描********************/ void LedScan(void) { uchar k; for(k=0;k<100;k++) { SEG=lednum[dig0]; DIG=0xfe; LedDelay(1); SEG=0x00;//DIG是選擇哪一只數碼管點亮 SEG=lednum_p[dig1]; DIG=0xfd; LedDelay(1); SEG=0x00;//SEG是選擇數碼管哪幾段亮,這里0x00是熄滅所有段 SEG=lednum[dig2]; DIG=0xfb; LedDelay(1); SEG=0x00; SEG=lednum[dig3]; DIG=0xf7; LedDelay(1); SEG=0x00; } } /**************數碼管某位閃爍*****************/ void LedFlick(uchar FlickBit) { uchar k; for(k=0;k<100;k++) { switch(FlickBit) { case(1)://第1位數碼管閃爍,右往左 SEG=lednum[dig0];if(k<50){DIG=0xfe; LedDelay(1);}else{DIG=0xff; LedDelay(1);} SEG=0x00; SEG=lednum_p[dig1]; DIG=0xfd; LedDelay(1); SEG=0x00; SEG=lednum[dig2]; DIG=0xfb; LedDelay(1); SEG=0x00; SEG=lednum[dig3]; DIG=0xf7; LedDelay(1); SEG=0x00; break; case(2)://第2位數碼管閃爍 SEG=lednum[dig0]; DIG=0xfe; LedDelay(1); SEG=0x00; //SEG=lednum_p[dig1];if(k<50){DIG=0xfd; LedDelay(1);}else{DIG=0xff; LedDelay(1);} SEG=0x00; //以下這句是用來處理閃爍數字而不閃爍小數點的 DIG=0xfd; if(k<50){SEG=lednum_p[dig1];LedDelay(1);}else{SEG=0x80; LedDelay(1);} DIG=0xff; SEG=lednum[dig2]; DIG=0xfb; LedDelay(1); SEG=0x00; SEG=lednum[dig3]; DIG=0xf7; LedDelay(1); SEG=0x00; break; case(3)://第3位數碼管閃爍 SEG=lednum[dig0]; DIG=0xfe; LedDelay(1); SEG=0x00; SEG=lednum_p[dig1]; DIG=0xfd; LedDelay(1); SEG=0x00; SEG=lednum[dig2];if(k<50){DIG=0xfb; LedDelay(1);}else{DIG=0xff; LedDelay(1);} SEG=0x00; SEG=lednum[dig3]; DIG=0xf7; LedDelay(1); SEG=0x00; break; case(4)://第4位數碼管閃爍 SEG=lednum[dig0]; DIG=0xfe; LedDelay(1); SEG=0x00; SEG=lednum_p[dig1]; DIG=0xfd; LedDelay(1); SEG=0x00; SEG=lednum[dig2]; DIG=0xfb; LedDelay(1); SEG=0x00; SEG=lednum[dig3];if(k<50){DIG=0xf7; LedDelay(1);}else{DIG=0xff; LedDelay(1);} SEG=0x00; default:break; } } } |
謝謝老板兒!學習到了 |
學習學習 |
這是閉環控制嗎 |
這個是不是閉環控制? |
樓主可以交流下單片機的知識嗎 |
很實用的東西啊 ,想學習 |
這個不是閉環控制的把? |
很好,很實用!!!!!!!!!!!!!!!!!!! |
謝謝樓主 很實用 |
謝謝樓主 很實用 |
.h文件不能打開 |
感謝,學習學習 |
感謝,學習 |
好東西 多學習 |
好東西 多學習 |
樓主有PCB嗎,我想拿你的硬件連接做個實物 |
恒溫程序很難,你這個算恒溫程序? |
好東西 多學習 |
謝謝樓主。 |
支持分享好東西 |
|