欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3014|回復: 7
打印 上一主題 下一主題
收起左側

求大神調試單片機數碼管問題

[復制鏈接]
跳轉到指定樓層
樓主
為什么單片機上程序效果不好使  我想要數碼管顯示這個數

  1. #include<reg51.h>
  2. #define DataPort P0
  3. sbit duso=P2^1;
  4. sbit weso=P2^2;
  5. unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 顯示段碼值0~9
  6. unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對應相應的數碼管點亮,即位碼
  7. unsigned char count_Data[5];//定義count的全局變量

  8. void Display(unsigned int i);
  9. main(unsigned int count)
  10. {
  11. count=116788;
  12. while(1)
  13. {
  14.         count_Data[1]=dofly_DuanMa[count/100000];//第一位數字,十萬位上數字
  15.         count_Data[2]=dofly_DuanMa[(count%100000)/10000];//第二位數字,萬位上數字
  16.         count_Data[3]=dofly_DuanMa[(count%10000)/1000];//第三位數字 千位上數字
  17.         count_Data[4]=dofly_DuanMa[(count%1000)/100];
  18.         count_Data[5]=dofly_DuanMa[(count%100)/10];
  19.         count_Data[6]=dofly_DuanMa[count%10];




  20. }


  21. }        

  22. void Display()
  23. {
  24.       unsigned char i;
  25.          
  26.           for(i=0;i<6;i++)
  27.            {
  28.            DataPort=0;   //清空數據,防止有交替重影
  29.        duso=1;     //段鎖存
  30.        duso=0;

  31.        DataPort=dofly_WeiMa[i+2]; //取位碼
  32.        weso=1;     //位鎖存
  33.        weso=0;

  34.        DataPort=count_Data[i]; //取顯示數據,段碼
  35.        duso=1;     //段鎖存
  36.        duso=0;

  37.          

  38.        }

  39. }
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:334868 發表于 2018-5-21 14:54 | 只看該作者
主函數中沒有發現怎么以調用顯示函數呀~~顯示似乎沒有執行吧??
回復

使用道具 舉報

板凳
ID:213173 發表于 2018-5-21 15:14 | 只看該作者
想要數碼管顯示count=116788;要定義變量count為 long 類型,分解這么大的數在12MHz時鐘條件下需要耗時約3ms,這會造成數碼管閃爍。給你改主循環一次分解一位,顯示一位。
#include<reg51.h>
#define DataPort P0
sbit duso=P2^1;
sbit weso=P2^2;
unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 顯示段碼值0~9
unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對應相應的數碼管點亮,即位碼
unsigned char count_Data[6];//定義count的全局變量

void main()
{
        unsigned char i=0;
        unsigned long count=116788;
        while(1)
        {
                switch(i)
                {
                        case 0: count_Data[0]=dofly_DuanMa[count/100000]; break;
                        case 1: count_Data[1]=dofly_DuanMa[count%100000/10000]; break;
                        case 2: count_Data[2]=dofly_DuanMa[count%10000/1000]; break;
                        case 3: count_Data[3]=dofly_DuanMa[count%1000/100]; break;
                        case 4: count_Data[4]=dofly_DuanMa[count%100/10]; break;
                        case 5: count_Data[5]=dofly_DuanMa[count%10]; break;
                }
                DataPort=0;   //清空數據,防止有交替重影
                duso=1;     //段鎖存
                duso=0;               
                DataPort=dofly_WeiMa[i+2]; //取位碼
                weso=1;     //位鎖存
                weso=0;               
                DataPort=count_Data[i]; //取顯示數據,段碼
                duso=1;     //段鎖存
                duso=0;
                i++;
                if(i>=6)
                i=0;
        }
}
回復

使用道具 舉報

地板
ID:164602 發表于 2018-5-21 16:07 | 只看該作者
好像我有你這板子,所以我有現成的程序。
看看我寫的(呵呵——得意的笑——新手的表現)
#include<reg51.h>

#define SMG P0//數碼管

sbit DUAN=P2^6;
sbit WEI1=P2^7;

