我剛剛學習單片機,大家幫我看一看,我的數碼管為什么不亮啊?
#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.raoushi.com/bbs/) | Powered by Discuz! X3.1 |