久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2766|回復: 7
收起左側(cè)

求大神調(diào)試單片機數(shù)碼管問題

[復制鏈接]
ID:330582 發(fā)表于 2018-5-21 10:01 | 顯示全部樓層 |閱讀模式
為什么單片機上程序效果不好使  我想要數(shù)碼管顯示這個數(shù)

  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};//分別對應(yīng)相應(yīng)的數(shù)碼管點亮,即位碼
  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];//第一位數(shù)字,十萬位上數(shù)字
  15.         count_Data[2]=dofly_DuanMa[(count%100000)/10000];//第二位數(shù)字,萬位上數(shù)字
  16.         count_Data[3]=dofly_DuanMa[(count%10000)/1000];//第三位數(shù)字 千位上數(shù)字
  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;   //清空數(shù)據(jù),防止有交替重影
  29.        duso=1;     //段鎖存
  30.        duso=0;

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

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

  37.          

  38.        }

  39. }
復制代碼



回復

使用道具 舉報

ID:334868 發(fā)表于 2018-5-21 14:54 | 顯示全部樓層
主函數(shù)中沒有發(fā)現(xiàn)怎么以調(diào)用顯示函數(shù)呀~~顯示似乎沒有執(zhí)行吧??
回復

使用道具 舉報

ID:213173 發(fā)表于 2018-5-21 15:14 | 顯示全部樓層
想要數(shù)碼管顯示count=116788;要定義變量count為 long 類型,分解這么大的數(shù)在12MHz時鐘條件下需要耗時約3ms,這會造成數(shù)碼管閃爍。給你改主循環(huán)一次分解一位,顯示一位。
#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};//分別對應(yīng)相應(yīng)的數(shù)碼管點亮,即位碼
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;   //清空數(shù)據(jù),防止有交替重影
                duso=1;     //段鎖存
                duso=0;               
                DataPort=dofly_WeiMa[i+2]; //取位碼
                weso=1;     //位鎖存
                weso=0;               
                DataPort=count_Data[i]; //取顯示數(shù)據(jù),段碼
                duso=1;     //段鎖存
                duso=0;
                i++;
                if(i>=6)
                i=0;
        }
}
回復

使用道具 舉報

ID:164602 發(fā)表于 2018-5-21 16:07 | 顯示全部樓層
好像我有你這板子,所以我有現(xiàn)成的程序。
看看我寫的(呵呵——得意的笑——新手的表現(xiàn))
#include<reg51.h>

#define SMG P0//數(shù)碼管

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數(shù)碼管顯示碼
unsigned char code WEI[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//控制哪一位數(shù)碼管顯示
                                //一次一位,對應(yīng)最左位→最右位
unsigned char DisplayData[8];//用來存放要顯示的8位數(shù)的值,一個管分配一位數(shù)組,叫顯示緩存

void DigDisplay()//數(shù)碼管動態(tài)顯示函數(shù)
{
        unsigned char i,j;
        for(i=0;i<8;i++)//只有8個數(shù)碼管
        {
                switch(i)         //位選,選擇點亮的數(shù)碼管,并賦值顯示內(nèi)容
                {
                        case(0):
                                SMG=WEI[i];//先選位0(最左邊),后選段
                                WEI1=1;
                                WEI1=0;
                                SMG=DisplayData[i];//發(fā)送段碼
                                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;//顯示一段時間,再消隱,可以得到穩(wěn)定的顯示
                while(j--);       
                SMG=0xff;
                WEI1=1;
                WEI1=0;
                SMG=0x00;//消隱
                DUAN=1;
                DUAN=0;//關(guān)閉段碼
        }
}

void XSHCFZ (unsigned long j)//顯示緩存賦值
{
        DisplayData[0]=ZF[j/10000000];//將十進制數(shù)換算為可顯示字符
        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();//顯示
        }                               
}

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

使用道具 舉報

ID:330582 發(fā)表于 2018-5-21 22:30 | 顯示全部樓層
wulin 發(fā)表于 2018-5-21 15:14
想要數(shù)碼管顯示count=116788;要定義變量count為 long 類型,分解這么大的數(shù)在12MHz時鐘條件下需要耗時約3ms ...

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

使用道具 舉報

ID:330582 發(fā)表于 2018-5-21 22:32 | 顯示全部樓層
wulin 發(fā)表于 2018-5-21 15:14
想要數(shù)碼管顯示count=116788;要定義變量count為 long 類型,分解這么大的數(shù)在12MHz時鐘條件下需要耗時約3ms ...

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

使用道具 舉報

ID:164602 發(fā)表于 2018-5-22 07:16 | 顯示全部樓層
1sdaw123 發(fā)表于 2018-5-21 22:32
這是最后效果 我直接復制的代碼

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

使用道具 舉報

ID:213173 發(fā)表于 2018-5-22 10:57 | 顯示全部樓層
1sdaw123 發(fā)表于 2018-5-21 22:32
這是最后效果 我直接復制的代碼

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品久久久久久久久久久久久久久久久 | 日韩在线播放第一页 | 欧美lesbianxxxxhd视频社区 | 国产精品久久一区 | 黄色一级视频 | 久久亚洲国产精品日日av夜夜 | 午夜日韩 | 看一级黄色毛片 | 欧美极品少妇xxxxⅹ免费视频 | 91福利电影在线观看 | 日韩精品在线看 | 亚洲成av人片在线观看无码 | 999免费观看视频 | av天天看 | 91精品国产色综合久久 | 久久99国产精品 | 成人3d动漫一区二区三区91 | 国产精品一区久久久 | 一区二区三区免费看 | 久久精品电影 | 台湾av在线 | 91久久精品一区二区二区 | 久久免费视频网 | 在线观看亚洲精品视频 | 亚洲a网| 亚洲视频免费观看 | 国产一区二区三区在线 | 亚洲1区 | 一区二区三区播放 | 91深夜福利视频 | 国产成人精品网站 | 手机看片169| 午夜精品久久久 | 五月婷婷中文 | 久久大 | 国产精品日韩欧美一区二区 | 成人在线精品视频 | h在线免费观看 | 日韩一区在线播放 | 久久久影院| 国产高清一区二区三区 |