|
| 用我的數碼管驅動絕對不會有任何問題存在,唯有段值陰陽區別,取反即可,看我帖子。 |
shenqiwei 發表于 2022-8-31 00:15 樓主抄書的,消隱代碼錯誤,按圖例改碼。
|
| 走單步,自己一步步的調試,看看問題出在哪了,要學會自己調試程序。 |
|
本帖最后由 名字不是重點 于 2022-8-31 06:45 編輯 上一貼已說過了: 573的OE被接地了,沒有消隱,沒有消隱,沒有消隱!!! 咋就不聽不做呢??? 我幫你調試好了,你可以直接用。 ![]() ////打字太辛苦,畫圖更難受 #include <reg51.h> #include <stdio.h> #include <intrins.h> sbit d1=P2^0; //鎖存段碼 sbit d2=P2^1; // 鎖存位選 unsigned char dis_buf[8]; //顯示緩存 unsigned char dig; //位選 unsigned code segout[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0--9共陽段碼表 void disp_8_num(void); //顯示函數 void main(void) //主程序 { unsigned char i; while (1) //主循環 { for(i=0;i<8;i++) dis_buf=i; //緩存刷新:01234567 disp_8_num(); //顯示一幀 } } void disp_8_num() //顯示函數,顯示8個數字 { unsigned char i,j; dig=0xfe; //從第一位開始掃顯 for (i=0;i<8;i++) //共8個位的數碼管 { P0=segout[dis_buf]; //送段碼 d1=1; d1=0; P0=dig; //送位碼 d2=1; d2=0; j=60; //簡單延時,以穩定顯示 while(j--); P0=0xff; //消隱位碼,段碼和位碼2選1或全選都可以 d2=1; d2=0; P0=0x00; //消隱段碼 d1=1; d1=0; dig= _crol_(dig,1); //準備下一位的位碼 } } |
|
不知道什么問題,查不出來 |