標題: 51單片機不同組IO口段選仿真問題 [打印本頁]
作者: wangxindir 時間: 2019-10-31 11:21
標題: 51單片機不同組IO口段選仿真問題
用Proteus 做51單片機仿真,不同組IO口做段選,如果把dx7=P1^6的話,仿真出來完全沒問題,數碼管正常掃描顯示,如果把dx7=P2^6的話,仿真出來的數碼管顯示就缺少DX7這一段,我用仿真中的示波器觀察波形是一樣的,請朋友幫忙看看問題出在哪?程序如下:
sbit dx1=P1^0;
sbit dx2=P1^1;
sbit dx3=P1^2;
sbit dx4=P1^3;
sbit dx5=P1^4;
sbit dx6=P1^5;
sbit dx7=P2^6;
void setseg(a)
{
dx1=a&0x01;a>>=1;
dx2=a&0x01;a>>=1;
dx3=a&0x01;a>>=1;
dx4=a&0x01;a>>=1;
dx5=a&0x01;a>>=1;
dx6=a&0x01;a>>=1;
dx7=a&0x01;
}
定時器中斷中:
switch (i)
case 0: setseg(ledbuff[0]);wx1=0;wx2=1;wx3=1,wx4=1;wx5=1;i++;break;
case 1: setseg(ledbuff[1]);wx1=1;wx2=0;wx3=1,wx4=1;wx5=1;i++;break;
case 2: setseg(ledbuff[2)]wx1=1;wx2=1;wx3=0,wx4=1;wx5=1;i++;break;
case 3: setseg(ledbuff[3]);wx1=1;wx2=1;wx3=1,wx4=0;wx5=1;i++;break;
case 4: setseg(ledbuff[4]);wx1=1;wx2=1;wx3=1,wx4=1;wx5=0;i=0;break;
default:break ;
-
無標題1.png
(145.66 KB, 下載次數: 114)
下載附件
2019-10-31 11:21 上傳
作者: wulin 時間: 2019-10-31 11:21
樓主不必糾結這個問題,仿真畢竟與實物測試是有很大區別的,這種端口組合的程序用于數碼管靜態顯示仿真沒有問題,用于動態顯示發生這種現象是仿真軟件的不適應造成的,不是編程問題。樓主可以用一個成熟的呼吸燈程序仿真試試,根本就玩不起來。
作者: wangxindir 時間: 2019-10-31 11:51
引腳連上后是這樣的。
-
無標題2.png
(154.28 KB, 下載次數: 103)
下載附件
2019-10-31 11:50 上傳
作者: csmyldl 時間: 2019-11-1 01:00
示波器BCD通道接在一塊而顯示出來的波形卻不一樣?也許與你電腦運行的速度有關,不妨所所有程序全部貼出來分析一下,理論上不會有此現象發生
作者: xianfajushi 時間: 2019-11-1 08:36
看電路圖似乎P2.6連接到不同的地方(位和段都有連接)引起的,
作者: xianfajushi 時間: 2019-11-1 08:42
噢噢,起先看錯了連接線,為何要用不同組去控制段?你確保這樣輸出的電平跟用同組的電平是一樣的變化?
作者: lkmtdkjplg 時間: 2019-11-1 10:44
最好弄一個電路板試試
作者: wangxindir 時間: 2019-11-10 16:32
非常感謝大家的解答,的確是仿真錯誤,實際打板驗證了,程序是沒問題的,可以正常顯示,謝謝大家!
作者: huangxulihua55 時間: 2021-2-9 13:49
樓主可以把全部代碼發出了學習下嗎?正好也用段碼在不同的IO口,程序中 wx是什么?
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |