我剛剛學(xué)習(xí)單片機(jī),大家?guī)臀铱匆豢,我的?shù)碼管為什么不亮。
#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--);
}
共陰的
你這個(gè)程序怎么可能兩呢!
P3=0x00; //關(guān)閉所有LED燈
P2=0x00; //7段LED顯示管位選全部關(guān)閉。
while(1)
{
P1=0xff;
delay(5000);
}
若是共陰的就應(yīng)該亮 你看看仿真部分 仿真有時(shí)很不可靠 delay(5000) 在這里沒有任何意義
如果是共因,你不要竄連電阻~!用1000 的上拉帶電阻!最好用林大頓管驅(qū)動(dòng)|!
仿真跟實(shí)踐是有著很大的差別的,所以個(gè)人還是主張你去實(shí)踐下,從實(shí)踐中去解決問題,這樣子學(xué)到的會(huì)更多 。
你是使用 P1 和 P2 兩 組端口驅(qū)動(dòng) 6 個(gè)數(shù)碼管的.其中:P1 作為筆段,P2 作為位驅(qū)動(dòng)(數(shù)碼管供電).數(shù)碼管是共陰極的.
那么,任何時(shí)候,只能有一個(gè) P2.N = 高電平. 而 P1 則是需要點(diǎn)亮的筆段=低電平.如果 P1 = 0FFH 則數(shù)碼管不能點(diǎn)亮!
需要分時(shí)掃描顯示 6 個(gè)數(shù)碼管,每秒必須保證顯示 50 次以上,否則數(shù)碼管會(huì)有閃爍的感覺!
顯然,你的程序不能正常工作!
-----上面幾位朋友意見說到不要玩軟件仿真,實(shí)在正確無比! ----你不能畫它幾千張美元,然后認(rèn)為掙了這個(gè)美元吧?
還是實(shí)際動(dòng)手吧!不要使用這些仿真軟件了!要不然,恐怕連貼片電阻都不知道怎么樣子的呢? ------言重了,就致歉!
僅供參考!
罩他這個(gè)接法,不是應(yīng)該p2低 p1高數(shù)碼管才亮么~而且他這個(gè)程序目的好像是讓數(shù)碼管全亮~類似于一個(gè)測試吧~
要是把數(shù)碼管換成8個(gè)LED肯定會(huì)亮的。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |