我刚刚学习单片机,大家帮我看一看,我的数码管为什么不亮啊?
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar num;
void delay(uint z);
void main()
{
P3=0x00;
P2=0x00;
while(1)
{
P1=0xff;
delay(5000);
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
共阴的
你这个程序怎么可能两呢!
P3=0x00; //关闭所有LED灯
P2=0x00; //7段LED显示管位选全部关闭。
while(1)
{
P1=0xff;
delay(5000);
}
若是共阴的就应该亮 你看看仿真部分 仿真有时很不可靠 delay(5000) 在这里没有任何意义
如果是共因,你不要窜连电阻~!用1000 的上拉带电阻!最好用林大顿管驱动|!
仿真跟实践是有着很大的差别的,所以个人还是主张你去实践下,从实践中去解决问题,这样子学到的会更多 。
你是使用 P1 和 P2 两 组端口驱动 6 个数码管的.其中:P1 作为笔段,P2 作为位驱动(数码管供电).数码管是共阴极的.
那么,任何时候,只能有一个 P2.N = 高电平. 而 P1 则是需要点亮的笔段=低电平.如果 P1 = 0FFH 则数码管不能点亮!
需要分时扫描显示 6 个数码管,每秒必须保证显示 50 次以上,否则数码管会有闪烁的感觉!
显然,你的程序不能正常工作!
-----上面几位朋友意见说到不要玩软件仿真,实在正确无比! ----你不能画它几千张美元,然后认为挣了这个美元吧?
还是实际动手吧!不要使用这些仿真软件了!要不然,恐怕连贴片电阻都不知道怎么样子的呢? ------言重了,就致歉!
仅供参考!
罩他这个接法,不是应该p2低 p1高数码管才亮么~而且他这个程序目的好像是让数码管全亮~类似于一个测试吧~
要是把数码管换成8个LED肯定会亮的!!
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |