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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機數碼管最多顯示到511

[復制鏈接]
跳轉到指定樓層
樓主
新人剛開始學51,想寫一個模塊化的數碼管顯示,起初用的是unsigned char,發現位數不夠后更改為unsigned int,現在最多卻只能顯示到511,在輸入為1時顯示257,求大佬幫助。
#include <reg52.h>
#include "Delay.h"
sbit SMG_DU = P2^6;
sbit SMG_WE = P2^7;
unsigned char SMG_D[]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}
unsigned char SMG_W[] = {0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE}
void SMG_Display(unsigned int NUM)
{
        unsigned int SMG_TEMP;
        unsigned char SMG_i=0;
        SMG_TEMP=NUM;
        while(SMG_TEMP)
        {
                P0=0xFF;
                SMG_WE=1;
                P0=SMG_W[SMG_i];
                SMG_WE=0;
                P0=0x00;
                SMG_DU=1;
                P0=SMG_D[SMG_TEMP%10];
                Delay(1);
                SMG_DU=0;
                SMG_TEMP/=10;
                SMG_i++;
        }
}

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

使用道具 舉報

沙發
ID:213173 發表于 2022-12-25 14:24 | 只看該作者
改這樣試試
  1. void SMG_Display(unsigned int NUM)
  2. {
  3.         static unsigned char i=0;

  4.         P0=0xFF;
  5.         SMG_WE=1;
  6.         SMG_WE=0;
  7.         switch(i)
  8.         {
  9.                 case 0: P0=SMG_D[NUM%10]; break;
  10.                 case 1: P0=SMG_D[NUM/10%10]; break;
  11.                 case 2: P0=SMG_D[NUM/100%10]; break;
  12.                 case 3: P0=SMG_D[NUM/1000%10]; break;
  13.                 default:P0=0X00; break;
  14.         }
  15.         SMG_DU=1;
  16.         SMG_DU=0;
  17.         P0=SMG_W[i];
  18.         SMG_WE=1;
  19.         SMG_WE=0;
  20.         i=++i%8;
  21. }
復制代碼
回復

使用道具 舉報

板凳
ID:883242 發表于 2022-12-25 20:05 | 只看該作者
你貼的這段代碼沒有問題,問題應該在調用這段代碼的位置,你沒有貼出來。
回復

使用道具 舉報

地板
ID:1059056 發表于 2022-12-26 20:57 | 只看該作者
Hephaestus 發表于 2022-12-25 20:05
你貼的這段代碼沒有問題,問題應該在調用這段代碼的位置,你沒有貼出來。

#include <reg52.h>
#include <intrins.h>
#include "Delay.h"
#include "SMG.h"
void timer0()
{
        ET0=1;
        EA=1;
        TR0=1;
        TMOD=0X01;
        TH0=0XFC;
        TL0=0X52;
}
void main(){
        timer0();
        while(1){
        }
}
void sb()interrupt 1
{
        TH0=0xFC;
        TL0=0X52;
        SMG_Display(123);
}
我也很疑惑啊,感覺這部分也沒有什么問題啊
回復

使用道具 舉報

5#
ID:1059056 發表于 2022-12-26 20:59 | 只看該作者
Hephaestus 發表于 2022-12-25 20:05
你貼的這段代碼沒有問題,問題應該在調用這段代碼的位置,你沒有貼出來。

看來還真是,剛剛改成了樓上大佬的,同樣也有問題
回復

使用道具 舉報

6#
ID:1059056 發表于 2022-12-26 20:59 | 只看該作者

感謝,我先試一下
回復

使用道具 舉報

7#
ID:883242 發表于 2022-12-26 22:08 | 只看該作者
Er1Zp 發表于 2022-12-26 20:57
#include
#include
#include "Delay.h"

你代碼只是塞一個常數,而不是變量,那就一點兒辦法都沒有了。
回復

使用道具 舉報

8#
ID:77589 發表于 2022-12-27 10:23 | 只看該作者
我單從程序上看不出來問題,可以的話貼個電路圖出來,看看軟件和硬件匹配不?
回復

使用道具 舉報

9#
ID:1059056 發表于 2022-12-28 19:47 | 只看該作者
Hephaestus 發表于 2022-12-26 22:08
你代碼只是塞一個常數,而不是變量,那就一點兒辦法都沒有了。

塞一個變量給一樣的值還是有問題,不知道到底是為什么
回復

使用道具 舉報

10#
ID:1059056 發表于 2022-12-28 19:47 | 只看該作者
Longan.Wang 發表于 2022-12-27 10:23
我單從程序上看不出來問題,可以的話貼個電路圖出來,看看軟件和硬件匹配不?

1.png (357.51 KB, 下載次數: 53)

1.png
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人免费日韩 | 国产污视频在线 | 日本网站在线看 | 亚洲欧洲在线视频 | 国产精品美女一区二区 | 欧美视频1区 | 成年视频在线观看福利资源 | 99精品一区二区三区 | 精品亚洲一区二区三区 | 日韩视频精品 | 久久精品99国产精品日本 | 日韩黄色免费 | 欧美性生活网 | 亚洲国产成人精品女人久久久 | 伊色综合久久之综合久久 | 99精品亚洲国产精品久久不卡 | 欧美最猛性xxxxx亚洲精品 | 亚洲一区二区三区免费视频 | 中文字幕久久精品 | 国产一级一级毛片 | 日韩欧美一区二区三区四区 | 久久r久久| 欧美一区视频 | 96久久久久久 | 99国产精品视频免费观看一公开 | 精品区| 狠狠干综合视频 | 欧美日韩精品在线一区 | 国产在线播放一区二区三区 | 久久久久黄色 | 欧美片网站免费 | 精品国产一区二区三区久久久四川 | 国产欧美精品一区 | 国产精品免费一区二区三区 | 久久久久久久久淑女av国产精品 | 色精品视频| aaa综合国产| 日本一区二区三区四区 | 国产激情91久久精品导航 | 欧美激情亚洲激情 | 午夜欧美|