学些新的数码管动态知识,可参http://www.51hei.com/bbs/dpj-189201-1.html,有代码有示例工程下载。 |
楼主的硬件电路只能在仿真里做做,做成实物会 1:程序跑不起来,因为EA接了VCC,没接地; 2:三极管Q1,Q3会烧毁,单片机可能会烧毁;因为三极管基极没有电阻,低电平时,电源对地等效接二极管短路。 3:D10-D25发光二极管会烧毁,因为没有限流电阻; 4:数码管可能会烧毁,也是因为没有限流电阻; 5:继电器驱动不起来;因为串联220欧电阻能否驱动,要看你继电器的选型了; 软件方面: 1:你注释掉的译码是对的; 2: if(key3==0) { DelayMs(10); if(key3==0) { num2+=10; if(num2==990) num2=0; } while(!key3); } 边界有问题。刚开始你是uint scale,num,num1,num2=990,num3; 按了key3,结果num2+10=1000;1000!=990,所以num2不会被变为0。结果就是1000,超过了990. key4存在同样问题,当num变为0后,按了key4键,num=65526。。。 4:如果单片机时钟是12MHz,12T,那定时器1定时周期50ms,被num分频20,就是1000ms,被num3分频60,就是1分钟。意味着num1要等1分钟才会变一次。仿真显示你有没有等一分钟后看过结果? |