|
發布時間: 2018-4-4 12:40
正文摘要:初學者,求解答,程序如下 #include<reg51.h> #define uchar unsigned char xdata uchar num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay(uchar i) { uchar t; while(i--) {   ... |
| P0口加上上拉,估計問題就解決了 |
| P0口加上拉試試,應該就解決了 |
| P0口加上拉試試. |
| 數組定義應該是死循環里面這樣寫 |
| 行,小生多謝各位前輩啦! |
| 看看p0 上拉 看看 |
|
|
我把你的程序修整和精簡了下。實現0到9數字每秒變化一次。 另外 AT89C51單片機是需要加上拉電阻的。 仿真程序里只有AT89系列單片機。所以 做仿真時盡量不用P0口。 我這里先改成了P1口。實際使用時 STC89C52單片機 P0口也不需要加上拉的。 其它STC12或15或F8系列單片機還可以設置4種輸出模式。晶振也可以用內部的。這個視你自己的用途選擇吧。以下程序 仿真通過。 另外 仿真的數碼管選共陽數碼管。 #include<reg51.h> unsigned char num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay(unsigned int i) { while(i--); } void main() { unsigned char i; while(1) { for(i=0;i<10;i++) { P1=num[i]; delay(50000); } } } |
| 上拉電阻1K以上,限制電流小于5mA。 |
|
還是用個鎖存器,比較靠譜! 雖然我從來沒有直接把數碼管接在IO口上,但是我考慮IO口的輸出電流本來就小,再串個電阻,數碼管還能正常工作嗎? |
| lz用的是共陽數碼管P0口好像不用加上拉電阻吧, |
| 加上拉電阻應該就可以了 |
| 把p0口改成p2口(程序和數碼管一起改)試試看 |
| 接10歐姆的上拉,那是要單片機的命。我也是發現過同樣的情況,是仿真軟件的問題,換成其他2位或者4位數碼管試試看 |
| 樓上說接10歐姆的上拉,那是要命的,當輸出高的時候,還不致命,當P0輸出低的時候,就會燒毀IO口,從而燒掉單片機 |
|
問題出在xdata uchar num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 你的碼表存到xdata中,而89c51就沒有xdata,應該定義成data |
|
P0口是需要上拉電阻的,10歐左右吧 |
| PO要加上啦 |
| 加上拉電阻 |
| 數碼管最好別用P0口。其他口內部都有上拉,唯獨P0沒有。而且其推拉能力小一些。 |
|
加了上拉電阻也沒反應 |
| 這個程序的問題是運行開始后,P0口的電平始終不變 |
| 行,我試試 |
| 如果是 51 的話,注意 P0口的上拉設計 |
| P0口加上拉試試. |