仿真打不开 |
好啊 可以自几做个水暖炕啦 谢谢啊 |
楼主,你的仿真我看到了,也可以跑,但是你的程序实在是太乱了,好几个,可以发一下最后生成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吗,我想拿你的硬件连接做个实物 |
恒温程序很难,你这个算恒温程序? |
好东西 多学习 |
谢谢楼主。 |
支持分享好东西 |
|