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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3789|回復(fù): 9
收起左側(cè)

求助單片機(jī)數(shù)碼管的問題,需要實(shí)現(xiàn)當(dāng)數(shù)字為一位數(shù)時(shí)不顯示前面的三個(gè)0

[復(fù)制鏈接]
ID:399408 發(fā)表于 2018-9-19 11:30 | 顯示全部樓層 |閱讀模式
IMG_20180919_112603.jpg
請教各位大佬,這是顯示0·9999的代碼,如圖所示,請問怎么修改才能實(shí)現(xiàn)“當(dāng)數(shù)字為一位數(shù)時(shí)不顯示前面的三個(gè)0,當(dāng)數(shù)字為兩位數(shù)時(shí)不顯示前面的三個(gè)0”以此類推。。

單片機(jī)源程序如下:
  1. /***************************************************************************
  2. 標(biāo)題:        數(shù)碼管的顯示
  3. 實(shí)驗(yàn)板:LY51-L2B開發(fā)板
  4. 作者:        林洋電子-單片機(jī)
  5. 客服QQ:52927029
  6. 郵箱:        52927029@qq.com
  7. 說明:        顯示00-99,動(dòng)態(tài)顯示+變化顯示
  8. ******************************************************************************/

  9. //頭文件:
  10. #include <reg52.h>

  11. //引腳定義:               
  12. sbit SMG_q = P0^0;        //定義數(shù)碼管陽級控制腳(千位)
  13. sbit SMG_b = P0^1;        //定義數(shù)碼管陽級控制腳(百位)
  14. sbit SMG_s = P0^2;        //定義數(shù)碼管陽級控制腳(十位)
  15. sbit SMG_g = P0^3;        //定義數(shù)碼管陽級控制腳(個(gè)位)

  16. //變量定義:
  17. unsigned char table[]=
  18.                         {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  19.                                         //表:共陽數(shù)碼管 0-9

  20. //函數(shù)聲明:
  21. void display(unsigned char da);//定義顯示函數(shù),參數(shù)為顯示內(nèi)容,只顯示兩位數(shù)
  22. void delay(void);

  23. //主函數(shù),C語言的入口函數(shù):                       
  24. void main(void)  
  25. {
  26.         unsigned char i=0;                //作為查表的索引號
  27.         unsigned char ldata;        //變量用作0~99計(jì)數(shù)
  28.         unsigned int j;                                //此變量作為計(jì)數(shù)跳變刷新時(shí)間
  29.         while(1)
  30.         {      
  31.                 j=500;                       
  32.                 while(j--){               
  33.                         display(ldata);        //刷新5000次,約1秒,注:在C語言里是沒有周期可計(jì)算的哦~~~
  34.                 }                                               
  35.                 if(ldata<99)
  36.                         ldata++;                                //刷新完成約1秒,變量做加計(jì)數(shù)
  37.                 else
  38.                         ldata=0;
  39.         }
  40. }

  41. //顯示函數(shù),參數(shù)為顯示內(nèi)容,只顯示兩位數(shù)
  42. void display(unsigned char da)
  43. {
  44.         SMG_q=0;                        //選擇千位數(shù)碼管
  45.         P2=table[da/1000%100];        //獲取個(gè)位值,查表輸出定義好的數(shù)碼管段值與P2口,顯示相應(yīng)的0-9
  46.         delay();                        //延時(shí)
  47.         P2=0XFF;                        //清除數(shù)碼管顯示,因是共陽型,所以不是0
  48.         SMG_q=1;                        //關(guān)閉千位數(shù)碼管

  49.         SMG_b=0;                        //選擇百位數(shù)碼管
  50.         P2=table[da/100%10];        //獲取個(gè)位值,查表輸出定義好的數(shù)碼管段值與P2口,顯示相應(yīng)的0-9
  51.         delay();                        //延時(shí)
  52.         P2=0XFF;                        //清除數(shù)碼管顯示,因是共陽型,所以不是0
  53.         SMG_b=1;                        //關(guān)閉百位數(shù)碼管

  54.         SMG_s=0;                        //選擇十位數(shù)碼管
  55.         P2=table[da/10];        //獲取十位值,查表輸出定義好的數(shù)碼管段值與P2口,顯示相應(yīng)的0-9
  56.         delay();                        //延時(shí)
  57.         P2=0XFF;                        //清除數(shù)碼管顯示,因是共陽型,所以不是0
  58.         SMG_s=1;                        //關(guān)閉十位數(shù)碼管

  59.         SMG_g=0;                        //選擇個(gè)位數(shù)碼管
  60.         P2=table[da%10];        //獲取個(gè)位值,查表輸出定義好的數(shù)碼管段值與P2口,顯示相應(yīng)的0-9
  61.         delay();                        //延時(shí)
  62.         P2=0XFF;                        //清除數(shù)碼管顯示,因是共陽型,所以不是0
  63.         SMG_g=1;                        //關(guān)閉個(gè)位數(shù)碼管
  64. }

  65. //延時(shí)子函數(shù),短暫延時(shí)
  66. void delay(void){               
  67.         unsigned char i=10;
  68.         while(i--);
  69. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

ID:84765 發(fā)表于 2018-9-19 16:05 | 顯示全部樓層
加判斷語句就行了

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:7485 發(fā)表于 2018-9-19 16:12 | 顯示全部樓層
可以將“p2=table[da/1000%100]; ”改為“x=table[da/1000%100]; ”,然后判斷是否x=0, 若=0,則“p2=0xff”,不等于0 則 p2=x,其余位同樣。

編程還是自己多鉆研,對提高有好處。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:135253 發(fā)表于 2018-9-19 16:46 | 顯示全部樓層
拿去吧,顯示函數(shù)這樣改一下就行了!
//顯示函數(shù),參數(shù)為顯示內(nèi)容,只顯示兩位數(shù)
void display(unsigned char da)
{
        if(da<1000)
                SMG_q=1;
        else
        {
        SMG_q=0;                        //選擇千位數(shù)碼管
        P2=table[da/1000%100];        //獲取個(gè)位值,查表輸出定義好的數(shù)碼管段值與P2口,顯示相應(yīng)的0-9
        delay();                        //延時(shí)
        P2=0XFF;                        //清除數(shù)碼管顯示,因是共陽型,所以不是0
        SMG_q=1;                                                 //關(guān)閉千位數(shù)碼管
        }                 

        if(da<100)
                SMG_b=1;
        else
        {
        SMG_b=0;                        //選擇百位數(shù)碼管
        P2=table[da/100%10];        //獲取個(gè)位值,查表輸出定義好的數(shù)碼管段值與P2口,顯示相應(yīng)的0-9
        delay();                        //延時(shí)
        P2=0XFF;                        //清除數(shù)碼管顯示,因是共陽型,所以不是0
        SMG_b=1;                        //關(guān)閉百位數(shù)碼管
        }
       
        if(da<10)
                SMG_s=1;
        else
        {
        SMG_s=0;                        //選擇十位數(shù)碼管
        P2=table[da/10];        //獲取十位值,查表輸出定義好的數(shù)碼管段值與P2口,顯示相應(yīng)的0-9
        delay();                        //延時(shí)
        P2=0XFF;                        //清除數(shù)碼管顯示,因是共陽型,所以不是0
        SMG_s=1;                        //關(guān)閉十位數(shù)碼管
        }
        SMG_g=0;                        //選擇個(gè)位數(shù)碼管
        P2=table[da%10];        //獲取個(gè)位值,查表輸出定義好的數(shù)碼管段值與P2口,顯示相應(yīng)的0-9
        delay();                        //延時(shí)
        P2=0XFF;                        //清除數(shù)碼管顯示,因是共陽型,所以不是0
        SMG_g=1;                        //關(guān)閉個(gè)位數(shù)碼管
}

//延時(shí)子函數(shù),短暫延時(shí)
void delay(void){               
        unsigned char i=10;
        while(i--);
}

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:399408 發(fā)表于 2018-9-19 20:21 | 顯示全部樓層
xzf586 發(fā)表于 2018-9-19 16:46
拿去吧,顯示函數(shù)這樣改一下就行了!
//顯示函數(shù),參數(shù)為顯示內(nèi)容,只顯示兩位數(shù)
void display(unsigned  ...

謝謝啊,如果我要顯示到9999該改哪兒啊[img][/img]
回復(fù)

使用道具 舉報(bào)

ID:399408 發(fā)表于 2018-9-19 20:24 | 顯示全部樓層
ahshmj 發(fā)表于 2018-9-19 16:12
可以將“p2=table[da/1000%100]; ”改為“x=table[da/1000%100]; ”,然后判斷是否x=0, 若=0,則“p2=0xff ...

謝謝回答,已經(jīng)用二樓的方法解決了,請問我要顯示到9999怎么定義“unsigned char ldata;”這句
回復(fù)

使用道具 舉報(bào)

ID:399408 發(fā)表于 2018-9-20 16:42 | 顯示全部樓層

嗯,謝謝回復(fù)
回復(fù)

使用道具 舉報(bào)

ID:409293 發(fā)表于 2018-10-14 23:29 來自手機(jī) | 顯示全部樓層
樓主幫我試試我的這個(gè)位與方法,P2=P2|0xff;我記得以前我做這個(gè)的時(shí)候就是沒有前面的0的

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩视频在线播放 | 国产精品99久久免费观看 | 国产精品视频网 | 国产成人精品免高潮在线观看 | 欧美性猛片aaaaaaa做受 | av黄色国产| 免费在线观看成年人视频 | 日韩精品二区 | 精品在线一区 | 一区二区三区在线免费观看 | 亚洲国产精品久久久久 | 久久国产精品99久久久久久丝袜 | 国产成人精品一区二区三区网站观看 | 国产一区二区在线91 | 亚洲男女视频在线观看 | 欧美日本免费 | 伊人精品久久久久77777 | 伊人精品在线 | 久久综合九九 | 看片wwwwwwwwwww| 成年免费大片黄在线观看岛国 | 9999视频 | 一区二区三区在线免费 | 亚洲精品乱码久久久久v最新版 | 久久精品日产第一区二区三区 | 精品国产免费一区二区三区五区 | 久久久久久99| 日韩精品在线播放 | 欧美在线免费 | 91免费观看| 国产精品99久久久久久www | aaaaaaa片毛片免费观看 | 成人精品在线观看 | 一区二区在线 | 日韩靠逼 | 午夜精品一区 | 中文字幕成人av | 日韩国产欧美视频 | 免费黄视频网站 | 久久综合狠狠综合久久综合88 | 色视频www在线播放国产人成 |