unsigned char code ZF[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77
,0x7c,0x39,0x5e,0x79,0x71,0x00};//標準0~F數碼管顯示碼
unsigned char code WEI[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//控制哪一位數碼管顯示
                                //一次一位,對應最左位→最右位
unsigned char DisplayData[8];//用來存放要顯示的8位數的值,一個管分配一位數組,叫顯示緩存

void DigDisplay()//數碼管動態顯示函數
{
        unsigned char i,j;
        for(i=0;i<8;i++)//只有8個數碼管
        {
                switch(i)         //位選,選擇點亮的數碼管,并賦值顯示內容
                {
                        case(0):
                                SMG=WEI[i];//先選位0(最左邊),后選段
                                WEI1=1;
                                WEI1=0;
                                SMG=DisplayData[i];//發送段碼
                                DUAN=1;
                                DUAN=0;
                                break;
                        case(1):
                                SMG=WEI[i];
                                WEI1=1;
                                WEI1=0;
                                SMG=DisplayData[i];
                                DUAN=1;
                                DUAN=0;
                                break;
                        case(2):
                                SMG=WEI[i];
                                WEI1=1;
                                WEI1=0;
                                SMG=DisplayData[i];
                                DUAN=1;
                                DUAN=0;
                                break;
                        case(3):
                                SMG=WEI[i];
                                WEI1=1;
                                WEI1=0;
                                SMG=DisplayData[i];
                                DUAN=1;
                                DUAN=0;
                                break;
                        case(4):
                                SMG=WEI[i];
                                WEI1=1;
                                WEI1=0;
                                SMG=DisplayData[i];
                                DUAN=1;
                                DUAN=0;
                                break;
                        case(5):
                                SMG=WEI[i];
                                WEI1=1;
                                WEI1=0;
                                SMG=DisplayData[i];
                                DUAN=1;
                                DUAN=0;
                                break;
                        case(6):
                                SMG=WEI[i];
                                WEI1=1;
                                WEI1=0;
                                SMG=DisplayData[i];
                                DUAN=1;
                                DUAN=0;
                                break;
                        case(7):
                                SMG=WEI[i];
                                WEI1=1;
                                WEI1=0;
                                SMG=DisplayData[i];
                                DUAN=1;
                                DUAN=0;
                                break;
                }
                j=20;//顯示一段時間,再消隱,可以得到穩定的顯示
                while(j--);       
                SMG=0xff;
                WEI1=1;
                WEI1=0;
                SMG=0x00;//消隱
                DUAN=1;
                DUAN=0;//關閉段碼
        }
}

void XSHCFZ (unsigned long j)//顯示緩存賦值
{
        DisplayData[0]=ZF[j/10000000];//將十進制數換算為可顯示字符
        DisplayData[1]=ZF[(j%10000000)/1000000];
        DisplayData[2]=ZF[(j%1000000)/100000];
        DisplayData[3]=ZF[(j%100000)/10000];
        DisplayData[4]=ZF[(j%10000)/1000];
        DisplayData[5]=ZF[(j%1000)/100];
        DisplayData[6]=ZF[(j%100)/10];
        DisplayData[7]=ZF[(j%10)/1];
}

void main(void)
{
        DUAN=0;WEI1=0;
        XSHCFZ(76543210);
        while(1)
        {
                DigDisplay();//顯示
        }                               
}

好像和你的板子有點區別:兩個鎖存器的控制端接的口 不一樣,你自己改一下試試。
回復

使用道具 舉報

5#
ID:330582 發表于 2018-5-21 22:30 | 只看該作者
wulin 發表于 2018-5-21 15:14
想要數碼管顯示count=116788;要定義變量count為 long 類型,分解這么大的數在12MHz時鐘條件下需要耗時約3ms ...

你好 我直接復制的代碼運行到板子上是這個效果

IMG_4143.jpg (2.84 MB, 下載次數: 42)

IMG_4143.jpg
回復

使用道具 舉報

6#
ID:330582 發表于 2018-5-21 22:32 | 只看該作者
wulin 發表于 2018-5-21 15:14
想要數碼管顯示count=116788;要定義變量count為 long 類型,分解這么大的數在12MHz時鐘條件下需要耗時約3ms ...

這是最后效果 我直接復制的代碼
回復

使用道具 舉報

7#
ID:164602 發表于 2018-5-22 07:16 | 只看該作者
1sdaw123 發表于 2018-5-21 22:32
這是最后效果 我直接復制的代碼

自己要改程序了,看到你的板子,才知道不是我的板子。但原理差不多。
好像你的573控制口和我的不一樣哦。
回復

使用道具 舉報

8#
ID:213173 發表于 2018-5-22 10:57 | 只看該作者
1sdaw123 發表于 2018-5-21 22:32
這是最后效果 我直接復制的代碼

軟件是建立在硬件的基礎上的,首先要了解硬件電路,才能編寫與其相適應的軟件。沒有包打天下的自適應軟件。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表