#include<reg51.h> #include<intrins.h> #include<absacc.h> #define uint unsigned int #define uchar unsigned char #define portA XBYTE[0x00] uchar code tab_1[]={0x06,0x5b,0x4f,0x66}; //1~4¹²Òõ uchar code tab_2[]={0x6d,0x7d,0x07,0x7f}; //5~8¹²Òõ uchar code tab_3[]={0x3f,0x3f,0x3f,0x3f}; //0¹²Òõ void delayms(uint i) { uint j,k; for(j=i;j>0;j--) for(k=100;k>0;k--); //ÑÓʱ1ms } void main() { while(1) { P2=0x00; P0=0x06; P2=0x20; P0=0x5b; P2=0x40; P0=0x4f; P2=0x60; P0=0x66; delayms(1000); P2=0x00; P0=0x3f; P2=0x20; P0=0x3f; P2=0x40; P0=0x3f; P2=0x60; P0=0x3f; delayms(1000); P2=0x00; P0=0x6d; P2=0x20; P0=0x7d; P2=0x40; P0=0x07; P2=0x60; P0=0x7f; delayms(1000); P2=0x00; P0=0x3f; P2=0x20; P0=0x3f; P2=0x40; P0=0x3f; P2=0x60; P0=0x3f; delayms(1000); } } |
搞清位选和段选,掌握动态显示,再加个延时就可以了 |
seven96 发表于 2017-5-31 19:40 思路不对!程序与电路不符! |
15277112091 发表于 2017-6-1 07:47 你的方法对这个电路不行!不相信不妨试试看! |
搞清位选和段选,掌握动态显示,再加个延时就可以了 |
用个定时器就行了 |
雪球 发表于 2017-5-31 22:10 怎么注意WR?多看看?还是那句话:关键是弄清WR的作用! |
一定要注意WR! |
本帖最后由 zl2168 于 2017-5-31 22:49 编辑 程序与电路不符,关键是弄清WR的作用!!!知道为什么老师不让改动电路吗?老师就是为了让学生去理解并行扩展的概念。 推荐一个案例,内有这种电路的原理和程序,去看看吧! 先Proteus仿真一下,确认有效。 ![]() ![]() 以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1.书中电路和程序设计有详细说明,程序语句条条有注解。仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。 |
我自己写的程序,调试的问题是四个管本来应该显示1234的部分全都显示4,5678那部分也是。不知带该怎么改了 |
#include<reg51.h> #include<intrins.h> #include<absacc.h> #define uint unsigned int #define uchar unsigned char #define portA XBYTE[0x00] uchar code tab_1[]={0x06,0x5b,0x4f,0x66}; //1~4¹²Òõ uchar code tab_2[]={0x6d,0x7d,0x07,0x7f}; //5~8¹²Òõ uchar code tab_3[]={0x3f,0x3f,0x3f,0x3f}; //0¹²Òõ void delayms(uint i) { uint j,k; for(j=i;j>0;j--) for(k=100;k>0;k--); //ÑÓʱ1ms } void main() { while(1) { P2=0x00; P0=0x06; P2=0x20; P0=0x5b; P2=0x40; P0=0x4f; P2=0x60; P0=0x66; delayms(1000); P2=0x00; P0=0x3f; P2=0x20; P0=0x3f; P2=0x40; P0=0x3f; P2=0x60; P0=0x3f; delayms(1000); P2=0x00; P0=0x6d; P2=0x20; P0=0x7d; P2=0x40; P0=0x07; P2=0x60; P0=0x7f; delayms(1000); P2=0x00; P0=0x3f; P2=0x20; P0=0x3f; P2=0x40; P0=0x3f; P2=0x60; P0=0x3f; delayms(1000); } } |